@@ -14,7 +14,7 @@ import { RadioGroup, RadioGroupItem } from "~/components/ui/radio-group"
14
14
import { Textarea } from "~/components/ui/textarea"
15
15
import { readFileContent } from "~/lib/utils" ;
16
16
import { type ISpectralDiagnostic , Ruleset , Spectral } from "@stoplight/spectral-core" ;
17
- import { oas , asyncapi } from "@stoplight/spectral-rulesets" ;
17
+ import { oas , asyncapi , arazzo } from "@stoplight/spectral-rulesets" ;
18
18
import { DiagnosticSeverity } from "@stoplight/types" ;
19
19
import { parseFileContent } from "~/lib/file-parser" ;
20
20
import { bundleAndLoadRuleset } from "@stoplight/spectral-ruleset-bundler/with-loader" ;
@@ -45,7 +45,7 @@ export default function OpenApiLinter() {
45
45
const [ isLoading , setIsLoading ] = useState ( false )
46
46
const [ error , setError ] = useState < string | null > ( null )
47
47
const [ lintResults , setLintResults ] = useState < LintResult [ ] | null > ( null )
48
- const [ ruleset , setRuleset ] = useState < "spectral:oas" | "spectral:asyncapi" | "custom" > ( "spectral:oas" )
48
+ const [ ruleset , setRuleset ] = useState < "spectral:oas" | "spectral:asyncapi" | "spectral:arazzo" | " custom"> ( "spectral:oas" )
49
49
const [ customRulesetUrl , setCustomRulesetUrl ] = useState ( "" )
50
50
const [ customRuleset , setCustomRuleset ] = useState ( "" )
51
51
const [ isSettingsOpen , setIsSettingsOpen ] = useState ( false )
@@ -126,6 +126,9 @@ export default function OpenApiLinter() {
126
126
case "spectral:asyncapi" :
127
127
spectral . setRuleset ( asyncapi )
128
128
break
129
+ case "spectral:arazzo" :
130
+ spectral . setRuleset ( arazzo )
131
+ break
129
132
case "custom" :
130
133
if ( activeRuleTab === "url" && customRulesetUrl ) {
131
134
spectral . setRuleset ( await bundleAndLoadRuleset ( customRulesetUrl , { fs, fetch } ) )
@@ -434,6 +437,15 @@ export default function OpenApiLinter() {
434
437
</ p >
435
438
</ div >
436
439
</ div >
440
+ < div className = "flex items-start space-x-2" >
441
+ < RadioGroupItem value = "spectral:arazzo" id = "spectral-arazzo" />
442
+ < div className = "grid gap-1.5" >
443
+ < Label htmlFor = "spectral-arazzo" className = "font-medium" >
444
+ Spectral:Arazzo
445
+ </ Label >
446
+ < p className = "text-sm text-gray-500" > Ruleset for Arazzo specification validation.</ p >
447
+ </ div >
448
+ </ div >
437
449
< div className = "flex items-start space-x-2" >
438
450
< RadioGroupItem value = "spectral:asyncapi" id = "spectral-asyncapi" />
439
451
< div className = "grid gap-1.5" >
@@ -450,31 +462,32 @@ export default function OpenApiLinter() {
450
462
Custom Ruleset
451
463
</ Label >
452
464
< p className = "text-sm text-gray-500 mb-2" >
453
- Provide a URL to a custom ruleset or paste your ruleset directly.
465
+ { /*Provide a URL to a custom ruleset or paste your ruleset directly.*/ }
466
+ Provide a URL to a custom ruleset.
454
467
</ p >
455
- < Tabs defaultValue = "url" className = "w-full" value = { activeRuleTab } onValueChange = { ( value ) => { setActiveRuleTab ( value as any ) ; } } >
456
- < TabsList className = "grid w-full grid-cols-2" >
457
- < TabsTrigger value = "url" > URL</ TabsTrigger >
458
- < TabsTrigger value = "paste" > Paste</ TabsTrigger >
459
- </ TabsList >
460
- < TabsContent value = "url" className = "pt-2" >
468
+ { /* <Tabs defaultValue="url" className="w-full" value={activeRuleTab} onValueChange={(value) => {setActiveRuleTab(value as any);}}>*/ }
469
+ { /* <TabsList className="grid w-full grid-cols-2">*/ }
470
+ { /* <TabsTrigger value="url">URL</TabsTrigger>*/ }
471
+ { /* <TabsTrigger value="paste">Paste</TabsTrigger>*/ }
472
+ { /* </TabsList>*/ }
473
+ { /* <TabsContent value="url" className="pt-2">*/ }
461
474
< Input
462
475
placeholder = "https://example.com/ruleset.json"
463
476
value = { customRulesetUrl }
464
477
onChange = { ( e ) => setCustomRulesetUrl ( e . target . value ) }
465
478
disabled = { ruleset !== "custom" }
466
479
/>
467
- </ TabsContent >
468
- < TabsContent value = "paste" className = "pt-2" >
469
- < Textarea
470
- placeholder = "Paste your ruleset here..."
471
- className = "min-h-[150px] font-mono text-sm"
472
- value = { customRuleset }
473
- onChange = { ( e ) => setCustomRuleset ( e . target . value ) }
474
- disabled = { ruleset !== "custom" }
475
- />
476
- </ TabsContent >
477
- </ Tabs >
480
+ { /* </TabsContent>*/ }
481
+ { /* <TabsContent value="paste" className="pt-2">*/ }
482
+ { /* <Textarea*/ }
483
+ { /* placeholder="Paste your ruleset here..."*/ }
484
+ { /* className="min-h-[150px] font-mono text-sm"*/ }
485
+ { /* value={customRuleset}*/ }
486
+ { /* onChange={(e) => setCustomRuleset(e.target.value)}*/ }
487
+ { /* disabled={ruleset !== "custom"}*/ }
488
+ { /* />*/ }
489
+ { /* </TabsContent>*/ }
490
+ { /* </Tabs>*/ }
478
491
</ div >
479
492
</ div >
480
493
</ RadioGroup >
@@ -515,7 +528,11 @@ export default function OpenApiLinter() {
515
528
? "Spectral:OAS"
516
529
: ruleset === "spectral:asyncapi"
517
530
? "Spectral:AsyncAPI"
518
- : "Custom Ruleset" }
531
+ : ruleset === "spectral:arazzo"
532
+ ? "Spectral:Arazzo"
533
+ : ruleset === "custom"
534
+ ? "Custom Ruleset"
535
+ : ruleset }
519
536
</ span >
520
537
</ div >
521
538
</ div >
0 commit comments