anchor.diff:  A set of tools for generating node packages, such as to be imported by
   default.nix files generated by nixfromnpm.
   */
  +
  +# NOTE: this should be removed when backwards compatibility breaking
  +# changes are allowed to be made to the top-level generated
  +# default.nix
   
   {
     # Self-reference so that we can pass through to downstream libraries
  
positive.code: } @ args:
  
  let
    # Function to replace dots with something
    replaceDots = c: replaceChars ["."] [c];
    inherit (builtins) readDir removeAttrs length getEnv elemAt hasAttr;
  
negative.code:   # directory for all of the package files and generate a big attribute set
    # for all of them. Re-exports the `callPackage` function and all of the
    # attribute sets, as well as the nodeLib.
    #
    # We use `lib.makeOverridable` so that this function's result can be
    # overridden in the same way that we can override the result from a
    # `callPackage` invocation. This is intended to pave the way for a
    # non-backwards compatible refactor to provide a simpler interface
    # that resembles other overridable language package sets
    # (e.g. haskellPackages).
    #
    # In truth, this whole file should be refactored so that it only
    # provides "libs" and then have a make-packages.nix file that can be
    # `callPackage`'ed from the `default.nix` one level up from the
    # `nodeLibs`; the intake arguments would a union of the arguments to
    # this file and to this generatePackages function.
    generatePackages = makeOverridable ({
  
      # Path to find node packages in.
      nodePackagesPath,
  
      # Extensions are other node libraries which will be folded into the
      # generated one.
      # 
      # This is deprecated, the overrides argument should be used
      # instead and if there are multiple package sets to give they can
      # be composed first with `composeExtensions`.
      #
      # Note that any overrides provided via the `overrides` argument
      # will override any package of the same name from the union of all
      # package sets given in `extensions`.
      extensions ? [],
  
      overrides ? (self: super: {}),
  
      # If any additional arguments should be made available to callPackage
      # (for example for packages which require additional arguments), they
      # can be passed in here. Those packages can declare an `extras` argument
  