@contractspec/bundle.library 3.4.2 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +494 -488
- package/CHANGELOG.md +61 -0
- package/dist/application/index.js +8 -8
- package/dist/application/mcp/cliMcp.js +8 -8
- package/dist/application/mcp/contractsMcp.js +8 -8
- package/dist/application/mcp/docsMcp.js +8 -8
- package/dist/application/mcp/index.js +8 -8
- package/dist/application/mcp/internalMcp.js +8 -8
- package/dist/application/mcp/providerRankingMcp.js +8 -8
- package/dist/bundles/LibraryBundle.d.ts +126 -0
- package/dist/bundles/LibraryBundle.js +139 -0
- package/dist/bundles/index.d.ts +1 -0
- package/dist/bundles/index.js +139 -0
- package/dist/components/docs/DocsIndexPage.js +91 -91
- package/dist/components/docs/advanced/AdvancedMCPPage.js +125 -125
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +51 -51
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
- package/dist/components/docs/advanced/index.js +482 -482
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
- package/dist/components/docs/architecture/index.js +748 -748
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +97 -97
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +125 -125
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
- package/dist/components/docs/comparison/index.js +738 -738
- package/dist/components/docs/ecosystem/IntegrationsPage.js +45 -45
- package/dist/components/docs/ecosystem/PluginsPage.js +73 -73
- package/dist/components/docs/ecosystem/RegistryPage.js +37 -37
- package/dist/components/docs/ecosystem/TemplatesPage.js +56 -56
- package/dist/components/docs/ecosystem/index.js +211 -211
- package/dist/components/docs/examples/DocsExamplesPage.js +21 -21
- package/dist/components/docs/examples/index.js +21 -21
- package/dist/components/docs/getting-started/CLIPage.js +95 -95
- package/dist/components/docs/getting-started/CompatibilityPage.js +81 -81
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +57 -57
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +61 -61
- package/dist/components/docs/getting-started/HelloWorldPage.js +77 -77
- package/dist/components/docs/getting-started/InstallationPage.js +65 -65
- package/dist/components/docs/getting-started/StartHerePage.js +51 -51
- package/dist/components/docs/getting-started/TroubleshootingPage.js +73 -73
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
- package/dist/components/docs/getting-started/index.js +731 -731
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
- package/dist/components/docs/guides/GuideContractTypesPage.js +232 -232
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +82 -82
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +106 -106
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
- package/dist/components/docs/guides/GuidesIndexPage.js +43 -43
- package/dist/components/docs/guides/index.js +975 -975
- package/dist/components/docs/index.js +10791 -10791
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +61 -61
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +49 -49
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +69 -69
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +121 -121
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
- package/dist/components/docs/integrations/IntegrationsResendPage.js +45 -45
- package/dist/components/docs/integrations/IntegrationsS3Page.js +57 -57
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +63 -63
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
- package/dist/components/docs/integrations/IntegrationsStripePage.js +159 -159
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
- package/dist/components/docs/integrations/index.js +1642 -1642
- package/dist/components/docs/intent/ContractFirstApiPage.js +51 -51
- package/dist/components/docs/intent/DeterministicCodegenPage.js +59 -59
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
- package/dist/components/docs/intent/OpenapiAlternativePage.js +91 -91
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
- package/dist/components/docs/intent/index.js +396 -396
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
- package/dist/components/docs/knowledge/index.js +963 -963
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +43 -43
- package/dist/components/docs/libraries/LibrariesContractsPage.js +125 -125
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +35 -35
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +191 -191
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +49 -49
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +87 -87
- package/dist/components/docs/libraries/LibrariesSLOPage.js +47 -47
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +139 -139
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
- package/dist/components/docs/libraries/LibrariesTestingPage.js +49 -49
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +107 -107
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
- package/dist/components/docs/libraries/index.js +1919 -1919
- package/dist/components/docs/manifesto/ManifestoPage.js +79 -79
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +33 -33
- package/dist/components/docs/ops/index.js +92 -92
- package/dist/components/docs/reference/DocsMarkdownContent.js +27 -27
- package/dist/components/docs/reference/DocsReferenceContent.js +34 -34
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +23 -23
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +26 -26
- package/dist/components/docs/reference/DocsReferencePage.js +37 -37
- package/dist/components/docs/reference/index.js +63 -63
- package/dist/components/docs/safety/SafetyAuditingPage.js +161 -161
- package/dist/components/docs/safety/SafetyMigrationsPage.js +169 -169
- package/dist/components/docs/safety/SafetyOverviewPage.js +99 -99
- package/dist/components/docs/safety/SafetyPDPPage.js +137 -137
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +95 -95
- package/dist/components/docs/safety/SafetySigningPage.js +39 -39
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
- package/dist/components/docs/safety/index.js +733 -733
- package/dist/components/docs/shared/StudioPrompt.js +9 -9
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
- package/dist/components/docs/specs/SpecsDataViewsPage.js +119 -119
- package/dist/components/docs/specs/SpecsOverlaysPage.js +171 -171
- package/dist/components/docs/specs/SpecsOverviewPage.js +167 -167
- package/dist/components/docs/specs/SpecsPolicyPage.js +179 -179
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +141 -141
- package/dist/components/docs/specs/index.js +838 -838
- package/dist/components/docs/studio/StudioBYOKPage.js +9 -9
- package/dist/components/docs/studio/StudioDeploymentsPage.js +9 -9
- package/dist/components/docs/studio/StudioGettingStartedPage.js +9 -9
- package/dist/components/docs/studio/StudioIntegrationsPage.js +9 -9
- package/dist/components/docs/studio/StudioOverviewPage.js +33 -33
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +9 -9
- package/dist/components/docs/studio/index.js +78 -78
- package/dist/components/integrations/index.js +209 -209
- package/dist/components/integrations/molecules/IntegrationCard.js +33 -33
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +71 -71
- package/dist/components/integrations/organisms/IntegrationSettings.js +98 -98
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +40 -40
- package/dist/components/legal/PrivacyTemplate.js +477 -477
- package/dist/components/legal/TermsTemplate.js +421 -421
- package/dist/components/legal/index.js +898 -898
- package/dist/components/shared/FeatureGateNotice.js +13 -13
- package/dist/components/shared/index.js +13 -13
- package/dist/components/shell/WorkspaceHeader.js +37 -37
- package/dist/components/shell/WorkspaceProjectShellLayout.js +77 -77
- package/dist/components/shell/WorkspaceShellRenderer.d.ts +17 -0
- package/dist/components/shell/WorkspaceShellRenderer.js +229 -0
- package/dist/components/shell/WorkspaceSidebar.js +27 -27
- package/dist/components/shell/index.d.ts +1 -0
- package/dist/components/shell/index.js +140 -77
- package/dist/components/templates/index.js +272 -272
- package/dist/components/templates/messaging/ConversationList.js +27 -27
- package/dist/components/templates/messaging/MessageComposer.js +27 -27
- package/dist/components/templates/messaging/MessageThread.js +18 -18
- package/dist/components/templates/messaging/MessagingWorkspace.js +65 -65
- package/dist/components/templates/messaging/index.js +65 -65
- package/dist/components/templates/recipes/LanguageSwitcher.js +5 -5
- package/dist/components/templates/recipes/RecipeCard.js +26 -26
- package/dist/components/templates/recipes/RecipeDetail.js +33 -33
- package/dist/components/templates/recipes/RecipeList.js +80 -80
- package/dist/components/templates/recipes/index.js +80 -80
- package/dist/components/templates/todos/FilterBar.js +39 -39
- package/dist/components/templates/todos/TaskForm.js +43 -43
- package/dist/components/templates/todos/TaskItem.js +30 -30
- package/dist/components/templates/todos/TaskList.js +127 -127
- package/dist/components/templates/todos/index.js +127 -127
- package/dist/index.js +12323 -12260
- package/dist/infrastructure/elysia/index.js +8 -8
- package/dist/infrastructure/elysia/logger.js +8 -8
- package/dist/infrastructure/index.js +8 -8
- package/dist/libs/posthog/client.js +2 -2
- package/dist/node/application/index.js +8 -8
- package/dist/node/application/mcp/cliMcp.js +8 -8
- package/dist/node/application/mcp/contractsMcp.js +8 -8
- package/dist/node/application/mcp/docsMcp.js +8 -8
- package/dist/node/application/mcp/index.js +8 -8
- package/dist/node/application/mcp/internalMcp.js +8 -8
- package/dist/node/application/mcp/providerRankingMcp.js +8 -8
- package/dist/node/bundles/LibraryBundle.js +138 -0
- package/dist/node/bundles/index.js +138 -0
- package/dist/node/components/docs/DocsIndexPage.js +91 -91
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +125 -125
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +51 -51
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
- package/dist/node/components/docs/advanced/index.js +482 -482
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
- package/dist/node/components/docs/architecture/index.js +748 -748
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +97 -97
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +125 -125
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
- package/dist/node/components/docs/comparison/index.js +738 -738
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +45 -45
- package/dist/node/components/docs/ecosystem/PluginsPage.js +73 -73
- package/dist/node/components/docs/ecosystem/RegistryPage.js +37 -37
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +56 -56
- package/dist/node/components/docs/ecosystem/index.js +211 -211
- package/dist/node/components/docs/examples/DocsExamplesPage.js +21 -21
- package/dist/node/components/docs/examples/index.js +21 -21
- package/dist/node/components/docs/getting-started/CLIPage.js +95 -95
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +81 -81
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +57 -57
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +61 -61
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +77 -77
- package/dist/node/components/docs/getting-started/InstallationPage.js +65 -65
- package/dist/node/components/docs/getting-started/StartHerePage.js +51 -51
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +73 -73
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
- package/dist/node/components/docs/getting-started/index.js +731 -731
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +232 -232
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +82 -82
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +106 -106
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
- package/dist/node/components/docs/guides/GuidesIndexPage.js +43 -43
- package/dist/node/components/docs/guides/index.js +975 -975
- package/dist/node/components/docs/index.js +10791 -10791
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +61 -61
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +49 -49
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +69 -69
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +121 -121
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +45 -45
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +57 -57
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +63 -63
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +159 -159
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
- package/dist/node/components/docs/integrations/index.js +1642 -1642
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +51 -51
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +59 -59
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +91 -91
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
- package/dist/node/components/docs/intent/index.js +396 -396
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
- package/dist/node/components/docs/knowledge/index.js +963 -963
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +43 -43
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +125 -125
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +35 -35
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +191 -191
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +87 -87
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +47 -47
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +139 -139
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +107 -107
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
- package/dist/node/components/docs/libraries/index.js +1919 -1919
- package/dist/node/components/docs/manifesto/ManifestoPage.js +79 -79
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +33 -33
- package/dist/node/components/docs/ops/index.js +92 -92
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +27 -27
- package/dist/node/components/docs/reference/DocsReferenceContent.js +34 -34
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +23 -23
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +26 -26
- package/dist/node/components/docs/reference/DocsReferencePage.js +37 -37
- package/dist/node/components/docs/reference/index.js +63 -63
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +161 -161
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +169 -169
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +99 -99
- package/dist/node/components/docs/safety/SafetyPDPPage.js +137 -137
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +95 -95
- package/dist/node/components/docs/safety/SafetySigningPage.js +39 -39
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
- package/dist/node/components/docs/safety/index.js +733 -733
- package/dist/node/components/docs/shared/StudioPrompt.js +9 -9
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +119 -119
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +171 -171
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +167 -167
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +179 -179
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +141 -141
- package/dist/node/components/docs/specs/index.js +838 -838
- package/dist/node/components/docs/studio/StudioBYOKPage.js +9 -9
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +9 -9
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +9 -9
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +9 -9
- package/dist/node/components/docs/studio/StudioOverviewPage.js +33 -33
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +9 -9
- package/dist/node/components/docs/studio/index.js +78 -78
- package/dist/node/components/integrations/index.js +209 -209
- package/dist/node/components/integrations/molecules/IntegrationCard.js +33 -33
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +71 -71
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +98 -98
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +40 -40
- package/dist/node/components/legal/PrivacyTemplate.js +477 -477
- package/dist/node/components/legal/TermsTemplate.js +421 -421
- package/dist/node/components/legal/index.js +898 -898
- package/dist/node/components/shared/FeatureGateNotice.js +13 -13
- package/dist/node/components/shared/index.js +13 -13
- package/dist/node/components/shell/WorkspaceHeader.js +37 -37
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +77 -77
- package/dist/node/components/shell/WorkspaceShellRenderer.js +228 -0
- package/dist/node/components/shell/WorkspaceSidebar.js +27 -27
- package/dist/node/components/shell/index.js +140 -77
- package/dist/node/components/templates/index.js +272 -272
- package/dist/node/components/templates/messaging/ConversationList.js +27 -27
- package/dist/node/components/templates/messaging/MessageComposer.js +27 -27
- package/dist/node/components/templates/messaging/MessageThread.js +18 -18
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +65 -65
- package/dist/node/components/templates/messaging/index.js +65 -65
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +5 -5
- package/dist/node/components/templates/recipes/RecipeCard.js +26 -26
- package/dist/node/components/templates/recipes/RecipeDetail.js +33 -33
- package/dist/node/components/templates/recipes/RecipeList.js +80 -80
- package/dist/node/components/templates/recipes/index.js +80 -80
- package/dist/node/components/templates/todos/FilterBar.js +39 -39
- package/dist/node/components/templates/todos/TaskForm.js +43 -43
- package/dist/node/components/templates/todos/TaskItem.js +30 -30
- package/dist/node/components/templates/todos/TaskList.js +127 -127
- package/dist/node/components/templates/todos/index.js +127 -127
- package/dist/node/index.js +12323 -12260
- package/dist/node/infrastructure/elysia/index.js +8 -8
- package/dist/node/infrastructure/elysia/logger.js +8 -8
- package/dist/node/infrastructure/index.js +8 -8
- package/dist/node/libs/posthog/client.js +2 -2
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +3 -3
- package/dist/node/presentation/features/atoms/index.js +3 -3
- package/dist/node/presentation/features/index.js +915 -915
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +101 -101
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +23 -23
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
- package/dist/node/presentation/features/molecules/index.js +139 -139
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +57 -57
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +7 -7
- package/dist/node/presentation/features/organisms/index.js +275 -275
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
- package/dist/presentation/features/atoms/FeatureIcon/index.js +3 -3
- package/dist/presentation/features/atoms/index.js +3 -3
- package/dist/presentation/features/index.js +915 -915
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
- package/dist/presentation/features/molecules/FeatureCard/index.js +101 -101
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
- package/dist/presentation/features/molecules/FeatureFilters/index.js +23 -23
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
- package/dist/presentation/features/molecules/index.js +139 -139
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
- package/dist/presentation/features/organisms/FeatureDetail/index.js +57 -57
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
- package/dist/presentation/features/organisms/FeatureEventsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureFormsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureOperationsList.js +7 -7
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +7 -7
- package/dist/presentation/features/organisms/index.js +275 -275
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
- package/package.json +71 -22
- package/src/bundles/LibraryBundle.ts +152 -0
- package/src/bundles/index.ts +1 -0
- package/src/components/shell/WorkspaceShellRenderer.tsx +90 -0
- package/src/components/shell/index.ts +1 -0
|
@@ -199,70 +199,70 @@ import { SeoOptimizer } from "@contractspec/lib.content-gen/seo";
|
|
|
199
199
|
import { CodeBlock } from "@contractspec/lib.design-system";
|
|
200
200
|
import Link from "@contractspec/lib.ui-link";
|
|
201
201
|
import { ChevronRight } from "lucide-react";
|
|
202
|
-
import {
|
|
202
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
203
203
|
var metadata = new SeoOptimizer().optimize(contractFirstApiBrief2);
|
|
204
204
|
function ContractFirstApiPage() {
|
|
205
|
-
return /* @__PURE__ */
|
|
205
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
206
206
|
className: "space-y-8",
|
|
207
207
|
children: [
|
|
208
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ jsxs("div", {
|
|
209
209
|
className: "space-y-3",
|
|
210
210
|
children: [
|
|
211
|
-
/* @__PURE__ */
|
|
211
|
+
/* @__PURE__ */ jsx("h1", {
|
|
212
212
|
className: "text-4xl font-bold",
|
|
213
213
|
children: contractFirstApiBrief2.title
|
|
214
|
-
}
|
|
215
|
-
/* @__PURE__ */
|
|
214
|
+
}),
|
|
215
|
+
/* @__PURE__ */ jsx("p", {
|
|
216
216
|
className: "text-muted-foreground text-lg",
|
|
217
217
|
children: contractFirstApiBrief2.summary
|
|
218
|
-
}
|
|
218
|
+
})
|
|
219
219
|
]
|
|
220
|
-
}
|
|
221
|
-
/* @__PURE__ */
|
|
220
|
+
}),
|
|
221
|
+
/* @__PURE__ */ jsxs("div", {
|
|
222
222
|
className: "card-subtle space-y-4 p-6",
|
|
223
223
|
children: [
|
|
224
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ jsx("h2", {
|
|
225
225
|
className: "text-2xl font-bold",
|
|
226
226
|
children: "Problems Solved"
|
|
227
|
-
}
|
|
228
|
-
/* @__PURE__ */
|
|
227
|
+
}),
|
|
228
|
+
/* @__PURE__ */ jsx("ul", {
|
|
229
229
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
230
|
-
children: contractFirstApiBrief2.problems.map((problem, index) => /* @__PURE__ */
|
|
230
|
+
children: contractFirstApiBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx("li", {
|
|
231
231
|
children: problem
|
|
232
|
-
}, index
|
|
233
|
-
}
|
|
232
|
+
}, index))
|
|
233
|
+
})
|
|
234
234
|
]
|
|
235
|
-
}
|
|
236
|
-
/* @__PURE__ */
|
|
235
|
+
}),
|
|
236
|
+
/* @__PURE__ */ jsxs("div", {
|
|
237
237
|
className: "card-subtle space-y-4 p-6",
|
|
238
238
|
children: [
|
|
239
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ jsx("h2", {
|
|
240
240
|
className: "text-2xl font-bold",
|
|
241
241
|
children: "Solutions"
|
|
242
|
-
}
|
|
243
|
-
/* @__PURE__ */
|
|
242
|
+
}),
|
|
243
|
+
/* @__PURE__ */ jsx("ul", {
|
|
244
244
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
245
|
-
children: contractFirstApiBrief2.solutions.map((solution, index) => /* @__PURE__ */
|
|
245
|
+
children: contractFirstApiBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx("li", {
|
|
246
246
|
children: solution
|
|
247
|
-
}, index
|
|
248
|
-
}
|
|
247
|
+
}, index))
|
|
248
|
+
})
|
|
249
249
|
]
|
|
250
|
-
}
|
|
251
|
-
/* @__PURE__ */
|
|
250
|
+
}),
|
|
251
|
+
/* @__PURE__ */ jsxs("div", {
|
|
252
252
|
className: "space-y-6",
|
|
253
253
|
children: [
|
|
254
|
-
/* @__PURE__ */
|
|
254
|
+
/* @__PURE__ */ jsxs("div", {
|
|
255
255
|
className: "space-y-3",
|
|
256
256
|
children: [
|
|
257
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ jsx("h2", {
|
|
258
258
|
className: "text-2xl font-bold",
|
|
259
259
|
children: "Quick Start"
|
|
260
|
-
}
|
|
261
|
-
/* @__PURE__ */
|
|
260
|
+
}),
|
|
261
|
+
/* @__PURE__ */ jsx("p", {
|
|
262
262
|
className: "text-muted-foreground text-sm",
|
|
263
263
|
children: "Define your first API contract and generate consistent implementations."
|
|
264
|
-
}
|
|
265
|
-
/* @__PURE__ */
|
|
264
|
+
}),
|
|
265
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
266
266
|
language: "typescript",
|
|
267
267
|
filename: "src/contracts/user-create.operation.ts",
|
|
268
268
|
code: `import { defineOperation } from '@contractspec/lib.contracts-spec/operations';
|
|
@@ -300,53 +300,53 @@ export const CreateUserOperation = defineOperation({
|
|
|
300
300
|
description: 'Create a new user account with email and password',
|
|
301
301
|
},
|
|
302
302
|
});`
|
|
303
|
-
}
|
|
303
|
+
})
|
|
304
304
|
]
|
|
305
|
-
}
|
|
306
|
-
/* @__PURE__ */
|
|
305
|
+
}),
|
|
306
|
+
/* @__PURE__ */ jsxs("div", {
|
|
307
307
|
className: "space-y-3",
|
|
308
308
|
children: [
|
|
309
|
-
/* @__PURE__ */
|
|
309
|
+
/* @__PURE__ */ jsx("h2", {
|
|
310
310
|
className: "text-2xl font-bold",
|
|
311
311
|
children: "Generate OpenAPI"
|
|
312
|
-
}
|
|
313
|
-
/* @__PURE__ */
|
|
312
|
+
}),
|
|
313
|
+
/* @__PURE__ */ jsx("p", {
|
|
314
314
|
className: "text-muted-foreground text-sm",
|
|
315
315
|
children: "Export OpenAPI documentation directly from your contracts."
|
|
316
|
-
}
|
|
317
|
-
/* @__PURE__ */
|
|
316
|
+
}),
|
|
317
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
318
318
|
language: "bash",
|
|
319
319
|
filename: "export-openapi",
|
|
320
320
|
code: `contractspec openapi export \\
|
|
321
321
|
--registry ./src/contracts/registry.ts \\
|
|
322
322
|
--out ./openapi.json`
|
|
323
|
-
}
|
|
323
|
+
})
|
|
324
324
|
]
|
|
325
|
-
}
|
|
325
|
+
})
|
|
326
326
|
]
|
|
327
|
-
}
|
|
328
|
-
/* @__PURE__ */
|
|
327
|
+
}),
|
|
328
|
+
/* @__PURE__ */ jsxs("div", {
|
|
329
329
|
className: "flex items-center gap-4 pt-4",
|
|
330
330
|
children: [
|
|
331
|
-
/* @__PURE__ */
|
|
331
|
+
/* @__PURE__ */ jsxs(Link, {
|
|
332
332
|
href: "/docs/guides/nextjs-one-endpoint",
|
|
333
333
|
className: "btn-primary",
|
|
334
334
|
children: [
|
|
335
335
|
"Next.js Guide ",
|
|
336
|
-
/* @__PURE__ */
|
|
336
|
+
/* @__PURE__ */ jsx(ChevronRight, {
|
|
337
337
|
size: 16
|
|
338
|
-
}
|
|
338
|
+
})
|
|
339
339
|
]
|
|
340
|
-
}
|
|
341
|
-
/* @__PURE__ */
|
|
340
|
+
}),
|
|
341
|
+
/* @__PURE__ */ jsx(Link, {
|
|
342
342
|
href: "/docs/intent/spec-driven-development",
|
|
343
343
|
className: "btn-ghost",
|
|
344
344
|
children: "Spec-driven Development"
|
|
345
|
-
}
|
|
345
|
+
})
|
|
346
346
|
]
|
|
347
|
-
}
|
|
347
|
+
})
|
|
348
348
|
]
|
|
349
|
-
}
|
|
349
|
+
});
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
// src/components/docs/intent/SpecDrivenDevelopmentPage.tsx
|
|
@@ -355,70 +355,70 @@ import { SeoOptimizer as SeoOptimizer2 } from "@contractspec/lib.content-gen/seo
|
|
|
355
355
|
import { CodeBlock as CodeBlock2 } from "@contractspec/lib.design-system";
|
|
356
356
|
import Link2 from "@contractspec/lib.ui-link";
|
|
357
357
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
358
|
-
import {
|
|
358
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
359
359
|
var metadata2 = new SeoOptimizer2().optimize(specDrivenDevelopmentBrief2);
|
|
360
360
|
function SpecDrivenDevelopmentPage() {
|
|
361
|
-
return /* @__PURE__ */
|
|
361
|
+
return /* @__PURE__ */ jsxs2("div", {
|
|
362
362
|
className: "space-y-8",
|
|
363
363
|
children: [
|
|
364
|
-
/* @__PURE__ */
|
|
364
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
365
365
|
className: "space-y-3",
|
|
366
366
|
children: [
|
|
367
|
-
/* @__PURE__ */
|
|
367
|
+
/* @__PURE__ */ jsx2("h1", {
|
|
368
368
|
className: "text-4xl font-bold",
|
|
369
369
|
children: specDrivenDevelopmentBrief2.title
|
|
370
|
-
}
|
|
371
|
-
/* @__PURE__ */
|
|
370
|
+
}),
|
|
371
|
+
/* @__PURE__ */ jsx2("p", {
|
|
372
372
|
className: "text-muted-foreground text-lg",
|
|
373
373
|
children: specDrivenDevelopmentBrief2.summary
|
|
374
|
-
}
|
|
374
|
+
})
|
|
375
375
|
]
|
|
376
|
-
}
|
|
377
|
-
/* @__PURE__ */
|
|
376
|
+
}),
|
|
377
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
378
378
|
className: "card-subtle space-y-4 p-6",
|
|
379
379
|
children: [
|
|
380
|
-
/* @__PURE__ */
|
|
380
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
381
381
|
className: "text-2xl font-bold",
|
|
382
382
|
children: "Why Spec-driven?"
|
|
383
|
-
}
|
|
384
|
-
/* @__PURE__ */
|
|
383
|
+
}),
|
|
384
|
+
/* @__PURE__ */ jsx2("ul", {
|
|
385
385
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
386
|
-
children: specDrivenDevelopmentBrief2.problems.map((problem, index) => /* @__PURE__ */
|
|
386
|
+
children: specDrivenDevelopmentBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx2("li", {
|
|
387
387
|
children: problem
|
|
388
|
-
}, index
|
|
389
|
-
}
|
|
388
|
+
}, index))
|
|
389
|
+
})
|
|
390
390
|
]
|
|
391
|
-
}
|
|
392
|
-
/* @__PURE__ */
|
|
391
|
+
}),
|
|
392
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
393
393
|
className: "card-subtle space-y-4 p-6",
|
|
394
394
|
children: [
|
|
395
|
-
/* @__PURE__ */
|
|
395
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
396
396
|
className: "text-2xl font-bold",
|
|
397
397
|
children: "Benefits"
|
|
398
|
-
}
|
|
399
|
-
/* @__PURE__ */
|
|
398
|
+
}),
|
|
399
|
+
/* @__PURE__ */ jsx2("ul", {
|
|
400
400
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
401
|
-
children: specDrivenDevelopmentBrief2.solutions.map((solution, index) => /* @__PURE__ */
|
|
401
|
+
children: specDrivenDevelopmentBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx2("li", {
|
|
402
402
|
children: solution
|
|
403
|
-
}, index
|
|
404
|
-
}
|
|
403
|
+
}, index))
|
|
404
|
+
})
|
|
405
405
|
]
|
|
406
|
-
}
|
|
407
|
-
/* @__PURE__ */
|
|
406
|
+
}),
|
|
407
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
408
408
|
className: "space-y-6",
|
|
409
409
|
children: [
|
|
410
|
-
/* @__PURE__ */
|
|
410
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
411
411
|
className: "space-y-3",
|
|
412
412
|
children: [
|
|
413
|
-
/* @__PURE__ */
|
|
413
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
414
414
|
className: "text-2xl font-bold",
|
|
415
415
|
children: "Feature Specification Example"
|
|
416
|
-
}
|
|
417
|
-
/* @__PURE__ */
|
|
416
|
+
}),
|
|
417
|
+
/* @__PURE__ */ jsx2("p", {
|
|
418
418
|
className: "text-muted-foreground text-sm",
|
|
419
419
|
children: "Define a complete feature with operations, events, and data models."
|
|
420
|
-
}
|
|
421
|
-
/* @__PURE__ */
|
|
420
|
+
}),
|
|
421
|
+
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
422
422
|
language: "typescript",
|
|
423
423
|
filename: "src/contracts/user-management.feature.ts",
|
|
424
424
|
code: `import { defineFeature } from '@contractspec/lib.contracts-spec/features';
|
|
@@ -494,53 +494,53 @@ export const UserManagementFeature = defineFeature({
|
|
|
494
494
|
description: 'Complete user management with operations and events',
|
|
495
495
|
},
|
|
496
496
|
});`
|
|
497
|
-
}
|
|
497
|
+
})
|
|
498
498
|
]
|
|
499
|
-
}
|
|
500
|
-
/* @__PURE__ */
|
|
499
|
+
}),
|
|
500
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
501
501
|
className: "space-y-3",
|
|
502
502
|
children: [
|
|
503
|
-
/* @__PURE__ */
|
|
503
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
504
504
|
className: "text-2xl font-bold",
|
|
505
505
|
children: "Generate Type-safe Implementations"
|
|
506
|
-
}
|
|
507
|
-
/* @__PURE__ */
|
|
506
|
+
}),
|
|
507
|
+
/* @__PURE__ */ jsx2("p", {
|
|
508
508
|
className: "text-muted-foreground text-sm",
|
|
509
509
|
children: "Generate validation, types, and API handlers from your feature."
|
|
510
|
-
}
|
|
511
|
-
/* @__PURE__ */
|
|
510
|
+
}),
|
|
511
|
+
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
512
512
|
language: "bash",
|
|
513
513
|
filename: "generate-from-feature",
|
|
514
514
|
code: `contractspec generate \\
|
|
515
515
|
--input ./src/contracts/user-management.feature.ts \\
|
|
516
516
|
--output ./generated/user-management`
|
|
517
|
-
}
|
|
517
|
+
})
|
|
518
518
|
]
|
|
519
|
-
}
|
|
519
|
+
})
|
|
520
520
|
]
|
|
521
|
-
}
|
|
522
|
-
/* @__PURE__ */
|
|
521
|
+
}),
|
|
522
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
523
523
|
className: "flex items-center gap-4 pt-4",
|
|
524
524
|
children: [
|
|
525
|
-
/* @__PURE__ */
|
|
525
|
+
/* @__PURE__ */ jsxs2(Link2, {
|
|
526
526
|
href: "/docs/guides/spec-validation-and-typing",
|
|
527
527
|
className: "btn-primary",
|
|
528
528
|
children: [
|
|
529
529
|
"Type Safety Guide ",
|
|
530
|
-
/* @__PURE__ */
|
|
530
|
+
/* @__PURE__ */ jsx2(ChevronRight2, {
|
|
531
531
|
size: 16
|
|
532
|
-
}
|
|
532
|
+
})
|
|
533
533
|
]
|
|
534
|
-
}
|
|
535
|
-
/* @__PURE__ */
|
|
534
|
+
}),
|
|
535
|
+
/* @__PURE__ */ jsx2(Link2, {
|
|
536
536
|
href: "/docs/intent/deterministic-codegen",
|
|
537
537
|
className: "btn-ghost",
|
|
538
538
|
children: "Deterministic Codegen"
|
|
539
|
-
}
|
|
539
|
+
})
|
|
540
540
|
]
|
|
541
|
-
}
|
|
541
|
+
})
|
|
542
542
|
]
|
|
543
|
-
}
|
|
543
|
+
});
|
|
544
544
|
}
|
|
545
545
|
|
|
546
546
|
// src/components/docs/intent/DeterministicCodegenPage.tsx
|
|
@@ -549,70 +549,70 @@ import { SeoOptimizer as SeoOptimizer3 } from "@contractspec/lib.content-gen/seo
|
|
|
549
549
|
import { CodeBlock as CodeBlock3 } from "@contractspec/lib.design-system";
|
|
550
550
|
import Link3 from "@contractspec/lib.ui-link";
|
|
551
551
|
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
552
|
-
import {
|
|
552
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
553
553
|
var metadata3 = new SeoOptimizer3().optimize(deterministicCodegenBrief2);
|
|
554
554
|
function DeterministicCodegenPage() {
|
|
555
|
-
return /* @__PURE__ */
|
|
555
|
+
return /* @__PURE__ */ jsxs3("div", {
|
|
556
556
|
className: "space-y-8",
|
|
557
557
|
children: [
|
|
558
|
-
/* @__PURE__ */
|
|
558
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
559
559
|
className: "space-y-3",
|
|
560
560
|
children: [
|
|
561
|
-
/* @__PURE__ */
|
|
561
|
+
/* @__PURE__ */ jsx3("h1", {
|
|
562
562
|
className: "text-4xl font-bold",
|
|
563
563
|
children: deterministicCodegenBrief2.title
|
|
564
|
-
}
|
|
565
|
-
/* @__PURE__ */
|
|
564
|
+
}),
|
|
565
|
+
/* @__PURE__ */ jsx3("p", {
|
|
566
566
|
className: "text-muted-foreground text-lg",
|
|
567
567
|
children: deterministicCodegenBrief2.summary
|
|
568
|
-
}
|
|
568
|
+
})
|
|
569
569
|
]
|
|
570
|
-
}
|
|
571
|
-
/* @__PURE__ */
|
|
570
|
+
}),
|
|
571
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
572
572
|
className: "card-subtle space-y-4 p-6",
|
|
573
573
|
children: [
|
|
574
|
-
/* @__PURE__ */
|
|
574
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
575
575
|
className: "text-2xl font-bold",
|
|
576
576
|
children: "Regeneration Challenges"
|
|
577
|
-
}
|
|
578
|
-
/* @__PURE__ */
|
|
577
|
+
}),
|
|
578
|
+
/* @__PURE__ */ jsx3("ul", {
|
|
579
579
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
580
|
-
children: deterministicCodegenBrief2.problems.map((problem, index) => /* @__PURE__ */
|
|
580
|
+
children: deterministicCodegenBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx3("li", {
|
|
581
581
|
children: problem
|
|
582
|
-
}, index
|
|
583
|
-
}
|
|
582
|
+
}, index))
|
|
583
|
+
})
|
|
584
584
|
]
|
|
585
|
-
}
|
|
586
|
-
/* @__PURE__ */
|
|
585
|
+
}),
|
|
586
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
587
587
|
className: "card-subtle space-y-4 p-6",
|
|
588
588
|
children: [
|
|
589
|
-
/* @__PURE__ */
|
|
589
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
590
590
|
className: "text-2xl font-bold",
|
|
591
591
|
children: "Deterministic Solutions"
|
|
592
|
-
}
|
|
593
|
-
/* @__PURE__ */
|
|
592
|
+
}),
|
|
593
|
+
/* @__PURE__ */ jsx3("ul", {
|
|
594
594
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
595
|
-
children: deterministicCodegenBrief2.solutions.map((solution, index) => /* @__PURE__ */
|
|
595
|
+
children: deterministicCodegenBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx3("li", {
|
|
596
596
|
children: solution
|
|
597
|
-
}, index
|
|
598
|
-
}
|
|
597
|
+
}, index))
|
|
598
|
+
})
|
|
599
599
|
]
|
|
600
|
-
}
|
|
601
|
-
/* @__PURE__ */
|
|
600
|
+
}),
|
|
601
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
602
602
|
className: "space-y-6",
|
|
603
603
|
children: [
|
|
604
|
-
/* @__PURE__ */
|
|
604
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
605
605
|
className: "space-y-3",
|
|
606
606
|
children: [
|
|
607
|
-
/* @__PURE__ */
|
|
607
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
608
608
|
className: "text-2xl font-bold",
|
|
609
609
|
children: "Protected Zones"
|
|
610
|
-
}
|
|
611
|
-
/* @__PURE__ */
|
|
610
|
+
}),
|
|
611
|
+
/* @__PURE__ */ jsx3("p", {
|
|
612
612
|
className: "text-muted-foreground text-sm",
|
|
613
613
|
children: "Separate generated code from hand-written business logic with clear boundaries."
|
|
614
|
-
}
|
|
615
|
-
/* @__PURE__ */
|
|
614
|
+
}),
|
|
615
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
616
616
|
language: "typescript",
|
|
617
617
|
filename: "src/handlers/user-handlers.ts",
|
|
618
618
|
code: `// Hand-written business logic (protected from regeneration)
|
|
@@ -653,21 +653,21 @@ export const createUserHandler = wrapOperationHandler(
|
|
|
653
653
|
errorMapper: mapToStandardErrors,
|
|
654
654
|
}
|
|
655
655
|
);`
|
|
656
|
-
}
|
|
656
|
+
})
|
|
657
657
|
]
|
|
658
|
-
}
|
|
659
|
-
/* @__PURE__ */
|
|
658
|
+
}),
|
|
659
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
660
660
|
className: "space-y-3",
|
|
661
661
|
children: [
|
|
662
|
-
/* @__PURE__ */
|
|
662
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
663
663
|
className: "text-2xl font-bold",
|
|
664
664
|
children: "Incremental Regeneration"
|
|
665
|
-
}
|
|
666
|
-
/* @__PURE__ */
|
|
665
|
+
}),
|
|
666
|
+
/* @__PURE__ */ jsx3("p", {
|
|
667
667
|
className: "text-muted-foreground text-sm",
|
|
668
668
|
children: "Regenerate only what changed while preserving custom logic."
|
|
669
|
-
}
|
|
670
|
-
/* @__PURE__ */
|
|
669
|
+
}),
|
|
670
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
671
671
|
language: "bash",
|
|
672
672
|
filename: "incremental-regen",
|
|
673
673
|
code: `contractspec generate \\
|
|
@@ -675,53 +675,53 @@ export const createUserHandler = wrapOperationHandler(
|
|
|
675
675
|
--preserve-zones ./src/handlers/*.ts \\
|
|
676
676
|
--input ./src/contracts/ \\
|
|
677
677
|
--output ./generated/`
|
|
678
|
-
}
|
|
678
|
+
})
|
|
679
679
|
]
|
|
680
|
-
}
|
|
681
|
-
/* @__PURE__ */
|
|
680
|
+
}),
|
|
681
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
682
682
|
className: "space-y-3",
|
|
683
683
|
children: [
|
|
684
|
-
/* @__PURE__ */
|
|
684
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
685
685
|
className: "text-2xl font-bold",
|
|
686
686
|
children: "Conflict Detection"
|
|
687
|
-
}
|
|
688
|
-
/* @__PURE__ */
|
|
687
|
+
}),
|
|
688
|
+
/* @__PURE__ */ jsx3("p", {
|
|
689
689
|
className: "text-muted-foreground text-sm",
|
|
690
690
|
children: "Automatically detect and report conflicts during regeneration."
|
|
691
|
-
}
|
|
692
|
-
/* @__PURE__ */
|
|
691
|
+
}),
|
|
692
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
693
693
|
language: "bash",
|
|
694
694
|
filename: "check-conflicts",
|
|
695
695
|
code: `contractspec generate \\
|
|
696
696
|
--check-conflicts \\
|
|
697
697
|
--report-conflicts ./conflicts.json`
|
|
698
|
-
}
|
|
698
|
+
})
|
|
699
699
|
]
|
|
700
|
-
}
|
|
700
|
+
})
|
|
701
701
|
]
|
|
702
|
-
}
|
|
703
|
-
/* @__PURE__ */
|
|
702
|
+
}),
|
|
703
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
704
704
|
className: "flex items-center gap-4 pt-4",
|
|
705
705
|
children: [
|
|
706
|
-
/* @__PURE__ */
|
|
706
|
+
/* @__PURE__ */ jsxs3(Link3, {
|
|
707
707
|
href: "/docs/guides/generate-docs-clients-schemas",
|
|
708
708
|
className: "btn-primary",
|
|
709
709
|
children: [
|
|
710
710
|
"Client Generation ",
|
|
711
|
-
/* @__PURE__ */
|
|
711
|
+
/* @__PURE__ */ jsx3(ChevronRight3, {
|
|
712
712
|
size: 16
|
|
713
|
-
}
|
|
713
|
+
})
|
|
714
714
|
]
|
|
715
|
-
}
|
|
716
|
-
/* @__PURE__ */
|
|
715
|
+
}),
|
|
716
|
+
/* @__PURE__ */ jsx3(Link3, {
|
|
717
717
|
href: "/docs/intent/schema-validation-typescript",
|
|
718
718
|
className: "btn-ghost",
|
|
719
719
|
children: "Type Safety"
|
|
720
|
-
}
|
|
720
|
+
})
|
|
721
721
|
]
|
|
722
|
-
}
|
|
722
|
+
})
|
|
723
723
|
]
|
|
724
|
-
}
|
|
724
|
+
});
|
|
725
725
|
}
|
|
726
726
|
|
|
727
727
|
// src/components/docs/intent/SchemaValidationTypescriptPage.tsx
|
|
@@ -730,70 +730,70 @@ import { SeoOptimizer as SeoOptimizer4 } from "@contractspec/lib.content-gen/seo
|
|
|
730
730
|
import { CodeBlock as CodeBlock4 } from "@contractspec/lib.design-system";
|
|
731
731
|
import Link4 from "@contractspec/lib.ui-link";
|
|
732
732
|
import { ChevronRight as ChevronRight4 } from "lucide-react";
|
|
733
|
-
import {
|
|
733
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
734
734
|
var metadata4 = new SeoOptimizer4().optimize(schemaValidationTypescriptBrief2);
|
|
735
735
|
function SchemaValidationTypescriptPage() {
|
|
736
|
-
return /* @__PURE__ */
|
|
736
|
+
return /* @__PURE__ */ jsxs4("div", {
|
|
737
737
|
className: "space-y-8",
|
|
738
738
|
children: [
|
|
739
|
-
/* @__PURE__ */
|
|
739
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
740
740
|
className: "space-y-3",
|
|
741
741
|
children: [
|
|
742
|
-
/* @__PURE__ */
|
|
742
|
+
/* @__PURE__ */ jsx4("h1", {
|
|
743
743
|
className: "text-4xl font-bold",
|
|
744
744
|
children: schemaValidationTypescriptBrief2.title
|
|
745
|
-
}
|
|
746
|
-
/* @__PURE__ */
|
|
745
|
+
}),
|
|
746
|
+
/* @__PURE__ */ jsx4("p", {
|
|
747
747
|
className: "text-muted-foreground text-lg",
|
|
748
748
|
children: schemaValidationTypescriptBrief2.summary
|
|
749
|
-
}
|
|
749
|
+
})
|
|
750
750
|
]
|
|
751
|
-
}
|
|
752
|
-
/* @__PURE__ */
|
|
751
|
+
}),
|
|
752
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
753
753
|
className: "card-subtle space-y-4 p-6",
|
|
754
754
|
children: [
|
|
755
|
-
/* @__PURE__ */
|
|
755
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
756
756
|
className: "text-2xl font-bold",
|
|
757
757
|
children: "Validation Pain Points"
|
|
758
|
-
}
|
|
759
|
-
/* @__PURE__ */
|
|
758
|
+
}),
|
|
759
|
+
/* @__PURE__ */ jsx4("ul", {
|
|
760
760
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
761
|
-
children: schemaValidationTypescriptBrief2.problems.map((problem, index) => /* @__PURE__ */
|
|
761
|
+
children: schemaValidationTypescriptBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx4("li", {
|
|
762
762
|
children: problem
|
|
763
|
-
}, index
|
|
764
|
-
}
|
|
763
|
+
}, index))
|
|
764
|
+
})
|
|
765
765
|
]
|
|
766
|
-
}
|
|
767
|
-
/* @__PURE__ */
|
|
766
|
+
}),
|
|
767
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
768
768
|
className: "card-subtle space-y-4 p-6",
|
|
769
769
|
children: [
|
|
770
|
-
/* @__PURE__ */
|
|
770
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
771
771
|
className: "text-2xl font-bold",
|
|
772
772
|
children: "Type-safe Solutions"
|
|
773
|
-
}
|
|
774
|
-
/* @__PURE__ */
|
|
773
|
+
}),
|
|
774
|
+
/* @__PURE__ */ jsx4("ul", {
|
|
775
775
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
776
|
-
children: schemaValidationTypescriptBrief2.solutions.map((solution, index) => /* @__PURE__ */
|
|
776
|
+
children: schemaValidationTypescriptBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx4("li", {
|
|
777
777
|
children: solution
|
|
778
|
-
}, index
|
|
779
|
-
}
|
|
778
|
+
}, index))
|
|
779
|
+
})
|
|
780
780
|
]
|
|
781
|
-
}
|
|
782
|
-
/* @__PURE__ */
|
|
781
|
+
}),
|
|
782
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
783
783
|
className: "space-y-6",
|
|
784
784
|
children: [
|
|
785
|
-
/* @__PURE__ */
|
|
785
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
786
786
|
className: "space-y-3",
|
|
787
787
|
children: [
|
|
788
|
-
/* @__PURE__ */
|
|
788
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
789
789
|
className: "text-2xl font-bold",
|
|
790
790
|
children: "Contract Schema"
|
|
791
|
-
}
|
|
792
|
-
/* @__PURE__ */
|
|
791
|
+
}),
|
|
792
|
+
/* @__PURE__ */ jsx4("p", {
|
|
793
793
|
className: "text-muted-foreground text-sm",
|
|
794
794
|
children: "Define data models with automatic TypeScript generation."
|
|
795
|
-
}
|
|
796
|
-
/* @__PURE__ */
|
|
795
|
+
}),
|
|
796
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
797
797
|
language: "typescript",
|
|
798
798
|
filename: "src/contracts/user.schema.ts",
|
|
799
799
|
code: `import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
|
|
@@ -839,21 +839,21 @@ export const UserSchema = new SchemaModel({
|
|
|
839
839
|
description: 'User account information',
|
|
840
840
|
},
|
|
841
841
|
});`
|
|
842
|
-
}
|
|
842
|
+
})
|
|
843
843
|
]
|
|
844
|
-
}
|
|
845
|
-
/* @__PURE__ */
|
|
844
|
+
}),
|
|
845
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
846
846
|
className: "space-y-3",
|
|
847
847
|
children: [
|
|
848
|
-
/* @__PURE__ */
|
|
848
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
849
849
|
className: "text-2xl font-bold",
|
|
850
850
|
children: "Generated Types"
|
|
851
|
-
}
|
|
852
|
-
/* @__PURE__ */
|
|
851
|
+
}),
|
|
852
|
+
/* @__PURE__ */ jsx4("p", {
|
|
853
853
|
className: "text-muted-foreground text-sm",
|
|
854
854
|
children: "TypeScript types are automatically generated with proper validation."
|
|
855
|
-
}
|
|
856
|
-
/* @__PURE__ */
|
|
855
|
+
}),
|
|
856
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
857
857
|
language: "typescript",
|
|
858
858
|
filename: "generated/types/user.ts",
|
|
859
859
|
code: `// Auto-generated from UserSchema
|
|
@@ -882,21 +882,21 @@ export function validateUser(data: unknown): User {
|
|
|
882
882
|
export function isUser(data: unknown): data is User {
|
|
883
883
|
return UserSchemaZod.safeParse(data).success;
|
|
884
884
|
}`
|
|
885
|
-
}
|
|
885
|
+
})
|
|
886
886
|
]
|
|
887
|
-
}
|
|
888
|
-
/* @__PURE__ */
|
|
887
|
+
}),
|
|
888
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
889
889
|
className: "space-y-3",
|
|
890
890
|
children: [
|
|
891
|
-
/* @__PURE__ */
|
|
891
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
892
892
|
className: "text-2xl font-bold",
|
|
893
893
|
children: "Runtime Validation"
|
|
894
|
-
}
|
|
895
|
-
/* @__PURE__ */
|
|
894
|
+
}),
|
|
895
|
+
/* @__PURE__ */ jsx4("p", {
|
|
896
896
|
className: "text-muted-foreground text-sm",
|
|
897
897
|
children: "Use generated validation in your API handlers with zero boilerplate."
|
|
898
|
-
}
|
|
899
|
-
/* @__PURE__ */
|
|
898
|
+
}),
|
|
899
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
900
900
|
language: "typescript",
|
|
901
901
|
filename: "src/handlers/user-handler.ts",
|
|
902
902
|
code: `import { validateUser } from '../generated/types/user';
|
|
@@ -928,33 +928,33 @@ export async function createUserHandler(request: Request) {
|
|
|
928
928
|
throw error;
|
|
929
929
|
}
|
|
930
930
|
}`
|
|
931
|
-
}
|
|
931
|
+
})
|
|
932
932
|
]
|
|
933
|
-
}
|
|
933
|
+
})
|
|
934
934
|
]
|
|
935
|
-
}
|
|
936
|
-
/* @__PURE__ */
|
|
935
|
+
}),
|
|
936
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
937
937
|
className: "flex items-center gap-4 pt-4",
|
|
938
938
|
children: [
|
|
939
|
-
/* @__PURE__ */
|
|
939
|
+
/* @__PURE__ */ jsxs4(Link4, {
|
|
940
940
|
href: "/docs/guides/spec-validation-and-typing",
|
|
941
941
|
className: "btn-primary",
|
|
942
942
|
children: [
|
|
943
943
|
"Type Safety Guide ",
|
|
944
|
-
/* @__PURE__ */
|
|
944
|
+
/* @__PURE__ */ jsx4(ChevronRight4, {
|
|
945
945
|
size: 16
|
|
946
|
-
}
|
|
946
|
+
})
|
|
947
947
|
]
|
|
948
|
-
}
|
|
949
|
-
/* @__PURE__ */
|
|
948
|
+
}),
|
|
949
|
+
/* @__PURE__ */ jsx4(Link4, {
|
|
950
950
|
href: "/docs/intent/generate-client-from-schema",
|
|
951
951
|
className: "btn-ghost",
|
|
952
952
|
children: "Client Generation"
|
|
953
|
-
}
|
|
953
|
+
})
|
|
954
954
|
]
|
|
955
|
-
}
|
|
955
|
+
})
|
|
956
956
|
]
|
|
957
|
-
}
|
|
957
|
+
});
|
|
958
958
|
}
|
|
959
959
|
|
|
960
960
|
// src/components/docs/intent/OpenapiAlternativePage.tsx
|
|
@@ -963,146 +963,146 @@ import { SeoOptimizer as SeoOptimizer5 } from "@contractspec/lib.content-gen/seo
|
|
|
963
963
|
import { CodeBlock as CodeBlock5 } from "@contractspec/lib.design-system";
|
|
964
964
|
import Link5 from "@contractspec/lib.ui-link";
|
|
965
965
|
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
966
|
-
import {
|
|
966
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
967
967
|
var metadata5 = new SeoOptimizer5().optimize(openapiAlternativeBrief2);
|
|
968
968
|
function OpenapiAlternativePage() {
|
|
969
|
-
return /* @__PURE__ */
|
|
969
|
+
return /* @__PURE__ */ jsxs5("div", {
|
|
970
970
|
className: "space-y-8",
|
|
971
971
|
children: [
|
|
972
|
-
/* @__PURE__ */
|
|
972
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
973
973
|
className: "space-y-3",
|
|
974
974
|
children: [
|
|
975
|
-
/* @__PURE__ */
|
|
975
|
+
/* @__PURE__ */ jsx5("h1", {
|
|
976
976
|
className: "text-4xl font-bold",
|
|
977
977
|
children: openapiAlternativeBrief2.title
|
|
978
|
-
}
|
|
979
|
-
/* @__PURE__ */
|
|
978
|
+
}),
|
|
979
|
+
/* @__PURE__ */ jsx5("p", {
|
|
980
980
|
className: "text-muted-foreground text-lg",
|
|
981
981
|
children: openapiAlternativeBrief2.summary
|
|
982
|
-
}
|
|
982
|
+
})
|
|
983
983
|
]
|
|
984
|
-
}
|
|
985
|
-
/* @__PURE__ */
|
|
984
|
+
}),
|
|
985
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
986
986
|
className: "card-subtle space-y-4 p-6",
|
|
987
987
|
children: [
|
|
988
|
-
/* @__PURE__ */
|
|
988
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
989
989
|
className: "text-2xl font-bold",
|
|
990
990
|
children: "OpenAPI Limitations"
|
|
991
|
-
}
|
|
992
|
-
/* @__PURE__ */
|
|
991
|
+
}),
|
|
992
|
+
/* @__PURE__ */ jsx5("ul", {
|
|
993
993
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
994
|
-
children: openapiAlternativeBrief2.problems.map((problem, index) => /* @__PURE__ */
|
|
994
|
+
children: openapiAlternativeBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx5("li", {
|
|
995
995
|
children: problem
|
|
996
|
-
}, index
|
|
997
|
-
}
|
|
996
|
+
}, index))
|
|
997
|
+
})
|
|
998
998
|
]
|
|
999
|
-
}
|
|
1000
|
-
/* @__PURE__ */
|
|
999
|
+
}),
|
|
1000
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1001
1001
|
className: "card-subtle space-y-4 p-6",
|
|
1002
1002
|
children: [
|
|
1003
|
-
/* @__PURE__ */
|
|
1003
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1004
1004
|
className: "text-2xl font-bold",
|
|
1005
1005
|
children: "ContractSpec Advantages"
|
|
1006
|
-
}
|
|
1007
|
-
/* @__PURE__ */
|
|
1006
|
+
}),
|
|
1007
|
+
/* @__PURE__ */ jsx5("ul", {
|
|
1008
1008
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
1009
|
-
children: openapiAlternativeBrief2.solutions.map((solution, index) => /* @__PURE__ */
|
|
1009
|
+
children: openapiAlternativeBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx5("li", {
|
|
1010
1010
|
children: solution
|
|
1011
|
-
}, index
|
|
1012
|
-
}
|
|
1011
|
+
}, index))
|
|
1012
|
+
})
|
|
1013
1013
|
]
|
|
1014
|
-
}
|
|
1015
|
-
/* @__PURE__ */
|
|
1014
|
+
}),
|
|
1015
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1016
1016
|
className: "space-y-6",
|
|
1017
1017
|
children: [
|
|
1018
|
-
/* @__PURE__ */
|
|
1018
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1019
1019
|
className: "space-y-3",
|
|
1020
1020
|
children: [
|
|
1021
|
-
/* @__PURE__ */
|
|
1021
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1022
1022
|
className: "text-2xl font-bold",
|
|
1023
1023
|
children: "Comparison: OpenAPI vs ContractSpec"
|
|
1024
|
-
}
|
|
1025
|
-
/* @__PURE__ */
|
|
1024
|
+
}),
|
|
1025
|
+
/* @__PURE__ */ jsx5("p", {
|
|
1026
1026
|
className: "text-muted-foreground text-sm",
|
|
1027
1027
|
children: "Key differences between OpenAPI documentation and ContractSpec executable contracts."
|
|
1028
|
-
}
|
|
1029
|
-
/* @__PURE__ */
|
|
1028
|
+
}),
|
|
1029
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1030
1030
|
className: "grid gap-6 md:grid-cols-2",
|
|
1031
1031
|
children: [
|
|
1032
|
-
/* @__PURE__ */
|
|
1032
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1033
1033
|
className: "card-subtle space-y-3 p-4",
|
|
1034
1034
|
children: [
|
|
1035
|
-
/* @__PURE__ */
|
|
1035
|
+
/* @__PURE__ */ jsx5("h3", {
|
|
1036
1036
|
className: "text-lg font-semibold",
|
|
1037
1037
|
children: "OpenAPI"
|
|
1038
|
-
}
|
|
1039
|
-
/* @__PURE__ */
|
|
1038
|
+
}),
|
|
1039
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
1040
1040
|
className: "text-muted-foreground space-y-1 text-sm",
|
|
1041
1041
|
children: [
|
|
1042
|
-
/* @__PURE__ */
|
|
1042
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1043
1043
|
children: "\u2022 Documentation specification only"
|
|
1044
|
-
}
|
|
1045
|
-
/* @__PURE__ */
|
|
1044
|
+
}),
|
|
1045
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1046
1046
|
children: "\u2022 No runtime validation"
|
|
1047
|
-
}
|
|
1048
|
-
/* @__PURE__ */
|
|
1047
|
+
}),
|
|
1048
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1049
1049
|
children: "\u2022 Manual code generation"
|
|
1050
|
-
}
|
|
1051
|
-
/* @__PURE__ */
|
|
1050
|
+
}),
|
|
1051
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1052
1052
|
children: "\u2022 Type safety requires tools"
|
|
1053
|
-
}
|
|
1054
|
-
/* @__PURE__ */
|
|
1053
|
+
}),
|
|
1054
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1055
1055
|
children: "\u2022 Separate schemas from documentation"
|
|
1056
|
-
}
|
|
1056
|
+
})
|
|
1057
1057
|
]
|
|
1058
|
-
}
|
|
1058
|
+
})
|
|
1059
1059
|
]
|
|
1060
|
-
}
|
|
1061
|
-
/* @__PURE__ */
|
|
1060
|
+
}),
|
|
1061
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1062
1062
|
className: "card-subtle space-y-3 p-4",
|
|
1063
1063
|
children: [
|
|
1064
|
-
/* @__PURE__ */
|
|
1064
|
+
/* @__PURE__ */ jsx5("h3", {
|
|
1065
1065
|
className: "text-lg font-semibold",
|
|
1066
1066
|
children: "ContractSpec"
|
|
1067
|
-
}
|
|
1068
|
-
/* @__PURE__ */
|
|
1067
|
+
}),
|
|
1068
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
1069
1069
|
className: "text-muted-foreground space-y-1 text-sm",
|
|
1070
1070
|
children: [
|
|
1071
|
-
/* @__PURE__ */
|
|
1071
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1072
1072
|
children: "\u2022 Executable contracts"
|
|
1073
|
-
}
|
|
1074
|
-
/* @__PURE__ */
|
|
1073
|
+
}),
|
|
1074
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1075
1075
|
children: "\u2022 Built-in runtime validation"
|
|
1076
|
-
}
|
|
1077
|
-
/* @__PURE__ */
|
|
1076
|
+
}),
|
|
1077
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1078
1078
|
children: "\u2022 Automatic code generation"
|
|
1079
|
-
}
|
|
1080
|
-
/* @__PURE__ */
|
|
1079
|
+
}),
|
|
1080
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1081
1081
|
children: "\u2022 Type-safe by default"
|
|
1082
|
-
}
|
|
1083
|
-
/* @__PURE__ */
|
|
1082
|
+
}),
|
|
1083
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1084
1084
|
children: "\u2022 Unified spec and implementation"
|
|
1085
|
-
}
|
|
1085
|
+
})
|
|
1086
1086
|
]
|
|
1087
|
-
}
|
|
1087
|
+
})
|
|
1088
1088
|
]
|
|
1089
|
-
}
|
|
1089
|
+
})
|
|
1090
1090
|
]
|
|
1091
|
-
}
|
|
1091
|
+
})
|
|
1092
1092
|
]
|
|
1093
|
-
}
|
|
1094
|
-
/* @__PURE__ */
|
|
1093
|
+
}),
|
|
1094
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1095
1095
|
className: "space-y-3",
|
|
1096
1096
|
children: [
|
|
1097
|
-
/* @__PURE__ */
|
|
1097
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1098
1098
|
className: "text-2xl font-bold",
|
|
1099
1099
|
children: "Export from Contracts"
|
|
1100
|
-
}
|
|
1101
|
-
/* @__PURE__ */
|
|
1100
|
+
}),
|
|
1101
|
+
/* @__PURE__ */ jsx5("p", {
|
|
1102
1102
|
className: "text-muted-foreground text-sm",
|
|
1103
1103
|
children: "Generate OpenAPI documentation from ContractSpec for existing tooling."
|
|
1104
|
-
}
|
|
1105
|
-
/* @__PURE__ */
|
|
1104
|
+
}),
|
|
1105
|
+
/* @__PURE__ */ jsx5(CodeBlock5, {
|
|
1106
1106
|
language: "bash",
|
|
1107
1107
|
filename: "export-openapi",
|
|
1108
1108
|
code: `# From ContractSpec contracts
|
|
@@ -1114,21 +1114,21 @@ contractspec openapi export \\
|
|
|
1114
1114
|
# Compare: Manual OpenAPI vs Generated
|
|
1115
1115
|
# Manual: Write OpenAPI by hand, maintain separately
|
|
1116
1116
|
# Generated: Single source of truth, always in sync`
|
|
1117
|
-
}
|
|
1117
|
+
})
|
|
1118
1118
|
]
|
|
1119
|
-
}
|
|
1120
|
-
/* @__PURE__ */
|
|
1119
|
+
}),
|
|
1120
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1121
1121
|
className: "space-y-3",
|
|
1122
1122
|
children: [
|
|
1123
|
-
/* @__PURE__ */
|
|
1123
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1124
1124
|
className: "text-2xl font-bold",
|
|
1125
1125
|
children: "Beyond Documentation"
|
|
1126
|
-
}
|
|
1127
|
-
/* @__PURE__ */
|
|
1126
|
+
}),
|
|
1127
|
+
/* @__PURE__ */ jsx5("p", {
|
|
1128
1128
|
className: "text-muted-foreground text-sm",
|
|
1129
1129
|
children: "ContractSpec provides more than just API documentation."
|
|
1130
|
-
}
|
|
1131
|
-
/* @__PURE__ */
|
|
1130
|
+
}),
|
|
1131
|
+
/* @__PURE__ */ jsx5(CodeBlock5, {
|
|
1132
1132
|
language: "typescript",
|
|
1133
1133
|
filename: "multi-output-example.ts",
|
|
1134
1134
|
code: `// One contract, multiple outputs
|
|
@@ -1162,33 +1162,33 @@ export const outputs = {
|
|
|
1162
1162
|
// Type definitions
|
|
1163
1163
|
types: UserApiContract.toTypescript(),
|
|
1164
1164
|
};`
|
|
1165
|
-
}
|
|
1165
|
+
})
|
|
1166
1166
|
]
|
|
1167
|
-
}
|
|
1167
|
+
})
|
|
1168
1168
|
]
|
|
1169
|
-
}
|
|
1170
|
-
/* @__PURE__ */
|
|
1169
|
+
}),
|
|
1170
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1171
1171
|
className: "flex items-center gap-4 pt-4",
|
|
1172
1172
|
children: [
|
|
1173
|
-
/* @__PURE__ */
|
|
1173
|
+
/* @__PURE__ */ jsxs5(Link5, {
|
|
1174
1174
|
href: "/docs/guides/generate-docs-clients-schemas",
|
|
1175
1175
|
className: "btn-primary",
|
|
1176
1176
|
children: [
|
|
1177
1177
|
"Generate from Contracts ",
|
|
1178
|
-
/* @__PURE__ */
|
|
1178
|
+
/* @__PURE__ */ jsx5(ChevronRight5, {
|
|
1179
1179
|
size: 16
|
|
1180
|
-
}
|
|
1180
|
+
})
|
|
1181
1181
|
]
|
|
1182
|
-
}
|
|
1183
|
-
/* @__PURE__ */
|
|
1182
|
+
}),
|
|
1183
|
+
/* @__PURE__ */ jsx5(Link5, {
|
|
1184
1184
|
href: "/docs/intent/generate-client-from-schema",
|
|
1185
1185
|
className: "btn-ghost",
|
|
1186
1186
|
children: "Client Generation"
|
|
1187
|
-
}
|
|
1187
|
+
})
|
|
1188
1188
|
]
|
|
1189
|
-
}
|
|
1189
|
+
})
|
|
1190
1190
|
]
|
|
1191
|
-
}
|
|
1191
|
+
});
|
|
1192
1192
|
}
|
|
1193
1193
|
|
|
1194
1194
|
// src/components/docs/intent/GenerateClientFromSchemaPage.tsx
|
|
@@ -1197,70 +1197,70 @@ import { SeoOptimizer as SeoOptimizer6 } from "@contractspec/lib.content-gen/seo
|
|
|
1197
1197
|
import { CodeBlock as CodeBlock6 } from "@contractspec/lib.design-system";
|
|
1198
1198
|
import Link6 from "@contractspec/lib.ui-link";
|
|
1199
1199
|
import { ChevronRight as ChevronRight6 } from "lucide-react";
|
|
1200
|
-
import {
|
|
1200
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1201
1201
|
var metadata6 = new SeoOptimizer6().optimize(generateClientFromSchemaBrief2);
|
|
1202
1202
|
function GenerateClientFromSchemaPage() {
|
|
1203
|
-
return /* @__PURE__ */
|
|
1203
|
+
return /* @__PURE__ */ jsxs6("div", {
|
|
1204
1204
|
className: "space-y-8",
|
|
1205
1205
|
children: [
|
|
1206
|
-
/* @__PURE__ */
|
|
1206
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1207
1207
|
className: "space-y-3",
|
|
1208
1208
|
children: [
|
|
1209
|
-
/* @__PURE__ */
|
|
1209
|
+
/* @__PURE__ */ jsx6("h1", {
|
|
1210
1210
|
className: "text-4xl font-bold",
|
|
1211
1211
|
children: generateClientFromSchemaBrief2.title
|
|
1212
|
-
}
|
|
1213
|
-
/* @__PURE__ */
|
|
1212
|
+
}),
|
|
1213
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1214
1214
|
className: "text-muted-foreground text-lg",
|
|
1215
1215
|
children: generateClientFromSchemaBrief2.summary
|
|
1216
|
-
}
|
|
1216
|
+
})
|
|
1217
1217
|
]
|
|
1218
|
-
}
|
|
1219
|
-
/* @__PURE__ */
|
|
1218
|
+
}),
|
|
1219
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1220
1220
|
className: "card-subtle space-y-4 p-6",
|
|
1221
1221
|
children: [
|
|
1222
|
-
/* @__PURE__ */
|
|
1222
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1223
1223
|
className: "text-2xl font-bold",
|
|
1224
1224
|
children: "Client Development Problems"
|
|
1225
|
-
}
|
|
1226
|
-
/* @__PURE__ */
|
|
1225
|
+
}),
|
|
1226
|
+
/* @__PURE__ */ jsx6("ul", {
|
|
1227
1227
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
1228
|
-
children: generateClientFromSchemaBrief2.problems.map((problem, index) => /* @__PURE__ */
|
|
1228
|
+
children: generateClientFromSchemaBrief2.problems.map((problem, index) => /* @__PURE__ */ jsx6("li", {
|
|
1229
1229
|
children: problem
|
|
1230
|
-
}, index
|
|
1231
|
-
}
|
|
1230
|
+
}, index))
|
|
1231
|
+
})
|
|
1232
1232
|
]
|
|
1233
|
-
}
|
|
1234
|
-
/* @__PURE__ */
|
|
1233
|
+
}),
|
|
1234
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1235
1235
|
className: "card-subtle space-y-4 p-6",
|
|
1236
1236
|
children: [
|
|
1237
|
-
/* @__PURE__ */
|
|
1237
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1238
1238
|
className: "text-2xl font-bold",
|
|
1239
1239
|
children: "Automated Solutions"
|
|
1240
|
-
}
|
|
1241
|
-
/* @__PURE__ */
|
|
1240
|
+
}),
|
|
1241
|
+
/* @__PURE__ */ jsx6("ul", {
|
|
1242
1242
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
1243
|
-
children: generateClientFromSchemaBrief2.solutions.map((solution, index) => /* @__PURE__ */
|
|
1243
|
+
children: generateClientFromSchemaBrief2.solutions.map((solution, index) => /* @__PURE__ */ jsx6("li", {
|
|
1244
1244
|
children: solution
|
|
1245
|
-
}, index
|
|
1246
|
-
}
|
|
1245
|
+
}, index))
|
|
1246
|
+
})
|
|
1247
1247
|
]
|
|
1248
|
-
}
|
|
1249
|
-
/* @__PURE__ */
|
|
1248
|
+
}),
|
|
1249
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1250
1250
|
className: "space-y-6",
|
|
1251
1251
|
children: [
|
|
1252
|
-
/* @__PURE__ */
|
|
1252
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1253
1253
|
className: "space-y-3",
|
|
1254
1254
|
children: [
|
|
1255
|
-
/* @__PURE__ */
|
|
1255
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1256
1256
|
className: "text-2xl font-bold",
|
|
1257
1257
|
children: "Contract Definition"
|
|
1258
|
-
}
|
|
1259
|
-
/* @__PURE__ */
|
|
1258
|
+
}),
|
|
1259
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1260
1260
|
className: "text-muted-foreground text-sm",
|
|
1261
1261
|
children: "Define your API contract once, generate clients for any language."
|
|
1262
|
-
}
|
|
1263
|
-
/* @__PURE__ */
|
|
1262
|
+
}),
|
|
1263
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1264
1264
|
language: "typescript",
|
|
1265
1265
|
filename: "src/contracts/api.contract.ts",
|
|
1266
1266
|
code: `import { defineContract } from '@contractspec/lib.contracts-spec';
|
|
@@ -1334,21 +1334,21 @@ export const ApiContract = defineContract({
|
|
|
1334
1334
|
tags: ['users', 'authentication'],
|
|
1335
1335
|
},
|
|
1336
1336
|
});`
|
|
1337
|
-
}
|
|
1337
|
+
})
|
|
1338
1338
|
]
|
|
1339
|
-
}
|
|
1340
|
-
/* @__PURE__ */
|
|
1339
|
+
}),
|
|
1340
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1341
1341
|
className: "space-y-3",
|
|
1342
1342
|
children: [
|
|
1343
|
-
/* @__PURE__ */
|
|
1343
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1344
1344
|
className: "text-2xl font-bold",
|
|
1345
1345
|
children: "Generate Multiple Clients"
|
|
1346
|
-
}
|
|
1347
|
-
/* @__PURE__ */
|
|
1346
|
+
}),
|
|
1347
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1348
1348
|
className: "text-muted-foreground text-sm",
|
|
1349
1349
|
children: "Generate type-safe clients for any language from the same contract."
|
|
1350
|
-
}
|
|
1351
|
-
/* @__PURE__ */
|
|
1350
|
+
}),
|
|
1351
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1352
1352
|
language: "bash",
|
|
1353
1353
|
filename: "generate-clients",
|
|
1354
1354
|
code: `# Generate all supported language clients
|
|
@@ -1369,31 +1369,31 @@ contractspec generate clients \\
|
|
|
1369
1369
|
# --with-tests: Generate client test suites
|
|
1370
1370
|
# --with-docs: Include client documentation
|
|
1371
1371
|
# --framework: Use specific HTTP client framework`
|
|
1372
|
-
}
|
|
1372
|
+
})
|
|
1373
1373
|
]
|
|
1374
|
-
}
|
|
1375
|
-
/* @__PURE__ */
|
|
1374
|
+
}),
|
|
1375
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1376
1376
|
className: "space-y-3",
|
|
1377
1377
|
children: [
|
|
1378
|
-
/* @__PURE__ */
|
|
1378
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1379
1379
|
className: "text-2xl font-bold",
|
|
1380
1380
|
children: "Generated Client Examples"
|
|
1381
|
-
}
|
|
1382
|
-
/* @__PURE__ */
|
|
1381
|
+
}),
|
|
1382
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1383
1383
|
className: "text-muted-foreground text-sm",
|
|
1384
1384
|
children: "Each generated client is fully type-safe and idiomatic."
|
|
1385
|
-
}
|
|
1386
|
-
/* @__PURE__ */
|
|
1385
|
+
}),
|
|
1386
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1387
1387
|
className: "space-y-4",
|
|
1388
1388
|
children: [
|
|
1389
|
-
/* @__PURE__ */
|
|
1389
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1390
1390
|
className: "card-subtle p-4",
|
|
1391
1391
|
children: [
|
|
1392
|
-
/* @__PURE__ */
|
|
1392
|
+
/* @__PURE__ */ jsx6("h4", {
|
|
1393
1393
|
className: "text-lg font-semibold",
|
|
1394
1394
|
children: "TypeScript Client"
|
|
1395
|
-
}
|
|
1396
|
-
/* @__PURE__ */
|
|
1395
|
+
}),
|
|
1396
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1397
1397
|
language: "typescript",
|
|
1398
1398
|
filename: "generated/clients/typescript/index.ts",
|
|
1399
1399
|
code: `import { MyAPIClient } from './client';
|
|
@@ -1417,17 +1417,17 @@ const newUser = await client.createUser({
|
|
|
1417
1417
|
// Full type inference
|
|
1418
1418
|
// users: GetUsersResponse
|
|
1419
1419
|
// newUser: CreateUserResponse`
|
|
1420
|
-
}
|
|
1420
|
+
})
|
|
1421
1421
|
]
|
|
1422
|
-
}
|
|
1423
|
-
/* @__PURE__ */
|
|
1422
|
+
}),
|
|
1423
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1424
1424
|
className: "card-subtle p-4",
|
|
1425
1425
|
children: [
|
|
1426
|
-
/* @__PURE__ */
|
|
1426
|
+
/* @__PURE__ */ jsx6("h4", {
|
|
1427
1427
|
className: "text-lg font-semibold",
|
|
1428
1428
|
children: "Python Client"
|
|
1429
|
-
}
|
|
1430
|
-
/* @__PURE__ */
|
|
1429
|
+
}),
|
|
1430
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1431
1431
|
language: "python",
|
|
1432
1432
|
filename: "generated/clients/python/index.py",
|
|
1433
1433
|
code: `from myapi_client import MyAPIClient
|
|
@@ -1451,17 +1451,17 @@ new_user = await client.create_user(
|
|
|
1451
1451
|
# Full type hints
|
|
1452
1452
|
# users: GetUsersResponse
|
|
1453
1453
|
# new_user: CreateUserResponse`
|
|
1454
|
-
}
|
|
1454
|
+
})
|
|
1455
1455
|
]
|
|
1456
|
-
}
|
|
1457
|
-
/* @__PURE__ */
|
|
1456
|
+
}),
|
|
1457
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1458
1458
|
className: "card-subtle p-4",
|
|
1459
1459
|
children: [
|
|
1460
|
-
/* @__PURE__ */
|
|
1460
|
+
/* @__PURE__ */ jsx6("h4", {
|
|
1461
1461
|
className: "text-lg font-semibold",
|
|
1462
1462
|
children: "Go Client"
|
|
1463
|
-
}
|
|
1464
|
-
/* @__PURE__ */
|
|
1463
|
+
}),
|
|
1464
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1465
1465
|
language: "go",
|
|
1466
1466
|
filename: "generated/clients/go/client.go",
|
|
1467
1467
|
code: `package main
|
|
@@ -1492,25 +1492,25 @@ func main() {
|
|
|
1492
1492
|
// users: *GetUsersResponse
|
|
1493
1493
|
// newUser: *CreateUserResponse
|
|
1494
1494
|
}`
|
|
1495
|
-
}
|
|
1495
|
+
})
|
|
1496
1496
|
]
|
|
1497
|
-
}
|
|
1497
|
+
})
|
|
1498
1498
|
]
|
|
1499
|
-
}
|
|
1499
|
+
})
|
|
1500
1500
|
]
|
|
1501
|
-
}
|
|
1502
|
-
/* @__PURE__ */
|
|
1501
|
+
}),
|
|
1502
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1503
1503
|
className: "space-y-3",
|
|
1504
1504
|
children: [
|
|
1505
|
-
/* @__PURE__ */
|
|
1505
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1506
1506
|
className: "text-2xl font-bold",
|
|
1507
1507
|
children: "Advanced Features"
|
|
1508
|
-
}
|
|
1509
|
-
/* @__PURE__ */
|
|
1508
|
+
}),
|
|
1509
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1510
1510
|
className: "text-muted-foreground text-sm",
|
|
1511
1511
|
children: "Generated clients include enterprise-grade features out of the box."
|
|
1512
|
-
}
|
|
1513
|
-
/* @__PURE__ */
|
|
1512
|
+
}),
|
|
1513
|
+
/* @__PURE__ */ jsx6(CodeBlock6, {
|
|
1514
1514
|
language: "typescript",
|
|
1515
1515
|
filename: "client-features.ts",
|
|
1516
1516
|
code: `// Advanced client features
|
|
@@ -1557,33 +1557,33 @@ const user2 = client.getUser({ id: '123' }); // Uses cached result
|
|
|
1557
1557
|
const controller = new AbortController();
|
|
1558
1558
|
const promise = client.getUsers({ page: 1, signal: controller.signal });
|
|
1559
1559
|
controller.abort(); // Cancels the request`
|
|
1560
|
-
}
|
|
1560
|
+
})
|
|
1561
1561
|
]
|
|
1562
|
-
}
|
|
1562
|
+
})
|
|
1563
1563
|
]
|
|
1564
|
-
}
|
|
1565
|
-
/* @__PURE__ */
|
|
1564
|
+
}),
|
|
1565
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1566
1566
|
className: "flex items-center gap-4 pt-4",
|
|
1567
1567
|
children: [
|
|
1568
|
-
/* @__PURE__ */
|
|
1568
|
+
/* @__PURE__ */ jsxs6(Link6, {
|
|
1569
1569
|
href: "/docs/guides/generate-docs-clients-schemas",
|
|
1570
1570
|
className: "btn-primary",
|
|
1571
1571
|
children: [
|
|
1572
1572
|
"Client Generation Guide ",
|
|
1573
|
-
/* @__PURE__ */
|
|
1573
|
+
/* @__PURE__ */ jsx6(ChevronRight6, {
|
|
1574
1574
|
size: 16
|
|
1575
|
-
}
|
|
1575
|
+
})
|
|
1576
1576
|
]
|
|
1577
|
-
}
|
|
1578
|
-
/* @__PURE__ */
|
|
1577
|
+
}),
|
|
1578
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1579
1579
|
href: "/docs/intent/contract-first-api",
|
|
1580
1580
|
className: "btn-ghost",
|
|
1581
1581
|
children: "Contract-first API"
|
|
1582
|
-
}
|
|
1582
|
+
})
|
|
1583
1583
|
]
|
|
1584
|
-
}
|
|
1584
|
+
})
|
|
1585
1585
|
]
|
|
1586
|
-
}
|
|
1586
|
+
});
|
|
1587
1587
|
}
|
|
1588
1588
|
export {
|
|
1589
1589
|
SpecDrivenDevelopmentPage,
|