Skip to content

Commit

Permalink
deps: @npmcli/config@4.0.2
Browse files Browse the repository at this point in the history
  • Loading branch information
wraithgar committed Apr 6, 2022
1 parent 3a76dff commit 0230428
Show file tree
Hide file tree
Showing 9 changed files with 335 additions and 30 deletions.
4 changes: 2 additions & 2 deletions node_modules/@npmcli/config/lib/env-replace.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ module.exports = (f, env) => f.replace(envExpr, (orig, esc, name) => {

// consume the escape chars that are relevant.
if (esc.length % 2) {
return orig.substr((esc.length + 1) / 2)
return orig.slice((esc.length + 1) / 2)
}

return (esc.substr(esc.length / 2)) + val
return (esc.slice(esc.length / 2)) + val
})
8 changes: 4 additions & 4 deletions node_modules/@npmcli/config/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ class Config {
if (!/^npm_config_/i.test(envKey) || envVal === '') {
continue
}
const key = envKey.substr('npm_config_'.length)
const key = envKey.slice('npm_config_'.length)
.replace(/(?!^)_/g, '-') // don't replace _ at the start of the key
.toLowerCase()
conf[key] = envVal
Expand Down Expand Up @@ -396,13 +396,13 @@ class Config {
validate (where) {
if (!where) {
let valid = true
for (const [where] of this.data.entries()) {
for (const [entryWhere] of this.data.entries()) {
// no need to validate our defaults, we know they're fine
// cli was already validated when parsed the first time
if (where === 'default' || where === 'builtin' || where === 'cli') {
if (entryWhere === 'default' || entryWhere === 'builtin' || entryWhere === 'cli') {
continue
}
const ret = this.validate(where)
const ret = this.validate(entryWhere)
valid = valid && ret
}
return valid
Expand Down
2 changes: 1 addition & 1 deletion node_modules/@npmcli/config/lib/parse-field.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ const parseField = (f, key, opts, listElement = false) => {
if (isPath) {
const homePattern = platform === 'win32' ? /^~(\/|\\)/ : /^~\//
if (homePattern.test(f) && home) {
f = resolve(home, f.substr(2))
f = resolve(home, f.slice(2))
} else {
f = resolve(f)
}
Expand Down
15 changes: 15 additions & 0 deletions node_modules/@npmcli/config/node_modules/ini/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
The ISC License

Copyright (c) Isaac Z. Schlueter and Contributors

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
228 changes: 228 additions & 0 deletions node_modules/@npmcli/config/node_modules/ini/lib/ini.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
const { hasOwnProperty } = Object.prototype

/* istanbul ignore next */
const eol = typeof process !== 'undefined' &&
process.platform === 'win32' ? '\r\n' : '\n'

const encode = (obj, opt) => {
const children = []
let out = ''

if (typeof opt === 'string') {
opt = {
section: opt,
whitespace: false,
}
} else {
opt = opt || Object.create(null)
opt.whitespace = opt.whitespace === true
}

const separator = opt.whitespace ? ' = ' : '='

for (const k of Object.keys(obj)) {
const val = obj[k]
if (val && Array.isArray(val)) {
for (const item of val) {
out += safe(k + '[]') + separator + safe(item) + eol
}
} else if (val && typeof val === 'object') {
children.push(k)
} else {
out += safe(k) + separator + safe(val) + eol
}
}

if (opt.section && out.length) {
out = '[' + safe(opt.section) + ']' + eol + out
}

for (const k of children) {
const nk = dotSplit(k).join('\\.')
const section = (opt.section ? opt.section + '.' : '') + nk
const { whitespace } = opt
const child = encode(obj[k], {
section,
whitespace,
})
if (out.length && child.length) {
out += eol
}

out += child
}

return out
}

const dotSplit = str =>
str.replace(/\1/g, '\u0002LITERAL\\1LITERAL\u0002')
.replace(/\\\./g, '\u0001')
.split(/\./)
.map(part =>
part.replace(/\1/g, '\\.')
.replace(/\2LITERAL\\1LITERAL\2/g, '\u0001'))

const decode = str => {
const out = Object.create(null)
let p = out
let section = null
// section |key = value
const re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i
const lines = str.split(/[\r\n]+/g)

for (const line of lines) {
if (!line || line.match(/^\s*[;#]/)) {
continue
}
const match = line.match(re)
if (!match) {
continue
}
if (match[1] !== undefined) {
section = unsafe(match[1])
if (section === '__proto__') {
// not allowed
// keep parsing the section, but don't attach it.
p = Object.create(null)
continue
}
p = out[section] = out[section] || Object.create(null)
continue
}
const keyRaw = unsafe(match[2])
const isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]'
const key = isArray ? keyRaw.slice(0, -2) : keyRaw
if (key === '__proto__') {
continue
}
const valueRaw = match[3] ? unsafe(match[4]) : true
const value = valueRaw === 'true' ||
valueRaw === 'false' ||
valueRaw === 'null' ? JSON.parse(valueRaw)
: valueRaw

// Convert keys with '[]' suffix to an array
if (isArray) {
if (!hasOwnProperty.call(p, key)) {
p[key] = []
} else if (!Array.isArray(p[key])) {
p[key] = [p[key]]
}
}

// safeguard against resetting a previously defined
// array by accidentally forgetting the brackets
if (Array.isArray(p[key])) {
p[key].push(value)
} else {
p[key] = value
}
}

// {a:{y:1},"a.b":{x:2}} --> {a:{y:1,b:{x:2}}}
// use a filter to return the keys that have to be deleted.
const remove = []
for (const k of Object.keys(out)) {
if (!hasOwnProperty.call(out, k) ||
typeof out[k] !== 'object' ||
Array.isArray(out[k])) {
continue
}

// see if the parent section is also an object.
// if so, add it to that, and mark this one for deletion
const parts = dotSplit(k)
p = out
const l = parts.pop()
const nl = l.replace(/\\\./g, '.')
for (const part of parts) {
if (part === '__proto__') {
continue
}
if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object') {
p[part] = Object.create(null)
}
p = p[part]
}
if (p === out && nl === l) {
continue
}

p[nl] = out[k]
remove.push(k)
}
for (const del of remove) {
delete out[del]
}

return out
}

const isQuoted = val => {
return (val.startsWith('"') && val.endsWith('"')) ||
(val.startsWith("'") && val.endsWith("'"))
}

const safe = val => {
if (
typeof val !== 'string' ||
val.match(/[=\r\n]/) ||
val.match(/^\[/) ||
(val.length > 1 && isQuoted(val)) ||
val !== val.trim()
) {
return JSON.stringify(val)
}
return val.split(';').join('\\;').split('#').join('\\#')
}

const unsafe = (val, doUnesc) => {
val = (val || '').trim()
if (isQuoted(val)) {
// remove the single quotes before calling JSON.parse
if (val.charAt(0) === "'") {
val = val.slice(1, -1)
}
try {
val = JSON.parse(val)
} catch (_) {}
} else {
// walk the val to find the first not-escaped ; character
let esc = false
let unesc = ''
for (let i = 0, l = val.length; i < l; i++) {
const c = val.charAt(i)
if (esc) {
if ('\\;#'.indexOf(c) !== -1) {
unesc += c
} else {
unesc += '\\' + c
}

esc = false
} else if (';#'.indexOf(c) !== -1) {
break
} else if (c === '\\') {
esc = true
} else {
unesc += c
}
}
if (esc) {
unesc += '\\'
}

return unesc.trim()
}
return val
}

module.exports = {
parse: decode,
decode,
stringify: encode,
encode,
safe,
unsafe,
}
41 changes: 41 additions & 0 deletions node_modules/@npmcli/config/node_modules/ini/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"author": "GitHub Inc.",
"name": "ini",
"description": "An ini encoder/decoder for node",
"version": "3.0.0",
"repository": {
"type": "git",
"url": "https://github.com/npm/ini.git"
},
"main": "lib/ini.js",
"scripts": {
"eslint": "eslint",
"lint": "eslint \"**/*.js\"",
"lintfix": "npm run lint -- --fix",
"test": "tap",
"snap": "tap",
"posttest": "npm run lint",
"preversion": "npm test",
"postversion": "npm publish",
"prepublishOnly": "git push origin --follow-tags",
"postlint": "template-oss-check",
"template-oss-apply": "template-oss-apply --force"
},
"devDependencies": {
"@npmcli/eslint-config": "^3.0.1",
"@npmcli/template-oss": "3.2.2",
"tap": "^16.0.1"
},
"license": "ISC",
"files": [
"bin/",
"lib/"
],
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
"version": "3.2.2"
}
}
28 changes: 15 additions & 13 deletions node_modules/@npmcli/config/package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"name": "@npmcli/config",
"version": "4.0.1",
"version": "4.0.2",
"files": [
"bin",
"lib"
"bin/",
"lib/"
],
"main": "lib/index.js",
"description": "Configuration management for the npm cli",
"repository": {
"type": "git",
"url": "git+https://github.com/npm/config"
"url": "https://github.com/npm/config.git"
},
"author": "GitHub Inc.",
"license": "ISC",
Expand All @@ -19,23 +19,24 @@
"preversion": "npm test",
"postversion": "npm publish",
"prepublishOnly": "git push origin --follow-tags",
"lint": "eslint '**/*.js'",
"postlint": "npm-template-check",
"lint": "eslint \"**/*.js\"",
"postlint": "template-oss-check",
"lintfix": "npm run lint -- --fix",
"posttest": "npm run lint",
"template-copy": "npm-template-copy --force"
"template-oss-apply": "template-oss-apply --force"
},
"tap": {
"check-coverage": true,
"coverage-map": "map.js"
},
"devDependencies": {
"@npmcli/template-oss": "^2.8.1",
"tap": "^15.1.6"
"@npmcli/eslint-config": "^3.0.1",
"@npmcli/template-oss": "3.2.2",
"tap": "^16.0.1"
},
"dependencies": {
"@npmcli/map-workspaces": "^2.0.1",
"ini": "^2.0.0",
"@npmcli/map-workspaces": "^2.0.2",
"ini": "^3.0.0",
"mkdirp-infer-owner": "^2.0.0",
"nopt": "^5.0.0",
"proc-log": "^2.0.0",
Expand All @@ -44,9 +45,10 @@
"walk-up-path": "^1.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16"
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
},
"templateOSS": {
"version": "2.8.1"
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
"version": "3.2.2"
}
}
Loading

0 comments on commit 0230428

Please sign in to comment.