MCPcopy Index your code
hub / github.com/nodejs/node / resolvePackageTargetString

Function resolvePackageTargetString

lib/internal/modules/esm/resolve.js:377–456  ·  view source on GitHub ↗

* Resolves the package target string to a URL object. * @param {string} target - The target string to resolve. * @param {string} subpath - The subpath to append to the resolved URL. * @param {RegExpMatchArray} match - The matched string array from the import statement. * @param {string} packageJ

(
  target,
  subpath,
  match,
  packageJSONUrl,
  base,
  pattern,
  internal,
  isPathMap,
  conditions,
)

Source from the content-addressed store, hash-verified

375 * @throws {ERR_INVALID_SUBPATH} - If the subpath is invalid.
376 */
377function resolvePackageTargetString(
378 target,
379 subpath,
380 match,
381 packageJSONUrl,
382 base,
383 pattern,
384 internal,
385 isPathMap,
386 conditions,
387) {
388
389 if (subpath !== '' && !pattern && target[target.length - 1] !== '/') {
390 throw invalidPackageTarget(match, target, packageJSONUrl, internal, base);
391 }
392
393 if (!StringPrototypeStartsWith(target, './')) {
394 if (internal &&
395 target[0] !== '/' &&
396 !StringPrototypeStartsWith(target, '../')) {
397 // No need to convert target to string, since it's already presumed to be
398 if (!URLCanParse(target)) {
399 const exportTarget = pattern ?
400 RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) :
401 target + subpath;
402 return packageResolve(
403 exportTarget, packageJSONUrl, conditions);
404 }
405 }
406 throw invalidPackageTarget(match, target, packageJSONUrl, internal, base);
407 }
408
409 if (RegExpPrototypeExec(invalidSegmentRegEx, StringPrototypeSlice(target, 2)) !== null) {
410 if (RegExpPrototypeExec(deprecatedInvalidSegmentRegEx, StringPrototypeSlice(target, 2)) === null) {
411 if (!isPathMap) {
412 const request = pattern ?
413 StringPrototypeReplace(match, '*', () => subpath) :
414 match + subpath;
415 const resolvedTarget = pattern ?
416 RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) :
417 target;
418 emitInvalidSegmentDeprecation(resolvedTarget, request, match, packageJSONUrl, internal, base, true);
419 }
420 } else {
421 throw invalidPackageTarget(match, target, packageJSONUrl, internal, base);
422 }
423 }
424
425 const resolved = new URL(target, packageJSONUrl);
426 const resolvedPath = resolved.pathname;
427 const packagePath = new URL('.', packageJSONUrl).pathname;
428
429 if (!StringPrototypeStartsWith(resolvedPath, packagePath)) {
430 throw invalidPackageTarget(match, target, packageJSONUrl, internal, base);
431 }
432
433 if (subpath === '') { return resolved; }
434

Callers 1

resolvePackageTargetFunction · 0.85

Calls 4

invalidPackageTargetFunction · 0.85
packageResolveFunction · 0.85
throwInvalidSubpathFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…