@contractspec/bundle.library 3.8.9 → 3.8.11
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/.turbo/turbo-build.log +606 -594
- package/CHANGELOG.md +68 -0
- package/dist/application/context-storage/index.js +1 -28
- package/dist/application/index.js +13 -2133
- package/dist/application/mcp/cliMcp.js +4 -452
- package/dist/application/mcp/common.js +1 -193
- package/dist/application/mcp/contractsMcp.js +2 -549
- package/dist/application/mcp/contractsMcpResources.js +2 -123
- package/dist/application/mcp/contractsMcpTools.js +1 -199
- package/dist/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/application/mcp/docsMcp.data.js +1 -147
- package/dist/application/mcp/docsMcp.js +6 -1039
- package/dist/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/application/mcp/docsMcp.reference.js +3 -235
- package/dist/application/mcp/docsMcp.resources.js +3 -519
- package/dist/application/mcp/docsMcp.tools.js +3 -518
- package/dist/application/mcp/index.js +13 -2106
- package/dist/application/mcp/internalMcp.js +2 -410
- package/dist/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/application/mcp/providerRankingMcp.js +1 -530
- package/dist/bundles/LibraryBundle.js +1 -138
- package/dist/bundles/index.js +1 -138
- package/dist/components/docs/DocsIndexPage.js +2 -912
- package/dist/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/components/docs/advanced/index.js +10 -1055
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/components/docs/architecture/index.js +20 -1340
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/components/docs/comparison/index.js +1 -1510
- package/dist/components/docs/docsManifest.js +1 -611
- package/dist/components/docs/docsManifest.test.d.ts +1 -0
- package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/components/docs/ecosystem/index.js +23 -569
- package/dist/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/components/docs/examples/index.js +4 -330
- package/dist/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/components/docs/generated/index.js +1 -74
- package/dist/components/docs/generated/loader.js +1 -74
- package/dist/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/components/docs/getting-started/index.js +18 -1869
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/components/docs/guides/GuideConnectInRepoPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideConnectInRepoPage.js +44 -0
- package/dist/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.d.ts +1 -0
- package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +76 -0
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.d.ts +1 -0
- package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +70 -0
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/components/docs/guides/index.d.ts +3 -0
- package/dist/components/docs/guides/index.js +213 -2428
- package/dist/components/docs/index.js +542 -24297
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/components/docs/integrations/index.js +52 -3100
- package/dist/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/components/docs/intent/index.js +15 -1135
- package/dist/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/components/docs/knowledge/index.js +21 -1730
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/components/docs/libraries/index.js +54 -4147
- package/dist/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/components/docs/ops/index.js +3 -202
- package/dist/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/components/docs/ops/ops.docs.js +10 -302
- package/dist/components/docs/product/product.docblocks.js +5 -72
- package/dist/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/components/docs/reference/index.js +4 -470
- package/dist/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/components/docs/safety/index.js +7 -1480
- package/dist/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +34 -0
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/components/docs/specs/SpecsConnectPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsConnectPage.js +8 -0
- package/dist/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/components/docs/specs/SpecsModuleBundlesPage.d.ts +1 -0
- package/dist/components/docs/specs/SpecsModuleBundlesPage.js +67 -0
- package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -312
- package/dist/components/docs/specs/index.d.ts +3 -0
- package/dist/components/docs/specs/index.js +109 -1702
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/components/docs/studio/index.js +1 -282
- package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/components/integrations/index.js +2 -600
- package/dist/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/components/legal/TermsTemplate.js +1 -941
- package/dist/components/legal/index.js +1 -1963
- package/dist/components/shared/FeatureGateNotice.js +1 -38
- package/dist/components/shared/index.js +1 -38
- package/dist/components/shell/WorkspaceHeader.js +1 -100
- package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/components/shell/index.js +1 -287
- package/dist/components/templates/engine/index.js +1 -39
- package/dist/components/templates/index.js +11 -965
- package/dist/components/templates/messaging/ConversationList.js +2 -83
- package/dist/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/components/templates/messaging/MessageThread.js +3 -83
- package/dist/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/components/templates/messaging/index.js +5 -269
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/components/templates/recipes/RecipeList.js +3 -245
- package/dist/components/templates/recipes/index.js +3 -248
- package/dist/components/templates/todos/FilterBar.js +1 -107
- package/dist/components/templates/todos/TaskForm.js +2 -158
- package/dist/components/templates/todos/TaskItem.js +1 -77
- package/dist/components/templates/todos/TaskList.js +5 -449
- package/dist/components/templates/todos/index.js +5 -452
- package/dist/config/contractspec-blueprint.js +1 -123
- package/dist/config/contractspec-branding.js +1 -44
- package/dist/config/contractspec-routes.js +1 -24
- package/dist/config/index.js +1 -126
- package/dist/features/contracts-registry.js +1 -178
- package/dist/features/docs/docs.contracts.js +1 -17
- package/dist/features/docs/index.js +1 -17
- package/dist/features/docs.feature.js +1 -33
- package/dist/features/index.js +1 -315
- package/dist/features/mcp.feature.js +1 -30
- package/dist/features/presentations.feature.js +1 -33
- package/dist/features/registry.js +1 -116
- package/dist/index.js +556 -28580
- package/dist/infrastructure/elysia/index.js +1 -35
- package/dist/infrastructure/elysia/logger.js +1 -35
- package/dist/infrastructure/index.js +1 -35
- package/dist/libs/email/client.js +1 -114
- package/dist/libs/email/contact.js +12 -165
- package/dist/libs/email/newsletter.js +6 -167
- package/dist/libs/email/types.js +0 -2
- package/dist/libs/email/utils.js +2 -8
- package/dist/libs/email/waitlist-application.js +28 -209
- package/dist/libs/email/waitlist.js +6 -167
- package/dist/libs/email.js +46 -363
- package/dist/libs/posthog/client.js +1 -63
- package/dist/libs/posthog/native.js +1 -23
- package/dist/libs/posthog/server.js +1 -13
- package/dist/libs/pricing-examples.js +1 -18
- package/dist/node/application/context-storage/index.js +1 -28
- package/dist/node/application/index.js +13 -2133
- package/dist/node/application/mcp/cliMcp.js +4 -452
- package/dist/node/application/mcp/common.js +1 -193
- package/dist/node/application/mcp/contractsMcp.js +2 -549
- package/dist/node/application/mcp/contractsMcpResources.js +2 -123
- package/dist/node/application/mcp/contractsMcpTools.js +1 -199
- package/dist/node/application/mcp/docsMcp.catalog.js +3 -381
- package/dist/node/application/mcp/docsMcp.data.js +1 -147
- package/dist/node/application/mcp/docsMcp.js +6 -1039
- package/dist/node/application/mcp/docsMcp.prompts.js +6 -521
- package/dist/node/application/mcp/docsMcp.reference.js +3 -235
- package/dist/node/application/mcp/docsMcp.resources.js +3 -519
- package/dist/node/application/mcp/docsMcp.tools.js +3 -518
- package/dist/node/application/mcp/index.js +13 -2106
- package/dist/node/application/mcp/internalMcp.js +2 -410
- package/dist/node/application/mcp/normalizeMcpRequest.js +1 -21
- package/dist/node/application/mcp/providerRankingMcp.js +1 -530
- package/dist/node/bundles/LibraryBundle.js +1 -138
- package/dist/node/bundles/index.js +1 -138
- package/dist/node/components/docs/DocsIndexPage.js +2 -912
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +4 -271
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -107
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -118
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -92
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -373
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -99
- package/dist/node/components/docs/advanced/index.js +10 -1055
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -243
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -160
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -259
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -374
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -166
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -143
- package/dist/node/components/docs/architecture/index.js +20 -1340
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -230
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -245
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -202
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -254
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -339
- package/dist/node/components/docs/comparison/index.js +1 -1510
- package/dist/node/components/docs/docsManifest.js +1 -611
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -103
- package/dist/node/components/docs/ecosystem/PluginsPage.js +13 -179
- package/dist/node/components/docs/ecosystem/RegistryPage.js +7 -100
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -141
- package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +2 -48
- package/dist/node/components/docs/ecosystem/index.js +23 -569
- package/dist/node/components/docs/examples/DocsExamplesPage.js +4 -124
- package/dist/node/components/docs/examples/ExampleShowcasePage.js +4 -244
- package/dist/node/components/docs/examples/exampleShowcaseData.js +4 -39
- package/dist/node/components/docs/examples/index.js +4 -330
- package/dist/node/components/docs/generated/docs-index.generated.js +1 -5
- package/dist/node/components/docs/generated/index.js +1 -74
- package/dist/node/components/docs/generated/loader.js +1 -74
- package/dist/node/components/docs/getting-started/CLIPage.js +4 -271
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -173
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +4 -134
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -194
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -183
- package/dist/node/components/docs/getting-started/InstallationPage.js +3 -154
- package/dist/node/components/docs/getting-started/StartHerePage.js +2 -129
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -168
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -432
- package/dist/node/components/docs/getting-started/getting-started.docblocks.js +4 -41
- package/dist/node/components/docs/getting-started/index.js +18 -1869
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -196
- package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +43 -0
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -541
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -207
- package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +75 -0
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -209
- package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +69 -0
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -754
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -268
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -196
- package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -169
- package/dist/node/components/docs/guides/guides.docblocks.js +11 -75
- package/dist/node/components/docs/guides/index.js +213 -2428
- package/dist/node/components/docs/index.js +542 -24297
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -42
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -105
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +3 -142
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -109
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -79
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +3 -146
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +5 -150
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +5 -140
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -160
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +4 -218
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +4 -300
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -111
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -102
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -124
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +3 -144
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +7 -290
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +6 -327
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -128
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -146
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -156
- package/dist/node/components/docs/integrations/index.js +52 -3100
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -126
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -148
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -207
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -201
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -144
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -126
- package/dist/node/components/docs/intent/index.js +15 -1135
- package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -201
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +6 -750
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +4 -175
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -116
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +8 -391
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +6 -302
- package/dist/node/components/docs/knowledge/index.js +21 -1730
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -198
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -141
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -80
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -100
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +2 -284
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -112
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -166
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -186
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +4 -279
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -127
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -173
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -108
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -130
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -110
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -170
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -114
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -132
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -120
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -200
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -116
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -273
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -134
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -133
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +2 -230
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -88
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -181
- package/dist/node/components/docs/libraries/index.js +54 -4147
- package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -86
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -132
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -71
- package/dist/node/components/docs/ops/index.js +3 -202
- package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +3 -38
- package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +3 -94
- package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +3 -76
- package/dist/node/components/docs/ops/ops-top.docs.js +2 -17
- package/dist/node/components/docs/ops/ops.docs.js +10 -302
- package/dist/node/components/docs/product/product.docblocks.js +5 -72
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -196
- package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -256
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -127
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -206
- package/dist/node/components/docs/reference/DocsReferencePage.js +3 -265
- package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -92
- package/dist/node/components/docs/reference/index.js +4 -470
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -350
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -359
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -101
- package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -301
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -206
- package/dist/node/components/docs/safety/SafetySigningPage.js +3 -90
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -79
- package/dist/node/components/docs/safety/index.js +7 -1480
- package/dist/node/components/docs/shared/StudioPrompt.js +1 -31
- package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +33 -0
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -158
- package/dist/node/components/docs/specs/SpecsConnectPage.js +7 -0
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +2 -260
- package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +66 -0
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -372
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -186
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -420
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -312
- package/dist/node/components/docs/specs/index.js +109 -1702
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -26
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -26
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -26
- package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -157
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -26
- package/dist/node/components/docs/studio/index.js +1 -282
- package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -19
- package/dist/node/components/integrations/index.js +2 -600
- package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -100
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -214
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -284
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -103
- package/dist/node/components/legal/PrivacyTemplate.js +1 -1025
- package/dist/node/components/legal/TermsTemplate.js +1 -941
- package/dist/node/components/legal/index.js +1 -1963
- package/dist/node/components/shared/FeatureGateNotice.js +1 -38
- package/dist/node/components/shared/index.js +1 -38
- package/dist/node/components/shell/WorkspaceHeader.js +1 -100
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -222
- package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -228
- package/dist/node/components/shell/WorkspaceSidebar.js +1 -68
- package/dist/node/components/shell/index.js +1 -287
- package/dist/node/components/templates/engine/index.js +1 -39
- package/dist/node/components/templates/index.js +11 -965
- package/dist/node/components/templates/messaging/ConversationList.js +2 -83
- package/dist/node/components/templates/messaging/MessageComposer.js +4 -150
- package/dist/node/components/templates/messaging/MessageThread.js +3 -83
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -265
- package/dist/node/components/templates/messaging/index.js +5 -269
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -16
- package/dist/node/components/templates/recipes/RecipeCard.js +1 -80
- package/dist/node/components/templates/recipes/RecipeDetail.js +1 -74
- package/dist/node/components/templates/recipes/RecipeList.js +3 -245
- package/dist/node/components/templates/recipes/index.js +3 -248
- package/dist/node/components/templates/todos/FilterBar.js +1 -107
- package/dist/node/components/templates/todos/TaskForm.js +2 -158
- package/dist/node/components/templates/todos/TaskItem.js +1 -77
- package/dist/node/components/templates/todos/TaskList.js +5 -449
- package/dist/node/components/templates/todos/index.js +5 -452
- package/dist/node/config/contractspec-blueprint.js +1 -123
- package/dist/node/config/contractspec-branding.js +1 -44
- package/dist/node/config/contractspec-routes.js +1 -24
- package/dist/node/config/index.js +1 -126
- package/dist/node/features/contracts-registry.js +1 -178
- package/dist/node/features/docs/docs.contracts.js +1 -17
- package/dist/node/features/docs/index.js +1 -17
- package/dist/node/features/docs.feature.js +1 -33
- package/dist/node/features/index.js +1 -315
- package/dist/node/features/mcp.feature.js +1 -30
- package/dist/node/features/presentations.feature.js +1 -33
- package/dist/node/features/registry.js +1 -116
- package/dist/node/index.js +556 -28580
- package/dist/node/infrastructure/elysia/index.js +1 -35
- package/dist/node/infrastructure/elysia/logger.js +1 -35
- package/dist/node/infrastructure/index.js +1 -35
- package/dist/node/libs/email/client.js +1 -114
- package/dist/node/libs/email/contact.js +12 -165
- package/dist/node/libs/email/newsletter.js +6 -167
- package/dist/node/libs/email/types.js +0 -2
- package/dist/node/libs/email/utils.js +2 -8
- package/dist/node/libs/email/waitlist-application.js +28 -209
- package/dist/node/libs/email/waitlist.js +6 -167
- package/dist/node/libs/email.js +46 -363
- package/dist/node/libs/posthog/client.js +1 -63
- package/dist/node/libs/posthog/native.js +1 -23
- package/dist/node/libs/posthog/server.js +1 -13
- package/dist/node/libs/pricing-examples.js +1 -18
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/node/presentation/features/atoms/index.js +1 -97
- package/dist/node/presentation/features/hooks/index.js +1 -397
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/node/presentation/features/index.js +1 -3063
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/node/presentation/features/molecules/index.js +1 -505
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/node/presentation/features/organisms/index.js +1 -1359
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -97
- package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -97
- package/dist/presentation/features/atoms/index.js +1 -97
- package/dist/presentation/features/hooks/index.js +1 -397
- package/dist/presentation/features/hooks/useContractsRegistry.js +1 -289
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -75
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -147
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -28
- package/dist/presentation/features/index.js +1 -3063
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -366
- package/dist/presentation/features/molecules/FeatureCard/index.js +1 -366
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -50
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -50
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -92
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -92
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -176
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -176
- package/dist/presentation/features/molecules/index.js +1 -505
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -304
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -154
- package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -154
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -909
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -909
- package/dist/presentation/features/organisms/FeatureEventsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureFormsList.js +1 -302
- package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -180
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -304
- package/dist/presentation/features/organisms/index.js +1 -1359
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -332
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -342
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -303
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -303
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -329
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -329
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -340
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -340
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -302
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -218
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -218
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -187
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -187
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -306
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -342
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -342
- package/package.json +109 -37
- package/src/components/docs/DocsIndexPage.tsx +55 -0
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +19 -0
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +34 -0
- package/src/components/docs/docsManifest.test.ts +70 -0
- package/src/components/docs/docsManifest.ts +71 -1
- package/src/components/docs/ecosystem/PluginsPage.tsx +24 -10
- package/src/components/docs/ecosystem/RegistryPage.tsx +11 -6
- package/src/components/docs/generated/docs-index._common.json +206 -273
- package/src/components/docs/generated/docs-index.control-plane.json +18 -0
- package/src/components/docs/generated/docs-index.defineExample.json +10 -0
- package/src/components/docs/generated/docs-index.manifest.json +22 -12
- package/src/components/docs/generated/docs-index.platform-acp.json +64 -0
- package/src/components/docs/generated/docs-index.platform-agent.json +89 -1
- package/src/components/docs/generated/docs-index.platform-context.json +48 -0
- package/src/components/docs/generated/docs-index.platform-control-plane.json +72 -0
- package/src/components/docs/generated/docs-index.platform-database.json +40 -0
- package/src/components/docs/generated/docs-index.platform-docs.json +64 -0
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +89 -1
- package/src/components/docs/generated/docs-index.pocket-family-office.json +8 -0
- package/src/components/docs/generated/docs-index.unknown.json +8 -0
- package/src/components/docs/guides/GuideConnectInRepoPage.tsx +184 -0
- package/src/components/docs/guides/GuideFirstModuleBundlePage.tsx +182 -0
- package/src/components/docs/guides/GuideHostBuilderWorkbenchPage.tsx +230 -0
- package/src/components/docs/guides/GuidesIndexPage.tsx +21 -0
- package/src/components/docs/guides/index.ts +3 -0
- package/src/components/docs/specs/SpecsBuilderControlPlanePage.tsx +210 -0
- package/src/components/docs/specs/SpecsConnectPage.tsx +162 -0
- package/src/components/docs/specs/SpecsModuleBundlesPage.tsx +223 -0
- package/src/components/docs/specs/SpecsOverlaysPage.tsx +20 -0
- package/src/components/docs/specs/SpecsOverviewPage.tsx +44 -0
- package/src/components/docs/specs/SpecsWorkflowsPage.tsx +9 -1
- package/src/components/docs/specs/index.ts +3 -0
- package/src/components/docs/studio/StudioOverviewPage.tsx +26 -0
- package/src/infrastructure/elysia/logger.ts +11 -3
|
@@ -1,271 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
var contractFirstApiBrief = {
|
|
4
|
-
title: "Contract-first API",
|
|
5
|
-
summary: "Design APIs by writing contracts first, then generate consistent implementations across frameworks.",
|
|
6
|
-
problems: [
|
|
7
|
-
"API drift between frontend and backend",
|
|
8
|
-
"Inconsistent error handling across endpoints",
|
|
9
|
-
"Documentation becomes outdated quickly",
|
|
10
|
-
"Manual OpenAPI maintenance is error-prone"
|
|
11
|
-
],
|
|
12
|
-
solutions: [
|
|
13
|
-
"Single source of truth for API contracts",
|
|
14
|
-
"Generate OpenAPI and SDKs from contracts",
|
|
15
|
-
"Type-safe request/response validation",
|
|
16
|
-
"Always-in-sync documentation"
|
|
17
|
-
],
|
|
18
|
-
audience: {
|
|
19
|
-
role: "API developers",
|
|
20
|
-
industry: "Software development",
|
|
21
|
-
maturity: "scaleup"
|
|
22
|
-
},
|
|
23
|
-
callToAction: "Start with a simple operation contract",
|
|
24
|
-
references: [
|
|
25
|
-
{
|
|
26
|
-
label: "Next.js One Endpoint Guide",
|
|
27
|
-
url: "/docs/guides/nextjs-one-endpoint"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
label: "API Reference",
|
|
31
|
-
url: "/docs/api"
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
};
|
|
35
|
-
var specDrivenDevelopmentBrief = {
|
|
36
|
-
title: "Spec-driven development",
|
|
37
|
-
summary: "Build features by writing specifications first, then generate type-safe implementations.",
|
|
38
|
-
problems: [
|
|
39
|
-
"Feature requirements are ambiguous",
|
|
40
|
-
"Frontend and backend implementations diverge",
|
|
41
|
-
"Testing lacks clear contract definitions",
|
|
42
|
-
"Code reviews focus on style instead of behavior"
|
|
43
|
-
],
|
|
44
|
-
solutions: [
|
|
45
|
-
"Executable specifications as single source of truth",
|
|
46
|
-
"Generate type-safe clients from specs",
|
|
47
|
-
"Automated contract testing",
|
|
48
|
-
"Clear behavior contracts for teams"
|
|
49
|
-
],
|
|
50
|
-
audience: {
|
|
51
|
-
role: "Development teams",
|
|
52
|
-
industry: "Software engineering",
|
|
53
|
-
maturity: "enterprise"
|
|
54
|
-
},
|
|
55
|
-
callToAction: "Define your first feature spec",
|
|
56
|
-
references: [
|
|
57
|
-
{
|
|
58
|
-
label: "Spec Validation + Typing Guide",
|
|
59
|
-
url: "/docs/guides/spec-validation-and-typing"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
label: "Core Contracts",
|
|
63
|
-
url: "/docs/core-contracts"
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
};
|
|
67
|
-
var deterministicCodegenBrief = {
|
|
68
|
-
title: "Deterministic codegen",
|
|
69
|
-
summary: "Regenerate code from contracts without breaking existing functionality or losing customizations.",
|
|
70
|
-
problems: [
|
|
71
|
-
"Generated code conflicts with manual changes",
|
|
72
|
-
"Regeneration loses custom business logic",
|
|
73
|
-
"Teams avoid regeneration after customization",
|
|
74
|
-
"Code migration between versions is risky"
|
|
75
|
-
],
|
|
76
|
-
solutions: [
|
|
77
|
-
"Clear separation of generated vs hand-written code",
|
|
78
|
-
"Incremental regeneration with conflict detection",
|
|
79
|
-
"Protected zones for custom logic",
|
|
80
|
-
"Automatic migration paths"
|
|
81
|
-
],
|
|
82
|
-
audience: {
|
|
83
|
-
role: "Platform engineers",
|
|
84
|
-
industry: "Developer tools",
|
|
85
|
-
maturity: "scaleup"
|
|
86
|
-
},
|
|
87
|
-
callToAction: "Try deterministic regeneration",
|
|
88
|
-
references: [
|
|
89
|
-
{
|
|
90
|
-
label: "Generate Docs + Clients Guide",
|
|
91
|
-
url: "/docs/guides/generate-docs-clients-schemas"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
label: "CLI Reference",
|
|
95
|
-
url: "/docs/getting-started/cli"
|
|
96
|
-
}
|
|
97
|
-
]
|
|
98
|
-
};
|
|
99
|
-
var schemaValidationTypescriptBrief = {
|
|
100
|
-
title: "Schema validation TypeScript",
|
|
101
|
-
summary: "Generate TypeScript types from contracts and validate data at runtime with zero overhead.",
|
|
102
|
-
problems: [
|
|
103
|
-
"Runtime type validation is boilerplate-heavy",
|
|
104
|
-
"Type definitions drift from schemas",
|
|
105
|
-
"Validation logic scattered across codebase",
|
|
106
|
-
"Poor error messages for invalid data"
|
|
107
|
-
],
|
|
108
|
-
solutions: [
|
|
109
|
-
"Auto-generated TypeScript from contracts",
|
|
110
|
-
"Zod schemas for runtime validation",
|
|
111
|
-
"Type-safe validation with clear errors",
|
|
112
|
-
"Single source of schema truth"
|
|
113
|
-
],
|
|
114
|
-
audience: {
|
|
115
|
-
role: "TypeScript developers",
|
|
116
|
-
industry: "Web development",
|
|
117
|
-
maturity: "early"
|
|
118
|
-
},
|
|
119
|
-
callToAction: "Generate typed contracts now",
|
|
120
|
-
references: [
|
|
121
|
-
{
|
|
122
|
-
label: "Type Safety Guide",
|
|
123
|
-
url: "/docs/guides/spec-validation-and-typing"
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
label: "Schema Reference",
|
|
127
|
-
url: "/docs/schemas"
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
};
|
|
131
|
-
var openapiAlternativeBrief = {
|
|
132
|
-
title: "OpenAPI alternative",
|
|
133
|
-
summary: "A spec-first approach that goes beyond OpenAPI with executable contracts and code generation.",
|
|
134
|
-
problems: [
|
|
135
|
-
"OpenAPI is documentation-only",
|
|
136
|
-
"No type safety from OpenAPI specs",
|
|
137
|
-
"Manual SDK generation is complex",
|
|
138
|
-
"Cannot validate implementations against OpenAPI"
|
|
139
|
-
],
|
|
140
|
-
solutions: [
|
|
141
|
-
"Executable contracts with validation",
|
|
142
|
-
"Generate multiple outputs from one spec",
|
|
143
|
-
"Type-safe by default",
|
|
144
|
-
"Built-in testing and validation"
|
|
145
|
-
],
|
|
146
|
-
audience: {
|
|
147
|
-
role: "API architects",
|
|
148
|
-
industry: "Enterprise software",
|
|
149
|
-
maturity: "enterprise"
|
|
150
|
-
},
|
|
151
|
-
callToAction: "Compare with OpenAPI approach",
|
|
152
|
-
references: [
|
|
153
|
-
{
|
|
154
|
-
label: "Generate OpenAPI from Contracts",
|
|
155
|
-
url: "/docs/guides/generate-docs-clients-schemas"
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
label: "Contract vs OpenAPI",
|
|
159
|
-
url: "/docs/comparison/openapi"
|
|
160
|
-
}
|
|
161
|
-
]
|
|
162
|
-
};
|
|
163
|
-
var generateClientFromSchemaBrief = {
|
|
164
|
-
title: "Generate client from schema",
|
|
165
|
-
summary: "Automatically generate type-safe API clients in any language from your contracts.",
|
|
166
|
-
problems: [
|
|
167
|
-
"Writing API clients is repetitive",
|
|
168
|
-
"Manual clients have type mismatches",
|
|
169
|
-
"Keeping clients in sync with APIs",
|
|
170
|
-
"Language-specific client maintenance"
|
|
171
|
-
],
|
|
172
|
-
solutions: [
|
|
173
|
-
"Generate clients for multiple languages",
|
|
174
|
-
"Type-safe request/response handling",
|
|
175
|
-
"Automatic client updates from contracts",
|
|
176
|
-
"Consistent error handling across languages"
|
|
177
|
-
],
|
|
178
|
-
audience: {
|
|
179
|
-
role: "Full-stack developers",
|
|
180
|
-
industry: "Software development",
|
|
181
|
-
maturity: "scaleup"
|
|
182
|
-
},
|
|
183
|
-
callToAction: "Generate your first API client",
|
|
184
|
-
references: [
|
|
185
|
-
{
|
|
186
|
-
label: "Client Generation Guide",
|
|
187
|
-
url: "/docs/guides/generate-docs-clients-schemas"
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
label: "Supported Languages",
|
|
191
|
-
url: "/docs/integrations"
|
|
192
|
-
}
|
|
193
|
-
]
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
// src/components/docs/intent/ContractFirstApiPage.tsx
|
|
197
|
-
import { contractFirstApiBrief as contractFirstApiBrief2 } from "@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";
|
|
198
|
-
import { SeoOptimizer } from "@contractspec/lib.content-gen/seo";
|
|
199
|
-
import { CodeBlock } from "@contractspec/lib.design-system";
|
|
200
|
-
import Link from "@contractspec/lib.ui-link";
|
|
201
|
-
import { ChevronRight } from "lucide-react";
|
|
202
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
203
|
-
var metadata = new SeoOptimizer().optimize(contractFirstApiBrief2);
|
|
204
|
-
function ContractFirstApiPage() {
|
|
205
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
206
|
-
className: "space-y-8",
|
|
207
|
-
children: [
|
|
208
|
-
/* @__PURE__ */ jsxs("div", {
|
|
209
|
-
className: "space-y-3",
|
|
210
|
-
children: [
|
|
211
|
-
/* @__PURE__ */ jsx("h1", {
|
|
212
|
-
className: "font-bold text-4xl",
|
|
213
|
-
children: contractFirstApiBrief2.title
|
|
214
|
-
}),
|
|
215
|
-
/* @__PURE__ */ jsx("p", {
|
|
216
|
-
className: "text-lg text-muted-foreground",
|
|
217
|
-
children: contractFirstApiBrief2.summary
|
|
218
|
-
})
|
|
219
|
-
]
|
|
220
|
-
}),
|
|
221
|
-
/* @__PURE__ */ jsxs("div", {
|
|
222
|
-
className: "card-subtle space-y-4 p-6",
|
|
223
|
-
children: [
|
|
224
|
-
/* @__PURE__ */ jsx("h2", {
|
|
225
|
-
className: "font-bold text-2xl",
|
|
226
|
-
children: "Problems Solved"
|
|
227
|
-
}),
|
|
228
|
-
/* @__PURE__ */ jsx("ul", {
|
|
229
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
230
|
-
children: contractFirstApiBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx("li", {
|
|
231
|
-
children: problem
|
|
232
|
-
}, index))
|
|
233
|
-
})
|
|
234
|
-
]
|
|
235
|
-
}),
|
|
236
|
-
/* @__PURE__ */ jsxs("div", {
|
|
237
|
-
className: "card-subtle space-y-4 p-6",
|
|
238
|
-
children: [
|
|
239
|
-
/* @__PURE__ */ jsx("h2", {
|
|
240
|
-
className: "font-bold text-2xl",
|
|
241
|
-
children: "Solutions"
|
|
242
|
-
}),
|
|
243
|
-
/* @__PURE__ */ jsx("ul", {
|
|
244
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
245
|
-
children: contractFirstApiBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx("li", {
|
|
246
|
-
children: solution
|
|
247
|
-
}, index))
|
|
248
|
-
})
|
|
249
|
-
]
|
|
250
|
-
}),
|
|
251
|
-
/* @__PURE__ */ jsxs("div", {
|
|
252
|
-
className: "space-y-6",
|
|
253
|
-
children: [
|
|
254
|
-
/* @__PURE__ */ jsxs("div", {
|
|
255
|
-
className: "space-y-3",
|
|
256
|
-
children: [
|
|
257
|
-
/* @__PURE__ */ jsx("h2", {
|
|
258
|
-
className: "font-bold text-2xl",
|
|
259
|
-
children: "Quick Start"
|
|
260
|
-
}),
|
|
261
|
-
/* @__PURE__ */ jsx("p", {
|
|
262
|
-
className: "text-muted-foreground text-sm",
|
|
263
|
-
children: "Define your first API contract and generate consistent implementations."
|
|
264
|
-
}),
|
|
265
|
-
/* @__PURE__ */ jsx(CodeBlock, {
|
|
266
|
-
language: "typescript",
|
|
267
|
-
filename: "src/contracts/user-create.operation.ts",
|
|
268
|
-
code: `import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
2
|
+
var B={title:"Contract-first API",summary:"Design APIs by writing contracts first, then generate consistent implementations across frameworks.",problems:["API drift between frontend and backend","Inconsistent error handling across endpoints","Documentation becomes outdated quickly","Manual OpenAPI maintenance is error-prone"],solutions:["Single source of truth for API contracts","Generate OpenAPI and SDKs from contracts","Type-safe request/response validation","Always-in-sync documentation"],audience:{role:"API developers",industry:"Software development",maturity:"scaleup"},callToAction:"Start with a simple operation contract",references:[{label:"Next.js One Endpoint Guide",url:"/docs/guides/nextjs-one-endpoint"},{label:"API Reference",url:"/docs/api"}]},s={title:"Spec-driven development",summary:"Build features by writing specifications first, then generate type-safe implementations.",problems:["Feature requirements are ambiguous","Frontend and backend implementations diverge","Testing lacks clear contract definitions","Code reviews focus on style instead of behavior"],solutions:["Executable specifications as single source of truth","Generate type-safe clients from specs","Automated contract testing","Clear behavior contracts for teams"],audience:{role:"Development teams",industry:"Software engineering",maturity:"enterprise"},callToAction:"Define your first feature spec",references:[{label:"Spec Validation + Typing Guide",url:"/docs/guides/spec-validation-and-typing"},{label:"Core Contracts",url:"/docs/core-contracts"}]},j={title:"Deterministic codegen",summary:"Regenerate code from contracts without breaking existing functionality or losing customizations.",problems:["Generated code conflicts with manual changes","Regeneration loses custom business logic","Teams avoid regeneration after customization","Code migration between versions is risky"],solutions:["Clear separation of generated vs hand-written code","Incremental regeneration with conflict detection","Protected zones for custom logic","Automatic migration paths"],audience:{role:"Platform engineers",industry:"Developer tools",maturity:"scaleup"},callToAction:"Try deterministic regeneration",references:[{label:"Generate Docs + Clients Guide",url:"/docs/guides/generate-docs-clients-schemas"},{label:"CLI Reference",url:"/docs/getting-started/cli"}]},x={title:"Schema validation TypeScript",summary:"Generate TypeScript types from contracts and validate data at runtime with zero overhead.",problems:["Runtime type validation is boilerplate-heavy","Type definitions drift from schemas","Validation logic scattered across codebase","Poor error messages for invalid data"],solutions:["Auto-generated TypeScript from contracts","Zod schemas for runtime validation","Type-safe validation with clear errors","Single source of schema truth"],audience:{role:"TypeScript developers",industry:"Web development",maturity:"early"},callToAction:"Generate typed contracts now",references:[{label:"Type Safety Guide",url:"/docs/guides/spec-validation-and-typing"},{label:"Schema Reference",url:"/docs/schemas"}]},ee={title:"OpenAPI alternative",summary:"A spec-first approach that goes beyond OpenAPI with executable contracts and code generation.",problems:["OpenAPI is documentation-only","No type safety from OpenAPI specs","Manual SDK generation is complex","Cannot validate implementations against OpenAPI"],solutions:["Executable contracts with validation","Generate multiple outputs from one spec","Type-safe by default","Built-in testing and validation"],audience:{role:"API architects",industry:"Enterprise software",maturity:"enterprise"},callToAction:"Compare with OpenAPI approach",references:[{label:"Generate OpenAPI from Contracts",url:"/docs/guides/generate-docs-clients-schemas"},{label:"Contract vs OpenAPI",url:"/docs/comparison/openapi"}]},te={title:"Generate client from schema",summary:"Automatically generate type-safe API clients in any language from your contracts.",problems:["Writing API clients is repetitive","Manual clients have type mismatches","Keeping clients in sync with APIs","Language-specific client maintenance"],solutions:["Generate clients for multiple languages","Type-safe request/response handling","Automatic client updates from contracts","Consistent error handling across languages"],audience:{role:"Full-stack developers",industry:"Software development",maturity:"scaleup"},callToAction:"Generate your first API client",references:[{label:"Client Generation Guide",url:"/docs/guides/generate-docs-clients-schemas"},{label:"Supported Languages",url:"/docs/integrations"}]};import{contractFirstApiBrief as p}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as W}from"@contractspec/lib.content-gen/seo";import{CodeBlock as T}from"@contractspec/lib.design-system";import b from"@contractspec/lib.ui-link";import{ChevronRight as Z}from"lucide-react";import{jsx as u,jsxs as d}from"react/jsx-runtime";var ie=new W().optimize(p);function H(){return d("div",{className:"space-y-8",children:[d("div",{className:"space-y-3",children:[u("h1",{className:"font-bold text-4xl",children:p.title}),u("p",{className:"text-lg text-muted-foreground",children:p.summary})]}),d("div",{className:"card-subtle space-y-4 p-6",children:[u("h2",{className:"font-bold text-2xl",children:"Problems Solved"}),u("ul",{className:"space-y-2 text-muted-foreground text-sm",children:p.problems.map((a,n)=>u("li",{children:a},n))})]}),d("div",{className:"card-subtle space-y-4 p-6",children:[u("h2",{className:"font-bold text-2xl",children:"Solutions"}),u("ul",{className:"space-y-2 text-muted-foreground text-sm",children:p.solutions.map((a,n)=>u("li",{children:a},n))})]}),d("div",{className:"space-y-6",children:[d("div",{className:"space-y-3",children:[u("h2",{className:"font-bold text-2xl",children:"Quick Start"}),u("p",{className:"text-muted-foreground text-sm",children:"Define your first API contract and generate consistent implementations."}),u(T,{language:"typescript",filename:"src/contracts/user-create.operation.ts",code:`import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
269
3
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
270
4
|
|
|
271
5
|
export const CreateUserOperation = defineOperation({
|
|
@@ -299,129 +33,7 @@ export const CreateUserOperation = defineOperation({
|
|
|
299
33
|
tags: ['users', 'auth'],
|
|
300
34
|
description: 'Create a new user account with email and password',
|
|
301
35
|
},
|
|
302
|
-
});`
|
|
303
|
-
})
|
|
304
|
-
]
|
|
305
|
-
}),
|
|
306
|
-
/* @__PURE__ */ jsxs("div", {
|
|
307
|
-
className: "space-y-3",
|
|
308
|
-
children: [
|
|
309
|
-
/* @__PURE__ */ jsx("h2", {
|
|
310
|
-
className: "font-bold text-2xl",
|
|
311
|
-
children: "Generate OpenAPI"
|
|
312
|
-
}),
|
|
313
|
-
/* @__PURE__ */ jsx("p", {
|
|
314
|
-
className: "text-muted-foreground text-sm",
|
|
315
|
-
children: "Export OpenAPI documentation directly from your contracts."
|
|
316
|
-
}),
|
|
317
|
-
/* @__PURE__ */ jsx(CodeBlock, {
|
|
318
|
-
language: "bash",
|
|
319
|
-
filename: "export-openapi",
|
|
320
|
-
code: `contractspec openapi export \\
|
|
321
|
-
--registry ./src/contracts/registry.ts \\
|
|
322
|
-
--out ./openapi.json`
|
|
323
|
-
})
|
|
324
|
-
]
|
|
325
|
-
})
|
|
326
|
-
]
|
|
327
|
-
}),
|
|
328
|
-
/* @__PURE__ */ jsxs("div", {
|
|
329
|
-
className: "flex items-center gap-4 pt-4",
|
|
330
|
-
children: [
|
|
331
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
332
|
-
href: "/docs/guides/nextjs-one-endpoint",
|
|
333
|
-
className: "btn-primary",
|
|
334
|
-
children: [
|
|
335
|
-
"Next.js Guide ",
|
|
336
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
337
|
-
size: 16
|
|
338
|
-
})
|
|
339
|
-
]
|
|
340
|
-
}),
|
|
341
|
-
/* @__PURE__ */ jsx(Link, {
|
|
342
|
-
href: "/docs/intent/spec-driven-development",
|
|
343
|
-
className: "btn-ghost",
|
|
344
|
-
children: "Spec-driven Development"
|
|
345
|
-
})
|
|
346
|
-
]
|
|
347
|
-
})
|
|
348
|
-
]
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// src/components/docs/intent/DeterministicCodegenPage.tsx
|
|
353
|
-
import { deterministicCodegenBrief as deterministicCodegenBrief2 } from "@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";
|
|
354
|
-
import { SeoOptimizer as SeoOptimizer2 } from "@contractspec/lib.content-gen/seo";
|
|
355
|
-
import { CodeBlock as CodeBlock2 } from "@contractspec/lib.design-system";
|
|
356
|
-
import Link2 from "@contractspec/lib.ui-link";
|
|
357
|
-
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
358
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
359
|
-
var metadata2 = new SeoOptimizer2().optimize(deterministicCodegenBrief2);
|
|
360
|
-
function DeterministicCodegenPage() {
|
|
361
|
-
return /* @__PURE__ */ jsxs2("div", {
|
|
362
|
-
className: "space-y-8",
|
|
363
|
-
children: [
|
|
364
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
365
|
-
className: "space-y-3",
|
|
366
|
-
children: [
|
|
367
|
-
/* @__PURE__ */ jsx2("h1", {
|
|
368
|
-
className: "font-bold text-4xl",
|
|
369
|
-
children: deterministicCodegenBrief2.title
|
|
370
|
-
}),
|
|
371
|
-
/* @__PURE__ */ jsx2("p", {
|
|
372
|
-
className: "text-lg text-muted-foreground",
|
|
373
|
-
children: deterministicCodegenBrief2.summary
|
|
374
|
-
})
|
|
375
|
-
]
|
|
376
|
-
}),
|
|
377
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
378
|
-
className: "card-subtle space-y-4 p-6",
|
|
379
|
-
children: [
|
|
380
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
381
|
-
className: "font-bold text-2xl",
|
|
382
|
-
children: "Regeneration Challenges"
|
|
383
|
-
}),
|
|
384
|
-
/* @__PURE__ */ jsx2("ul", {
|
|
385
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
386
|
-
children: deterministicCodegenBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx2("li", {
|
|
387
|
-
children: problem
|
|
388
|
-
}, index))
|
|
389
|
-
})
|
|
390
|
-
]
|
|
391
|
-
}),
|
|
392
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
393
|
-
className: "card-subtle space-y-4 p-6",
|
|
394
|
-
children: [
|
|
395
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
396
|
-
className: "font-bold text-2xl",
|
|
397
|
-
children: "Deterministic Solutions"
|
|
398
|
-
}),
|
|
399
|
-
/* @__PURE__ */ jsx2("ul", {
|
|
400
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
401
|
-
children: deterministicCodegenBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx2("li", {
|
|
402
|
-
children: solution
|
|
403
|
-
}, index))
|
|
404
|
-
})
|
|
405
|
-
]
|
|
406
|
-
}),
|
|
407
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
408
|
-
className: "space-y-6",
|
|
409
|
-
children: [
|
|
410
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
411
|
-
className: "space-y-3",
|
|
412
|
-
children: [
|
|
413
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
414
|
-
className: "font-bold text-2xl",
|
|
415
|
-
children: "Protected Zones"
|
|
416
|
-
}),
|
|
417
|
-
/* @__PURE__ */ jsx2("p", {
|
|
418
|
-
className: "text-muted-foreground text-sm",
|
|
419
|
-
children: "Separate generated code from hand-written business logic with clear boundaries."
|
|
420
|
-
}),
|
|
421
|
-
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
422
|
-
language: "typescript",
|
|
423
|
-
filename: "src/handlers/user-handlers.ts",
|
|
424
|
-
code: `// Hand-written business logic (protected from regeneration)
|
|
36
|
+
});`})]}),d("div",{className:"space-y-3",children:[u("h2",{className:"font-bold text-2xl",children:"Generate OpenAPI"}),u("p",{className:"text-muted-foreground text-sm",children:"Export OpenAPI documentation directly from your contracts."}),u(T,{language:"bash",filename:"export-openapi",code:"contractspec openapi export \\\n --registry ./src/contracts/registry.ts \\\n --out ./openapi.json"})]})]}),d("div",{className:"flex items-center gap-4 pt-4",children:[d(b,{href:"/docs/guides/nextjs-one-endpoint",className:"btn-primary",children:["Next.js Guide ",u(Z,{size:16})]}),u(b,{href:"/docs/intent/spec-driven-development",className:"btn-ghost",children:"Spec-driven Development"})]})]})}import{deterministicCodegenBrief as A}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as J}from"@contractspec/lib.content-gen/seo";import{CodeBlock as G}from"@contractspec/lib.design-system";import S from"@contractspec/lib.ui-link";import{ChevronRight as Q}from"lucide-react";import{jsx as r,jsxs as f}from"react/jsx-runtime";var me=new J().optimize(A);function R(){return f("div",{className:"space-y-8",children:[f("div",{className:"space-y-3",children:[r("h1",{className:"font-bold text-4xl",children:A.title}),r("p",{className:"text-lg text-muted-foreground",children:A.summary})]}),f("div",{className:"card-subtle space-y-4 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Regeneration Challenges"}),r("ul",{className:"space-y-2 text-muted-foreground text-sm",children:A.problems.map((a,n)=>r("li",{children:a},n))})]}),f("div",{className:"card-subtle space-y-4 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Deterministic Solutions"}),r("ul",{className:"space-y-2 text-muted-foreground text-sm",children:A.solutions.map((a,n)=>r("li",{children:a},n))})]}),f("div",{className:"space-y-6",children:[f("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Protected Zones"}),r("p",{className:"text-muted-foreground text-sm",children:"Separate generated code from hand-written business logic with clear boundaries."}),r(G,{language:"typescript",filename:"src/handlers/user-handlers.ts",code:`// Hand-written business logic (protected from regeneration)
|
|
425
37
|
export class UserService {
|
|
426
38
|
async createUser(input: CreateUserInput): Promise<CreateUserOutput> {
|
|
427
39
|
// Custom validation and business rules
|
|
@@ -458,151 +70,7 @@ export const createUserHandler = wrapOperationHandler(
|
|
|
458
70
|
operationName: 'createUser',
|
|
459
71
|
errorMapper: mapToStandardErrors,
|
|
460
72
|
}
|
|
461
|
-
);`
|
|
462
|
-
})
|
|
463
|
-
]
|
|
464
|
-
}),
|
|
465
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
466
|
-
className: "space-y-3",
|
|
467
|
-
children: [
|
|
468
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
469
|
-
className: "font-bold text-2xl",
|
|
470
|
-
children: "Incremental Regeneration"
|
|
471
|
-
}),
|
|
472
|
-
/* @__PURE__ */ jsx2("p", {
|
|
473
|
-
className: "text-muted-foreground text-sm",
|
|
474
|
-
children: "Regenerate only what changed while preserving custom logic."
|
|
475
|
-
}),
|
|
476
|
-
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
477
|
-
language: "bash",
|
|
478
|
-
filename: "incremental-regen",
|
|
479
|
-
code: `contractspec generate \\
|
|
480
|
-
--incremental \\
|
|
481
|
-
--preserve-zones ./src/handlers/*.ts \\
|
|
482
|
-
--input ./src/contracts/ \\
|
|
483
|
-
--output ./generated/`
|
|
484
|
-
})
|
|
485
|
-
]
|
|
486
|
-
}),
|
|
487
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
488
|
-
className: "space-y-3",
|
|
489
|
-
children: [
|
|
490
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
491
|
-
className: "font-bold text-2xl",
|
|
492
|
-
children: "Conflict Detection"
|
|
493
|
-
}),
|
|
494
|
-
/* @__PURE__ */ jsx2("p", {
|
|
495
|
-
className: "text-muted-foreground text-sm",
|
|
496
|
-
children: "Automatically detect and report conflicts during regeneration."
|
|
497
|
-
}),
|
|
498
|
-
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
499
|
-
language: "bash",
|
|
500
|
-
filename: "check-conflicts",
|
|
501
|
-
code: `contractspec generate \\
|
|
502
|
-
--check-conflicts \\
|
|
503
|
-
--report-conflicts ./conflicts.json`
|
|
504
|
-
})
|
|
505
|
-
]
|
|
506
|
-
})
|
|
507
|
-
]
|
|
508
|
-
}),
|
|
509
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
510
|
-
className: "flex items-center gap-4 pt-4",
|
|
511
|
-
children: [
|
|
512
|
-
/* @__PURE__ */ jsxs2(Link2, {
|
|
513
|
-
href: "/docs/guides/generate-docs-clients-schemas",
|
|
514
|
-
className: "btn-primary",
|
|
515
|
-
children: [
|
|
516
|
-
"Client Generation ",
|
|
517
|
-
/* @__PURE__ */ jsx2(ChevronRight2, {
|
|
518
|
-
size: 16
|
|
519
|
-
})
|
|
520
|
-
]
|
|
521
|
-
}),
|
|
522
|
-
/* @__PURE__ */ jsx2(Link2, {
|
|
523
|
-
href: "/docs/intent/schema-validation-typescript",
|
|
524
|
-
className: "btn-ghost",
|
|
525
|
-
children: "Type Safety"
|
|
526
|
-
})
|
|
527
|
-
]
|
|
528
|
-
})
|
|
529
|
-
]
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
// src/components/docs/intent/GenerateClientFromSchemaPage.tsx
|
|
534
|
-
import { generateClientFromSchemaBrief as generateClientFromSchemaBrief2 } from "@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";
|
|
535
|
-
import { SeoOptimizer as SeoOptimizer3 } from "@contractspec/lib.content-gen/seo";
|
|
536
|
-
import { CodeBlock as CodeBlock3 } from "@contractspec/lib.design-system";
|
|
537
|
-
import Link3 from "@contractspec/lib.ui-link";
|
|
538
|
-
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
539
|
-
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
540
|
-
var metadata3 = new SeoOptimizer3().optimize(generateClientFromSchemaBrief2);
|
|
541
|
-
function GenerateClientFromSchemaPage() {
|
|
542
|
-
return /* @__PURE__ */ jsxs3("div", {
|
|
543
|
-
className: "space-y-8",
|
|
544
|
-
children: [
|
|
545
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
546
|
-
className: "space-y-3",
|
|
547
|
-
children: [
|
|
548
|
-
/* @__PURE__ */ jsx3("h1", {
|
|
549
|
-
className: "font-bold text-4xl",
|
|
550
|
-
children: generateClientFromSchemaBrief2.title
|
|
551
|
-
}),
|
|
552
|
-
/* @__PURE__ */ jsx3("p", {
|
|
553
|
-
className: "text-lg text-muted-foreground",
|
|
554
|
-
children: generateClientFromSchemaBrief2.summary
|
|
555
|
-
})
|
|
556
|
-
]
|
|
557
|
-
}),
|
|
558
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
559
|
-
className: "card-subtle space-y-4 p-6",
|
|
560
|
-
children: [
|
|
561
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
562
|
-
className: "font-bold text-2xl",
|
|
563
|
-
children: "Client Development Problems"
|
|
564
|
-
}),
|
|
565
|
-
/* @__PURE__ */ jsx3("ul", {
|
|
566
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
567
|
-
children: generateClientFromSchemaBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx3("li", {
|
|
568
|
-
children: problem
|
|
569
|
-
}, index))
|
|
570
|
-
})
|
|
571
|
-
]
|
|
572
|
-
}),
|
|
573
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
574
|
-
className: "card-subtle space-y-4 p-6",
|
|
575
|
-
children: [
|
|
576
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
577
|
-
className: "font-bold text-2xl",
|
|
578
|
-
children: "Automated Solutions"
|
|
579
|
-
}),
|
|
580
|
-
/* @__PURE__ */ jsx3("ul", {
|
|
581
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
582
|
-
children: generateClientFromSchemaBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx3("li", {
|
|
583
|
-
children: solution
|
|
584
|
-
}, index))
|
|
585
|
-
})
|
|
586
|
-
]
|
|
587
|
-
}),
|
|
588
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
589
|
-
className: "space-y-6",
|
|
590
|
-
children: [
|
|
591
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
592
|
-
className: "space-y-3",
|
|
593
|
-
children: [
|
|
594
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
595
|
-
className: "font-bold text-2xl",
|
|
596
|
-
children: "Contract Definition"
|
|
597
|
-
}),
|
|
598
|
-
/* @__PURE__ */ jsx3("p", {
|
|
599
|
-
className: "text-muted-foreground text-sm",
|
|
600
|
-
children: "Define your API contract once, generate clients for any language."
|
|
601
|
-
}),
|
|
602
|
-
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
603
|
-
language: "typescript",
|
|
604
|
-
filename: "src/contracts/api.contract.ts",
|
|
605
|
-
code: `import { defineContract } from '@contractspec/lib.contracts-spec';
|
|
73
|
+
);`})]}),f("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Incremental Regeneration"}),r("p",{className:"text-muted-foreground text-sm",children:"Regenerate only what changed while preserving custom logic."}),r(G,{language:"bash",filename:"incremental-regen",code:"contractspec generate \\\n --incremental \\\n --preserve-zones ./src/handlers/*.ts \\\n --input ./src/contracts/ \\\n --output ./generated/"})]}),f("div",{className:"space-y-3",children:[r("h2",{className:"font-bold text-2xl",children:"Conflict Detection"}),r("p",{className:"text-muted-foreground text-sm",children:"Automatically detect and report conflicts during regeneration."}),r(G,{language:"bash",filename:"check-conflicts",code:"contractspec generate \\\n --check-conflicts \\\n --report-conflicts ./conflicts.json"})]})]}),f("div",{className:"flex items-center gap-4 pt-4",children:[f(S,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Client Generation ",r(Q,{size:16})]}),r(S,{href:"/docs/intent/schema-validation-typescript",className:"btn-ghost",children:"Type Safety"})]})]})}import{generateClientFromSchemaBrief as I}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as U}from"@contractspec/lib.content-gen/seo";import{CodeBlock as g}from"@contractspec/lib.design-system";import O from"@contractspec/lib.ui-link";import{ChevronRight as X}from"lucide-react";import{jsx as t,jsxs as i}from"react/jsx-runtime";var be=new U().optimize(I);function Y(){return i("div",{className:"space-y-8",children:[i("div",{className:"space-y-3",children:[t("h1",{className:"font-bold text-4xl",children:I.title}),t("p",{className:"text-lg text-muted-foreground",children:I.summary})]}),i("div",{className:"card-subtle space-y-4 p-6",children:[t("h2",{className:"font-bold text-2xl",children:"Client Development Problems"}),t("ul",{className:"space-y-2 text-muted-foreground text-sm",children:I.problems.map((a,n)=>t("li",{children:a},n))})]}),i("div",{className:"card-subtle space-y-4 p-6",children:[t("h2",{className:"font-bold text-2xl",children:"Automated Solutions"}),t("ul",{className:"space-y-2 text-muted-foreground text-sm",children:I.solutions.map((a,n)=>t("li",{children:a},n))})]}),i("div",{className:"space-y-6",children:[i("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Contract Definition"}),t("p",{className:"text-muted-foreground text-sm",children:"Define your API contract once, generate clients for any language."}),t(g,{language:"typescript",filename:"src/contracts/api.contract.ts",code:`import { defineContract } from '@contractspec/lib.contracts-spec';
|
|
606
74
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
607
75
|
|
|
608
76
|
export const ApiContract = defineContract({
|
|
@@ -672,25 +140,7 @@ export const ApiContract = defineContract({
|
|
|
672
140
|
description: 'User management API with authentication',
|
|
673
141
|
tags: ['users', 'authentication'],
|
|
674
142
|
},
|
|
675
|
-
});`
|
|
676
|
-
})
|
|
677
|
-
]
|
|
678
|
-
}),
|
|
679
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
680
|
-
className: "space-y-3",
|
|
681
|
-
children: [
|
|
682
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
683
|
-
className: "font-bold text-2xl",
|
|
684
|
-
children: "Generate Multiple Clients"
|
|
685
|
-
}),
|
|
686
|
-
/* @__PURE__ */ jsx3("p", {
|
|
687
|
-
className: "text-muted-foreground text-sm",
|
|
688
|
-
children: "Generate type-safe clients for any language from the same contract."
|
|
689
|
-
}),
|
|
690
|
-
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
691
|
-
language: "bash",
|
|
692
|
-
filename: "generate-clients",
|
|
693
|
-
code: `# Generate all supported language clients
|
|
143
|
+
});`})]}),i("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Generate Multiple Clients"}),t("p",{className:"text-muted-foreground text-sm",children:"Generate type-safe clients for any language from the same contract."}),t(g,{language:"bash",filename:"generate-clients",code:`# Generate all supported language clients
|
|
694
144
|
contractspec generate clients \\
|
|
695
145
|
--contract ./src/contracts/api.contract.ts \\
|
|
696
146
|
--output ./generated/clients \\
|
|
@@ -707,35 +157,7 @@ contractspec generate clients \\
|
|
|
707
157
|
# --with-types: Include TypeScript definitions
|
|
708
158
|
# --with-tests: Generate client test suites
|
|
709
159
|
# --with-docs: Include client documentation
|
|
710
|
-
# --framework: Use specific HTTP client framework`
|
|
711
|
-
})
|
|
712
|
-
]
|
|
713
|
-
}),
|
|
714
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
715
|
-
className: "space-y-3",
|
|
716
|
-
children: [
|
|
717
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
718
|
-
className: "font-bold text-2xl",
|
|
719
|
-
children: "Generated Client Examples"
|
|
720
|
-
}),
|
|
721
|
-
/* @__PURE__ */ jsx3("p", {
|
|
722
|
-
className: "text-muted-foreground text-sm",
|
|
723
|
-
children: "Each generated client is fully type-safe and idiomatic."
|
|
724
|
-
}),
|
|
725
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
726
|
-
className: "space-y-4",
|
|
727
|
-
children: [
|
|
728
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
729
|
-
className: "card-subtle p-4",
|
|
730
|
-
children: [
|
|
731
|
-
/* @__PURE__ */ jsx3("h4", {
|
|
732
|
-
className: "font-semibold text-lg",
|
|
733
|
-
children: "TypeScript Client"
|
|
734
|
-
}),
|
|
735
|
-
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
736
|
-
language: "typescript",
|
|
737
|
-
filename: "generated/clients/typescript/index.ts",
|
|
738
|
-
code: `import { MyAPIClient } from './client';
|
|
160
|
+
# --framework: Use specific HTTP client framework`})]}),i("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Generated Client Examples"}),t("p",{className:"text-muted-foreground text-sm",children:"Each generated client is fully type-safe and idiomatic."}),i("div",{className:"space-y-4",children:[i("div",{className:"card-subtle p-4",children:[t("h4",{className:"font-semibold text-lg",children:"TypeScript Client"}),t(g,{language:"typescript",filename:"generated/clients/typescript/index.ts",code:`import { MyAPIClient } from './client';
|
|
739
161
|
|
|
740
162
|
const client = new MyAPIClient({
|
|
741
163
|
baseUrl: 'https://api.example.com',
|
|
@@ -755,21 +177,7 @@ const newUser = await client.createUser({
|
|
|
755
177
|
|
|
756
178
|
// Full type inference
|
|
757
179
|
// users: GetUsersResponse
|
|
758
|
-
// newUser: CreateUserResponse`
|
|
759
|
-
})
|
|
760
|
-
]
|
|
761
|
-
}),
|
|
762
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
763
|
-
className: "card-subtle p-4",
|
|
764
|
-
children: [
|
|
765
|
-
/* @__PURE__ */ jsx3("h4", {
|
|
766
|
-
className: "font-semibold text-lg",
|
|
767
|
-
children: "Python Client"
|
|
768
|
-
}),
|
|
769
|
-
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
770
|
-
language: "python",
|
|
771
|
-
filename: "generated/clients/python/index.py",
|
|
772
|
-
code: `from myapi_client import MyAPIClient
|
|
180
|
+
// newUser: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[t("h4",{className:"font-semibold text-lg",children:"Python Client"}),t(g,{language:"python",filename:"generated/clients/python/index.py",code:`from myapi_client import MyAPIClient
|
|
773
181
|
|
|
774
182
|
client = MyAPIClient(
|
|
775
183
|
base_url='https://api.example.com',
|
|
@@ -789,21 +197,7 @@ new_user = await client.create_user(
|
|
|
789
197
|
|
|
790
198
|
# Full type hints
|
|
791
199
|
# users: GetUsersResponse
|
|
792
|
-
# new_user: CreateUserResponse`
|
|
793
|
-
})
|
|
794
|
-
]
|
|
795
|
-
}),
|
|
796
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
797
|
-
className: "card-subtle p-4",
|
|
798
|
-
children: [
|
|
799
|
-
/* @__PURE__ */ jsx3("h4", {
|
|
800
|
-
className: "font-semibold text-lg",
|
|
801
|
-
children: "Go Client"
|
|
802
|
-
}),
|
|
803
|
-
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
804
|
-
language: "go",
|
|
805
|
-
filename: "generated/clients/go/client.go",
|
|
806
|
-
code: `package main
|
|
200
|
+
# new_user: CreateUserResponse`})]}),i("div",{className:"card-subtle p-4",children:[t("h4",{className:"font-semibold text-lg",children:"Go Client"}),t(g,{language:"go",filename:"generated/clients/go/client.go",code:`package main
|
|
807
201
|
|
|
808
202
|
import (
|
|
809
203
|
"context"
|
|
@@ -830,29 +224,7 @@ func main() {
|
|
|
830
224
|
// Full type checking at compile time
|
|
831
225
|
// users: *GetUsersResponse
|
|
832
226
|
// newUser: *CreateUserResponse
|
|
833
|
-
}`
|
|
834
|
-
})
|
|
835
|
-
]
|
|
836
|
-
})
|
|
837
|
-
]
|
|
838
|
-
})
|
|
839
|
-
]
|
|
840
|
-
}),
|
|
841
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
842
|
-
className: "space-y-3",
|
|
843
|
-
children: [
|
|
844
|
-
/* @__PURE__ */ jsx3("h2", {
|
|
845
|
-
className: "font-bold text-2xl",
|
|
846
|
-
children: "Advanced Features"
|
|
847
|
-
}),
|
|
848
|
-
/* @__PURE__ */ jsx3("p", {
|
|
849
|
-
className: "text-muted-foreground text-sm",
|
|
850
|
-
children: "Generated clients include enterprise-grade features out of the box."
|
|
851
|
-
}),
|
|
852
|
-
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
853
|
-
language: "typescript",
|
|
854
|
-
filename: "client-features.ts",
|
|
855
|
-
code: `// Advanced client features
|
|
227
|
+
}`})]})]})]}),i("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Advanced Features"}),t("p",{className:"text-muted-foreground text-sm",children:"Generated clients include enterprise-grade features out of the box."}),t(g,{language:"typescript",filename:"client-features.ts",code:`// Advanced client features
|
|
856
228
|
const client = new MyAPIClient({
|
|
857
229
|
baseUrl: 'https://api.example.com',
|
|
858
230
|
apiKey: 'your-api-key',
|
|
@@ -895,185 +267,7 @@ const user2 = client.getUser({ id: '123' }); // Uses cached result
|
|
|
895
267
|
// Request cancellation
|
|
896
268
|
const controller = new AbortController();
|
|
897
269
|
const promise = client.getUsers({ page: 1, signal: controller.signal });
|
|
898
|
-
controller.abort(); // Cancels the request`
|
|
899
|
-
})
|
|
900
|
-
]
|
|
901
|
-
})
|
|
902
|
-
]
|
|
903
|
-
}),
|
|
904
|
-
/* @__PURE__ */ jsxs3("div", {
|
|
905
|
-
className: "flex items-center gap-4 pt-4",
|
|
906
|
-
children: [
|
|
907
|
-
/* @__PURE__ */ jsxs3(Link3, {
|
|
908
|
-
href: "/docs/guides/generate-docs-clients-schemas",
|
|
909
|
-
className: "btn-primary",
|
|
910
|
-
children: [
|
|
911
|
-
"Client Generation Guide ",
|
|
912
|
-
/* @__PURE__ */ jsx3(ChevronRight3, {
|
|
913
|
-
size: 16
|
|
914
|
-
})
|
|
915
|
-
]
|
|
916
|
-
}),
|
|
917
|
-
/* @__PURE__ */ jsx3(Link3, {
|
|
918
|
-
href: "/docs/intent/contract-first-api",
|
|
919
|
-
className: "btn-ghost",
|
|
920
|
-
children: "Contract-first API"
|
|
921
|
-
})
|
|
922
|
-
]
|
|
923
|
-
})
|
|
924
|
-
]
|
|
925
|
-
});
|
|
926
|
-
}
|
|
927
|
-
|
|
928
|
-
// src/components/docs/intent/OpenapiAlternativePage.tsx
|
|
929
|
-
import { openapiAlternativeBrief as openapiAlternativeBrief2 } from "@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";
|
|
930
|
-
import { SeoOptimizer as SeoOptimizer4 } from "@contractspec/lib.content-gen/seo";
|
|
931
|
-
import { CodeBlock as CodeBlock4 } from "@contractspec/lib.design-system";
|
|
932
|
-
import Link4 from "@contractspec/lib.ui-link";
|
|
933
|
-
import { ChevronRight as ChevronRight4 } from "lucide-react";
|
|
934
|
-
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
935
|
-
var metadata4 = new SeoOptimizer4().optimize(openapiAlternativeBrief2);
|
|
936
|
-
function OpenapiAlternativePage() {
|
|
937
|
-
return /* @__PURE__ */ jsxs4("div", {
|
|
938
|
-
className: "space-y-8",
|
|
939
|
-
children: [
|
|
940
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
941
|
-
className: "space-y-3",
|
|
942
|
-
children: [
|
|
943
|
-
/* @__PURE__ */ jsx4("h1", {
|
|
944
|
-
className: "font-bold text-4xl",
|
|
945
|
-
children: openapiAlternativeBrief2.title
|
|
946
|
-
}),
|
|
947
|
-
/* @__PURE__ */ jsx4("p", {
|
|
948
|
-
className: "text-lg text-muted-foreground",
|
|
949
|
-
children: openapiAlternativeBrief2.summary
|
|
950
|
-
})
|
|
951
|
-
]
|
|
952
|
-
}),
|
|
953
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
954
|
-
className: "card-subtle space-y-4 p-6",
|
|
955
|
-
children: [
|
|
956
|
-
/* @__PURE__ */ jsx4("h2", {
|
|
957
|
-
className: "font-bold text-2xl",
|
|
958
|
-
children: "OpenAPI Limitations"
|
|
959
|
-
}),
|
|
960
|
-
/* @__PURE__ */ jsx4("ul", {
|
|
961
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
962
|
-
children: openapiAlternativeBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx4("li", {
|
|
963
|
-
children: problem
|
|
964
|
-
}, index))
|
|
965
|
-
})
|
|
966
|
-
]
|
|
967
|
-
}),
|
|
968
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
969
|
-
className: "card-subtle space-y-4 p-6",
|
|
970
|
-
children: [
|
|
971
|
-
/* @__PURE__ */ jsx4("h2", {
|
|
972
|
-
className: "font-bold text-2xl",
|
|
973
|
-
children: "ContractSpec Advantages"
|
|
974
|
-
}),
|
|
975
|
-
/* @__PURE__ */ jsx4("ul", {
|
|
976
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
977
|
-
children: openapiAlternativeBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx4("li", {
|
|
978
|
-
children: solution
|
|
979
|
-
}, index))
|
|
980
|
-
})
|
|
981
|
-
]
|
|
982
|
-
}),
|
|
983
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
984
|
-
className: "space-y-6",
|
|
985
|
-
children: [
|
|
986
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
987
|
-
className: "space-y-3",
|
|
988
|
-
children: [
|
|
989
|
-
/* @__PURE__ */ jsx4("h2", {
|
|
990
|
-
className: "font-bold text-2xl",
|
|
991
|
-
children: "Comparison: OpenAPI vs ContractSpec"
|
|
992
|
-
}),
|
|
993
|
-
/* @__PURE__ */ jsx4("p", {
|
|
994
|
-
className: "text-muted-foreground text-sm",
|
|
995
|
-
children: "Key differences between OpenAPI documentation and ContractSpec executable contracts."
|
|
996
|
-
}),
|
|
997
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
998
|
-
className: "grid gap-6 md:grid-cols-2",
|
|
999
|
-
children: [
|
|
1000
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
1001
|
-
className: "card-subtle space-y-3 p-4",
|
|
1002
|
-
children: [
|
|
1003
|
-
/* @__PURE__ */ jsx4("h3", {
|
|
1004
|
-
className: "font-semibold text-lg",
|
|
1005
|
-
children: "OpenAPI"
|
|
1006
|
-
}),
|
|
1007
|
-
/* @__PURE__ */ jsxs4("ul", {
|
|
1008
|
-
className: "space-y-1 text-muted-foreground text-sm",
|
|
1009
|
-
children: [
|
|
1010
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1011
|
-
children: "\u2022 Documentation specification only"
|
|
1012
|
-
}),
|
|
1013
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1014
|
-
children: "\u2022 No runtime validation"
|
|
1015
|
-
}),
|
|
1016
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1017
|
-
children: "\u2022 Manual code generation"
|
|
1018
|
-
}),
|
|
1019
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1020
|
-
children: "\u2022 Type safety requires tools"
|
|
1021
|
-
}),
|
|
1022
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1023
|
-
children: "\u2022 Separate schemas from documentation"
|
|
1024
|
-
})
|
|
1025
|
-
]
|
|
1026
|
-
})
|
|
1027
|
-
]
|
|
1028
|
-
}),
|
|
1029
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
1030
|
-
className: "card-subtle space-y-3 p-4",
|
|
1031
|
-
children: [
|
|
1032
|
-
/* @__PURE__ */ jsx4("h3", {
|
|
1033
|
-
className: "font-semibold text-lg",
|
|
1034
|
-
children: "ContractSpec"
|
|
1035
|
-
}),
|
|
1036
|
-
/* @__PURE__ */ jsxs4("ul", {
|
|
1037
|
-
className: "space-y-1 text-muted-foreground text-sm",
|
|
1038
|
-
children: [
|
|
1039
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1040
|
-
children: "\u2022 Executable contracts"
|
|
1041
|
-
}),
|
|
1042
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1043
|
-
children: "\u2022 Built-in runtime validation"
|
|
1044
|
-
}),
|
|
1045
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1046
|
-
children: "\u2022 Automatic code generation"
|
|
1047
|
-
}),
|
|
1048
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1049
|
-
children: "\u2022 Type-safe by default"
|
|
1050
|
-
}),
|
|
1051
|
-
/* @__PURE__ */ jsx4("li", {
|
|
1052
|
-
children: "\u2022 Unified spec and implementation"
|
|
1053
|
-
})
|
|
1054
|
-
]
|
|
1055
|
-
})
|
|
1056
|
-
]
|
|
1057
|
-
})
|
|
1058
|
-
]
|
|
1059
|
-
})
|
|
1060
|
-
]
|
|
1061
|
-
}),
|
|
1062
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
1063
|
-
className: "space-y-3",
|
|
1064
|
-
children: [
|
|
1065
|
-
/* @__PURE__ */ jsx4("h2", {
|
|
1066
|
-
className: "font-bold text-2xl",
|
|
1067
|
-
children: "Export from Contracts"
|
|
1068
|
-
}),
|
|
1069
|
-
/* @__PURE__ */ jsx4("p", {
|
|
1070
|
-
className: "text-muted-foreground text-sm",
|
|
1071
|
-
children: "Generate OpenAPI documentation from ContractSpec for existing tooling."
|
|
1072
|
-
}),
|
|
1073
|
-
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
1074
|
-
language: "bash",
|
|
1075
|
-
filename: "export-openapi",
|
|
1076
|
-
code: `# From ContractSpec contracts
|
|
270
|
+
controller.abort(); // Cancels the request`})]})]}),i("div",{className:"flex items-center gap-4 pt-4",children:[i(O,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Client Generation Guide ",t(X,{size:16})]}),t(O,{href:"/docs/intent/contract-first-api",className:"btn-ghost",children:"Contract-first API"})]})]})}import{openapiAlternativeBrief as w}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as _}from"@contractspec/lib.content-gen/seo";import{CodeBlock as q}from"@contractspec/lib.design-system";import E from"@contractspec/lib.ui-link";import{ChevronRight as $}from"lucide-react";import{jsx as e,jsxs as c}from"react/jsx-runtime";var We=new _().optimize(w);function D(){return c("div",{className:"space-y-8",children:[c("div",{className:"space-y-3",children:[e("h1",{className:"font-bold text-4xl",children:w.title}),e("p",{className:"text-lg text-muted-foreground",children:w.summary})]}),c("div",{className:"card-subtle space-y-4 p-6",children:[e("h2",{className:"font-bold text-2xl",children:"OpenAPI Limitations"}),e("ul",{className:"space-y-2 text-muted-foreground text-sm",children:w.problems.map((a,n)=>e("li",{children:a},n))})]}),c("div",{className:"card-subtle space-y-4 p-6",children:[e("h2",{className:"font-bold text-2xl",children:"ContractSpec Advantages"}),e("ul",{className:"space-y-2 text-muted-foreground text-sm",children:w.solutions.map((a,n)=>e("li",{children:a},n))})]}),c("div",{className:"space-y-6",children:[c("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Comparison: OpenAPI vs ContractSpec"}),e("p",{className:"text-muted-foreground text-sm",children:"Key differences between OpenAPI documentation and ContractSpec executable contracts."}),c("div",{className:"grid gap-6 md:grid-cols-2",children:[c("div",{className:"card-subtle space-y-3 p-4",children:[e("h3",{className:"font-semibold text-lg",children:"OpenAPI"}),c("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[e("li",{children:"\u2022 Documentation specification only"}),e("li",{children:"\u2022 No runtime validation"}),e("li",{children:"\u2022 Manual code generation"}),e("li",{children:"\u2022 Type safety requires tools"}),e("li",{children:"\u2022 Separate schemas from documentation"})]})]}),c("div",{className:"card-subtle space-y-3 p-4",children:[e("h3",{className:"font-semibold text-lg",children:"ContractSpec"}),c("ul",{className:"space-y-1 text-muted-foreground text-sm",children:[e("li",{children:"\u2022 Executable contracts"}),e("li",{children:"\u2022 Built-in runtime validation"}),e("li",{children:"\u2022 Automatic code generation"}),e("li",{children:"\u2022 Type-safe by default"}),e("li",{children:"\u2022 Unified spec and implementation"})]})]})]})]}),c("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Export from Contracts"}),e("p",{className:"text-muted-foreground text-sm",children:"Generate OpenAPI documentation from ContractSpec for existing tooling."}),e(q,{language:"bash",filename:"export-openapi",code:`# From ContractSpec contracts
|
|
1077
271
|
contractspec openapi export \\
|
|
1078
272
|
--registry ./src/contracts/registry.ts \\
|
|
1079
273
|
--format yaml \\
|
|
@@ -1081,25 +275,7 @@ contractspec openapi export \\
|
|
|
1081
275
|
|
|
1082
276
|
# Compare: Manual OpenAPI vs Generated
|
|
1083
277
|
# Manual: Write OpenAPI by hand, maintain separately
|
|
1084
|
-
# Generated: Single source of truth, always in sync`
|
|
1085
|
-
})
|
|
1086
|
-
]
|
|
1087
|
-
}),
|
|
1088
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
1089
|
-
className: "space-y-3",
|
|
1090
|
-
children: [
|
|
1091
|
-
/* @__PURE__ */ jsx4("h2", {
|
|
1092
|
-
className: "font-bold text-2xl",
|
|
1093
|
-
children: "Beyond Documentation"
|
|
1094
|
-
}),
|
|
1095
|
-
/* @__PURE__ */ jsx4("p", {
|
|
1096
|
-
className: "text-muted-foreground text-sm",
|
|
1097
|
-
children: "ContractSpec provides more than just API documentation."
|
|
1098
|
-
}),
|
|
1099
|
-
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
1100
|
-
language: "typescript",
|
|
1101
|
-
filename: "multi-output-example.ts",
|
|
1102
|
-
code: `// One contract, multiple outputs
|
|
278
|
+
# Generated: Single source of truth, always in sync`})]}),c("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Beyond Documentation"}),e("p",{className:"text-muted-foreground text-sm",children:"ContractSpec provides more than just API documentation."}),e(q,{language:"typescript",filename:"multi-output-example.ts",code:`// One contract, multiple outputs
|
|
1103
279
|
import { UserApiContract } from './contracts/user-api.contract';
|
|
1104
280
|
|
|
1105
281
|
// Generated outputs
|
|
@@ -1129,109 +305,7 @@ export const outputs = {
|
|
|
1129
305
|
|
|
1130
306
|
// Type definitions
|
|
1131
307
|
types: UserApiContract.toTypescript(),
|
|
1132
|
-
};`
|
|
1133
|
-
})
|
|
1134
|
-
]
|
|
1135
|
-
})
|
|
1136
|
-
]
|
|
1137
|
-
}),
|
|
1138
|
-
/* @__PURE__ */ jsxs4("div", {
|
|
1139
|
-
className: "flex items-center gap-4 pt-4",
|
|
1140
|
-
children: [
|
|
1141
|
-
/* @__PURE__ */ jsxs4(Link4, {
|
|
1142
|
-
href: "/docs/guides/generate-docs-clients-schemas",
|
|
1143
|
-
className: "btn-primary",
|
|
1144
|
-
children: [
|
|
1145
|
-
"Generate from Contracts ",
|
|
1146
|
-
/* @__PURE__ */ jsx4(ChevronRight4, {
|
|
1147
|
-
size: 16
|
|
1148
|
-
})
|
|
1149
|
-
]
|
|
1150
|
-
}),
|
|
1151
|
-
/* @__PURE__ */ jsx4(Link4, {
|
|
1152
|
-
href: "/docs/intent/generate-client-from-schema",
|
|
1153
|
-
className: "btn-ghost",
|
|
1154
|
-
children: "Client Generation"
|
|
1155
|
-
})
|
|
1156
|
-
]
|
|
1157
|
-
})
|
|
1158
|
-
]
|
|
1159
|
-
});
|
|
1160
|
-
}
|
|
1161
|
-
|
|
1162
|
-
// src/components/docs/intent/SchemaValidationTypescriptPage.tsx
|
|
1163
|
-
import { schemaValidationTypescriptBrief as schemaValidationTypescriptBrief2 } from "@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";
|
|
1164
|
-
import { SeoOptimizer as SeoOptimizer5 } from "@contractspec/lib.content-gen/seo";
|
|
1165
|
-
import { CodeBlock as CodeBlock5 } from "@contractspec/lib.design-system";
|
|
1166
|
-
import Link5 from "@contractspec/lib.ui-link";
|
|
1167
|
-
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
1168
|
-
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1169
|
-
var metadata5 = new SeoOptimizer5().optimize(schemaValidationTypescriptBrief2);
|
|
1170
|
-
function SchemaValidationTypescriptPage() {
|
|
1171
|
-
return /* @__PURE__ */ jsxs5("div", {
|
|
1172
|
-
className: "space-y-8",
|
|
1173
|
-
children: [
|
|
1174
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1175
|
-
className: "space-y-3",
|
|
1176
|
-
children: [
|
|
1177
|
-
/* @__PURE__ */ jsx5("h1", {
|
|
1178
|
-
className: "font-bold text-4xl",
|
|
1179
|
-
children: schemaValidationTypescriptBrief2.title
|
|
1180
|
-
}),
|
|
1181
|
-
/* @__PURE__ */ jsx5("p", {
|
|
1182
|
-
className: "text-lg text-muted-foreground",
|
|
1183
|
-
children: schemaValidationTypescriptBrief2.summary
|
|
1184
|
-
})
|
|
1185
|
-
]
|
|
1186
|
-
}),
|
|
1187
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1188
|
-
className: "card-subtle space-y-4 p-6",
|
|
1189
|
-
children: [
|
|
1190
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
1191
|
-
className: "font-bold text-2xl",
|
|
1192
|
-
children: "Validation Pain Points"
|
|
1193
|
-
}),
|
|
1194
|
-
/* @__PURE__ */ jsx5("ul", {
|
|
1195
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
1196
|
-
children: schemaValidationTypescriptBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx5("li", {
|
|
1197
|
-
children: problem
|
|
1198
|
-
}, index))
|
|
1199
|
-
})
|
|
1200
|
-
]
|
|
1201
|
-
}),
|
|
1202
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1203
|
-
className: "card-subtle space-y-4 p-6",
|
|
1204
|
-
children: [
|
|
1205
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
1206
|
-
className: "font-bold text-2xl",
|
|
1207
|
-
children: "Type-safe Solutions"
|
|
1208
|
-
}),
|
|
1209
|
-
/* @__PURE__ */ jsx5("ul", {
|
|
1210
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
1211
|
-
children: schemaValidationTypescriptBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx5("li", {
|
|
1212
|
-
children: solution
|
|
1213
|
-
}, index))
|
|
1214
|
-
})
|
|
1215
|
-
]
|
|
1216
|
-
}),
|
|
1217
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1218
|
-
className: "space-y-6",
|
|
1219
|
-
children: [
|
|
1220
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1221
|
-
className: "space-y-3",
|
|
1222
|
-
children: [
|
|
1223
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
1224
|
-
className: "font-bold text-2xl",
|
|
1225
|
-
children: "Contract Schema"
|
|
1226
|
-
}),
|
|
1227
|
-
/* @__PURE__ */ jsx5("p", {
|
|
1228
|
-
className: "text-muted-foreground text-sm",
|
|
1229
|
-
children: "Define data models with automatic TypeScript generation."
|
|
1230
|
-
}),
|
|
1231
|
-
/* @__PURE__ */ jsx5(CodeBlock5, {
|
|
1232
|
-
language: "typescript",
|
|
1233
|
-
filename: "src/contracts/user.schema.ts",
|
|
1234
|
-
code: `import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
308
|
+
};`})]})]}),c("div",{className:"flex items-center gap-4 pt-4",children:[c(E,{href:"/docs/guides/generate-docs-clients-schemas",className:"btn-primary",children:["Generate from Contracts ",e($,{size:16})]}),e(E,{href:"/docs/intent/generate-client-from-schema",className:"btn-ghost",children:"Client Generation"})]})]})}import{schemaValidationTypescriptBrief as P}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as z}from"@contractspec/lib.content-gen/seo";import{CodeBlock as v}from"@contractspec/lib.design-system";import K from"@contractspec/lib.ui-link";import{ChevronRight as V}from"lucide-react";import{jsx as o,jsxs as y}from"react/jsx-runtime";var Ye=new z().optimize(P);function F(){return y("div",{className:"space-y-8",children:[y("div",{className:"space-y-3",children:[o("h1",{className:"font-bold text-4xl",children:P.title}),o("p",{className:"text-lg text-muted-foreground",children:P.summary})]}),y("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Validation Pain Points"}),o("ul",{className:"space-y-2 text-muted-foreground text-sm",children:P.problems.map((a,n)=>o("li",{children:a},n))})]}),y("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Type-safe Solutions"}),o("ul",{className:"space-y-2 text-muted-foreground text-sm",children:P.solutions.map((a,n)=>o("li",{children:a},n))})]}),y("div",{className:"space-y-6",children:[y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Contract Schema"}),o("p",{className:"text-muted-foreground text-sm",children:"Define data models with automatic TypeScript generation."}),o(v,{language:"typescript",filename:"src/contracts/user.schema.ts",code:`import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
1235
309
|
|
|
1236
310
|
export const UserSchema = new SchemaModel({
|
|
1237
311
|
type: 'object',
|
|
@@ -1273,25 +347,7 @@ export const UserSchema = new SchemaModel({
|
|
|
1273
347
|
name: 'User',
|
|
1274
348
|
description: 'User account information',
|
|
1275
349
|
},
|
|
1276
|
-
});`
|
|
1277
|
-
})
|
|
1278
|
-
]
|
|
1279
|
-
}),
|
|
1280
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1281
|
-
className: "space-y-3",
|
|
1282
|
-
children: [
|
|
1283
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
1284
|
-
className: "font-bold text-2xl",
|
|
1285
|
-
children: "Generated Types"
|
|
1286
|
-
}),
|
|
1287
|
-
/* @__PURE__ */ jsx5("p", {
|
|
1288
|
-
className: "text-muted-foreground text-sm",
|
|
1289
|
-
children: "TypeScript types are automatically generated with proper validation."
|
|
1290
|
-
}),
|
|
1291
|
-
/* @__PURE__ */ jsx5(CodeBlock5, {
|
|
1292
|
-
language: "typescript",
|
|
1293
|
-
filename: "generated/types/user.ts",
|
|
1294
|
-
code: `// Auto-generated from UserSchema
|
|
350
|
+
});`})]}),y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Generated Types"}),o("p",{className:"text-muted-foreground text-sm",children:"TypeScript types are automatically generated with proper validation."}),o(v,{language:"typescript",filename:"generated/types/user.ts",code:`// Auto-generated from UserSchema
|
|
1295
351
|
export interface User {
|
|
1296
352
|
id: string;
|
|
1297
353
|
email: string;
|
|
@@ -1316,25 +372,7 @@ export function validateUser(data: unknown): User {
|
|
|
1316
372
|
|
|
1317
373
|
export function isUser(data: unknown): data is User {
|
|
1318
374
|
return UserSchemaZod.safeParse(data).success;
|
|
1319
|
-
}`
|
|
1320
|
-
})
|
|
1321
|
-
]
|
|
1322
|
-
}),
|
|
1323
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1324
|
-
className: "space-y-3",
|
|
1325
|
-
children: [
|
|
1326
|
-
/* @__PURE__ */ jsx5("h2", {
|
|
1327
|
-
className: "font-bold text-2xl",
|
|
1328
|
-
children: "Runtime Validation"
|
|
1329
|
-
}),
|
|
1330
|
-
/* @__PURE__ */ jsx5("p", {
|
|
1331
|
-
className: "text-muted-foreground text-sm",
|
|
1332
|
-
children: "Use generated validation in your API handlers with zero boilerplate."
|
|
1333
|
-
}),
|
|
1334
|
-
/* @__PURE__ */ jsx5(CodeBlock5, {
|
|
1335
|
-
language: "typescript",
|
|
1336
|
-
filename: "src/handlers/user-handler.ts",
|
|
1337
|
-
code: `import { validateUser } from '../generated/types/user';
|
|
375
|
+
}`})]}),y("div",{className:"space-y-3",children:[o("h2",{className:"font-bold text-2xl",children:"Runtime Validation"}),o("p",{className:"text-muted-foreground text-sm",children:"Use generated validation in your API handlers with zero boilerplate."}),o(v,{language:"typescript",filename:"src/handlers/user-handler.ts",code:`import { validateUser } from '../generated/types/user';
|
|
1338
376
|
|
|
1339
377
|
export async function createUserHandler(request: Request) {
|
|
1340
378
|
try {
|
|
@@ -1362,109 +400,7 @@ export async function createUserHandler(request: Request) {
|
|
|
1362
400
|
|
|
1363
401
|
throw error;
|
|
1364
402
|
}
|
|
1365
|
-
}`
|
|
1366
|
-
})
|
|
1367
|
-
]
|
|
1368
|
-
})
|
|
1369
|
-
]
|
|
1370
|
-
}),
|
|
1371
|
-
/* @__PURE__ */ jsxs5("div", {
|
|
1372
|
-
className: "flex items-center gap-4 pt-4",
|
|
1373
|
-
children: [
|
|
1374
|
-
/* @__PURE__ */ jsxs5(Link5, {
|
|
1375
|
-
href: "/docs/guides/spec-validation-and-typing",
|
|
1376
|
-
className: "btn-primary",
|
|
1377
|
-
children: [
|
|
1378
|
-
"Type Safety Guide ",
|
|
1379
|
-
/* @__PURE__ */ jsx5(ChevronRight5, {
|
|
1380
|
-
size: 16
|
|
1381
|
-
})
|
|
1382
|
-
]
|
|
1383
|
-
}),
|
|
1384
|
-
/* @__PURE__ */ jsx5(Link5, {
|
|
1385
|
-
href: "/docs/intent/generate-client-from-schema",
|
|
1386
|
-
className: "btn-ghost",
|
|
1387
|
-
children: "Client Generation"
|
|
1388
|
-
})
|
|
1389
|
-
]
|
|
1390
|
-
})
|
|
1391
|
-
]
|
|
1392
|
-
});
|
|
1393
|
-
}
|
|
1394
|
-
|
|
1395
|
-
// src/components/docs/intent/SpecDrivenDevelopmentPage.tsx
|
|
1396
|
-
import { specDrivenDevelopmentBrief as specDrivenDevelopmentBrief2 } from "@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";
|
|
1397
|
-
import { SeoOptimizer as SeoOptimizer6 } from "@contractspec/lib.content-gen/seo";
|
|
1398
|
-
import { CodeBlock as CodeBlock6 } from "@contractspec/lib.design-system";
|
|
1399
|
-
import Link6 from "@contractspec/lib.ui-link";
|
|
1400
|
-
import { ChevronRight as ChevronRight6 } from "lucide-react";
|
|
1401
|
-
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1402
|
-
var metadata6 = new SeoOptimizer6().optimize(specDrivenDevelopmentBrief2);
|
|
1403
|
-
function SpecDrivenDevelopmentPage() {
|
|
1404
|
-
return /* @__PURE__ */ jsxs6("div", {
|
|
1405
|
-
className: "space-y-8",
|
|
1406
|
-
children: [
|
|
1407
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1408
|
-
className: "space-y-3",
|
|
1409
|
-
children: [
|
|
1410
|
-
/* @__PURE__ */ jsx6("h1", {
|
|
1411
|
-
className: "font-bold text-4xl",
|
|
1412
|
-
children: specDrivenDevelopmentBrief2.title
|
|
1413
|
-
}),
|
|
1414
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1415
|
-
className: "text-lg text-muted-foreground",
|
|
1416
|
-
children: specDrivenDevelopmentBrief2.summary
|
|
1417
|
-
})
|
|
1418
|
-
]
|
|
1419
|
-
}),
|
|
1420
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1421
|
-
className: "card-subtle space-y-4 p-6",
|
|
1422
|
-
children: [
|
|
1423
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1424
|
-
className: "font-bold text-2xl",
|
|
1425
|
-
children: "Why Spec-driven?"
|
|
1426
|
-
}),
|
|
1427
|
-
/* @__PURE__ */ jsx6("ul", {
|
|
1428
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
1429
|
-
children: specDrivenDevelopmentBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx6("li", {
|
|
1430
|
-
children: problem
|
|
1431
|
-
}, index))
|
|
1432
|
-
})
|
|
1433
|
-
]
|
|
1434
|
-
}),
|
|
1435
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1436
|
-
className: "card-subtle space-y-4 p-6",
|
|
1437
|
-
children: [
|
|
1438
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1439
|
-
className: "font-bold text-2xl",
|
|
1440
|
-
children: "Benefits"
|
|
1441
|
-
}),
|
|
1442
|
-
/* @__PURE__ */ jsx6("ul", {
|
|
1443
|
-
className: "space-y-2 text-muted-foreground text-sm",
|
|
1444
|
-
children: specDrivenDevelopmentBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx6("li", {
|
|
1445
|
-
children: solution
|
|
1446
|
-
}, index))
|
|
1447
|
-
})
|
|
1448
|
-
]
|
|
1449
|
-
}),
|
|
1450
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1451
|
-
className: "space-y-6",
|
|
1452
|
-
children: [
|
|
1453
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1454
|
-
className: "space-y-3",
|
|
1455
|
-
children: [
|
|
1456
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1457
|
-
className: "font-bold text-2xl",
|
|
1458
|
-
children: "Feature Specification Example"
|
|
1459
|
-
}),
|
|
1460
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1461
|
-
className: "text-muted-foreground text-sm",
|
|
1462
|
-
children: "Define a complete feature with operations, events, and data models."
|
|
1463
|
-
}),
|
|
1464
|
-
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1465
|
-
language: "typescript",
|
|
1466
|
-
filename: "src/contracts/user-management.feature.ts",
|
|
1467
|
-
code: `import { defineFeature } from '@contractspec/lib.contracts-spec/features';
|
|
403
|
+
}`})]})]}),y("div",{className:"flex items-center gap-4 pt-4",children:[y(K,{href:"/docs/guides/spec-validation-and-typing",className:"btn-primary",children:["Type Safety Guide ",o(V,{size:16})]}),o(K,{href:"/docs/intent/generate-client-from-schema",className:"btn-ghost",children:"Client Generation"})]})]})}import{specDrivenDevelopmentBrief as h}from"@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks";import{SeoOptimizer as L}from"@contractspec/lib.content-gen/seo";import{CodeBlock as M}from"@contractspec/lib.design-system";import N from"@contractspec/lib.ui-link";import{ChevronRight as C}from"lucide-react";import{jsx as l,jsxs as m}from"react/jsx-runtime";var Ce=new L().optimize(h);function k(){return m("div",{className:"space-y-8",children:[m("div",{className:"space-y-3",children:[l("h1",{className:"font-bold text-4xl",children:h.title}),l("p",{className:"text-lg text-muted-foreground",children:h.summary})]}),m("div",{className:"card-subtle space-y-4 p-6",children:[l("h2",{className:"font-bold text-2xl",children:"Why Spec-driven?"}),l("ul",{className:"space-y-2 text-muted-foreground text-sm",children:h.problems.map((a,n)=>l("li",{children:a},n))})]}),m("div",{className:"card-subtle space-y-4 p-6",children:[l("h2",{className:"font-bold text-2xl",children:"Benefits"}),l("ul",{className:"space-y-2 text-muted-foreground text-sm",children:h.solutions.map((a,n)=>l("li",{children:a},n))})]}),m("div",{className:"space-y-6",children:[m("div",{className:"space-y-3",children:[l("h2",{className:"font-bold text-2xl",children:"Feature Specification Example"}),l("p",{className:"text-muted-foreground text-sm",children:"Define a complete feature with operations, events, and data models."}),l(M,{language:"typescript",filename:"src/contracts/user-management.feature.ts",code:`import { defineFeature } from '@contractspec/lib.contracts-spec/features';
|
|
1468
404
|
import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
1469
405
|
import { defineEvent } from '@contractspec/lib.contracts-spec/events';
|
|
1470
406
|
import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
@@ -1536,60 +472,4 @@ export const UserManagementFeature = defineFeature({
|
|
|
1536
472
|
version: '1.0.0',
|
|
1537
473
|
description: 'Complete user management with operations and events',
|
|
1538
474
|
},
|
|
1539
|
-
});`
|
|
1540
|
-
})
|
|
1541
|
-
]
|
|
1542
|
-
}),
|
|
1543
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1544
|
-
className: "space-y-3",
|
|
1545
|
-
children: [
|
|
1546
|
-
/* @__PURE__ */ jsx6("h2", {
|
|
1547
|
-
className: "font-bold text-2xl",
|
|
1548
|
-
children: "Generate Type-safe Implementations"
|
|
1549
|
-
}),
|
|
1550
|
-
/* @__PURE__ */ jsx6("p", {
|
|
1551
|
-
className: "text-muted-foreground text-sm",
|
|
1552
|
-
children: "Generate validation, types, and API handlers from your feature."
|
|
1553
|
-
}),
|
|
1554
|
-
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1555
|
-
language: "bash",
|
|
1556
|
-
filename: "generate-from-feature",
|
|
1557
|
-
code: `contractspec generate \\
|
|
1558
|
-
--input ./src/contracts/user-management.feature.ts \\
|
|
1559
|
-
--output ./generated/user-management`
|
|
1560
|
-
})
|
|
1561
|
-
]
|
|
1562
|
-
})
|
|
1563
|
-
]
|
|
1564
|
-
}),
|
|
1565
|
-
/* @__PURE__ */ jsxs6("div", {
|
|
1566
|
-
className: "flex items-center gap-4 pt-4",
|
|
1567
|
-
children: [
|
|
1568
|
-
/* @__PURE__ */ jsxs6(Link6, {
|
|
1569
|
-
href: "/docs/guides/spec-validation-and-typing",
|
|
1570
|
-
className: "btn-primary",
|
|
1571
|
-
children: [
|
|
1572
|
-
"Type Safety Guide ",
|
|
1573
|
-
/* @__PURE__ */ jsx6(ChevronRight6, {
|
|
1574
|
-
size: 16
|
|
1575
|
-
})
|
|
1576
|
-
]
|
|
1577
|
-
}),
|
|
1578
|
-
/* @__PURE__ */ jsx6(Link6, {
|
|
1579
|
-
href: "/docs/intent/deterministic-codegen",
|
|
1580
|
-
className: "btn-ghost",
|
|
1581
|
-
children: "Deterministic Codegen"
|
|
1582
|
-
})
|
|
1583
|
-
]
|
|
1584
|
-
})
|
|
1585
|
-
]
|
|
1586
|
-
});
|
|
1587
|
-
}
|
|
1588
|
-
export {
|
|
1589
|
-
SpecDrivenDevelopmentPage,
|
|
1590
|
-
SchemaValidationTypescriptPage,
|
|
1591
|
-
OpenapiAlternativePage,
|
|
1592
|
-
GenerateClientFromSchemaPage,
|
|
1593
|
-
DeterministicCodegenPage,
|
|
1594
|
-
ContractFirstApiPage
|
|
1595
|
-
};
|
|
475
|
+
});`})]}),m("div",{className:"space-y-3",children:[l("h2",{className:"font-bold text-2xl",children:"Generate Type-safe Implementations"}),l("p",{className:"text-muted-foreground text-sm",children:"Generate validation, types, and API handlers from your feature."}),l(M,{language:"bash",filename:"generate-from-feature",code:"contractspec generate \\\n --input ./src/contracts/user-management.feature.ts \\\n --output ./generated/user-management"})]})]}),m("div",{className:"flex items-center gap-4 pt-4",children:[m(N,{href:"/docs/guides/spec-validation-and-typing",className:"btn-primary",children:["Type Safety Guide ",l(C,{size:16})]}),l(N,{href:"/docs/intent/deterministic-codegen",className:"btn-ghost",children:"Deterministic Codegen"})]})]})}export{k as SpecDrivenDevelopmentPage,F as SchemaValidationTypescriptPage,D as OpenapiAlternativePage,Y as GenerateClientFromSchemaPage,R as DeterministicCodegenPage,H as ContractFirstApiPage};
|