Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - typeup/parser: TypeUp Parser with a simple eventbased API. · GitHub
Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - typeup/parser: TypeUp Parser with a simple eventbased API. · GitHub
Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - typeup/parser: TypeUp Parser with a simple eventbased API. · GitHub
Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - typeup/parser: TypeUp Parser with a simple eventbased API. · GitHub
Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - typeup/parser: TypeUp Parser with a simple eventbased API. · GitHub
Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - typeup/parser: TypeUp Parser with a simple eventbased API. · GitHub
Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - typeup/parser: TypeUp Parser with a simple eventbased API. · GitHub
Skip to content

Repository files navigation

TypeUp Parser

Event-based parser for TypeUp documents with comprehensive TypeScript support.

Overview

The TypeUp Parser provides a simple, event-based API for parsing TypeUp documents into the TypeUp DOM structure. It handles all TypeUp syntax including blocks, inlines, and nested structures with proper error handling and location tracking.

Installation

npm install @typeup/parser

Usage

import{parser}from"@typeup/parser"// Parse TypeUp contentconstdocument=parser.parse(content,source)// Use with event handlersconsthandler=newMyEventHandler()parser.parse(content,source,handler)

Features

  • Event-based Architecture: Flexible parsing with customizable event handlers
  • Complete TypeUp Support: Handles all TypeUp block and inline elements
  • TypeScript Support: Comprehensive type definitions and type safety
  • Error Handling: Detailed error reporting with source location tracking
  • Performance: Optimized for parsing large documents
  • Modern Tooling: Built with modern development practices and tooling

Development

# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Fix linting issues
npm run fix
# Run full verification
npm run verify

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Changelog

See CHANGELOG.md for a detailed history of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

TypeUp Parser with a simple eventbased API.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages