pax_global_header00006660000000000000000000000064131017141010014477gustar00rootroot0000000000000052 comment=7f78f42d0761133263c3947a3b24dde324a467ce which-module-2.0.0/000077500000000000000000000000001310171410100140635ustar00rootroot00000000000000which-module-2.0.0/.gitignore000066400000000000000000000000331310171410100160470ustar00rootroot00000000000000node_modules/ .nyc_output/ which-module-2.0.0/.travis.yml000066400000000000000000000001421310171410100161710ustar00rootroot00000000000000sudo: false language: node_js node_js: - '4' - '6' - 'node' after_success: npm run coverage which-module-2.0.0/CHANGELOG.md000066400000000000000000000013561310171410100157010ustar00rootroot00000000000000# Change Log All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. # [2.0.0](https://github.com/nexdrew/which-module/compare/v1.0.0...v2.0.0) (2017-05-01) ### Features * remove Node < 4 from official testing/support ([#22](https://github.com/nexdrew/which-module/issues/22)) ([ee7aff4](https://github.com/nexdrew/which-module/commit/ee7aff4)) ### BREAKING CHANGES * Node 0.10 or 0.12 no longer supported, please update to Node 4+ or use which-module@1.0.0 # 1.0.0 (2016-06-06) ### Features * initial code ([08074cd](https://github.com/nexdrew/which-module/commit/08074cd)) which-module-2.0.0/LICENSE000066400000000000000000000013331310171410100150700ustar00rootroot00000000000000Copyright (c) 2016, Contributors Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. which-module-2.0.0/README.md000066400000000000000000000036151310171410100153470ustar00rootroot00000000000000# which-module > Find the module object for something that was require()d [![Build Status](https://travis-ci.org/nexdrew/which-module.svg?branch=master)](https://travis-ci.org/nexdrew/which-module) [![Coverage Status](https://coveralls.io/repos/github/nexdrew/which-module/badge.svg?branch=master)](https://coveralls.io/github/nexdrew/which-module?branch=master) [![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version) Find the `module` object in `require.cache` for something that was `require()`d or `import`ed - essentially a reverse `require()` lookup. Useful for libs that want to e.g. lookup a filename for a module or submodule that it did not `require()` itself. ## Install and Usage ``` npm install --save which-module ``` ```js const whichModule = require('which-module') console.log(whichModule(require('something'))) // Module { // id: '/path/to/project/node_modules/something/index.js', // exports: [Function], // parent: ..., // filename: '/path/to/project/node_modules/something/index.js', // loaded: true, // children: [], // paths: [ '/path/to/project/node_modules/something/node_modules', // '/path/to/project/node_modules', // '/path/to/node_modules', // '/path/node_modules', // '/node_modules' ] } ``` ## API ### `whichModule(exported)` Return the [`module` object](https://nodejs.org/api/modules.html#modules_the_module_object), if any, that represents the given argument in the `require.cache`. `exported` can be anything that was previously `require()`d or `import`ed as a module, submodule, or dependency - which means `exported` is identical to the `module.exports` returned by this method. If `exported` did not come from the `exports` of a `module` in `require.cache`, then this method returns `null`. ## License ISC © Contributors which-module-2.0.0/index.js000066400000000000000000000003701310171410100155300ustar00rootroot00000000000000'use strict' module.exports = function whichModule (exported) { for (var i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) { mod = require.cache[files[i]] if (mod.exports === exported) return mod } return null } which-module-2.0.0/package.json000066400000000000000000000016271310171410100163570ustar00rootroot00000000000000{ "name": "which-module", "version": "2.0.0", "description": "Find the module object for something that was require()d", "main": "index.js", "scripts": { "pretest": "standard", "test": "nyc ava", "coverage": "nyc report --reporter=text-lcov | coveralls", "release": "standard-version" }, "files": [ "index.js" ], "repository": { "type": "git", "url": "git+https://github.com/nexdrew/which-module.git" }, "keywords": [ "which", "module", "exports", "filename", "require", "reverse", "lookup" ], "author": "nexdrew", "license": "ISC", "bugs": { "url": "https://github.com/nexdrew/which-module/issues" }, "homepage": "https://github.com/nexdrew/which-module#readme", "devDependencies": { "ava": "^0.19.1", "coveralls": "^2.13.1", "nyc": "^10.3.0", "standard": "^10.0.2", "standard-version": "^4.0.0" } } which-module-2.0.0/test.js000066400000000000000000000026101310171410100153770ustar00rootroot00000000000000import test from 'ava' import whichModule from './' import path from 'path' test('finds required local module', (t) => { const indexModule = whichModule(whichModule) const expectedFilename = path.join(__dirname, 'index.js') t.is(indexModule.id, expectedFilename) t.is(indexModule.filename, expectedFilename) t.is(indexModule.exports, whichModule) t.is(indexModule.parent, module) t.is(indexModule.loaded, true) t.is(indexModule.paths[0], path.join(__dirname, 'node_modules')) }) test('finds required dependency module', (t) => { const avaModule = whichModule(test) const expectedFilename = path.join(__dirname, 'node_modules', 'ava', 'index.js') t.is(avaModule.id, expectedFilename) t.is(avaModule.filename, expectedFilename) t.is(avaModule.exports, test) t.is(avaModule.parent, module) t.is(avaModule.loaded, true) t.is(avaModule.paths[0], path.join(__dirname, 'node_modules', 'ava', 'node_modules')) t.truthy(avaModule.children.length) }) test('returns falsy for system module', (t) => { t.falsy(whichModule(path)) t.falsy(whichModule(require('fs'))) }) test('returns falsy for non-required', (t) => { // note that a module may export a boolean (e.g. supports-color) // or undefined (e.g. lodash/_Reflect.js) t.falsy(whichModule(t)) t.falsy(whichModule({})) t.falsy(whichModule(function () {})) t.falsy(whichModule('foobar')) t.falsy(whichModule(String)) })