feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

@wraithgar@ruyadorno@darcyclarke
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

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

feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

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

feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

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

feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

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

feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

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

feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

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

feat(help): refactor npm help/help-search - #2859

Merged
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search
Mar 18, 2021
Merged

feat(help): refactor npm help/help-search#2859
ruyadorno merged 0 commit into
release-nextfrom
gar/help-search

Conversation

@wraithgar

@wraithgarwraithgar commented Mar 11, 2021

Copy link
Copy Markdown
Contributor

Lots of dead code removed thanks to streamlining of logic.

npm helpnpm <command> and npm help-search are all now separated
concerns, handling their own use cases. help calls help-search as a
last resort, but npm <command> no longer tries to wind its way through
to help-search just to get the basic npm usage displayed.

The did you mean output has been expanded. It now always suggests top
level commands, scripts, and bins, and suggests them in the way they
should be called.

Screen Shot 2021-03-17 at 12 32 02 PM

References

Closesnpm/statusboard#277

@wraithgar
wraithgar requested a review from a team as a code ownerMarch 11, 2021 22:59
@wraithgar
wraithgarforce-pushed the gar/help-search branch 6 times, most recently from 0c9d405 to bf6c3a8CompareMarch 12, 2021 15:30
Comment threadlib/access.js

class Access extends BaseCommand {
static get description () {
return 'Set access level on published packages'

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These all now should match the descriptions in the docs for all the commands, which means we are one step away from being able to programmatically generate everything before the longhand "Description" sections of those docs.

@wraithgar
wraithgarforce-pushed the gar/help-search branch 2 times, most recently from 2e175cf to 7f6195eCompareMarch 12, 2021 16:23
Comment threadlib/docs.js
constructor (npm) {
this.npm = npm
const BaseCommand = require('./base-command.js')
class Docs extends BaseCommand {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/docs.js
/* istanbul ignore next - see test/lib/load-all-commands.js */
get usage () {
return usageUtil('docs', 'npm docs [<pkgname> [<pkgname> ...]]')
static get usage () {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a test to test/lib/load-all-commands.js that caught this bug. Yay.

Comment threadlib/help-search.js
async helpSearch (args) {
if (!args.length)
throw this.usage
return this.npm.output(this.usage)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't pulling triple duty it can just work like everything else and return usage on no params

Comment threadlib/help-search.js
if (!formatted.trim())
npmUsage(this.npm, false)
else {
this.npm.output(`No matches in help for: ${args.join(' ')}\n`)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that this isn't the usage output for the cli itself we can act in isolation and not have to return usage here.

Comment threadlib/help.js Outdated
}
let section = this.npm.deref(args[0]) || args[0]

let pref = [1, 5, 7]

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old method would treat the number in the args as a suggestion, there is no need to search everywhere if we are explicitly asking for a given man number. This was the source of most of the streamlining here.

Comment threadlib/help.js Outdated
@darcyclarkedarcyclarke added semver:patch semver patch level for changes Release 7.x work is associated with a specific npm 7 release release: next These items should be addressed in the next release labels Mar 12, 2021
@ruyadorno
ruyadorno changed the base branch from latest to release-nextMarch 18, 2021 20:11
@ruyadorno
ruyadorno merged commit 41facf6 into release-nextMar 18, 2021
This was referenced Mar 23, 2021
@wraithgar
wraithgar deleted the gar/help-search branch November 2, 2021 20:02
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release: nextThese items should be addressed in the next releaseRelease 7.xwork is associated with a specific npm 7 releasesemver:patchsemver patch level for changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(help-search): consolidate help and help-search

3 participants

@wraithgar@ruyadorno@darcyclarke