Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions examples/3.cli/perf-trace/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
"start": "node --experimental-strip-types index.ts"
},
"dependencies": {
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/api": "^1.9.1",
"@opentelemetry/exporter-trace-otlp-proto": "^0.221.0",
"@opentelemetry/resources": "^2.10.0",
"@opentelemetry/sdk-trace-node": "^2.10.0",
"@opentelemetry/resources": "^2.11.0",
"@opentelemetry/sdk-trace-node": "^2.11.0",
"comark": "workspace:*",
"rangi": "catalog:"
}
Expand Down
6 changes: 3 additions & 3 deletions packages/comark-angular/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@
"comark": "workspace:*"
},
"devDependencies": {
"@angular/common": "^22.0.6",
"@angular/common": "^22.1.7",
"@angular/compiler": "catalog:",
"@angular/compiler-cli": "catalog:",
"@angular/core": "^22.0.6",
"@angular/platform-browser": "^22.0.6",
"@angular/core": "^22.1.7",
"@angular/platform-browser": "^22.1.7",
"@angular/platform-server": "catalog:",
"typescript": "catalog:",
"vitest": "catalog:"
Expand Down
2 changes: 1 addition & 1 deletion packages/comark-html/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
},
"devDependencies": {
"beautiful-mermaid": "catalog:",
"katex": "^0.17.0",
"katex": "^0.18.7",
"vitest": "catalog:"
},
"peerDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion packages/comark-react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
"devDependencies": {
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"react": "^19.2.7",
"react": "catalog:",
"react-dom": "catalog:",
"vitest": "catalog:"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/comark-svelte/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
"@vitest/browser": "catalog:",
"@vitest/browser-playwright": "catalog:",
"release-it": "catalog:",
"svelte": "^5.56.4",
"svelte": "^5.57.1",
"svelte-check": "catalog:",
"vitest": "catalog:",
"vitest-browser-svelte": "catalog:"
Expand Down
2 changes: 1 addition & 1 deletion packages/comark/src/internal/stringify/handlers/br.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { State } from 'comark/render'
import type { ElementNode } from 'comark'

export function br(_: ElementNode, _state: State) {
export function br(_n: ElementNode, _state: State) {
return ' \n'
}
2 changes: 1 addition & 1 deletion packages/comark/src/internal/stringify/handlers/hr.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { State } from 'comark/render'
import type { ElementNode } from 'comark'

export function hr(_: ElementNode, state: State, parent?: ElementNode) {
export function hr(_n: ElementNode, state: State, parent?: ElementNode) {
if (parent?.[0] === 'p') {
return ':hr'
}
Expand Down
3 changes: 2 additions & 1 deletion packages/comark/test/auto-close-spec.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
formatCompareMarkdown,
sectionAwareMapOptions,
toGenericAutoCloseOptions,
type SpecOptions,
} from './spec-runner.mjs'

const __dirname = dirname(fileURLToPath(import.meta.url))
Expand All @@ -31,7 +32,7 @@ function sectionFromEnv(env: NodeJS.ProcessEnv = process.env): string | undefine
}

/** Map portable SPEC options onto comark's AutoCloseOptions. */
function map(opts: Record<string, unknown>): Record<string, unknown> {
function map(opts: SpecOptions): Record<string, unknown> {
const generic = toGenericAutoCloseOptions(opts)
return {
...generic,
Expand Down
120 changes: 120 additions & 0 deletions packages/comark/test/spec-runner.d.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/**
* Ambient types for the portable zero-dep SPEC runner (`spec-runner.mjs`).
* Keep in sync with the runtime exports used by Vitest / typecheck.
*/

export interface SpecOptions {
bold: boolean
italic: boolean
boldItalic: boolean
inlineCode: boolean
strikethrough: boolean
links: boolean
images: boolean
linkMode: 'protocol' | 'text-only' | string
incompleteLinkPlaceholder: string
incompleteImagePlaceholder: string
blockMath: boolean
inlineMath: boolean
htmlTags: boolean
tables: boolean
singleTilde: boolean
comparisonOperators: boolean
dropTrailingOpeners: boolean
setextGuard: boolean
streaming: boolean
[key: string]: unknown
}

export interface SpecCase {
position: number
section: string
input: string
expected: string
options: SpecOptions
}

export interface SpecResult {
case: SpecCase
actual: string
passed: boolean
durationMs: number
error?: string
}

export interface SectionSummary {
section: string
total: number
passed: number
failed: number
matchRate: number
durationMs: number
}

export interface RunSummary {
total: number
passed: number
failed: number
matchRate: number
durationMs: number
meanMs: number
medianMs: number
opsPerSec: number
bySection: SectionSummary[]
failures: SpecResult[]
results: SpecResult[]
}

export interface CandidateSummary extends RunSummary {
name: string
}

export interface RankingEntry {
name: string
matchRate: number
passed: number
failed: number
durationMs: number
meanMs: number
opsPerSec: number
}

export interface CompareReport {
filePath: string
caseCount: number
candidates: CandidateSummary[]
ranking: RankingEntry[]
}

export type SpecFn = (input: string, opts: SpecOptions) => string

export type SpecCandidate = SpecFn | { name: string; fn: SpecFn }

export type MapOptions = (opts: SpecOptions, testCase: SpecCase) => SpecOptions

export interface SelectOptions {
section?: string | RegExp | string[]
filter?: (testCase: SpecCase) => boolean
verbose?: boolean
warmup?: number
mapOptions?: MapOptions
printSummary?: boolean
}

export const DEFAULT_SPEC_OPTIONS: SpecOptions

export function resetLegacyWarnings(): void
export function parseOptsAttribute(raw: string): Partial<SpecOptions>
export function resolveOptions(overrides?: Partial<SpecOptions>): SpecOptions
export function applySectionHints(section: string, opts: SpecOptions): SpecOptions
export function decodeEscapes(s: string): string
export function parseSpecCases(md: string, filePath?: string): SpecCase[]
export function loadSpecCases(filePath: string): SpecCase[]
export function matchesSection(sectionTitle: string, filter: string | RegExp | string[]): boolean
export function selectCases(cases: SpecCase[], options?: SelectOptions): SpecCase[]
export function runSpecCases(cases: SpecCase[], fn: SpecFn, options?: SelectOptions): RunSummary
export function printCompareTable(report: CompareReport): void
export function formatCompareMarkdown(report: CompareReport): string
export function compareSpecFile(filePath: string, candidates: SpecCandidate[], options?: SelectOptions): CompareReport
export function toGenericAutoCloseOptions(opts: SpecOptions): Record<string, unknown>
export function sectionAwareMapOptions(opts: SpecOptions, testCase: SpecCase): SpecOptions
2 changes: 1 addition & 1 deletion packages/comark/test/text-escape.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ describe('text node escaping', () => {
const text = 'word]:name'
const { md, node } = await roundTrip(text)
// The colon should be escaped to prevent re-parsing as an inline component.
expect(md).toContain('\:name')
expect(md).toContain('\\:name')
expect(node).toEqual(['p', {}, text])
})
})
Loading
Loading