Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik
, '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

Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik
, '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

Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik
, '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

Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik
, '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

Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik
, '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

Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik
, '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

Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik
, '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

Isaacs/update libnpmetc stuff - #968

Closed
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff
Closed

Isaacs/update libnpmetc stuff#968
isaacs wants to merge 0 commit into
release/v7.0.0-betafrom
isaacs/update-libnpmetc-stuff

Conversation

@isaacs

Copy link
Copy Markdown
Contributor

Refactor of mikemimik/update-libnpmhook branch from pairing earlier today. Removes a lot of figgy-pudding and blue birds.

Commands updated with a new lib:

  • hook
  • access
  • team
  • org
  • search

Other random stuff:

  • cache.js
  • deprecate.js
  • fund.js
  • logout.js
  • owner.js
  • ping.js
  • star.js
  • stars.js
  • version.js
  • view.js
  • whoami.js

Utils:

  • utils/otplease.js
  • utils/git.js
  • utils/pulse-till-done.js
  • utils/read-user-info.js

Still todo:

  • publish (libnpmpublish)
  • unpublish (also libnpmpublish)
  • pack (should leverage pacote more than it does)
  • audit (should use @npmcli/arborist)
  • shrinkwrap (should use @npmcli/arborist)
  • update (should use @npmcli/arborist)
  • outdated (should use @npmcli/arborist)
  • ci (should use @npmcli/arborist)

@isaacs
isaacs requested a review from a team as a code ownerMarch 3, 2020 08:12
@mikemimikmikemimik added this to the OSS - Sprint 5 milestone Mar 3, 2020
@mikemimikmikemimik added Enhancement new feature or improvement Release 7.x work is associated with a specific npm 7 release semver:major backwards-incompatible breaking changes labels Mar 3, 2020
@mikemimikmikemimik linked an issue Mar 3, 2020 that may be closed by this pull request
6 tasks
@mikemimikmikemimik self-assigned this Mar 3, 2020
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Note: this closes #935 as well.

@mikemimik
mikemimikforce-pushed the isaacs/update-libnpmetc-stuff branch 3 times, most recently from c6d224f to 924d85bCompareMarch 5, 2020 03:52

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Some discussion points, @isaacs let me know if you want me to handle any of this minutia.

Comment threadlib/view.js Outdated
Comment threadlib/version.js
Comment threadlib/utils/otplease.js
const readUserInfo = require('./read-user-info.js')

const isOtpError = err =>
err.code === 'EOTP' || err.code === 'E401' && /one-time pass/.test(err.body)

@mikemimikmikemimikMar 4, 2020

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Silly question, does this need brackets to evaluate correctly?

Suggested change
err.code==='EOTP'||err.code==='E401'&&/one-timepass/.test(err.body)
err.code==='EOTP'||(err.code==='E401'&&/one-timepass/.test(err.body))

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.

It does not. && has higher priority than ||. In most expressions of boolean calculus, you can think of and (or any intersection operator) like multiplication or division, and or (or any union operator) like addition or subtraction. So a || b && c || d is like a + b * c + d, so it's like a + (b * c) + d and thus a || (b && c) || d.

Comment threadlib/star.js Outdated
Comment threadlib/team.js Outdated
Comment threadlib/owner.js Outdated
Comment threadlib/config/flat-options.js Outdated
strictSSL: npm.config.get('strict-ssl'),
defaultTag: npm.config.get('tag'),
get tag () {
log.warn('FIXME', 'using tag option, should be defaultTag')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I thought we wanted this? At least until we have more stability in npm@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 problem is that it warns every time we do ...npm.flatOptions, which we do a lot of times. And we can't make the option non-enumerable, or else it won't be carried over in those cases. We'd have to do a custom clone function that does Object.getOwnPropertyDescriptors and turns the setter into a setter on the resulting object, and then use that everywhere, but then our deps also do ...opts all over the place, so actually making that change would be almost as bad as figgy-pudding.

It was a reasonable idea, but doesn't actually work, turns out.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Totally makes sense, I hadn't realised that. Completely agree we should just pull this out for now. Might be worth just commenting it, so we remember where our warnings were?

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.

Sure, if you wanna, go for it. I was just gonna leave it as a pre-v7 todo item to remove the getters from here and grep for any usage of those field names.

Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/config/flat-options.js Outdated
Comment threadlib/ping.js
@isaacs

Copy link
Copy Markdown
ContributorAuthor

Fixed the nits, replaced the read-json util with parse-json-even-better-errors, found 2 more bluebird .nodeify() calls that I'd overlooked.

@mikemimikmikemimik left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Comment threadlib/team.js
opts = TeamConfig(opts).concat({description: null})
// XXX: "description" option to libnpmteam is used as a description of the
// team, but in npm's options, this is a boolean meaning "show the
// description in npm search output". Hence its being set to null here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not important, but eventually we can remove this.

isaacs added a commit that referenced this pull request Mar 6, 2020
isaacs added a commit that referenced this pull request Mar 7, 2020
@isaacsisaacs closed this Mar 9, 2020
@isaacs
isaacsforce-pushed the isaacs/update-libnpmetc-stuff branch from 53b67a1 to bf3370bCompareMarch 9, 2020 16:41
isaacs added a commit that referenced this pull request May 8, 2020
@isaacs
isaacs deleted the isaacs/update-libnpmetc-stuff branch October 2, 2020 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancementnew feature or improvementRelease 7.xwork is associated with a specific npm 7 releasesemver:majorbackwards-incompatible breaking changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update libnpm* packages in the cli

2 participants

@isaacs@mikemimik