{"id":16666862,"url":"https://github.com/smelukov/revelation","last_synced_at":"2025-04-09T19:17:03.229Z","repository":{"id":147013619,"uuid":"617589992","full_name":"smelukov/revelation","owner":"smelukov","description":"Fast node.js modules resolver","archived":false,"fork":false,"pushed_at":"2023-04-20T12:02:17.000Z","size":545,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T19:16:56.083Z","etag":null,"topics":["jest","nodejs","resolver","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smelukov.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-22T17:46:27.000Z","updated_at":"2023-08-31T22:15:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"d402f5ff-253c-4aa2-8191-3f68a43474f4","html_url":"https://github.com/smelukov/revelation","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smelukov%2Frevelation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smelukov%2Frevelation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smelukov%2Frevelation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smelukov%2Frevelation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smelukov","download_url":"https://codeload.github.com/smelukov/revelation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248094988,"owners_count":21046770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jest","nodejs","resolver","webpack"],"created_at":"2024-10-12T11:12:14.971Z","updated_at":"2025-04-09T19:17:03.218Z","avatar_url":"https://github.com/smelukov.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# revelation\n\n[![npm version](https://badge.fury.io/js/revelation-resolver.svg)](https://badge.fury.io/js/revelation-resolver)\n\nFast node.js modules resolver.\n\n## Why \n\n- supports webpack-like [mainFiles](https://webpack.js.org/configuration/resolve/#resolvemainfiles) option\n- provides [packageJSONModifier](#packagejsonmodifier-packagejsonmodifier) option to modify or collect any `package.json`\n- works fast\n\n## Install\n\n```shell\nnpm i revelation-resolver --save\n# or\nyarn add revelation-resolver\n# or\npnpm add revelation-resolver --save-prod\n```\n\n## Using\n\n```typescript\nimport Revelation from 'revelation-resolver';\n\nconst resolver = new Revelation();\n\nconsole.log(resolver.resolve('/base/dir', './foo'));\n```\n\n## API\n\n### constructor(options: Options)\n\nPossible options:\n\n```typescript\ntype Options = {\n    fileSystem?: typeof fs; // default: require('node:fs')\n    mainFiles?: string[]; // default: ['index']\n    modules?: string[]; // default: ['node_modules']\n    mainFields?: string[]; // default: ['main', 'browser']\n    extensions?: string[]; // default: ['.js']\n    packageJSONModifier?: PackageJSONModifier;\n}\n\ntype PackageJSONModifier = (\n    absPath: string,\n    packageJSON: Record\u003cstring, unknown\u003e,\n) =\u003e Record\u003cstring, unknown\u003e | null | undefined;\n```\n\n#### `fileSystem: typeof fs`\n\nTarget file system (e.g. [memfs](https://www.npmjs.com/package/memfs))\n\n`require('node:fs')` by default\n\n#### `mainFiles: string[]`\n\nA list of main files in directories\n\n`['index']` by default\n\n#### modules?: string[]\n\nA list of directories to resolve modules from, might be absolute path or folder name\n\n`['node_modules']` by default\n\n#### mainFields?: string[]\n\nA list of main fields in description files\n\n`['main', 'browser']` by default\n\n#### extensions?: string[]\n\nA list of extensions which should be tried for files\n\n`['.js']` by default\n\n#### packageJSONModifier?: PackageJSONModifier\n\nA function that will be executing for every `package.json` (once for every `package.json`) for modifying purposes\n\n### resolve(basedir: string, request: string): string | null\n\nResolves `request` from `basedir`.\n\n`request` may be absolute, relative or package-based path.\n\n## Using with jest\n\n__rev-resolver.js:__\n\n```js\nconst Revelation = require('revelation-resolver').default;\nconst rev = new Revelation(options);\nmodule.exports = (request, options) =\u003e rev.resolve(options.basedir, request);\n```\n\n__jest.config.js:__\n\n```js\nmodule.exports = {\n  resolver: './path/to/rev-resolver'\n};\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmelukov%2Frevelation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmelukov%2Frevelation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmelukov%2Frevelation/lists"}