@lwc/module-resolver
Advanced tools
+32
-15
@@ -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): { |
+3
-3
| { | ||
| "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']) | ||
| ); | ||
| }); | ||
| }); |
+56
-30
@@ -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); |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
26398
18.81%494
21.98%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed