A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/npm/cli/commit/04f53ce13201b460123067d7153f1681342548e1 below:

safely fallback on unresolved $ dependency references … · npm/cli@04f53ce · GitHub

File tree Expand file treeCollapse file tree 2 files changed

+75

-12

lines changed

Filter options

Expand file treeCollapse file tree 2 files changed

+75

-12

lines changed Original file line number Diff line number Diff line change

@@ -206,29 +206,43 @@ class Edge {

206 206

if (this.overrides?.value && this.overrides.value !== '*' && this.overrides.name === this.#name) {

207 207

if (this.overrides.value.startsWith('$')) {

208 208

const ref = this.overrides.value.slice(1)

209 -

const pkg = this.#from?.sourceReference

209 +

let pkg = this.#from?.sourceReference

210 210

? this.#from?.sourceReference.root.package

211 211

: this.#from?.root?.package

212 -

if (pkg.devDependencies?.[ref]) {

213 -

return pkg.devDependencies[ref]

214 -

}

215 -

if (pkg.optionalDependencies?.[ref]) {

216 -

return pkg.optionalDependencies[ref]

217 -

}

218 -

if (pkg.dependencies?.[ref]) {

219 -

return pkg.dependencies[ref]

220 -

}

221 -

if (pkg.peerDependencies?.[ref]) {

222 -

return pkg.peerDependencies[ref]

212 + 213 +

let specValue = this.#calculateReferentialOverrideSpec(ref, pkg)

214 + 215 +

// If the package isn't found in the root package, fall back to the local package.

216 +

if (!specValue) {

217 +

pkg = this.#from?.package

218 +

specValue = this.#calculateReferentialOverrideSpec(ref, pkg)

223 219

}

224 220 221 +

if (specValue) {

222 +

return specValue

223 +

}

225 224

throw new Error(`Unable to resolve reference ${this.overrides.value}`)

226 225

}

227 226

return this.overrides.value

228 227

}

229 228

return this.#spec

230 229

}

231 230 231 +

#calculateReferentialOverrideSpec (ref, pkg) {

232 +

if (pkg.devDependencies?.[ref]) {

233 +

return pkg.devDependencies[ref]

234 +

}

235 +

if (pkg.optionalDependencies?.[ref]) {

236 +

return pkg.optionalDependencies[ref]

237 +

}

238 +

if (pkg.dependencies?.[ref]) {

239 +

return pkg.dependencies[ref]

240 +

}

241 +

if (pkg.peerDependencies?.[ref]) {

242 +

return pkg.peerDependencies[ref]

243 +

}

244 +

}

245 + 232 246

get accept () {

233 247

return this.#accept

234 248

}

Original file line number Diff line number Diff line change

@@ -1195,3 +1195,52 @@ t.test('overrideset comparison logic', (t) => {

1195 1195

t.ok(!overrides7.isEqual(overrides1), 'overridesets are different')

1196 1196

t.end()

1197 1197

})

1198 + 1199 +

t.test('override fallback to local when root missing dependency with from.overrides set', t => {

1200 +

const localFrom = {

1201 +

package: {

1202 +

devDependencies: {

1203 +

foo: '^1.2.3',

1204 +

},

1205 +

},

1206 +

root: {

1207 +

package: {

1208 +

// no 'foo' defined here

1209 +

},

1210 +

},

1211 +

edgesOut: new Map(),

1212 +

edgesIn: new Set(),

1213 +

// dummy overrides object that returns an override with isEqual defined

1214 +

overrides: {

1215 +

getEdgeRule (edge) {

1216 +

return {

1217 +

value: edge.overrides.value,

1218 +

name: edge.overrides.name,

1219 +

isEqual (other) {

1220 +

return other && this.value === other.value && this.name === other.name

1221 +

},

1222 +

}

1223 +

},

1224 +

},

1225 +

addEdgeOut (edge) {

1226 +

this.edgesOut.set(edge.name, edge)

1227 +

},

1228 +

resolve () {

1229 +

return null

1230 +

},

1231 +

}

1232 + 1233 +

const edge = new Edge({

1234 +

from: localFrom,

1235 +

type: 'prod',

1236 +

name: 'foo',

1237 +

spec: '1.x',

1238 +

overrides: {

1239 +

value: '$foo',

1240 +

name: 'foo',

1241 +

},

1242 +

})

1243 + 1244 +

t.equal(edge.spec, '^1.2.3', 'should fallback to local package version from devDependencies')

1245 +

t.end()

1246 +

})

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4