Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/npm-profile/README.md')
-rw-r--r--node_modules/npm-profile/README.md555
1 files changed, 0 insertions, 555 deletions
diff --git a/node_modules/npm-profile/README.md b/node_modules/npm-profile/README.md
deleted file mode 100644
index 9f671d12a..000000000
--- a/node_modules/npm-profile/README.md
+++ /dev/null
@@ -1,555 +0,0 @@
-# npm-profile
-
-Provides functions for fetching and updating an npmjs.com profile.
-
-```js
-const profile = require('npm-profile')
-const result = await profile.get(registry, {token})
-//...
-```
-
-The API that this implements is documented here:
-
-* [authentication](https://github.com/npm/registry/blob/master/docs/user/authentication.md)
-* [profile editing](https://github.com/npm/registry/blob/master/docs/user/profile.md) (and two-factor authentication)
-
-## Table of Contents
-
-* [API](#api)
- * Login and Account Creation
- * [`adduser()`](#adduser)
- * [`login()`](#login)
- * [`adduserWeb()`](#adduser-web)
- * [`loginWeb()`](#login-web)
- * [`adduserCouch()`](#adduser-couch)
- * [`loginCouch()`](#login-couch)
- * Profile Data Management
- * [`get()`](#get)
- * [`set()`](#set)
- * Token Management
- * [`listTokens()`](#list-tokens)
- * [`removeToken()`](#remove-token)
- * [`createToken()`](#create-token)
-
-## API
-
-### <a name="adduser"></a> `> profile.adduser(opener, prompter, [opts]) → Promise`
-
-Tries to create a user new web based login, if that fails it falls back to
-using the legacy CouchDB APIs.
-
-* `opener` Function (url) → Promise, returns a promise that resolves after a browser has been opened for the user at `url`.
-* `prompter` Function (creds) → Promise, returns a promise that resolves to an object with `username`, `email` and `password` properties.
-
-#### **Promise Value**
-
-An object with the following properties:
-
-* `token` String, to be used to authenticate further API calls
-* `username` String, the username the user authenticated as
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be `'E'` followed by the HTTP response code, for
-example a Forbidden response would be `E403`.
-
-### <a name="login"></a> `> profile.login(opener, prompter, [opts]) → Promise`
-
-Tries to login using new web based login, if that fails it falls back to
-using the legacy CouchDB APIs.
-
-* `opener` Function (url) → Promise, returns a promise that resolves after a browser has been opened for the user at `url`.
-* `prompter` Function (creds) → Promise, returns a promise that resolves to an object with `username`, and `password` properties.
-
-#### **Promise Value**
-
-An object with the following properties:
-
-* `token` String, to be used to authenticate further API calls
-* `username` String, the username the user authenticated as
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because an OTP is required then `code` will be set
-to `EOTP`. This error code can only come from a legacy CouchDB login and so
-this should be retried with loginCouch.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be `'E'` followed by the HTTP response code, for
-example a Forbidden response would be `E403`.
-
-### <a name="adduser-web"></a> `> profile.adduserWeb(opener, [opts]) → Promise`
-
-Tries to create a user new web based login, if that fails it falls back to
-using the legacy CouchDB APIs.
-
-* `opener` Function (url) → Promise, returns a promise that resolves after a browser has been opened for the user at `url`.
-* [`opts`](#opts) Object
-
-#### **Promise Value**
-
-An object with the following properties:
-
-* `token` String, to be used to authenticate further API calls
-* `username` String, the username the user authenticated as
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the registry does not support web-login then an error will be thrown with
-its `code` property set to `ENYI` . You should retry with `adduserCouch`.
-If you use `adduser` then this fallback will be done automatically.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be `'E'` followed by the HTTP response code, for
-example a Forbidden response would be `E403`.
-
-### <a name="login-web"></a> `> profile.loginWeb(opener, [opts]) → Promise`
-
-Tries to login using new web based login, if that fails it falls back to
-using the legacy CouchDB APIs.
-
-* `opener` Function (url) → Promise, returns a promise that resolves after a browser has been opened for the user at `url`.
-* [`opts`](#opts) Object (optional)
-
-#### **Promise Value**
-
-An object with the following properties:
-
-* `token` String, to be used to authenticate further API calls
-* `username` String, the username the user authenticated as
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the registry does not support web-login then an error will be thrown with
-its `code` property set to `ENYI` . You should retry with `loginCouch`.
-If you use `login` then this fallback will be done automatically.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be `'E'` followed by the HTTP response code, for
-example a Forbidden response would be `E403`.
-
-### <a name="adduser-couch"></a> `> profile.adduserCouch(username, email, password, [opts]) → Promise`
-
-```js
-const {token} = await profile.adduser(username, email, password, {registry})
-// `token` can be passed in through `opts` for authentication.
-```
-
-Creates a new user on the server along with a fresh bearer token for future
-authentication as this user. This is what you see as an `authToken` in an
-`.npmrc`.
-
-If the user already exists then the npm registry will return an error, but
-this is registry specific and not guaranteed.
-
-* `username` String
-* `email` String
-* `password` String
-* [`opts`](#opts) Object (optional)
-
-#### **Promise Value**
-
-An object with the following properties:
-
-* `token` String, to be used to authenticate further API calls
-* `username` String, the username the user authenticated as
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because an OTP is required then `code` will be set
-to `EOTP`.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be `'E'` followed by the HTTP response code, for
-example a Forbidden response would be `E403`.
-
-### <a name="login-couch"></a> `> profile.loginCouch(username, password, [opts]) → Promise`
-
-```js
-let token
-try {
- {token} = await profile.login(username, password, {registry})
-} catch (err) {
- if (err.code === 'otp') {
- const otp = await getOTPFromSomewhere()
- {token} = await profile.login(username, password, {otp})
- }
-}
-// `token` can now be passed in through `opts` for authentication.
-```
-
-Logs you into an existing user. Does not create the user if they do not
-already exist. Logging in means generating a new bearer token for use in
-future authentication. This is what you use as an `authToken` in an `.npmrc`.
-
-* `username` String
-* `email` String
-* `password` String
-* [`opts`](#opts) Object (optional)
-
-#### **Promise Value**
-
-An object with the following properties:
-
-* `token` String, to be used to authenticate further API calls
-* `username` String, the username the user authenticated as
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-If the object has a `code` property set to `EOTP` then that indicates that
-this account must use two-factor authentication to login. Try again with a
-one-time password.
-
-If the object has a `code` property set to `EAUTHIP` then that indicates that
-this account is only allowed to login from certain networks and this ip is
-not on one of those networks.
-
-If the error was neither of these then the error object will have a
-`code` property set to the HTTP response code and a `headers` property with
-the HTTP headers in the response.
-
-### <a name="get"></a> `> profile.get([opts]) → Promise`
-
-```js
-const {name, email} = await profile.get({token})
-console.log(`${token} belongs to https://npm.im/~${name}, (mailto:${email})`)
-```
-
-Fetch profile information for the authenticated user.
-
-* [`opts`](#opts) Object
-
-#### **Promise Value**
-
-An object that looks like this:
-
-```js
-// "*" indicates a field that may not always appear
-{
- tfa: null |
- false |
- {"mode": "auth-only", pending: Boolean} |
- ["recovery", "codes"] |
- "otpauth://...",
- name: String,
- email: String,
- email_verified: Boolean,
- created: Date,
- updated: Date,
- cidr_whitelist: null | ["192.168.1.1/32", ...],
- fullname: String, // *
- homepage: String, // *
- freenode: String, // *
- twitter: String, // *
- github: String // *
-}
-```
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because an OTP is required then `code` will be set
-to `EOTP`.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be the HTTP response code.
-
-### <a name="set"></a> `> profile.set(profileData, [opts]) → Promise`
-
-```js
-await profile.set({github: 'great-github-account-name'}, {token})
-```
-
-Update profile information for the authenticated user.
-
-* `profileData` An object, like that returned from `profile.get`, but see
- below for caveats relating to `password`, `tfa` and `cidr_whitelist`.
-* [`opts`](#opts) Object (optional)
-
-#### **SETTING `password`**
-
-This is used to change your password and is not visible (for obvious
-reasons) through the `get()` API. The value should be an object with `old`
-and `new` properties, where the former has the user's current password and
-the latter has the desired new password. For example
-
-```js
-await profile.set({
- password: {
- old: 'abc123',
- new: 'my new (more secure) password'
- }
-}, {token})
-```
-
-#### **SETTING `cidr_whitelist`**
-
-The value for this is an Array. Only valid CIDR ranges are allowed in it.
-Be very careful as it's possible to lock yourself out of your account with
-this. This is not currently exposed in `npm` itself.
-
-```js
-await profile.set({
- cidr_whitelist: [ '8.8.8.8/32' ]
-}, {token})
-// ↑ only one of google's dns servers can now access this account.
-```
-
-#### **SETTING `tfa`**
-
-Enabling two-factor authentication is a multi-step process.
-
-1. Call `profile.get` and check the status of `tfa`. If `pending` is true then
- you'll need to disable it with `profile.set({tfa: {password, mode: 'disable'}, …)`.
-2. `profile.set({tfa: {password, mode}}, {registry, token})`
- * Note that the user's `password` is required here in the `tfa` object,
- regardless of how you're authenticating.
- * `mode` is either `auth-only` which requires an `otp` when calling `login`
- or `createToken`, or `mode` is `auth-and-writes` and an `otp` will be
- required on login, publishing or when granting others access to your
- modules.
- * Be aware that this set call may require otp as part of the auth object.
- If otp is needed it will be indicated through a rejection in the usual
- way.
-3. If tfa was already enabled then you're just switch modes and a
- successful response means that you're done. If the tfa property is empty
- and tfa _wasn't_ enabled then it means they were in a pending state.
-3. The response will have a `tfa` property set to an `otpauth` URL, as
- [used by Google Authenticator](https://github.com/google/google-authenticator/wiki/Key-Uri-Format).
- You will need to show this to the user for them to add to their
- authenticator application. This is typically done as a QRCODE, but you
- can also show the value of the `secret` key in the `otpauth` query string
- and they can type or copy paste that in.
-4. To complete setting up two factor auth you need to make a second call to
- `profile.set` with `tfa` set to an array of TWO codes from the user's
- authenticator, eg: `profile.set(tfa: [otp1, otp2]}, {registry, token})`
-5. On success you'll get a result object with a `tfa` property that has an
- array of one-time-use recovery codes. These are used to authenticate
- later if the second factor is lost and generally should be printed and
- put somewhere safe.
-
-Disabling two-factor authentication is more straightforward, set the `tfa`
-attribute to an object with a `password` property and a `mode` of `disable`.
-
-```js
-await profile.set({tfa: {password, mode: 'disable'}}, {token})
-```
-
-#### **Promise Value**
-
-An object reflecting the changes you made, see description for `profile.get`.
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because an OTP is required then `code` will be set
-to `EOTP`.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be the HTTP response code.
-
-### <a name="list-tokens"></a> `> profile.listTokens([opts]) → Promise`
-
-```js
-const tokens = await profile.listTokens({registry, token})
-console.log(`Number of tokens in your accounts: ${tokens.length}`)
-```
-
-Fetch a list of all of the authentication tokens the authenticated user has.
-
-* [`opts`](#opts) Object (optional)
-
-#### **Promise Value**
-
-An array of token objects. Each token object has the following properties:
-
-* key — A sha512 that can be used to remove this token.
-* token — The first six characters of the token UUID. This should be used
- by the user to identify which token this is.
-* created — The date and time the token was created
-* readonly — If true, this token can only be used to download private modules. Critically, it CAN NOT be used to publish.
-* cidr_whitelist — An array of CIDR ranges that this token is allowed to be used from.
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because an OTP is required then `code` will be set
-to `EOTP`.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be the HTTP response code.
-
-### <a name="remove-token"><a> `> profile.removeToken(token|key, opts) → Promise`
-
-```js
-await profile.removeToken(key, {token})
-// token is gone!
-```
-
-Remove a specific authentication token.
-
-* `token|key` String, either a complete authentication token or the key returned by `profile.listTokens`.
-* [`opts`](#opts) Object (optional)
-
-#### **Promise Value**
-
-No value.
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because an OTP is required then `code` will be set
-to `EOTP`.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be the HTTP response code.
-
-### <a name="create-token"></a> `> profile.createToken(password, readonly, cidr_whitelist, [opts]) → Promise`
-
-```js
-const newToken = await profile.createToken(
- password, readonly, cidr_whitelist, {token, otp}
-)
-// do something with the newToken
-```
-
-Create a new authentication token, possibly with restrictions.
-
-* `password` String
-* `readonly` Boolean
-* `cidr_whitelist` Array
-* [`opts`](#opts) Object Optional
-
-#### **Promise Value**
-
-The promise will resolve with an object very much like the one's returned by
-`profile.listTokens`. The only difference is that `token` is not truncated.
-
-```js
-{
- token: String,
- key: String, // sha512 hash of the token UUID
- cidr_whitelist: [String],
- created: Date,
- readonly: Boolean
-}
-```
-
-#### **Promise Rejection**
-
-An error object indicating what went wrong.
-
-The `headers` property will contain the HTTP headers of the response.
-
-If the action was denied because an OTP is required then `code` will be set
-to `EOTP`.
-
-If the action was denied because it came from an IP address that this action
-on this account isn't allowed from then the `code` will be set to `EAUTHIP`.
-
-Otherwise the code will be the HTTP response code.
-
-### <a name="opts"></a> options objects
-
-The various API functions accept an optional `opts` object as a final
-argument.
-
-Options are passed to
-[`npm-registry-fetch`
-options](https://www.npmjs.com/package/npm-registry-fetch#fetch-opts), so
-anything provided to this module will affect the behavior of that one as
-well.
-
-Of particular note are `opts.registry`, and the auth-related options:
-
-* `opts.creds` Object, passed through to prompter, common values are:
- * `username` String, default value for username
- * `email` String, default value for email
-* `opts.username` and `opts.password` - used for Basic auth
-* `opts.otp` String, the two-factor-auth one-time-password (Will prompt for
- this if needed and not provided.)
-* `opts.hostname` String, the hostname of the current machine, to show the
- user during the WebAuth flow. (Defaults to `os.hostname()`.)
-
-## <a name="logging"></a> Logging
-
-This modules logs by emitting `log` events on the global `process` object.
-These events look like this:
-
-```js
-process.emit('log', 'loglevel', 'feature', 'message part 1', 'part 2', 'part 3', 'etc')
-```
-
-`loglevel` can be one of: `error`, `warn`, `notice`, `http`, `timing`, `info`, `verbose`, and `silly`.
-
-`feature` is any brief string that describes the component doing the logging.
-
-The remaining arguments are evaluated like `console.log` and joined together with spaces.
-
-A real world example of this is:
-
-```js
- process.emit('log', 'http', 'request', '→', conf.method || 'GET', conf.target)
-```
-
-To handle the log events, you would do something like this:
-
-```js
-const log = require('npmlog')
-process.on('log', function (level) {
- return log[level].apply(log, [].slice.call(arguments, 1))
-})
-```