Skip to content

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

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

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

@gosplit@isaacs@darcyclarke@austinhc-ibm
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Check save-prefix satisfies requested install version range by gosplit · Pull Request #193 · npm/cli · GitHub
Skip to content

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

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

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

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

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

@gosplit@isaacs@darcyclarke@austinhc-ibm
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Check save-prefix satisfies requested install version range by gosplit · Pull Request #193 · npm/cli · GitHub
Skip to content

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

@gosplit@isaacs@darcyclarke@austinhc-ibm
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Check save-prefix satisfies requested install version range by gosplit · Pull Request #193 · npm/cli · GitHub
Skip to content

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

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

Check save-prefix satisfies requested install version range - #193

Closed
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested
Closed

Check save-prefix satisfies requested install version range#193
gosplit wants to merge 1 commit into
npm:latestfrom
gosplit:save-prefix-according-range-requested

Conversation

@gosplit

@gosplitgosplit commented Apr 26, 2019

Copy link
Copy Markdown

The bug report is also opened in npm community.

In short, the recent Angular Compiler requires older typescript packages and asks users to run npm install typescript@">=3.1.1 <3.3"

However, after running the install command, package.json will be update to typescript@^3.2.4, which will still pull incompatible version, eg.'typescript@3.3.0' in other build machine. So I add some checks in computeVersionSpec to ensure adding the save-prefix ^ or ~ only when it satisfies requested version range.

@gosplit
gosplit requested a review from a team as a code ownerApril 26, 2019 09:01
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 729c369 to 442a88bCompareMay 13, 2019 06:11
@gosplit
gosplitforce-pushed the save-prefix-according-range-requested branch from 442a88b to 3042e1aCompareMay 13, 2019 08:05
@isaacsisaacs added semver:major backwards-incompatible breaking changes needs-discussion labels Jun 26, 2019
@isaacs

Copy link
Copy Markdown
Contributor

I think there's probably a better way to do this, but I get that this is a problem. If the user provides a complex range, and save-prefix + resolved version is not a subset of that range, then it's a problem. In that case, I'd prefer to save the range that the user provided, but of course that can run into issues if you do something like npm i foo@'>=1.0.0 or something, because you'll pick up a semver major without realizing it. Maybe that's fine, if that's what they want? This needs some more discussion, though.

@gosplit

Copy link
Copy Markdown
Author

I agree with @isaacs. It's better if we can just save the user-provided range in the package.json file.
However, as labeled, this new implementation will break back-compatibility.
To compromise with the back-compatibility, maybe we can just try out [^,~,''] to find the first suitable save-prefix to save?

@isaacs

Copy link
Copy Markdown
Contributor

npm/arborist#127

@isaacsisaacs closed this Sep 11, 2020
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 28, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
isaacs added a commit to npm/arborist that referenced this pull request Sep 29, 2020
If a user installs `foo@1.x <1.2.3`, and we resolve to `1.2.2`, then we
should not save it as `^1.2.2`, since that would allow versions outside
of the requested range.
Explicit versions and tags are still saved using the savePrefix, since
those are not ranges, and users can set `--save-exact` if they wish it
to be saved exactly.
Fix: #127Fix: npm/cli#193
Fix: https://npm.community/t/7005
PR-URL: #145
Credit: @isaacsClose: #145
Reviewed-by: @isaacs
Jah-yee pushed a commit to Jah-yee/cli that referenced this pull request Apr 16, 2026
)
load_from_disk used four nested if-let-Ok blocks that silently
returned an empty HashMap on any failure. When the encryption key
rotated or the cache file was corrupted, tokens silently stopped
loading and users were forced to re-authenticate with no explanation.
Replace with explicit match arms that log specific warnings to
stderr for each failure mode:
- Decryption failure (key changed, corrupted data)
- Invalid UTF-8 in decrypted data
- JSON deserialization failure
File-not-found is still silent since that's normal on first run.
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 7, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Jul 17, 2026
github-actionsBot added a commit to Kevinlee7250/cli that referenced this pull request Aug 17, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Discussionis pending a discussionRelease 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.

4 participants

@gosplit@isaacs@darcyclarke@austinhc-ibm