Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

@lwc/module-resolver

Package Overview
Dependencies
Maintainers
12
Versions
876
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@lwc/module-resolver - npm Package Compare versions

Comparing version
0.37.3-alpha9
to
0.38.0-alpha1
+32
-15
dist/commonjs/index.js

@@ -13,3 +13,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const glob_1 = __importDefault(require("glob"));
const fast_glob_1 = __importDefault(require("fast-glob"));
const path_1 = __importDefault(require("path"));

@@ -19,3 +19,3 @@ const fs_1 = __importDefault(require("fs"));

const DEFAULT_IGNORE = ['**/node_modules/**', '**/__tests__/**'];
const PACKAGE_PATTERN = `**/*/package.json`;
const PACKAGE_PATTERN = ['*/*/package.json', '*/package.json', 'package.json'];
const MODULE_ENTRY_PATTERN = `**/*.[jt]s`;

@@ -31,17 +31,24 @@ const LWC_CONFIG_FILE = '.lwcrc';

try {
const jsonPkg = require(packageJsonPath);
config = JSON.parse(fs_1.default.readFileSync(lwcConfigPath, 'utf8'));
}
catch (ignore) {
// ignore
}
if (!config) {
try {
config = fs_1.default.readFileSync(lwcConfigPath, 'utf8');
config = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf8')).lwc;
}
catch (e) {
config = jsonPkg.lwc;
catch (ignore) {
// ignore
}
}
catch (ignore) {
// ignore
}
return config;
}
function resolveModulesInDir(absPath) {
return glob_1.default.sync(MODULE_ENTRY_PATTERN, { cwd: absPath }).reduce((mappings, file) => {
return fast_glob_1.default
.sync(MODULE_ENTRY_PATTERN, {
cwd: absPath,
transform: entry => typeof entry === 'string' ? { path: entry } : { path: entry.path },
})
.reduce((mappings, { path: file }) => {
const ext = path_1.default.extname(file);

@@ -70,5 +77,11 @@ const fileName = path_1.default.basename(file, ext);

}
function expandModuleDirectories({ moduleDirectories, rootDir, } = {}) {
function expandModuleDirectories({ moduleDirectories, rootDir, modulePaths, } = {}) {
if (modulePaths) {
return modulePaths;
}
if (!moduleDirectories && !rootDir) {
return module.paths;
// paths() is spec'd to return null only for built-in node
// modules like 'http'. To be safe, return empty array in
// instead of null in this case.
return require.resolve.paths('.') || [];
}

@@ -107,5 +120,9 @@ return node_modules_paths_1.default(rootDir || __dirname, moduleDirectories);

return modulePaths.reduce((m, nodeModulesDir) => {
return glob_1.default
.sync(PACKAGE_PATTERN, { cwd: nodeModulesDir, ignore: DEFAULT_IGNORE })
.reduce((mappings, file) => {
return fast_glob_1.default
.sync(PACKAGE_PATTERN, {
cwd: nodeModulesDir,
ignore: options.ignorePatterns || DEFAULT_IGNORE,
transform: entry => typeof entry === 'string' ? { path: entry } : { path: entry.path },
})
.reduce((mappings, { path: file }) => {
const moduleRoot = path_1.default.dirname(path_1.default.join(nodeModulesDir, file));

@@ -112,0 +129,0 @@ const lwcConfig = loadLwcConfig(moduleRoot);

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}

@@ -10,2 +10,4 @@ export interface RegistryEntry {

rootDir: string;
modulePaths: string[];
ignorePatterns?: string[];
}

@@ -12,0 +14,0 @@ export declare function resolveModulesInDir(absPath: string): {

{
"name": "@lwc/module-resolver",
"description": "Resolves paths for LWC components",
"version": "0.37.3-alpha9",
"version": "0.38.0-alpha1",
"main": "./dist/commonjs/index.js",

@@ -11,3 +11,3 @@ "scripts": {

"dependencies": {
"glob": "^7.1.2"
"fast-glob": "~2.2.6"
},

@@ -17,3 +17,3 @@ "publishConfig": {

},
"gitHead": "47b5590bcc9f1b43fc4e5524a30c1fae042b20d7"
"gitHead": "1477d56275cab6ba33ae45bc18a726434fa83410"
}

@@ -20,5 +20,7 @@ /*

expect(moduleNames).toHaveLength(2);
expect(moduleNames).toContain('ns/simpleCmp', 'ns/simple-module');
expect(moduleNames).toEqual(
expect.arrayContaining(['ns/simpleCmp', 'ns/simple-module'])
);
});
});
});

@@ -20,9 +20,55 @@ /*

expect(lwcModuleNames).toHaveLength(4);
expect(lwcModuleNames).toContain(
'alias-fake-package',
'fake-module1',
'fake-module2',
'other-resource'
expect(lwcModuleNames).toEqual(
expect.arrayContaining([
'alias-fake-package',
'fake/module1',
'fake/module2',
'other-resource',
])
);
});
it('resolve from npm: modulePaths options', () => {
const resolverOptions = {
modulePaths: [path.join(__dirname, 'fixtures', 'fake_node_modules')],
};
const lwcModules = lwcResolver.resolveLwcNpmModules(resolverOptions);
const lwcModuleNames = Object.keys(lwcModules);
expect(lwcModuleNames).toHaveLength(4);
expect(lwcModuleNames).toEqual(
expect.arrayContaining([
'alias-fake-package',
'fake/module1',
'fake/module2',
'other-resource',
])
);
});
it('resolve from npm: ignorePattern', () => {
const resolverOptions = {
modulePaths: [path.join(__dirname, 'fixtures', 'fake_node_modules')],
ignorePatterns: ['**/fake-module-package/**'],
};
const lwcModules = lwcResolver.resolveLwcNpmModules(resolverOptions);
const lwcModuleNames = Object.keys(lwcModules);
expect(lwcModuleNames).toHaveLength(3);
expect(lwcModuleNames).toEqual(
expect.arrayContaining(['fake/module1', 'fake/module2', 'other-resource'])
);
});
it('resolve from npm: modulePaths has direct package.json folder reference', () => {
const resolverOptions = {
modulePaths: [
path.join(__dirname, 'fixtures', 'fake_node_modules', 'fake-multi-component'),
],
};
const lwcModules = lwcResolver.resolveLwcNpmModules(resolverOptions);
const lwcModuleNames = Object.keys(lwcModules);
expect(lwcModuleNames).toHaveLength(3);
expect(lwcModuleNames).toEqual(
expect.arrayContaining(['fake/module1', 'fake/module2', 'other-resource'])
);
});
});

@@ -9,3 +9,3 @@ /*

import glob from 'glob';
import glob from 'fast-glob';
import path from 'path';

@@ -16,3 +16,3 @@ import fs from 'fs';

const DEFAULT_IGNORE = ['**/node_modules/**', '**/__tests__/**'];
const PACKAGE_PATTERN = `**/*/package.json`;
const PACKAGE_PATTERN = ['*/*/package.json', '*/package.json', 'package.json'];
const MODULE_ENTRY_PATTERN = `**/*.[jt]s`;

@@ -31,4 +31,10 @@ const LWC_CONFIG_FILE = '.lwcrc';

rootDir: string;
modulePaths: string[];
ignorePatterns?: string[];
}
interface FlatEntry {
path: string;
}
function createRegistryEntry(entry, moduleSpecifier, moduleName, moduleNamespace): RegistryEntry {

@@ -43,11 +49,13 @@ return { entry, moduleSpecifier, moduleName, moduleNamespace };

try {
const jsonPkg = require(packageJsonPath);
try {
config = fs.readFileSync(lwcConfigPath, 'utf8');
} catch (e) {
config = jsonPkg.lwc;
}
config = JSON.parse(fs.readFileSync(lwcConfigPath, 'utf8'));
} catch (ignore) {
// ignore
}
if (!config) {
try {
config = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')).lwc;
} catch (ignore) {
// ignore
}
}
return config;

@@ -57,23 +65,29 @@ }

export function resolveModulesInDir(absPath: string): { [name: string]: RegistryEntry } {
return glob.sync(MODULE_ENTRY_PATTERN, { cwd: absPath }).reduce((mappings, file) => {
const ext = path.extname(file);
const fileName = path.basename(file, ext);
const rootDir = path.dirname(file);
const rootParts = rootDir.split('/'); // the glob library normalizes paths to forward slashes only - https://github.com/isaacs/node-glob#windows
const entry = path.join(absPath, file);
return glob
.sync<FlatEntry>(MODULE_ENTRY_PATTERN, {
cwd: absPath,
transform: entry =>
typeof entry === 'string' ? { path: entry } : { path: entry.path },
})
.reduce((mappings, { path: file }) => {
const ext = path.extname(file);
const fileName = path.basename(file, ext);
const rootDir = path.dirname(file);
const rootParts = rootDir.split('/'); // the glob library normalizes paths to forward slashes only - https://github.com/isaacs/node-glob#windows
const entry = path.join(absPath, file);
const dirModuleName = rootParts.pop();
const dirModuleNamespace = rootParts.pop();
if (dirModuleNamespace && dirModuleName === fileName) {
const registryNode = createRegistryEntry(
entry,
`${dirModuleNamespace}/${fileName}`,
fileName,
dirModuleNamespace.toLowerCase()
);
mappings[registryNode.moduleSpecifier] = registryNode;
}
const dirModuleName = rootParts.pop();
const dirModuleNamespace = rootParts.pop();
if (dirModuleNamespace && dirModuleName === fileName) {
const registryNode = createRegistryEntry(
entry,
`${dirModuleNamespace}/${fileName}`,
fileName,
dirModuleNamespace.toLowerCase()
);
mappings[registryNode.moduleSpecifier] = registryNode;
}
return mappings;
}, {});
return mappings;
}, {});
}

@@ -93,5 +107,12 @@

rootDir,
modulePaths,
}: Partial<ModuleResolverConfig> = {}) {
if (modulePaths) {
return modulePaths;
}
if (!moduleDirectories && !rootDir) {
return module.paths;
// paths() is spec'd to return null only for built-in node
// modules like 'http'. To be safe, return empty array in
// instead of null in this case.
return require.resolve.paths('.') || [];
}

@@ -132,4 +153,9 @@

return glob
.sync(PACKAGE_PATTERN, { cwd: nodeModulesDir, ignore: DEFAULT_IGNORE })
.reduce((mappings, file) => {
.sync<FlatEntry>(PACKAGE_PATTERN, {
cwd: nodeModulesDir,
ignore: options.ignorePatterns || DEFAULT_IGNORE,
transform: entry =>
typeof entry === 'string' ? { path: entry } : { path: entry.path },
})
.reduce((mappings, { path: file }) => {
const moduleRoot = path.dirname(path.join(nodeModulesDir, file));

@@ -136,0 +162,0 @@ const lwcConfig = loadLwcConfig(moduleRoot);