# path to a directory with all packages
storage: ./storage

# a list of users
#
# This could be deprecated soon, use auth plugins instead (see htpasswd below).
users:
  admin:
    # crypto.createHash('sha1').update(pass).digest('hex')
    password: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

web:
  # web interface is disabled by default in 0.x, will be enabled soon in 1.x
  # when all its issues will be fixed
  #
  # set this to `true` if you want to experiment with web ui now;
  # this has a lot of issues, e.g. no auth yet, so use at your own risk
  #enable: true

  title: Valhalla
  # logo: logo.png
  # template: custom.hbs
  # tagline: "Some <b>HTML</b> enabled tagline that sits between the actual \
#header and the list of packages. You can even add <a \
#href=\"https://github.com\">links</a>!"

auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    #max_users: 1000

# a list of other known repositories we can talk to
uplinks:
  npmjs:
    url: https://registry.npmjs.org/

    # amount of time to wait for repository to respond
    # before giving up and use the local cached copy
    #timeout: 30s

    # maximum time in which data is considered up to date
    #
    # default is 2 minutes, so server won't request the same data from
    # uplink if a similar request was made less than 2 minutes ago
    #maxage: 2m

    # if two subsequent requests fail, no further requests will be sent to
    # this uplink for five minutes
    #max_fails: 2
    #fail_timeout: 5m

    # timeouts are defined in the same way as nginx, see:
    # http://wiki.nginx.org/ConfigNotation

    # add/override HTTP headers sent to the uplink server
    # this allows for HTTP Basic auth for example:
    #headers:
    #  authorization: "Basic YourBase64EncodedCredentials=="

    # set this to false to prevent tarballs from this upstream
    # to be stored in the local storage (defaults to true)
    #cache: false

packages:
  # uncomment this for packages with "local-" prefix to be available
  # for admin only, it's a recommended way of handling private packages
  #'local-*':
  #  access: admin
  #  publish: admin
  #  # you can override storage directory for a group of packages this way:
  #  storage: 'local_storage'

  '**':
    # allow all users to read packages (including non-authenticated users)
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow 'admin' to publish packages
    publish: admin

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

#####################################################################
# Advanced settings
#####################################################################

# if you use nginx with custom path, use this to override links
#url_prefix: https://dev.company.local/verdaccio/

# You can specify listen address (or simply a port).
# If you add multiple values, verdaccio will listen on all of them.
#
# Examples:
#
#listen:
# - localhost:4873            # default value
# - http://localhost:4873     # same thing
# - 0.0.0.0:4873              # listen on all addresses (INADDR_ANY)
# - https://example.org:4873  # if you want to use https
# - [::1]:4873                # ipv6
# - unix:/tmp/verdaccio.sock    # unix socket

# Run multiple forks of a master Node.js process to take advantage of multiple cores
# Be careful and enable it only with MySQL or PostgreSQL since fs has no real locks
#cluster: true

# Configure HTTPS, it is required if you use "https" protocol above.
#https:
#  key: path/to/server.key
#  cert: path/to/server.crt
#  ca: path/to/server.pem

# type: file | stdout | stderr
# level: trace | debug | info | http (default) | warn | error | fatal
#
# parameters for file: name is filename
#  {type: 'file', path: 'verdaccio.log', level: 'debug'},
#
# parameters for stdout and stderr: format: json | pretty | pretty-timestamped
#  {type: 'stdout', format: 'pretty', level: 'debug'},
logs:
  - {type: stdout, format: pretty, level: http}
  #- {type: file, path: verdaccio.log, level: info}

# you can specify proxy used with all requests in wget-like manner here
# (or set up ENV variables with the same name)
#http_proxy: http://something.local/
#https_proxy: https://something.local/
#no_proxy: localhost,127.0.0.1

# maximum size of uploaded json document
# increase it if you have "request entity too large" errors
#max_body_size: 1mb

# Notify Settings
# Notify was built primarily to use with Slack's Incoming
# webhooks, but will also deliver a simple payload to
# any endpoint. Currently only active for publish / create
# commands.
notify:
  # Choose a method. Technically this will accept any HTTP
  # request method, but probably stick to GET or POST
  method: POST
  # Only run this notification if the package name matches the regular
  # expression
  packagePattern: ^example-package$
  # Any flags to be used with the regular expression
  packagePatternFlags: i
  # If this endpoint requires specific headers, set them here
  # as an array of key: value objects.
  headers: [{'Content-type': 'application/x-www-form-urlencoded'}]
  # set the URL endpoint for this call
  endpoint: https://hooks.slack.com/...
  # Finally, the content you will be sending in the body.
  # This data will first be run through Handlebars to parse
  # any Handlebar expressions. All data housed in the metadata object
  # is available for use within the expressions.
  content: ' {{ handlebar-expression }}'
  # For Slack, follow the following format:
  # content: '{ "text": "Package *{{ name }}* published to version *{{ dist-tags.latest }}*", "username": "Valhalla", "icon_emoji": ":package:" }'

  # Multiple notification endpoints can be created by specifying a collection
  'example-package-1'
    method: POST
    # Only run this notification if the package name matches the regular
    # expression
    packagePattern: ^example-package-regex$
    # Any flags to be used with the regular expression
    packagePatternFlags: i
    # If this endpoint requires specific headers, set them here
    # as an array of key: value objects.
    headers: [{'Content-type': 'application/x-www-form-urlencoded'}]
    # set the URL endpoint for this call
    endpoint: https://hooks.slack.com/...
    # Finally, the content you will be sending in the body.
    # This data will first be run through Handlebars to parse
    # any Handlebar expressions. All data housed in the metadata object
    # is available for use within the expressions.
    content: ' {{ handlebar-expression }}'
    # For Slack, follow the following format:
    # content: '{ "text": "Package *{{ name }}* published to version *{{ dist-tags.latest }}*", "username": "Valhalla", "icon_emoji": ":package:" }'

sql:
  dialect: 'sqlite'
  database: ''
  host: 'localhost'
  username: ''
  password: ''
  pool:
    max: 5
    min: 0
    idle: 1000
s3:
  key: 'your-s3-key'
  secret: 'your-s3-secret'
  bucket: 'your-s3-bucket'
  region: 'your-s3-region'
  path: 'https://meli-npm-registry.s3.amazonaws.com/meli-npm-registry/'
  filePathScheme: '{{package}}/{{file}}'
  packageUrlScheme: '{{path}}{{package}}/-/{{file}}'
  packagesDirectory: 'storage'
