diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/pirates | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/pirates')
| -rw-r--r-- | node_modules/pirates/LICENSE | 21 | ||||
| -rw-r--r-- | node_modules/pirates/README.md | 69 | ||||
| -rw-r--r-- | node_modules/pirates/index.d.ts | 82 | ||||
| -rw-r--r-- | node_modules/pirates/lib/index.js | 159 | ||||
| -rw-r--r-- | node_modules/pirates/package.json | 74 | 
5 files changed, 405 insertions, 0 deletions
diff --git a/node_modules/pirates/LICENSE b/node_modules/pirates/LICENSE new file mode 100644 index 0000000..acc7a0e --- /dev/null +++ b/node_modules/pirates/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016-2018 Ari Porad + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/pirates/README.md b/node_modules/pirates/README.md new file mode 100644 index 0000000..f61065e --- /dev/null +++ b/node_modules/pirates/README.md @@ -0,0 +1,69 @@ +# Pirates [![Coverage][codecov-badge]][codecov-link] + +### Properly hijack require + +[codecov-badge]: https://img.shields.io/codecov/c/github/danez/pirates/master.svg?style=flat "codecov" +[codecov-link]: https://codecov.io/gh/danez/pirates "codecov" + +## Why? + +Two reasons: +1. Babel and istanbul were breaking each other. +2. Everyone seemed to re-invent the wheel on this, and everyone wanted a solution that was DRY, simple, easy to use, +and made everything Just Workâ˘, while allowing multiple require hooks, in a fashion similar to calling `super`. + +For some context, see [the Babel issue thread][] which started this all, then [the nyc issue thread][], where +discussion was moved (as we began to discuss just using the code nyc had developed), and finally to [#1][issue-1] +where discussion was finally moved. + +[the Babel issue thread]: https://github.com/babel/babel/pull/3062 "Babel Issue Thread" +[the nyc issue thread]: https://github.com/bcoe/nyc/issues/70 "NYC Issue Thread" +[issue-1]: https://github.com/danez/pirates/issues/1 "Issue #1" + +## Installation + +    npm install --save pirates + +## Usage + +Using pirates is really easy: +```javascript +// my-module/register.js +const addHook = require('pirates').addHook; +// Or if you use ES modules +// import { addHook } from 'pirates'; + +function matcher(filename) { +  // Here, you can inspect the filename to determine if it should be hooked or +  // not. Just return a truthy/falsey. Files in node_modules are automatically ignored, +  // unless otherwise specified in options (see below). + +  // TODO: Implement your logic here +  return true; +} + +const revert = addHook( +  (code, filename) => code.replace('@@foo', 'console.log(\'foo\');'), +  { exts: ['.js'], matcher } +); + +// And later, if you want to un-hook require, you can just do: +revert(); +``` + +## API + +### pirates.addHook(hook, [opts={ [matcher: true], [exts: ['.js']], [ignoreNodeModules: true] }]); +Add a require hook. `hook` must be a function that takes `(code, filename)`, and returns the modified code. `opts` is +an optional options object. Available options are: `matcher`, which is a function that accepts a filename, and +returns a truthy value if the file should be hooked (defaults to a function that always returns true), falsey if +otherwise; `exts`, which is an array of extensions to hook, they should begin with `.` (defaults to `['.js']`); +`ignoreNodeModules`, if true, any file in a `node_modules` folder wont be hooked (the matcher also wont be called), +if false, then the matcher will be called for any files in `node_modules` (defaults to true). + + +## Projects that use Pirates + +See the [wiki page](https://github.com/danez/pirates/wiki/Projects-using-Pirates). If you add Pirates to your project, +(And you should! It works best if everyone uses it. Then we can have a happy world full of happy require hooks!), please +add yourself to the wiki. diff --git a/node_modules/pirates/index.d.ts b/node_modules/pirates/index.d.ts new file mode 100644 index 0000000..b2d8ce6 --- /dev/null +++ b/node_modules/pirates/index.d.ts @@ -0,0 +1,82 @@ +/* (c) 2015 Ari Porad (@ariporad) <http://ariporad.com>. License: ariporad.mit-license.org */ + +/** + * The hook. Accepts the code of the module and the filename. + */ +declare type Hook = (code: string, filename: string) => string; + +/** + * A matcher function, will be called with path to a file. + * + * Should return truthy if the file should be hooked, falsy otherwise. + */ +declare type Matcher = (path: string) => boolean; + +/** + * Reverts the hook when called. + */ +declare type RevertFunction = () => void; +interface Options { +  /** +   * The extensions to hook. Should start with '.' (ex. ['.js']). +   * +   * Takes precedence over `exts`, `extension` and `ext`. +   * +   * @alias exts +   * @alias extension +   * @alias ext +   * @default ['.js'] +   */ +  extensions?: ReadonlyArray<string> | string; + +  /** +   * The extensions to hook. Should start with '.' (ex. ['.js']). +   * +   * Takes precedence over `extension` and `ext`. +   * +   * @alias extension +   * @alias ext +   * @default ['.js'] +   */ +  exts?: ReadonlyArray<string> | string; + +  /** +   * The extensions to hook. Should start with '.' (ex. ['.js']). +   * +   * Takes precedence over `ext`. +   * +   * @alias ext +   * @default ['.js'] +   */ +  extension?: ReadonlyArray<string> | string; + +  /** +   * The extensions to hook. Should start with '.' (ex. ['.js']). +   * +   * @default ['.js'] +   */ +  ext?: ReadonlyArray<string> | string; + +  /** +   * A matcher function, will be called with path to a file. +   * +   * Should return truthy if the file should be hooked, falsy otherwise. +   */ +  matcher?: Matcher | null; + +  /** +   * Auto-ignore node_modules. Independent of any matcher. +   * +   * @default true +   */ +  ignoreNodeModules?: boolean; +} + +/** + * Add a require hook. + * + * @param hook The hook. Accepts the code of the module and the filename. Required. + * @returns The `revert` function. Reverts the hook when called. + */ +export declare function addHook(hook: Hook, opts?: Options): RevertFunction; +export {}; diff --git a/node_modules/pirates/lib/index.js b/node_modules/pirates/lib/index.js new file mode 100644 index 0000000..714497b --- /dev/null +++ b/node_modules/pirates/lib/index.js @@ -0,0 +1,159 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { +  value: true +}); +exports.addHook = addHook; + +var _module = _interopRequireDefault(require("module")); + +var _path = _interopRequireDefault(require("path")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* (c) 2015 Ari Porad (@ariporad) <http://ariporad.com>. License: ariporad.mit-license.org */ +const nodeModulesRegex = /^(?:.*[\\/])?node_modules(?:[\\/].*)?$/; // Guard against poorly mocked module constructors. + +const Module = module.constructor.length > 1 ? module.constructor : _module.default; +const HOOK_RETURNED_NOTHING_ERROR_MESSAGE = '[Pirates] A hook returned a non-string, or nothing at all! This is a' + ' violation of intergalactic law!\n' + '--------------------\n' + 'If you have no idea what this means or what Pirates is, let me explain: ' + 'Pirates is a module that makes is easy to implement require hooks. One of' + " the require hooks you're using uses it. One of these require hooks" + " didn't return anything from it's handler, so we don't know what to" + ' do. You might want to debug this.'; +/** + * @param {string} filename The filename to check. + * @param {string[]} exts The extensions to hook. Should start with '.' (ex. ['.js']). + * @param {Matcher|null} matcher A matcher function, will be called with path to a file. Should return truthy if the file should be hooked, falsy otherwise. + * @param {boolean} ignoreNodeModules Auto-ignore node_modules. Independent of any matcher. + */ + +function shouldCompile(filename, exts, matcher, ignoreNodeModules) { +  if (typeof filename !== 'string') { +    return false; +  } + +  if (exts.indexOf(_path.default.extname(filename)) === -1) { +    return false; +  } + +  const resolvedFilename = _path.default.resolve(filename); + +  if (ignoreNodeModules && nodeModulesRegex.test(resolvedFilename)) { +    return false; +  } + +  if (matcher && typeof matcher === 'function') { +    return !!matcher(resolvedFilename); +  } + +  return true; +} +/** + * @callback Hook The hook. Accepts the code of the module and the filename. + * @param {string} code + * @param {string} filename + * @returns {string} + */ + +/** + * @callback Matcher A matcher function, will be called with path to a file. + * + * Should return truthy if the file should be hooked, falsy otherwise. + * @param {string} path + * @returns {boolean} + */ + +/** + * @callback RevertFunction Reverts the hook when called. + * @returns {void} + */ + +/** + * @typedef {object} Options + * @property {Matcher|null} [matcher=null] A matcher function, will be called with path to a file. + * + * Should return truthy if the file should be hooked, falsy otherwise. + * + * @property {string[]} [extensions=['.js']] The extensions to hook. Should start with '.' (ex. ['.js']). + * @property {string[]} [exts=['.js']] The extensions to hook. Should start with '.' (ex. ['.js']). + * + * @property {string[]} [extension=['.js']] The extensions to hook. Should start with '.' (ex. ['.js']). + * @property {string[]} [ext=['.js']] The extensions to hook. Should start with '.' (ex. ['.js']). + * + * @property {boolean} [ignoreNodeModules=true] Auto-ignore node_modules. Independent of any matcher. + */ + +/** + * Add a require hook. + * + * @param {Hook} hook The hook. Accepts the code of the module and the filename. Required. + * @param {Options} [opts] Options + * @returns {RevertFunction} The `revert` function. Reverts the hook when called. + */ + + +function addHook(hook, opts = {}) { +  let reverted = false; +  const loaders = []; +  const oldLoaders = []; +  let exts; // We need to do this to fix #15. Basically, if you use a non-standard extension (ie. .jsx), then +  // We modify the .js loader, then use the modified .js loader for as the base for .jsx. +  // This prevents that. + +  const originalJSLoader = Module._extensions['.js']; +  const matcher = opts.matcher || null; +  const ignoreNodeModules = opts.ignoreNodeModules !== false; +  exts = opts.extensions || opts.exts || opts.extension || opts.ext || ['.js']; + +  if (!Array.isArray(exts)) { +    exts = [exts]; +  } + +  exts.forEach(ext => { +    if (typeof ext !== 'string') { +      throw new TypeError(`Invalid Extension: ${ext}`); +    } + +    const oldLoader = Module._extensions[ext] || originalJSLoader; +    oldLoaders[ext] = Module._extensions[ext]; + +    loaders[ext] = Module._extensions[ext] = function newLoader(mod, filename) { +      let compile; + +      if (!reverted) { +        if (shouldCompile(filename, exts, matcher, ignoreNodeModules)) { +          compile = mod._compile; + +          mod._compile = function _compile(code) { +            // reset the compile immediately as otherwise we end up having the +            // compile function being changed even though this loader might be reverted +            // Not reverting it here leads to long useless compile chains when doing +            // addHook -> revert -> addHook -> revert -> ... +            // The compile function is also anyway created new when the loader is called a second time. +            mod._compile = compile; +            const newCode = hook(code, filename); + +            if (typeof newCode !== 'string') { +              throw new Error(HOOK_RETURNED_NOTHING_ERROR_MESSAGE); +            } + +            return mod._compile(newCode, filename); +          }; +        } +      } + +      oldLoader(mod, filename); +    }; +  }); +  return function revert() { +    if (reverted) return; +    reverted = true; +    exts.forEach(ext => { +      // if the current loader for the extension is our loader then unregister it and set the oldLoader again +      // if not we can not do anything as we cannot remove a loader from within the loader-chain +      if (Module._extensions[ext] === loaders[ext]) { +        if (!oldLoaders[ext]) { +          delete Module._extensions[ext]; +        } else { +          Module._extensions[ext] = oldLoaders[ext]; +        } +      } +    }); +  }; +}
\ No newline at end of file diff --git a/node_modules/pirates/package.json b/node_modules/pirates/package.json new file mode 100644 index 0000000..47bd384 --- /dev/null +++ b/node_modules/pirates/package.json @@ -0,0 +1,74 @@ +{ +  "name": "pirates", +  "description": "Properly hijack require", +  "main": "lib/index.js", +  "types": "index.d.ts", +  "scripts": { +    "clean": "rimraf lib", +    "build": "babel src -d lib", +    "test": "cross-env BABEL_ENV=test yarn run build && nyc ava", +    "lint": "eslint --report-unused-disable-directives .", +    "prepublishOnly": "yarn run build" +  }, +  "files": [ +    "lib", +    "index.d.ts" +  ], +  "repository": { +    "type": "git", +    "url": "https://github.com/danez/pirates.git" +  }, +  "engines": { +    "node": ">= 6" +  }, +  "author": { +    "name": "Ari Porad", +    "email": "ari@ariporad.com", +    "url": "http://ariporad.com" +  }, +  "devDependencies": { +    "@babel/cli": "7.16.7", +    "@babel/core": "7.16.7", +    "@babel/preset-env": "7.16.7", +    "ava": "1.4.1", +    "babel-core": "7.0.0-bridge.0", +    "babel-eslint": "10.1.0", +    "babel-plugin-istanbul": "5.2.0", +    "cross-env": "5.2.1", +    "decache": "4.6.1", +    "eslint": "5.16.0", +    "eslint-config-prettier": "4.3.0", +    "eslint-plugin-import": "2.25.4", +    "eslint-plugin-prettier": "3.4.1", +    "mock-require": "3.0.3", +    "nyc": "13.3.0", +    "prettier": "1.19.1", +    "rewire": "4.0.1", +    "rimraf": "3.0.2" +  }, +  "license": "MIT", +  "bugs": { +    "url": "https://github.com/danez/pirates/issues" +  }, +  "homepage": "https://github.com/danez/pirates#readme", +  "ava": { +    "files": [ +      "test/*.js" +    ], +    "sources": [ +      "lib/**/*.js" +    ] +  }, +  "nyc": { +    "include": [ +      "src/*.js" +    ], +    "reporter": [ +      "json", +      "text" +    ], +    "sourceMap": false, +    "instrument": false +  }, +  "version": "4.0.5" +}  | 
