source: frontend/node_modules/webpack/lib/dependencies/LocalModulesHelpers.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.7 KB
Line 
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5
6"use strict";
7
8const LocalModule = require("./LocalModule");
9
10/** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
11
12/**
13 * Returns resolved module.
14 * @param {string} parent parent module
15 * @param {string} mod module to resolve
16 * @returns {string} resolved module
17 */
18const lookup = (parent, mod) => {
19 if (mod.charAt(0) !== ".") return mod;
20
21 const path = parent.split("/");
22 const segments = mod.split("/");
23 path.pop();
24
25 for (let i = 0; i < segments.length; i++) {
26 const seg = segments[i];
27 if (seg === "..") {
28 path.pop();
29 } else if (seg !== ".") {
30 path.push(seg);
31 }
32 }
33
34 return path.join("/");
35};
36
37/**
38 * Returns local module.
39 * @param {JavascriptParserState} state parser state
40 * @param {string} name name
41 * @returns {LocalModule} local module
42 */
43module.exports.addLocalModule = (state, name) => {
44 if (!state.localModules) {
45 state.localModules = [];
46 }
47 const m = new LocalModule(name, state.localModules.length);
48 state.localModules.push(m);
49 return m;
50};
51
52/**
53 * Returns local module or null.
54 * @param {JavascriptParserState} state parser state
55 * @param {string} name name
56 * @param {string=} namedModule named module
57 * @returns {LocalModule | null} local module or null
58 */
59module.exports.getLocalModule = (state, name, namedModule) => {
60 if (!state.localModules) return null;
61 if (namedModule) {
62 // resolve dependency name relative to the defining named module
63 name = lookup(namedModule, name);
64 }
65 for (let i = 0; i < state.localModules.length; i++) {
66 if (state.localModules[i].name === name) {
67 return state.localModules[i];
68 }
69 }
70 return null;
71};
Note: See TracBrowser for help on using the repository browser.