snapshot of https://github.com/ueberdosis/tiptap.git (main, 2026-09-15; blobs > 131072B omitted)
Some checks failed
Verify / Install node dependencies (push) Failing after 2s
Verify / Build packages (push) Has been skipped
Verify / Check linting & formatting (push) Has been skipped
Verify / Run unit tests (push) Has been skipped
Verify / Run e2e tests (shard 1/4) (push) Has been skipped
Verify / Run e2e tests (shard 2/4) (push) Has been skipped
Verify / Run e2e tests (shard 3/4) (push) Has been skipped
Verify / Run e2e tests (shard 4/4) (push) Has been skipped
Publish / Resolve publish config (push) Failing after 2s
Publish / Send notification to Slack (push) Has been skipped
Publish / Send failure notification to Slack (push) Failing after 8s
Verify / Merge e2e reports (push) Has been skipped
Publish / Build (push) Has been skipped
Publish / Bump Versions OR Release to Registry (push) Has been skipped

This commit is contained in:
upstream-mirror
2026-09-15 21:11:02 +05:00
commit 083a46e93b
2115 changed files with 245958 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
import { Mention } from './mention.js'
import { describe, expect, it } from 'vite-plus/test'
describe('mention Markdown', () => {
it('parses mapped attributes', () => {
const tokenizer = Mention.config.markdownTokenizer
expect(tokenizer).toBeDefined()
const token = tokenizer?.tokenize('[@ id="feature" char="#"]', [], null as any)
expect(token).toMatchObject({
attributes: {
id: 'feature',
mentionSuggestionChar: '#',
},
})
})
it('parses malformed attributes in linear time', () => {
const tokenizer = Mention.config.markdownTokenizer
expect(tokenizer).toBeDefined()
const measure = (attributes: string) => {
const startedAt = performance.now()
tokenizer?.tokenize(`[@ ${attributes}]`, [], null as any)
return performance.now() - startedAt
}
measure('warmup="true"')
const sizes = [12_288, 24_576]
sizes.forEach(size => {
const attack = '0'.repeat(size)
const control = '-'.repeat(attack.length)
const controlDuration = measure(control)
const attackDuration = measure(attack)
expect(attackDuration).toBeLessThan(controlDuration * 20 + 100)
})
})
it('only parses attributes at attribute boundaries', () => {
const tokenizer = Mention.config.markdownTokenizer
const token = tokenizer?.tokenize('[@ id="feature" prefix:char="#"]', [], null as any)
expect(token).toMatchObject({ attributes: { id: 'feature' } })
})
})