') + ')', '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('^' + ".*" + ', '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" + ', '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('^' + ".*" + ', '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); } })(); })(); GitHub - SamHatoum/chimp: Tooling that helps you do quality, faster. · GitHub
Skip to content

Repository files navigation

chimp

Your development companion for doing quality, faster. For a full documentation please go to chimpjs.com.

oclifVersionDownloads/weekLicense

Usage

$ npm install -g chimp
$ chimp COMMANDrunning command...
$ chimp (--version)chimp/0.0.0-development darwin-arm64 node-v18.1.0
$ chimp --help [COMMAND]USAGE $ chimp COMMAND...

Commands

chimp create NAME

create (scaffold) a new app

USAGE
$ chimp create NAME [-h] [-a <value>] [-g <value>]
ARGUMENTS
NAME name of the new app, also used as the directory
FLAGS
-a, --appPrefix=<value> [default: ~app] prefix that points to the sourcecode of your app
-g, --generatedPrefix=<value> [default: ~generated] prefix that points to the generated by chimp helper code
-h, --help Show CLI help.
DESCRIPTION
create (scaffold) a new app
EXAMPLES
$ chimp create my-new-app
$ chimp create my-new-app -a ~src -g ~chimp-helpers

See code: src/commands/create.ts

chimp eject

Eject from chimp. While chimp is not a runtime dependency and your project will still run after removing it, ejecting offers a cleaner development environment. While we hope you never need to eject, it is reassuring to know you have the option. If you choose to eject or are considering it, please inform us. Remember, you are always just one command away from this choice.

USAGE
$ chimp eject [-h]
FLAGS
-h, --help Show CLI help.
DESCRIPTION
Eject from chimp. While chimp is not a runtime dependency and your project will still run after removing it, ejecting
offers a cleaner development environment. While we hope you never need to eject, it is reassuring to know you have the
option. If you choose to eject or are considering it, please inform us. Remember, you are always just one command away
from this choice.
EXAMPLES
$ chimp eject

See code: src/commands/eject.ts

chimp generate

generate GraphQL code

USAGE
$ chimp generate [-h] [-a <value>] [-g <value>] [-p <value>]
FLAGS
-a, --appPrefix=<value> [default: ~app] prefix that points to the sourcecode of your app
-g, --generatedPrefix=<value> [default: ~generated] prefix that points to the generated by chimp helper code
-h, --help Show CLI help.
-p, --modulesPath=<value> path to the graphQL modules, only use if you are migrating an existing Apollo App and
you want to use chimp only for a part of it
DESCRIPTION
generate GraphQL code
EXAMPLES
$ chimp generate
$ chimp generate -a ~src -g ~chimp-helpers

See code: src/commands/generate.ts

chimp help [COMMANDS]

Display help for chimp.

USAGE
$ chimp help [COMMANDS] [-n]
ARGUMENTS
COMMANDS Command to show help for.
FLAGS
-n, --nested-commands Include all nested commands in the output.
DESCRIPTION
Display help for chimp.

See code: @oclif/plugin-help

chimp init

init Chimp

USAGE
$ chimp init [-h] [-p <value>]
FLAGS
-h, --help Show CLI help.
-p, --modulesPath=<value> [default: ./src/modules] path to the GraphQL modules.
DESCRIPTION
init Chimp
EXAMPLES
$ chimp init
$ chimp init -p ./src/chimp-modules

See code: src/commands/init.ts

Updating jest.config.js after chimp init

Please manually add pathsToModuleNameMapper like so:

const{ pathsToModuleNameMapper }=require("ts-jest/utils");const{ compilerOptions }=require("./tsconfig");// ...module.exports={// ...,moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths,{prefix: "<rootDir>/"})}

About

Tooling that helps you do quality, faster.

Topics

Resources

Stars

800 stars

Watchers

27 watching

Forks

Releases

Packages

Used by

Contributors

Languages