aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/npm-registry-fetch')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/LICENSE.md20
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/README.md623
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/auth.js114
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/check-response.js108
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/default-opts.js20
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/errors.js80
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/index.js241
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/silentlog.js14
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/LICENSE21
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/README.md93
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.d.ts7
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js24
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js.map1
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts231
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js3
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js.map1
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.d.ts17
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js3
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js.map1
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/package.json52
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/README.md74
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.d.ts32
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js145
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js.map1
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.d.ts21
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js14
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js.map1
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/package.json57
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/LICENSE15
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/README.md527
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.js1
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.mjs1
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/index.js587
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/package.json52
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/LICENSE16
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/README.md389
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/agent.js205
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/entry.js494
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/errors.js11
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/index.js49
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/key.js17
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/policy.js161
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/fetch.js118
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/index.js40
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/options.js48
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/remote.js108
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/package.json74
-rw-r--r--sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/package.json60
48 files changed, 4992 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/LICENSE.md b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/LICENSE.md
new file mode 100644
index 00000000..5fc208ff
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/LICENSE.md
@@ -0,0 +1,20 @@
+<!-- This file is automatically added by @npmcli/template-oss. Do not edit. -->
+
+ISC License
+
+Copyright npm, Inc.
+
+Permission to use, copy, modify, and/or distribute this
+software for any purpose with or without fee is hereby
+granted, provided that the above copyright notice and this
+permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND NPM DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+EVENT SHALL NPM BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/README.md b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/README.md
new file mode 100644
index 00000000..279f75a7
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/README.md
@@ -0,0 +1,623 @@
+# npm-registry-fetch
+
+[`npm-registry-fetch`](https://github.com/npm/npm-registry-fetch) is a Node.js
+library that implements a `fetch`-like API for accessing npm registry APIs
+consistently. It's able to consume npm-style configuration values and has all
+the necessary logic for picking registries, handling scopes, and dealing with
+authentication details built-in.
+
+This package is meant to replace the older
+[`npm-registry-client`](https://npm.im/npm-registry-client).
+
+## Example
+
+```javascript
+const npmFetch = require('npm-registry-fetch')
+
+console.log(
+ await npmFetch.json('/-/ping')
+)
+```
+
+## Table of Contents
+
+* [Installing](#install)
+* [Example](#example)
+* [Contributing](#contributing)
+* [API](#api)
+ * [`fetch`](#fetch)
+ * [`fetch.json`](#fetch-json)
+ * [`fetch` options](#fetch-opts)
+
+### Install
+
+`$ npm install npm-registry-fetch`
+
+### Contributing
+
+The npm team enthusiastically welcomes contributions and project participation!
+There's a bunch of things you can do if you want to contribute! The [Contributor
+Guide](CONTRIBUTING.md) has all the information you need for everything from
+reporting bugs to contributing entire new features. Please don't hesitate to
+jump in if you'd like to, or even ask us questions if something isn't clear.
+
+All participants and maintainers in this project are expected to follow [Code of
+Conduct](CODE_OF_CONDUCT.md), and just generally be excellent to each other.
+
+Please refer to the [Changelog](CHANGELOG.md) for project history details, too.
+
+Happy hacking!
+
+### API
+
+#### Caching and `write=true` query strings
+
+Before performing any PUT or DELETE operation, npm clients first make a
+GET request to the registry resource being updated, which includes
+the query string `?write=true`.
+
+The semantics of this are, effectively, "I intend to write to this thing,
+and need to know the latest current value, so that my write can land
+cleanly".
+
+The public npm registry handles these `?write=true` requests by ensuring
+that the cache is re-validated before sending a response. In order to
+maintain the same behavior on the client, and not get tripped up by an
+overeager local cache when we intend to write data to the registry, any
+request that comes through `npm-registry-fetch` that contains `write=true`
+in the query string will forcibly set the `prefer-online` option to `true`,
+and set both `prefer-offline` and `offline` to false, so that any local
+cached value will be revalidated.
+
+#### <a name="fetch"></a> `> fetch(url, [opts]) -> Promise<Response>`
+
+Performs a request to a given URL.
+
+The URL can be either a full URL, or a path to one. The appropriate registry
+will be automatically picked if only a URL path is given.
+
+For available options, please see the section on [`fetch` options](#fetch-opts).
+
+##### Example
+
+```javascript
+const res = await fetch('/-/ping')
+console.log(res.headers)
+res.on('data', d => console.log(d.toString('utf8')))
+```
+
+#### <a name="fetch-json"></a> `> fetch.json(url, [opts]) -> Promise<ResponseJSON>`
+
+Performs a request to a given registry URL, parses the body of the response as
+JSON, and returns it as its final value. This is a utility shorthand for
+`fetch(url).then(res => res.json())`.
+
+For available options, please see the section on [`fetch` options](#fetch-opts).
+
+##### Example
+
+```javascript
+const res = await fetch.json('/-/ping')
+console.log(res) // Body parsed as JSON
+```
+
+#### <a name="fetch-json-stream"></a> `> fetch.json.stream(url, jsonPath, [opts]) -> Stream`
+
+Performs a request to a given registry URL and parses the body of the response
+as JSON, with each entry being emitted through the stream.
+
+The `jsonPath` argument is a [`JSONStream.parse()`
+path](https://github.com/dominictarr/JSONStream#jsonstreamparsepath), and the
+returned stream (unlike default `JSONStream`s), has a valid
+`Symbol.asyncIterator` implementation.
+
+For available options, please see the section on [`fetch` options](#fetch-opts).
+
+##### Example
+
+```javascript
+console.log('https://npm.im/~zkat has access to the following packages:')
+for await (let {key, value} of fetch.json.stream('/-/user/zkat/package', '$*')) {
+ console.log(`https://npm.im/${key} (perms: ${value})`)
+}
+```
+
+#### <a name="fetch-opts"></a> `fetch` Options
+
+Fetch options are optional, and can be passed in as either a Map-like object
+(one with a `.get()` method), a plain javascript object, or a
+[`figgy-pudding`](https://npm.im/figgy-pudding) instance.
+
+##### <a name="opts-agent"></a> `opts.agent`
+
+* Type: http.Agent
+* Default: an appropriate agent based on URL protocol and proxy settings
+
+An [`Agent`](https://nodejs.org/api/http.html#http_class_http_agent) instance to
+be shared across requests. This allows multiple concurrent `fetch` requests to
+happen on the same socket.
+
+You do _not_ need to provide this option unless you want something particularly
+specialized, since proxy configurations and http/https agents are already
+automatically managed internally when this option is not passed through.
+
+##### <a name="opts-body"></a> `opts.body`
+
+* Type: Buffer | Stream | Object
+* Default: null
+
+Request body to send through the outgoing request. Buffers and Streams will be
+passed through as-is, with a default `content-type` of
+`application/octet-stream`. Plain JavaScript objects will be `JSON.stringify`ed
+and the `content-type` will default to `application/json`.
+
+Use [`opts.headers`](#opts-headers) to set the content-type to something else.
+
+##### <a name="opts-ca"></a> `opts.ca`
+
+* Type: String, Array, or null
+* Default: null
+
+The Certificate Authority signing certificate that is trusted for SSL
+connections to the registry. Values should be in PEM format (Windows calls it
+"Base-64 encoded X.509 (.CER)") with newlines replaced by the string `'\n'`. For
+example:
+
+```
+{
+ ca: '-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----'
+}
+```
+
+Set to `null` to only allow "known" registrars, or to a specific CA cert
+to trust only that specific signing authority.
+
+Multiple CAs can be trusted by specifying an array of certificates instead of a
+single string.
+
+See also [`opts.strictSSL`](#opts-strictSSL), [`opts.ca`](#opts-ca) and
+[`opts.key`](#opts-key)
+
+##### <a name="opts-cache"></a> `opts.cache`
+
+* Type: path
+* Default: null
+
+The location of the http cache directory. If provided, certain cachable requests
+will be cached according to [IETF RFC 7234](https://tools.ietf.org/html/rfc7234)
+rules. This will speed up future requests, as well as make the cached data
+available offline if necessary/requested.
+
+See also [`offline`](#opts-offline), [`preferOffline`](#opts-preferOffline),
+and [`preferOnline`](#opts-preferOnline).
+
+##### <a name="opts-cert"></a> `opts.cert`
+
+* Type: String
+* Default: null
+
+A client certificate to pass when accessing the registry. Values should be in
+PEM format (Windows calls it "Base-64 encoded X.509 (.CER)") with newlines
+replaced by the string `'\n'`. For example:
+
+```
+{
+ cert: '-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----'
+}
+```
+
+It is _not_ the path to a certificate file (and there is no "certfile" option).
+
+See also: [`opts.ca`](#opts-ca) and [`opts.key`](#opts-key)
+
+##### <a name="opts-fetchRetries"></a> `opts.fetchRetries`
+
+* Type: Number
+* Default: 2
+
+The "retries" config for [`retry`](https://npm.im/retry) to use when fetching
+packages from the registry.
+
+See also [`opts.retry`](#opts-retry) to provide all retry options as a single
+object.
+
+##### <a name="opts-fetchRetryFactor"></a> `opts.fetchRetryFactor`
+
+* Type: Number
+* Default: 10
+
+The "factor" config for [`retry`](https://npm.im/retry) to use when fetching
+packages.
+
+See also [`opts.retry`](#opts-retry) to provide all retry options as a single
+object.
+
+##### <a name="opts-fetchRetryMintimeout"></a> `opts.fetchRetryMintimeout`
+
+* Type: Number
+* Default: 10000 (10 seconds)
+
+The "minTimeout" config for [`retry`](https://npm.im/retry) to use when fetching
+packages.
+
+See also [`opts.retry`](#opts-retry) to provide all retry options as a single
+object.
+
+##### <a name="opts-fetchRetryMaxtimeout"></a> `opts.fetchRetryMaxtimeout`
+
+* Type: Number
+* Default: 60000 (1 minute)
+
+The "maxTimeout" config for [`retry`](https://npm.im/retry) to use when fetching
+packages.
+
+See also [`opts.retry`](#opts-retry) to provide all retry options as a single
+object.
+
+##### <a name="opts-forceAuth"></a> `opts.forceAuth`
+
+* Type: Object
+* Default: null
+
+If present, other auth-related values in `opts` will be completely ignored,
+including `alwaysAuth`, `email`, and `otp`, when calculating auth for a request,
+and the auth details in `opts.forceAuth` will be used instead.
+
+##### <a name="opts-gzip"></a> `opts.gzip`
+
+* Type: Boolean
+* Default: false
+
+If true, `npm-registry-fetch` will set the `Content-Encoding` header to `gzip`
+and use `zlib.gzip()` or `zlib.createGzip()` to gzip-encode
+[`opts.body`](#opts-body).
+
+##### <a name="opts-headers"></a> `opts.headers`
+
+* Type: Object
+* Default: null
+
+Additional headers for the outgoing request. This option can also be used to
+override headers automatically generated by `npm-registry-fetch`, such as
+`Content-Type`.
+
+##### <a name="opts-ignoreBody"></a> `opts.ignoreBody`
+
+* Type: Boolean
+* Default: false
+
+If true, the **response body** will be thrown away and `res.body` set to `null`.
+This will prevent dangling response sockets for requests where you don't usually
+care what the response body is.
+
+##### <a name="opts-integrity"></a> `opts.integrity`
+
+* Type: String | [SRI object](https://npm.im/ssri)
+* Default: null
+
+If provided, the response body's will be verified against this integrity string,
+using [`ssri`](https://npm.im/ssri). If verification succeeds, the response will
+complete as normal. If verification fails, the response body will error with an
+`EINTEGRITY` error.
+
+Body integrity is only verified if the body is actually consumed to completion --
+that is, if you use `res.json()`/`res.buffer()`, or if you consume the default
+`res` stream data to its end.
+
+Cached data will have its integrity automatically verified using the
+previously-generated integrity hash for the saved request information, so
+`EINTEGRITY` errors can happen if [`opts.cache`](#opts-cache) is used, even if
+`opts.integrity` is not passed in.
+
+##### <a name="opts-key"></a> `opts.key`
+
+* Type: String
+* Default: null
+
+A client key to pass when accessing the registry. Values should be in PEM
+format with newlines replaced by the string `'\n'`. For example:
+
+```
+{
+ key: '-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----'
+}
+```
+
+It is _not_ the path to a key file (and there is no "keyfile" option).
+
+See also: [`opts.ca`](#opts-ca) and [`opts.cert`](#opts-cert)
+
+##### <a name="opts-localAddress"></a> `opts.localAddress`
+
+* Type: IP Address String
+* Default: null
+
+The IP address of the local interface to use when making connections
+to the registry.
+
+See also [`opts.proxy`](#opts-proxy)
+
+##### <a name="opts-log"></a> `opts.log`
+
+* Type: [`npmlog`](https://npm.im/npmlog)-like
+* Default: null
+
+Logger object to use for logging operation details. Must have the same methods
+as `npmlog`.
+
+##### <a name="opts-mapJSON"></a> `opts.mapJSON`
+
+* Type: Function
+* Default: undefined
+
+When using `fetch.json.stream()` (NOT `fetch.json()`), this will be passed down
+to [`JSONStream`](https://npm.im/JSONStream) as the second argument to
+`JSONStream.parse`, and can be used to transform stream data before output.
+
+##### <a name="opts-maxSockets"></a> `opts.maxSockets`
+
+* Type: Integer
+* Default: 12
+
+Maximum number of sockets to keep open during requests. Has no effect if
+[`opts.agent`](#opts-agent) is used.
+
+##### <a name="opts-method"></a> `opts.method`
+
+* Type: String
+* Default: 'GET'
+
+HTTP method to use for the outgoing request. Case-insensitive.
+
+##### <a name="opts-noproxy"></a> `opts.noproxy`
+
+* Type: Boolean
+* Default: process.env.NOPROXY
+
+If true, proxying will be disabled even if [`opts.proxy`](#opts-proxy) is used.
+
+##### <a name="opts-npmSession"></a> `opts.npmSession`
+
+* Type: String
+* Default: null
+
+If provided, will be sent in the `npm-session` header. This header is used by
+the npm registry to identify individual user sessions (usually individual
+invocations of the CLI).
+
+##### <a name="opts-npmCommand"></a> `opts.npmCommand`
+
+* Type: String
+* Default: null
+
+If provided, it will be sent in the `npm-command` header. This header is
+used by the npm registry to identify the npm command that caused this
+request to be made.
+
+##### <a name="opts-offline"></a> `opts.offline`
+
+* Type: Boolean
+* Default: false
+
+Force offline mode: no network requests will be done during install. To allow
+`npm-registry-fetch` to fill in missing cache data, see
+[`opts.preferOffline`](#opts-preferOffline).
+
+This option is only really useful if you're also using
+[`opts.cache`](#opts-cache).
+
+This option is set to `true` when the request includes `write=true` in the
+query string.
+
+##### <a name="opts-otp"></a> `opts.otp`
+
+* Type: Number | String
+* Default: null
+
+This is a one-time password from a two-factor authenticator. It is required for
+certain registry interactions when two-factor auth is enabled for a user
+account.
+
+##### <a name="opts-otpPrompt"></a> `opts.otpPrompt`
+
+* Type: Function
+* Default: null
+
+This is a method which will be called to provide an OTP if the server
+responds with a 401 response indicating that a one-time-password is
+required.
+
+It may return a promise, which must resolve to the OTP value to be used.
+If the method fails to provide an OTP value, then the fetch will fail with
+the auth error that indicated an OTP was needed.
+
+##### <a name="opts-password"></a> `opts.password`
+
+* Alias: `_password`
+* Type: String
+* Default: null
+
+Password used for basic authentication. For the more modern authentication
+method, please use the (more secure) [`opts.token`](#opts-token)
+
+Can optionally be scoped to a registry by using a "nerf dart" for that registry.
+That is:
+
+```
+{
+ '//registry.npmjs.org/:password': 't0k3nH34r'
+}
+```
+
+See also [`opts.username`](#opts-username)
+
+##### <a name="opts-preferOffline"></a> `opts.preferOffline`
+
+* Type: Boolean
+* Default: false
+
+If true, staleness checks for cached data will be bypassed, but missing data
+will be requested from the server. To force full offline mode, use
+[`opts.offline`](#opts-offline).
+
+This option is generally only useful if you're also using
+[`opts.cache`](#opts-cache).
+
+This option is set to `false` when the request includes `write=true` in the
+query string.
+
+##### <a name="opts-preferOnline"></a> `opts.preferOnline`
+
+* Type: Boolean
+* Default: false
+
+If true, staleness checks for cached data will be forced, making the CLI look
+for updates immediately even for fresh package data.
+
+This option is generally only useful if you're also using
+[`opts.cache`](#opts-cache).
+
+This option is set to `true` when the request includes `write=true` in the
+query string.
+
+##### <a name="opts-scope"></a> `opts.scope`
+
+* Type: String
+* Default: null
+
+If provided, will be sent in the `npm-scope` header. This header is used by the
+npm registry to identify the toplevel package scope that a particular project
+installation is using.
+
+##### <a name="opts-proxy"></a> `opts.proxy`
+
+* Type: url
+* Default: null
+
+A proxy to use for outgoing http requests. If not passed in, the `HTTP(S)_PROXY`
+environment variable will be used.
+
+##### <a name="opts-query"></a> `opts.query`
+
+* Type: String | Object
+* Default: null
+
+If provided, the request URI will have a query string appended to it using this
+query. If `opts.query` is an object, it will be converted to a query string
+using
+[`querystring.stringify()`](https://nodejs.org/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options).
+
+If the request URI already has a query string, it will be merged with
+`opts.query`, preferring `opts.query` values.
+
+##### <a name="opts-registry"></a> `opts.registry`
+
+* Type: URL
+* Default: `'https://registry.npmjs.org'`
+
+Registry configuration for a request. If a request URL only includes the URL
+path, this registry setting will be prepended.
+
+See also [`opts.scope`](#opts-scope), [`opts.spec`](#opts-spec), and
+[`opts.<scope>:registry`](#opts-scope-registry) which can all affect the actual
+registry URL used by the outgoing request.
+
+##### <a name="opts-retry"></a> `opts.retry`
+
+* Type: Object
+* Default: null
+
+Single-object configuration for request retry settings. If passed in, will
+override individually-passed `fetch-retry-*` settings.
+
+##### <a name="opts-scope"></a> `opts.scope`
+
+* Type: String
+* Default: null
+
+Associate an operation with a scope for a scoped registry. This option can force
+lookup of scope-specific registries and authentication.
+
+See also [`opts.<scope>:registry`](#opts-scope-registry) and
+[`opts.spec`](#opts-spec) for interactions with this option.
+
+##### <a name="opts-scope-registry"></a> `opts.<scope>:registry`
+
+* Type: String
+* Default: null
+
+This option type can be used to configure the registry used for requests
+involving a particular scope. For example, `opts['@myscope:registry'] =
+'https://scope-specific.registry/'` will make it so requests go out to this
+registry instead of [`opts.registry`](#opts-registry) when
+[`opts.scope`](#opts-scope) is used, or when [`opts.spec`](#opts-spec) is a
+scoped package spec.
+
+The `@` before the scope name is optional, but recommended.
+
+##### <a name="opts-spec"></a> `opts.spec`
+
+* Type: String | [`npm-registry-arg`](https://npm.im/npm-registry-arg) object.
+* Default: null
+
+If provided, can be used to automatically configure [`opts.scope`](#opts-scope)
+based on a specific package name. Non-registry package specs will throw an
+error.
+
+##### <a name="opts-strictSSL"></a> `opts.strictSSL`
+
+* Type: Boolean
+* Default: true
+
+Whether or not to do SSL key validation when making requests to the
+registry via https.
+
+See also [`opts.ca`](#opts-ca).
+
+##### <a name="opts-timeout"></a> `opts.timeout`
+
+* Type: Milliseconds
+* Default: 300000 (5 minutes)
+
+Time before a hanging request times out.
+
+##### <a name="opts-authtoken"></a> `opts._authToken`
+
+* Type: String
+* Default: null
+
+Authentication token string.
+
+Can be scoped to a registry by using a "nerf dart" for that registry. That is:
+
+```
+{
+ '//registry.npmjs.org/:_authToken': 't0k3nH34r'
+}
+```
+
+##### <a name="opts-userAgent"></a> `opts.userAgent`
+
+* Type: String
+* Default: `'npm-registry-fetch@<version>/node@<node-version>+<arch> (<platform>)'`
+
+User agent string to send in the `User-Agent` header.
+
+##### <a name="opts-username"></a> `opts.username`
+
+* Type: String
+* Default: null
+
+Username used for basic authentication. For the more modern authentication
+method, please use the (more secure) [`opts.authtoken`](#opts-authtoken)
+
+Can optionally be scoped to a registry by using a "nerf dart" for that registry.
+That is:
+
+```
+{
+ '//registry.npmjs.org/:username': 't0k3nH34r'
+}
+```
+
+See also [`opts.password`](#opts-password)
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/auth.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/auth.js
new file mode 100644
index 00000000..17da6a17
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/auth.js
@@ -0,0 +1,114 @@
+'use strict'
+const npa = require('npm-package-arg')
+const { URL } = require('url')
+
+// Find the longest registry key that is used for some kind of auth
+// in the options.
+const regKeyFromURI = (uri, opts) => {
+ const parsed = new URL(uri)
+ // try to find a config key indicating we have auth for this registry
+ // can be one of :_authToken, :_auth, or :_password and :username
+ // We walk up the "path" until we're left with just //<host>[:<port>],
+ // stopping when we reach '//'.
+ let regKey = `//${parsed.host}${parsed.pathname}`
+ while (regKey.length > '//'.length) {
+ // got some auth for this URI
+ if (hasAuth(regKey, opts)) {
+ return regKey
+ }
+
+ // can be either //host/some/path/:_auth or //host/some/path:_auth
+ // walk up by removing EITHER what's after the slash OR the slash itself
+ regKey = regKey.replace(/([^/]+|\/)$/, '')
+ }
+}
+
+const hasAuth = (regKey, opts) => (
+ opts[`${regKey}:_authToken`] ||
+ opts[`${regKey}:_auth`] ||
+ opts[`${regKey}:username`] && opts[`${regKey}:_password`]
+)
+
+const sameHost = (a, b) => {
+ const parsedA = new URL(a)
+ const parsedB = new URL(b)
+ return parsedA.host === parsedB.host
+}
+
+const getRegistry = opts => {
+ const { spec } = opts
+ const { scope: specScope, subSpec } = spec ? npa(spec) : {}
+ const subSpecScope = subSpec && subSpec.scope
+ const scope = subSpec ? subSpecScope : specScope
+ const scopeReg = scope && opts[`${scope}:registry`]
+ return scopeReg || opts.registry
+}
+
+const getAuth = (uri, opts = {}) => {
+ const { forceAuth } = opts
+ if (!uri) {
+ throw new Error('URI is required')
+ }
+ const regKey = regKeyFromURI(uri, forceAuth || opts)
+
+ // we are only allowed to use what's in forceAuth if specified
+ if (forceAuth && !regKey) {
+ return new Auth({
+ scopeAuthKey: null,
+ token: forceAuth._authToken || forceAuth.token,
+ username: forceAuth.username,
+ password: forceAuth._password || forceAuth.password,
+ auth: forceAuth._auth || forceAuth.auth,
+ })
+ }
+
+ // no auth for this URI, but might have it for the registry
+ if (!regKey) {
+ const registry = getRegistry(opts)
+ if (registry && uri !== registry && sameHost(uri, registry)) {
+ return getAuth(registry, opts)
+ } else if (registry !== opts.registry) {
+ // If making a tarball request to a different base URI than the
+ // registry where we logged in, but the same auth SHOULD be sent
+ // to that artifact host, then we track where it was coming in from,
+ // and warn the user if we get a 4xx error on it.
+ const scopeAuthKey = regKeyFromURI(registry, opts)
+ return new Auth({ scopeAuthKey })
+ }
+ }
+
+ const {
+ [`${regKey}:_authToken`]: token,
+ [`${regKey}:username`]: username,
+ [`${regKey}:_password`]: password,
+ [`${regKey}:_auth`]: auth,
+ } = opts
+
+ return new Auth({
+ scopeAuthKey: null,
+ token,
+ auth,
+ username,
+ password,
+ })
+}
+
+class Auth {
+ constructor ({ token, auth, username, password, scopeAuthKey }) {
+ this.scopeAuthKey = scopeAuthKey
+ this.token = null
+ this.auth = null
+ this.isBasicAuth = false
+ if (token) {
+ this.token = token
+ } else if (auth) {
+ this.auth = auth
+ } else if (username && password) {
+ const p = Buffer.from(password, 'base64').toString('utf8')
+ this.auth = Buffer.from(`${username}:${p}`, 'utf8').toString('base64')
+ this.isBasicAuth = true
+ }
+ }
+}
+
+module.exports = getAuth
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/check-response.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/check-response.js
new file mode 100644
index 00000000..26043a96
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/check-response.js
@@ -0,0 +1,108 @@
+'use strict'
+
+const errors = require('./errors.js')
+const { Response } = require('minipass-fetch')
+const defaultOpts = require('./default-opts.js')
+
+/* eslint-disable-next-line max-len */
+const moreInfoUrl = 'https://github.com/npm/cli/wiki/No-auth-for-URI,-but-auth-present-for-scoped-registry'
+const checkResponse =
+ async ({ method, uri, res, registry, startTime, auth, opts }) => {
+ opts = { ...defaultOpts, ...opts }
+ if (res.headers.has('npm-notice') && !res.headers.has('x-local-cache')) {
+ opts.log.notice('', res.headers.get('npm-notice'))
+ }
+
+ if (res.status >= 400) {
+ logRequest(method, res, startTime, opts)
+ if (auth && auth.scopeAuthKey && !auth.token && !auth.auth) {
+ // we didn't have auth for THIS request, but we do have auth for
+ // requests to the registry indicated by the spec's scope value.
+ // Warn the user.
+ opts.log.warn('registry', `No auth for URI, but auth present for scoped registry.
+
+URI: ${uri}
+Scoped Registry Key: ${auth.scopeAuthKey}
+
+More info here: ${moreInfoUrl}`)
+ }
+ return checkErrors(method, res, startTime, opts)
+ } else {
+ res.body.on('end', () => logRequest(method, res, startTime, opts))
+ if (opts.ignoreBody) {
+ res.body.resume()
+ return new Response(null, res)
+ }
+ return res
+ }
+ }
+module.exports = checkResponse
+
+function logRequest (method, res, startTime, opts) {
+ const elapsedTime = Date.now() - startTime
+ const attempt = res.headers.get('x-fetch-attempts')
+ const attemptStr = attempt && attempt > 1 ? ` attempt #${attempt}` : ''
+ const cacheStatus = res.headers.get('x-local-cache-status')
+ const cacheStr = cacheStatus ? ` (cache ${cacheStatus})` : ''
+
+ let urlStr
+ try {
+ const { URL } = require('url')
+ const url = new URL(res.url)
+ if (url.password) {
+ url.password = '***'
+ }
+
+ urlStr = url.toString()
+ } catch (er) {
+ urlStr = res.url
+ }
+
+ opts.log.http(
+ 'fetch',
+ `${method.toUpperCase()} ${res.status} ${urlStr} ${elapsedTime}ms${attemptStr}${cacheStr}`
+ )
+}
+
+function checkErrors (method, res, startTime, opts) {
+ return res.buffer()
+ .catch(() => null)
+ .then(body => {
+ let parsed = body
+ try {
+ parsed = JSON.parse(body.toString('utf8'))
+ } catch (e) {}
+ if (res.status === 401 && res.headers.get('www-authenticate')) {
+ const auth = res.headers.get('www-authenticate')
+ .split(/,\s*/)
+ .map(s => s.toLowerCase())
+ if (auth.indexOf('ipaddress') !== -1) {
+ throw new errors.HttpErrorAuthIPAddress(
+ method, res, parsed, opts.spec
+ )
+ } else if (auth.indexOf('otp') !== -1) {
+ throw new errors.HttpErrorAuthOTP(
+ method, res, parsed, opts.spec
+ )
+ } else {
+ throw new errors.HttpErrorAuthUnknown(
+ method, res, parsed, opts.spec
+ )
+ }
+ } else if (
+ res.status === 401 &&
+ body != null &&
+ /one-time pass/.test(body.toString('utf8'))
+ ) {
+ // Heuristic for malformed OTP responses that don't include the
+ // www-authenticate header.
+ throw new errors.HttpErrorAuthOTP(
+ method, res, parsed, opts.spec
+ )
+ } else {
+ throw new errors.HttpErrorGeneral(
+ method, res, parsed, opts.spec
+ )
+ }
+ })
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/default-opts.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/default-opts.js
new file mode 100644
index 00000000..e8e8221d
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/default-opts.js
@@ -0,0 +1,20 @@
+const pkg = require('../package.json')
+module.exports = {
+ log: require('./silentlog.js'),
+ maxSockets: 12,
+ method: 'GET',
+ registry: 'https://registry.npmjs.org/',
+ timeout: 5 * 60 * 1000, // 5 minutes
+ strictSSL: true,
+ noProxy: process.env.NOPROXY,
+ userAgent: `${pkg.name
+ }@${
+ pkg.version
+ }/node@${
+ process.version
+ }+${
+ process.arch
+ } (${
+ process.platform
+ })`,
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/errors.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/errors.js
new file mode 100644
index 00000000..0efc923e
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/errors.js
@@ -0,0 +1,80 @@
+'use strict'
+
+const url = require('url')
+
+function packageName (href) {
+ try {
+ let basePath = new url.URL(href).pathname.substr(1)
+ if (!basePath.match(/^-/)) {
+ basePath = basePath.split('/')
+ var index = basePath.indexOf('_rewrite')
+ if (index === -1) {
+ index = basePath.length - 1
+ } else {
+ index++
+ }
+ return decodeURIComponent(basePath[index])
+ }
+ } catch (_) {
+ // this is ok
+ }
+}
+
+class HttpErrorBase extends Error {
+ constructor (method, res, body, spec) {
+ super()
+ this.name = this.constructor.name
+ this.headers = res.headers.raw()
+ this.statusCode = res.status
+ this.code = `E${res.status}`
+ this.method = method
+ this.uri = res.url
+ this.body = body
+ this.pkgid = spec ? spec.toString() : packageName(res.url)
+ }
+}
+module.exports.HttpErrorBase = HttpErrorBase
+
+class HttpErrorGeneral extends HttpErrorBase {
+ constructor (method, res, body, spec) {
+ super(method, res, body, spec)
+ this.message = `${res.status} ${res.statusText} - ${
+ this.method.toUpperCase()
+ } ${
+ this.spec || this.uri
+ }${
+ (body && body.error) ? ' - ' + body.error : ''
+ }`
+ Error.captureStackTrace(this, HttpErrorGeneral)
+ }
+}
+module.exports.HttpErrorGeneral = HttpErrorGeneral
+
+class HttpErrorAuthOTP extends HttpErrorBase {
+ constructor (method, res, body, spec) {
+ super(method, res, body, spec)
+ this.message = 'OTP required for authentication'
+ this.code = 'EOTP'
+ Error.captureStackTrace(this, HttpErrorAuthOTP)
+ }
+}
+module.exports.HttpErrorAuthOTP = HttpErrorAuthOTP
+
+class HttpErrorAuthIPAddress extends HttpErrorBase {
+ constructor (method, res, body, spec) {
+ super(method, res, body, spec)
+ this.message = 'Login is not allowed from your IP address'
+ this.code = 'EAUTHIP'
+ Error.captureStackTrace(this, HttpErrorAuthIPAddress)
+ }
+}
+module.exports.HttpErrorAuthIPAddress = HttpErrorAuthIPAddress
+
+class HttpErrorAuthUnknown extends HttpErrorBase {
+ constructor (method, res, body, spec) {
+ super(method, res, body, spec)
+ this.message = 'Unable to authenticate, need: ' + res.headers.get('www-authenticate')
+ Error.captureStackTrace(this, HttpErrorAuthUnknown)
+ }
+}
+module.exports.HttpErrorAuthUnknown = HttpErrorAuthUnknown
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/index.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/index.js
new file mode 100644
index 00000000..19c92140
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/index.js
@@ -0,0 +1,241 @@
+'use strict'
+
+const { HttpErrorAuthOTP } = require('./errors.js')
+const checkResponse = require('./check-response.js')
+const getAuth = require('./auth.js')
+const fetch = require('make-fetch-happen')
+const JSONStream = require('minipass-json-stream')
+const npa = require('npm-package-arg')
+const qs = require('querystring')
+const url = require('url')
+const zlib = require('minizlib')
+const Minipass = require('minipass')
+
+const defaultOpts = require('./default-opts.js')
+
+// WhatWG URL throws if it's not fully resolved
+const urlIsValid = u => {
+ try {
+ return !!new url.URL(u)
+ } catch (_) {
+ return false
+ }
+}
+
+module.exports = regFetch
+function regFetch (uri, /* istanbul ignore next */ opts_ = {}) {
+ const opts = {
+ ...defaultOpts,
+ ...opts_,
+ }
+
+ // if we did not get a fully qualified URI, then we look at the registry
+ // config or relevant scope to resolve it.
+ const uriValid = urlIsValid(uri)
+ let registry = opts.registry || defaultOpts.registry
+ if (!uriValid) {
+ registry = opts.registry = (
+ (opts.spec && pickRegistry(opts.spec, opts)) ||
+ opts.registry ||
+ registry
+ )
+ uri = `${
+ registry.trim().replace(/\/?$/g, '')
+ }/${
+ uri.trim().replace(/^\//, '')
+ }`
+ // asserts that this is now valid
+ new url.URL(uri)
+ }
+
+ const method = opts.method || 'GET'
+
+ // through that takes into account the scope, the prefix of `uri`, etc
+ const startTime = Date.now()
+ const auth = getAuth(uri, opts)
+ const headers = getHeaders(uri, auth, opts)
+ let body = opts.body
+ const bodyIsStream = Minipass.isStream(body)
+ const bodyIsPromise = body &&
+ typeof body === 'object' &&
+ typeof body.then === 'function'
+
+ if (
+ body && !bodyIsStream && !bodyIsPromise && typeof body !== 'string' && !Buffer.isBuffer(body)
+ ) {
+ headers['content-type'] = headers['content-type'] || 'application/json'
+ body = JSON.stringify(body)
+ } else if (body && !headers['content-type']) {
+ headers['content-type'] = 'application/octet-stream'
+ }
+
+ if (opts.gzip) {
+ headers['content-encoding'] = 'gzip'
+ if (bodyIsStream) {
+ const gz = new zlib.Gzip()
+ body.on('error', /* istanbul ignore next: unlikely and hard to test */
+ err => gz.emit('error', err))
+ body = body.pipe(gz)
+ } else if (!bodyIsPromise) {
+ body = new zlib.Gzip().end(body).concat()
+ }
+ }
+
+ const parsed = new url.URL(uri)
+
+ if (opts.query) {
+ const q = typeof opts.query === 'string' ? qs.parse(opts.query)
+ : opts.query
+
+ Object.keys(q).forEach(key => {
+ if (q[key] !== undefined) {
+ parsed.searchParams.set(key, q[key])
+ }
+ })
+ uri = url.format(parsed)
+ }
+
+ if (parsed.searchParams.get('write') === 'true' && method === 'GET') {
+ // do not cache, because this GET is fetching a rev that will be
+ // used for a subsequent PUT or DELETE, so we need to conditionally
+ // update cache.
+ opts.offline = false
+ opts.preferOffline = false
+ opts.preferOnline = true
+ }
+
+ const doFetch = async body => {
+ const p = fetch(uri, {
+ agent: opts.agent,
+ algorithms: opts.algorithms,
+ body,
+ cache: getCacheMode(opts),
+ cachePath: opts.cache,
+ ca: opts.ca,
+ cert: opts.cert,
+ headers,
+ integrity: opts.integrity,
+ key: opts.key,
+ localAddress: opts.localAddress,
+ maxSockets: opts.maxSockets,
+ memoize: opts.memoize,
+ method: method,
+ noProxy: opts.noProxy,
+ proxy: opts.httpsProxy || opts.proxy,
+ retry: opts.retry ? opts.retry : {
+ retries: opts.fetchRetries,
+ factor: opts.fetchRetryFactor,
+ minTimeout: opts.fetchRetryMintimeout,
+ maxTimeout: opts.fetchRetryMaxtimeout,
+ },
+ strictSSL: opts.strictSSL,
+ timeout: opts.timeout || 30 * 1000,
+ }).then(res => checkResponse({
+ method,
+ uri,
+ res,
+ registry,
+ startTime,
+ auth,
+ opts,
+ }))
+
+ if (typeof opts.otpPrompt === 'function') {
+ return p.catch(async er => {
+ if (er instanceof HttpErrorAuthOTP) {
+ let otp
+ // if otp fails to complete, we fail with that failure
+ try {
+ otp = await opts.otpPrompt()
+ } catch (_) {
+ // ignore this error
+ }
+ // if no otp provided, or otpPrompt errored, throw the original HTTP error
+ if (!otp) {
+ throw er
+ }
+ return regFetch(uri, { ...opts, otp })
+ }
+ throw er
+ })
+ } else {
+ return p
+ }
+ }
+
+ return Promise.resolve(body).then(doFetch)
+}
+
+module.exports.json = fetchJSON
+function fetchJSON (uri, opts) {
+ return regFetch(uri, opts).then(res => res.json())
+}
+
+module.exports.json.stream = fetchJSONStream
+function fetchJSONStream (uri, jsonPath,
+ /* istanbul ignore next */ opts_ = {}) {
+ const opts = { ...defaultOpts, ...opts_ }
+ const parser = JSONStream.parse(jsonPath, opts.mapJSON)
+ regFetch(uri, opts).then(res =>
+ res.body.on('error',
+ /* istanbul ignore next: unlikely and difficult to test */
+ er => parser.emit('error', er)).pipe(parser)
+ ).catch(er => parser.emit('error', er))
+ return parser
+}
+
+module.exports.pickRegistry = pickRegistry
+function pickRegistry (spec, opts = {}) {
+ spec = npa(spec)
+ let registry = spec.scope &&
+ opts[spec.scope.replace(/^@?/, '@') + ':registry']
+
+ if (!registry && opts.scope) {
+ registry = opts[opts.scope.replace(/^@?/, '@') + ':registry']
+ }
+
+ if (!registry) {
+ registry = opts.registry || defaultOpts.registry
+ }
+
+ return registry
+}
+
+function getCacheMode (opts) {
+ return opts.offline ? 'only-if-cached'
+ : opts.preferOffline ? 'force-cache'
+ : opts.preferOnline ? 'no-cache'
+ : 'default'
+}
+
+function getHeaders (uri, auth, opts) {
+ const headers = Object.assign({
+ 'user-agent': opts.userAgent,
+ }, opts.headers || {})
+
+ if (opts.scope) {
+ headers['npm-scope'] = opts.scope
+ }
+
+ if (opts.npmSession) {
+ headers['npm-session'] = opts.npmSession
+ }
+
+ if (opts.npmCommand) {
+ headers['npm-command'] = opts.npmCommand
+ }
+
+ // If a tarball is hosted on a different place than the manifest, only send
+ // credentials on `alwaysAuth`
+ if (auth.token) {
+ headers.authorization = `Bearer ${auth.token}`
+ } else if (auth.auth) {
+ headers.authorization = `Basic ${auth.auth}`
+ }
+
+ if (opts.otp) {
+ headers['npm-otp'] = opts.otp
+ }
+
+ return headers
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/silentlog.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/silentlog.js
new file mode 100644
index 00000000..483bd44c
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/lib/silentlog.js
@@ -0,0 +1,14 @@
+'use strict'
+
+const noop = Function.prototype
+module.exports = {
+ error: noop,
+ warn: noop,
+ notice: noop,
+ info: noop,
+ verbose: noop,
+ silly: noop,
+ http: noop,
+ pause: noop,
+ resume: noop,
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/LICENSE b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/LICENSE
new file mode 100644
index 00000000..c4c56a2a
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Nathan Rajlich
+
+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/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/README.md b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/README.md
new file mode 100644
index 00000000..bc980fd4
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/README.md
@@ -0,0 +1,93 @@
+# @tootallnate/once
+
+### Creates a Promise that waits for a single event
+
+## Installation
+
+Install with `npm`:
+
+```bash
+$ npm install @tootallnate/once
+```
+
+## API
+
+### once(emitter: EventEmitter, name: string, opts?: OnceOptions): Promise&lt;[...Args]&gt;
+
+Creates a Promise that waits for event `name` to occur on `emitter`, and resolves
+the promise with an array of the values provided to the event handler. If an
+`error` event occurs before the event specified by `name`, then the Promise is
+rejected with the error argument.
+
+```typescript
+import once from '@tootallnate/once';
+import { EventEmitter } from 'events';
+
+const emitter = new EventEmitter();
+
+setTimeout(() => {
+ emitter.emit('foo', 'bar');
+}, 100);
+
+const [result] = await once(emitter, 'foo');
+console.log({ result });
+// { result: 'bar' }
+```
+
+#### Promise Strong Typing
+
+The main feature that this module provides over other "once" implementations is that
+the Promise that is returned is _**strongly typed**_ based on the type of `emitter`
+and the `name` of the event. Some examples are shown below.
+
+_The process "exit" event contains a single number for exit code:_
+
+```typescript
+const [code] = await once(process, 'exit');
+// ^ number
+```
+_A child process "exit" event contains either an exit code or a signal:_
+
+```typescript
+const child = spawn('echo', []);
+const [code, signal] = await once(child, 'exit');
+// ^ number | null
+// ^ string | null
+```
+
+_A forked child process "message" event is type `any`, so you can cast the Promise directly:_
+
+```typescript
+const child = fork('file.js');
+
+// With `await`
+const [message, _]: [WorkerPayload, unknown] = await once(child, 'message');
+
+// With Promise
+const messagePromise: Promise<[WorkerPayload, unknown]> = once(child, 'message');
+
+// Better yet would be to leave it as `any`, and validate the payload
+// at runtime with i.e. `ajv` + `json-schema-to-typescript`
+```
+
+_If the TypeScript definition does not contain an overload for the specified event name, then the Promise will have type `unknown[]` and your code will need to narrow the result manually:_
+
+```typescript
+interface CustomEmitter extends EventEmitter {
+ on(name: 'foo', listener: (a: string, b: number) => void): this;
+}
+
+const emitter: CustomEmitter = new EventEmitter();
+
+// "foo" event is a defined overload, so it's properly typed
+const fooPromise = once(emitter, 'foo');
+// ^ Promise<[a: string, b: number]>
+
+// "bar" event in not a defined overload, so it gets `unknown[]`
+const barPromise = once(emitter, 'bar');
+// ^ Promise<unknown[]>
+```
+
+### OnceOptions
+
+- `signal` - `AbortSignal` instance to unbind event handlers before the Promise has been fulfilled.
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.d.ts b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.d.ts
new file mode 100644
index 00000000..93d02a9a
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.d.ts
@@ -0,0 +1,7 @@
+/// <reference types="node" />
+import { EventEmitter } from 'events';
+import { EventNames, EventListenerParameters, AbortSignal } from './types';
+export interface OnceOptions {
+ signal?: AbortSignal;
+}
+export default function once<Emitter extends EventEmitter, Event extends EventNames<Emitter>>(emitter: Emitter, name: Event, { signal }?: OnceOptions): Promise<EventListenerParameters<Emitter, Event>>;
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js
new file mode 100644
index 00000000..ca6385b1
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+function once(emitter, name, { signal } = {}) {
+ return new Promise((resolve, reject) => {
+ function cleanup() {
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', cleanup);
+ emitter.removeListener(name, onEvent);
+ emitter.removeListener('error', onError);
+ }
+ function onEvent(...args) {
+ cleanup();
+ resolve(args);
+ }
+ function onError(err) {
+ cleanup();
+ reject(err);
+ }
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', cleanup);
+ emitter.on(name, onEvent);
+ emitter.on('error', onError);
+ });
+}
+exports.default = once;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js.map b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js.map
new file mode 100644
index 00000000..61708ca0
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAOA,SAAwB,IAAI,CAI3B,OAAgB,EAChB,IAAW,EACX,EAAE,MAAM,KAAkB,EAAE;IAE5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,SAAS,OAAO;YACf,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,OAAO,CAAC,GAAG,IAAW;YAC9B,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAA+C,CAAC,CAAC;QAC1D,CAAC;QACD,SAAS,OAAO,CAAC,GAAU;YAC1B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QACD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACJ,CAAC;AA1BD,uBA0BC"} \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts
new file mode 100644
index 00000000..eb2bbc6c
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts
@@ -0,0 +1,231 @@
+export declare type OverloadedParameters<T> = T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+ (...args: infer A14): any;
+ (...args: infer A15): any;
+ (...args: infer A16): any;
+ (...args: infer A17): any;
+ (...args: infer A18): any;
+ (...args: infer A19): any;
+ (...args: infer A20): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | A15 | A16 | A17 | A18 | A19 | A20 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+ (...args: infer A14): any;
+ (...args: infer A15): any;
+ (...args: infer A16): any;
+ (...args: infer A17): any;
+ (...args: infer A18): any;
+ (...args: infer A19): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | A15 | A16 | A17 | A18 | A19 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+ (...args: infer A14): any;
+ (...args: infer A15): any;
+ (...args: infer A16): any;
+ (...args: infer A17): any;
+ (...args: infer A18): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | A15 | A16 | A17 | A18 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+ (...args: infer A14): any;
+ (...args: infer A15): any;
+ (...args: infer A16): any;
+ (...args: infer A17): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | A15 | A16 | A17 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+ (...args: infer A14): any;
+ (...args: infer A15): any;
+ (...args: infer A16): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | A15 | A16 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+ (...args: infer A14): any;
+ (...args: infer A15): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 | A15 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+ (...args: infer A14): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 | A14 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+ (...args: infer A13): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 | A13 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+ (...args: infer A12): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+ (...args: infer A11): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+ (...args: infer A10): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+ (...args: infer A9): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+ (...args: infer A8): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+ (...args: infer A7): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 | A7 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+ (...args: infer A6): any;
+} ? A1 | A2 | A3 | A4 | A5 | A6 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+ (...args: infer A5): any;
+} ? A1 | A2 | A3 | A4 | A5 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+ (...args: infer A4): any;
+} ? A1 | A2 | A3 | A4 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+ (...args: infer A3): any;
+} ? A1 | A2 | A3 : T extends {
+ (...args: infer A1): any;
+ (...args: infer A2): any;
+} ? A1 | A2 : T extends {
+ (...args: infer A1): any;
+} ? A1 : any;
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js
new file mode 100644
index 00000000..207186d9
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=overloaded-parameters.js.map \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js.map b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js.map
new file mode 100644
index 00000000..863f146d
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/overloaded-parameters.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"overloaded-parameters.js","sourceRoot":"","sources":["../src/overloaded-parameters.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.d.ts b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.d.ts
new file mode 100644
index 00000000..58be8284
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.d.ts
@@ -0,0 +1,17 @@
+/// <reference types="node" />
+import { EventEmitter } from 'events';
+import { OverloadedParameters } from './overloaded-parameters';
+export declare type FirstParameter<T> = T extends [infer R, ...any[]] ? R : never;
+export declare type EventListener<F, T extends string | symbol> = F extends [
+ T,
+ infer R,
+ ...any[]
+] ? R : never;
+export declare type EventParameters<Emitter extends EventEmitter> = OverloadedParameters<Emitter['on']>;
+export declare type EventNames<Emitter extends EventEmitter> = FirstParameter<EventParameters<Emitter>>;
+export declare type EventListenerParameters<Emitter extends EventEmitter, Event extends EventNames<Emitter>> = WithDefault<Parameters<EventListener<EventParameters<Emitter>, Event>>, unknown[]>;
+export declare type WithDefault<T, D> = [T] extends [never] ? D : T;
+export interface AbortSignal {
+ addEventListener: (name: string, listener: (...args: any[]) => any) => void;
+ removeEventListener: (name: string, listener: (...args: any[]) => any) => void;
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js
new file mode 100644
index 00000000..11e638d1
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=types.js.map \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js.map b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js.map
new file mode 100644
index 00000000..c768b790
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/dist/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/package.json b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/package.json
new file mode 100644
index 00000000..69ce947d
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/@tootallnate/once/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "@tootallnate/once",
+ "version": "2.0.0",
+ "description": "Creates a Promise that waits for a single event",
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "prebuild": "rimraf dist",
+ "build": "tsc",
+ "test": "jest",
+ "prepublishOnly": "npm run build"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/TooTallNate/once.git"
+ },
+ "keywords": [],
+ "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/TooTallNate/once/issues"
+ },
+ "devDependencies": {
+ "@types/jest": "^27.0.2",
+ "@types/node": "^12.12.11",
+ "abort-controller": "^3.0.0",
+ "jest": "^27.2.1",
+ "rimraf": "^3.0.0",
+ "ts-jest": "^27.0.5",
+ "typescript": "^4.4.3"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "jest": {
+ "preset": "ts-jest",
+ "globals": {
+ "ts-jest": {
+ "diagnostics": false,
+ "isolatedModules": true
+ }
+ },
+ "verbose": false,
+ "testEnvironment": "node",
+ "testMatch": [
+ "<rootDir>/test/**/*.test.ts"
+ ]
+ }
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/README.md b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/README.md
new file mode 100644
index 00000000..d60e2066
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/README.md
@@ -0,0 +1,74 @@
+http-proxy-agent
+================
+### An HTTP(s) proxy `http.Agent` implementation for HTTP
+[![Build Status](https://github.com/TooTallNate/node-http-proxy-agent/workflows/Node%20CI/badge.svg)](https://github.com/TooTallNate/node-http-proxy-agent/actions?workflow=Node+CI)
+
+This module provides an `http.Agent` implementation that connects to a specified
+HTTP or HTTPS proxy server, and can be used with the built-in `http` module.
+
+__Note:__ For HTTP proxy usage with the `https` module, check out
+[`node-https-proxy-agent`](https://github.com/TooTallNate/node-https-proxy-agent).
+
+Installation
+------------
+
+Install with `npm`:
+
+``` bash
+$ npm install http-proxy-agent
+```
+
+
+Example
+-------
+
+``` js
+var url = require('url');
+var http = require('http');
+var HttpProxyAgent = require('http-proxy-agent');
+
+// HTTP/HTTPS proxy to connect to
+var proxy = process.env.http_proxy || 'http://168.63.76.32:3128';
+console.log('using proxy server %j', proxy);
+
+// HTTP endpoint for the proxy to connect to
+var endpoint = process.argv[2] || 'http://nodejs.org/api/';
+console.log('attempting to GET %j', endpoint);
+var opts = url.parse(endpoint);
+
+// create an instance of the `HttpProxyAgent` class with the proxy server information
+var agent = new HttpProxyAgent(proxy);
+opts.agent = agent;
+
+http.get(opts, function (res) {
+ console.log('"response" event!', res.headers);
+ res.pipe(process.stdout);
+});
+```
+
+
+License
+-------
+
+(The MIT License)
+
+Copyright (c) 2013 Nathan Rajlich &lt;nathan@tootallnate.net&gt;
+
+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/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.d.ts b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.d.ts
new file mode 100644
index 00000000..3f043f7f
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.d.ts
@@ -0,0 +1,32 @@
+/// <reference types="node" />
+import net from 'net';
+import { Agent, ClientRequest, RequestOptions } from 'agent-base';
+import { HttpProxyAgentOptions } from '.';
+interface HttpProxyAgentClientRequest extends ClientRequest {
+ path: string;
+ output?: string[];
+ outputData?: {
+ data: string;
+ }[];
+ _header?: string | null;
+ _implicitHeader(): void;
+}
+/**
+ * The `HttpProxyAgent` implements an HTTP Agent subclass that connects
+ * to the specified "HTTP proxy server" in order to proxy HTTP requests.
+ *
+ * @api public
+ */
+export default class HttpProxyAgent extends Agent {
+ private secureProxy;
+ private proxy;
+ constructor(_opts: string | HttpProxyAgentOptions);
+ /**
+ * Called when the node-core HTTP client library is creating a
+ * new HTTP request.
+ *
+ * @api protected
+ */
+ callback(req: HttpProxyAgentClientRequest, opts: RequestOptions): Promise<net.Socket>;
+}
+export {};
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js
new file mode 100644
index 00000000..aca82804
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js
@@ -0,0 +1,145 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const net_1 = __importDefault(require("net"));
+const tls_1 = __importDefault(require("tls"));
+const url_1 = __importDefault(require("url"));
+const debug_1 = __importDefault(require("debug"));
+const once_1 = __importDefault(require("@tootallnate/once"));
+const agent_base_1 = require("agent-base");
+const debug = (0, debug_1.default)('http-proxy-agent');
+function isHTTPS(protocol) {
+ return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false;
+}
+/**
+ * The `HttpProxyAgent` implements an HTTP Agent subclass that connects
+ * to the specified "HTTP proxy server" in order to proxy HTTP requests.
+ *
+ * @api public
+ */
+class HttpProxyAgent extends agent_base_1.Agent {
+ constructor(_opts) {
+ let opts;
+ if (typeof _opts === 'string') {
+ opts = url_1.default.parse(_opts);
+ }
+ else {
+ opts = _opts;
+ }
+ if (!opts) {
+ throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!');
+ }
+ debug('Creating new HttpProxyAgent instance: %o', opts);
+ super(opts);
+ const proxy = Object.assign({}, opts);
+ // If `true`, then connect to the proxy server over TLS.
+ // Defaults to `false`.
+ this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol);
+ // Prefer `hostname` over `host`, and set the `port` if needed.
+ proxy.host = proxy.hostname || proxy.host;
+ if (typeof proxy.port === 'string') {
+ proxy.port = parseInt(proxy.port, 10);
+ }
+ if (!proxy.port && proxy.host) {
+ proxy.port = this.secureProxy ? 443 : 80;
+ }
+ if (proxy.host && proxy.path) {
+ // If both a `host` and `path` are specified then it's most likely
+ // the result of a `url.parse()` call... we need to remove the
+ // `path` portion so that `net.connect()` doesn't attempt to open
+ // that as a Unix socket file.
+ delete proxy.path;
+ delete proxy.pathname;
+ }
+ this.proxy = proxy;
+ }
+ /**
+ * Called when the node-core HTTP client library is creating a
+ * new HTTP request.
+ *
+ * @api protected
+ */
+ callback(req, opts) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const { proxy, secureProxy } = this;
+ const parsed = url_1.default.parse(req.path);
+ if (!parsed.protocol) {
+ parsed.protocol = 'http:';
+ }
+ if (!parsed.hostname) {
+ parsed.hostname = opts.hostname || opts.host || null;
+ }
+ if (parsed.port == null && typeof opts.port) {
+ parsed.port = String(opts.port);
+ }
+ if (parsed.port === '80') {
+ // if port is 80, then we can remove the port so that the
+ // ":80" portion is not on the produced URL
+ parsed.port = '';
+ }
+ // Change the `http.ClientRequest` instance's "path" field
+ // to the absolute path of the URL that will be requested.
+ req.path = url_1.default.format(parsed);
+ // Inject the `Proxy-Authorization` header if necessary.
+ if (proxy.auth) {
+ req.setHeader('Proxy-Authorization', `Basic ${Buffer.from(proxy.auth).toString('base64')}`);
+ }
+ // Create a socket connection to the proxy server.
+ let socket;
+ if (secureProxy) {
+ debug('Creating `tls.Socket`: %o', proxy);
+ socket = tls_1.default.connect(proxy);
+ }
+ else {
+ debug('Creating `net.Socket`: %o', proxy);
+ socket = net_1.default.connect(proxy);
+ }
+ // At this point, the http ClientRequest's internal `_header` field
+ // might have already been set. If this is the case then we'll need
+ // to re-generate the string since we just changed the `req.path`.
+ if (req._header) {
+ let first;
+ let endOfHeaders;
+ debug('Regenerating stored HTTP header string for request');
+ req._header = null;
+ req._implicitHeader();
+ if (req.output && req.output.length > 0) {
+ // Node < 12
+ debug('Patching connection write() output buffer with updated header');
+ first = req.output[0];
+ endOfHeaders = first.indexOf('\r\n\r\n') + 4;
+ req.output[0] = req._header + first.substring(endOfHeaders);
+ debug('Output buffer: %o', req.output);
+ }
+ else if (req.outputData && req.outputData.length > 0) {
+ // Node >= 12
+ debug('Patching connection write() output buffer with updated header');
+ first = req.outputData[0].data;
+ endOfHeaders = first.indexOf('\r\n\r\n') + 4;
+ req.outputData[0].data =
+ req._header + first.substring(endOfHeaders);
+ debug('Output buffer: %o', req.outputData[0].data);
+ }
+ }
+ // Wait for the socket's `connect` event, so that this `callback()`
+ // function throws instead of the `http` request machinery. This is
+ // important for i.e. `PacProxyAgent` which determines a failed proxy
+ // connection via the `callback()` function throwing.
+ yield (0, once_1.default)(socket, 'connect');
+ return socket;
+ });
+ }
+}
+exports.default = HttpProxyAgent;
+//# sourceMappingURL=agent.js.map \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js.map b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js.map
new file mode 100644
index 00000000..bd3b56aa
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/agent.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,8CAAsB;AACtB,8CAAsB;AACtB,kDAAgC;AAChC,6DAAqC;AACrC,2CAAkE;AAGlE,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,kBAAkB,CAAC,CAAC;AAY9C,SAAS,OAAO,CAAC,QAAwB;IACxC,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAqB,cAAe,SAAQ,kBAAK;IAIhD,YAAY,KAAqC;QAChD,IAAI,IAA2B,CAAC;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,IAAI,GAAG,aAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;aAAM;YACN,IAAI,GAAG,KAAK,CAAC;SACb;QACD,IAAI,CAAC,IAAI,EAAE;YACV,MAAM,IAAI,KAAK,CACd,8DAA8D,CAC9D,CAAC;SACF;QACD,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,MAAM,KAAK,qBAA+B,IAAI,CAAE,CAAC;QAEjD,wDAAwD;QACxD,uBAAuB;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE/D,+DAA+D;QAC/D,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;QAC1C,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACnC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAC9B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAC7B,kEAAkE;YAClE,8DAA8D;YAC9D,iEAAiE;YACjE,8BAA8B;YAC9B,OAAO,KAAK,CAAC,IAAI,CAAC;YAClB,OAAO,KAAK,CAAC,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACG,QAAQ,CACb,GAAgC,EAChC,IAAoB;;YAEpB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YACpC,MAAM,MAAM,GAAG,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACrB,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;aAC1B;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;aACrD;YAED,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE;gBAC5C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;gBACzB,yDAAyD;gBACzD,2CAA2C;gBAC3C,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;aACjB;YAED,0DAA0D;YAC1D,0DAA0D;YAC1D,GAAG,CAAC,IAAI,GAAG,aAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE9B,wDAAwD;YACxD,IAAI,KAAK,CAAC,IAAI,EAAE;gBACf,GAAG,CAAC,SAAS,CACZ,qBAAqB,EACrB,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CACrD,CAAC;aACF;YAED,kDAAkD;YAClD,IAAI,MAAkB,CAAC;YACvB,IAAI,WAAW,EAAE;gBAChB,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,KAA8B,CAAC,CAAC;aACrD;iBAAM;gBACN,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,KAA2B,CAAC,CAAC;aAClD;YAED,mEAAmE;YACnE,mEAAmE;YACnE,kEAAkE;YAClE,IAAI,GAAG,CAAC,OAAO,EAAE;gBAChB,IAAI,KAAa,CAAC;gBAClB,IAAI,YAAoB,CAAC;gBACzB,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBAC5D,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACnB,GAAG,CAAC,eAAe,EAAE,CAAC;gBACtB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxC,YAAY;oBACZ,KAAK,CACJ,+DAA+D,CAC/D,CAAC;oBACF,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtB,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC7C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC5D,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;iBACvC;qBAAM,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvD,aAAa;oBACb,KAAK,CACJ,+DAA+D,CAC/D,CAAC;oBACF,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC/B,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC7C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;wBACrB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC7C,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACnD;aACD;YAED,mEAAmE;YACnE,mEAAmE;YACnE,qEAAqE;YACrE,qDAAqD;YACrD,MAAM,IAAA,cAAI,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAE9B,OAAO,MAAM,CAAC;QACf,CAAC;KAAA;CACD;AA1ID,iCA0IC"} \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.d.ts b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.d.ts
new file mode 100644
index 00000000..24bdb52e
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.d.ts
@@ -0,0 +1,21 @@
+/// <reference types="node" />
+import net from 'net';
+import tls from 'tls';
+import { Url } from 'url';
+import { AgentOptions } from 'agent-base';
+import _HttpProxyAgent from './agent';
+declare function createHttpProxyAgent(opts: string | createHttpProxyAgent.HttpProxyAgentOptions): _HttpProxyAgent;
+declare namespace createHttpProxyAgent {
+ interface BaseHttpProxyAgentOptions {
+ secureProxy?: boolean;
+ host?: string | null;
+ path?: string | null;
+ port?: string | number | null;
+ }
+ export interface HttpProxyAgentOptions extends AgentOptions, BaseHttpProxyAgentOptions, Partial<Omit<Url & net.NetConnectOpts & tls.ConnectionOptions, keyof BaseHttpProxyAgentOptions>> {
+ }
+ export type HttpProxyAgent = _HttpProxyAgent;
+ export const HttpProxyAgent: typeof _HttpProxyAgent;
+ export {};
+}
+export = createHttpProxyAgent;
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js
new file mode 100644
index 00000000..0a711805
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js
@@ -0,0 +1,14 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+const agent_1 = __importDefault(require("./agent"));
+function createHttpProxyAgent(opts) {
+ return new agent_1.default(opts);
+}
+(function (createHttpProxyAgent) {
+ createHttpProxyAgent.HttpProxyAgent = agent_1.default;
+ createHttpProxyAgent.prototype = agent_1.default.prototype;
+})(createHttpProxyAgent || (createHttpProxyAgent = {}));
+module.exports = createHttpProxyAgent;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js.map b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js.map
new file mode 100644
index 00000000..e07dae5b
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAIA,oDAAsC;AAEtC,SAAS,oBAAoB,CAC5B,IAAyD;IAEzD,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,WAAU,oBAAoB;IAmBhB,mCAAc,GAAG,eAAe,CAAC;IAE9C,oBAAoB,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AAC5D,CAAC,EAtBS,oBAAoB,KAApB,oBAAoB,QAsB7B;AAED,iBAAS,oBAAoB,CAAC"} \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/package.json b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/package.json
new file mode 100644
index 00000000..659d6e11
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/http-proxy-agent/package.json
@@ -0,0 +1,57 @@
+{
+ "name": "http-proxy-agent",
+ "version": "5.0.0",
+ "description": "An HTTP(s) proxy `http.Agent` implementation for HTTP",
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "prebuild": "rimraf dist",
+ "build": "tsc",
+ "test": "mocha",
+ "test-lint": "eslint src --ext .js,.ts",
+ "prepublishOnly": "npm run build"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/TooTallNate/node-http-proxy-agent.git"
+ },
+ "keywords": [
+ "http",
+ "proxy",
+ "endpoint",
+ "agent"
+ ],
+ "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/TooTallNate/node-http-proxy-agent/issues"
+ },
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "devDependencies": {
+ "@types/debug": "4",
+ "@types/node": "^12.19.2",
+ "@typescript-eslint/eslint-plugin": "1.6.0",
+ "@typescript-eslint/parser": "1.1.0",
+ "eslint": "5.16.0",
+ "eslint-config-airbnb": "17.1.0",
+ "eslint-config-prettier": "4.1.0",
+ "eslint-import-resolver-typescript": "1.1.1",
+ "eslint-plugin-import": "2.16.0",
+ "eslint-plugin-jsx-a11y": "6.2.1",
+ "eslint-plugin-react": "7.12.4",
+ "mocha": "^6.2.2",
+ "proxy": "1",
+ "rimraf": "^3.0.0",
+ "typescript": "^4.4.3"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/LICENSE b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/LICENSE
new file mode 100644
index 00000000..9b58a3e0
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) 2010-2022 Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/README.md b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/README.md
new file mode 100644
index 00000000..8fe5ee71
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/README.md
@@ -0,0 +1,527 @@
+# lru-cache
+
+A cache object that deletes the least-recently-used items.
+
+Specify a max number of the most recently used items that you want to keep,
+and this cache will keep that many of the most recently accessed items.
+
+This is not primarily a TTL cache, and does not make strong TTL guarantees.
+There is no preemptive pruning of expired items, but you _may_ set a TTL
+on the cache or on a single `set`. If you do so, it will treat expired
+items as missing, and delete them when fetched.
+
+As of version 7, this is one of the most performant LRU implementations
+available in JavaScript, and supports a wide diversity of use cases.
+However, note that using some of the features will necessarily impact
+performance, by causing the cache to have to do more work. See the
+"Performance" section below.
+
+## Installation
+
+```bash
+npm install lru-cache --save
+```
+
+## Usage
+
+```js
+const LRU = require('lru-cache')
+
+// only 'max' is required, the others are optional, but MAY be
+// required if certain other fields are set.
+const options = {
+ // the number of most recently used items to keep.
+ // note that we may store fewer items than this if maxSize is hit.
+
+ max: 500, // <-- mandatory, you must give a maximum capacity
+
+ // if you wish to track item size, you must provide a maxSize
+ // note that we still will only keep up to max *actual items*,
+ // so size tracking may cause fewer than max items to be stored.
+ // At the extreme, a single item of maxSize size will cause everything
+ // else in the cache to be dropped when it is added. Use with caution!
+ // Note also that size tracking can negatively impact performance,
+ // though for most cases, only minimally.
+ maxSize: 5000,
+
+ // function to calculate size of items. useful if storing strings or
+ // buffers or other items where memory size depends on the object itself.
+ // also note that oversized items do NOT immediately get dropped from
+ // the cache, though they will cause faster turnover in the storage.
+ sizeCalculation: (value, key) => {
+ // return an positive integer which is the size of the item,
+ // if a positive integer is not returned, will use 0 as the size.
+ return 1
+ },
+
+ // function to call when the item is removed from the cache
+ // Note that using this can negatively impact performance.
+ dispose: (value, key) => {
+ freeFromMemoryOrWhatever(value)
+ },
+
+ // max time to live for items before they are considered stale
+ // note that stale items are NOT preemptively removed by default,
+ // and MAY live in the cache, contributing to its LRU max, long after
+ // they have expired.
+ // Also, as this cache is optimized for LRU/MRU operations, some of
+ // the staleness/TTL checks will reduce performance, as they will incur
+ // overhead by deleting items.
+ // Must be a positive integer in ms, defaults to 0, which means "no TTL"
+ ttl: 1000 * 60 * 5,
+
+ // return stale items from cache.get() before disposing of them
+ // boolean, default false
+ allowStale: false,
+
+ // update the age of items on cache.get(), renewing their TTL
+ // boolean, default false
+ updateAgeOnGet: false,
+
+ // update the age of items on cache.has(), renewing their TTL
+ // boolean, default false
+ updateAgeOnHas: false,
+
+ // update the "recently-used"-ness of items on cache.has()
+ // boolean, default false
+ updateRecencyOnHas: false,
+}
+
+const cache = new LRU(options)
+
+cache.set("key", "value")
+cache.get("key") // "value"
+
+// non-string keys ARE fully supported
+// but note that it must be THE SAME object, not
+// just a JSON-equivalent object.
+var someObject = { a: 1 }
+cache.set(someObject, 'a value')
+// Object keys are not toString()-ed
+cache.set('[object Object]', 'a different value')
+assert.equal(cache.get(someObject), 'a value')
+// A similar object with same keys/values won't work,
+// because it's a different object identity
+assert.equal(cache.get({ a: 1 }), undefined)
+
+cache.clear() // empty the cache
+```
+
+If you put more stuff in it, then items will fall out.
+
+## Options
+
+* `max` - The maximum number (or size) of items that remain in the cache
+ (assuming no TTL pruning or explicit deletions). Note that fewer items
+ may be stored if size calculation is used, and `maxSize` is exceeded.
+ This must be a positive finite intger.
+
+ This option is required, and must be a positive integer.
+
+* `maxSize` - Set to a positive integer to track the sizes of items added
+ to the cache, and automatically evict items in order to stay below this
+ size. Note that this may result in fewer than `max` items being stored.
+
+ Optional, must be a positive integer if provided. Required if other
+ size tracking features are used.
+
+* `sizeCalculation` - Function used to calculate the size of stored
+ items. If you're storing strings or buffers, then you probably want to
+ do something like `n => n.length`. The item is passed as the first
+ argument, and the key is passed as the second argument.
+
+ This may be overridden by passing an options object to `cache.set()`.
+
+ Requires `maxSize` to be set.
+
+ Deprecated alias: `length`
+
+* `dispose` Function that is called on items when they are dropped
+ from the cache, as `this.dispose(value, key, reason)`.
+
+ This can be handy if you want to close file descriptors or do other
+ cleanup tasks when items are no longer stored in the cache.
+
+ **NOTE**: It is called *before* the item has been fully removed from
+ the cache, so if you want to put it right back in, you need to wait
+ until the next tick. If you try to add it back in during the
+ `dispose()` function call, it will break things in subtle and weird
+ ways.
+
+ Unlike several other options, this may _not_ be overridden by passing
+ an option to `set()`, for performance reasons. If disposal functions
+ may vary between cache entries, then the entire list must be scanned
+ on every cache swap, even if no disposal function is in use.
+
+ The `reason` will be one of the following strings, corresponding to the
+ reason for the item's deletion:
+
+ * `evict` Item was evicted to make space for a new addition
+ * `set` Item was overwritten by a new value
+ * `delete` Item was removed by explicit `cache.delete(key)` or by
+ calling `cache.clear()`, which deletes everything.
+
+ Optional, must be a function.
+
+* `disposeAfter` The same as `dispose`, but called _after_ the entry is
+ completely removed and the cache is once again in a clean state.
+
+ It is safe to add an item right back into the cache at this point.
+ However, note that it is _very_ easy to inadvertently create infinite
+ recursion in this way.
+
+* `noDisposeOnSet` Set to `true` to suppress calling the `dispose()`
+ function if the entry key is still accessible within the cache.
+
+ This may be overridden by passing an options object to `cache.set()`.
+
+ Boolean, default `false`. Only relevant if `dispose` or `disposeAfter`
+ options are set.
+
+* `ttl` - max time to live for items before they are considered stale.
+ Note that stale items are NOT preemptively removed by default, and MAY
+ live in the cache, contributing to its LRU max, long after they have
+ expired.
+
+ Also, as this cache is optimized for LRU/MRU operations, some of
+ the staleness/TTL checks will reduce performance, as they will incur
+ overhead by deleting from Map objects rather than simply throwing old
+ Map objects away.
+
+ This is not primarily a TTL cache, and does not make strong TTL
+ guarantees. There is no pre-emptive pruning of expired items, but you
+ _may_ set a TTL on the cache, and it will treat expired items as missing
+ when they are fetched, and delete them.
+
+ Optional, but must be a positive integer in ms if specified.
+
+ This may be overridden by passing an options object to `cache.set()`.
+
+ Deprecated alias: `maxAge`
+
+* `noUpdateTTL` - Boolean flag to tell the cache to not update the TTL when
+ setting a new value for an existing key (ie, when updating a value rather
+ than inserting a new value). Note that the TTL value is _always_ set
+ (if provided) when adding a new entry into the cache.
+
+ This may be passed as an option to `cache.set()`.
+
+ Boolean, default false.
+
+* `ttlResolution` - Minimum amount of time in ms in which to check for
+ staleness. Defaults to `1`, which means that the current time is checked
+ at most once per millisecond.
+
+ Set to `0` to check the current time every time staleness is tested.
+
+ Note that setting this to a higher value _will_ improve performance
+ somewhat while using ttl tracking, albeit at the expense of keeping
+ stale items around a bit longer than intended.
+
+* `ttlAutopurge` - Preemptively remove stale items from the cache.
+
+ Note that this may _significantly_ degrade performance, especially if
+ the cache is storing a large number of items. It is almost always best
+ to just leave the stale items in the cache, and let them fall out as
+ new items are added.
+
+ Note that this means that `allowStale` is a bit pointless, as stale
+ items will be deleted almost as soon as they expire.
+
+ Use with caution!
+
+ Boolean, default `false`
+
+* `allowStale` - By default, if you set `ttl`, it'll only delete stale
+ items from the cache when you `get(key)`. That is, it's not
+ preemptively pruning items.
+
+ If you set `allowStale:true`, it'll return the stale value as well as
+ deleting it. If you don't set this, then it'll return `undefined` when
+ you try to get a stale entry.
+
+ Note that when a stale entry is fetched, _even if it is returned due to
+ `allowStale` being set_, it is removed from the cache immediately. You
+ can immediately put it back in the cache if you wish, thus resetting the
+ TTL.
+
+ This may be overridden by passing an options object to `cache.get()`.
+ The `cache.has()` method will always return `false` for stale items.
+
+ Boolean, default false, only relevant if `ttl` is set.
+
+ Deprecated alias: `stale`
+
+* `updateAgeOnGet` - When using time-expiring entries with `ttl`, setting
+ this to `true` will make each item's age reset to 0 whenever it is
+ retrieved from cache with `get()`, causing it to not expire. (It can
+ still fall out of cache based on recency of use, of course.)
+
+ This may be overridden by passing an options object to `cache.get()`.
+
+ Boolean, default false, only relevant if `ttl` is set.
+
+## API
+
+* `new LRUCache(options)`
+
+ Create a new LRUCache. All options are documented above, and are on
+ the cache as public members.
+
+* `cache.max`, `cache.maxSize`, `cache.allowStale`, `cache.noDisposeOnSet`,
+ `cache.sizeCalculation`, `cache.dispose`, `cache.maxSize`, `cache.ttl`,
+ `cache.updateAgeOnGet`
+
+ All option names are exposed as public members on the cache object.
+
+ These are intended for read access only. Changing them during program
+ operation can cause undefined behavior.
+
+* `cache.size`
+
+ The total number of items held in the cache at the current moment.
+
+* `cache.calculatedSize`
+
+ The total size of items in cache when using size tracking.
+
+* `set(key, value, [{ size, sizeCalculation, ttl, noDisposeOnSet }])`
+
+ Add a value to the cache.
+
+ Optional options object may contain `ttl` and `sizeCalculation` as
+ described above, which default to the settings on the cache object.
+
+ Options object my also include `size`, which will prevent calling the
+ `sizeCalculation` function and just use the specified number if it is a
+ positive integer, and `noDisposeOnSet` which will prevent calling a
+ `dispose` function in the case of overwrites.
+
+ Will update the recency of the entry.
+
+ Returns the cache object.
+
+* `get(key, { updateAgeOnGet, allowStale } = {}) => value`
+
+ Return a value from the cache.
+
+ Will update the recency of the cache entry found.
+
+ If the key is not found, `get()` will return `undefined`. This can be
+ confusing when setting values specifically to `undefined`, as in
+ `cache.set(key, undefined)`. Use `cache.has()` to determine whether a
+ key is present in the cache at all.
+
+* `peek(key, { allowStale } = {}) => value`
+
+ Like `get()` but doesn't update recency or delete stale items.
+
+ Returns `undefined` if the item is stale, unless `allowStale` is set
+ either on the cache or in the options object.
+
+* `has(key)`
+
+ Check if a key is in the cache, without updating the recency or age.
+
+ Will return `false` if the item is stale, even though it is technically
+ in the cache.
+
+* `delete(key)`
+
+ Deletes a key out of the cache.
+
+ Returns `true` if the key was deleted, `false` otherwise.
+
+* `clear()`
+
+ Clear the cache entirely, throwing away all values.
+
+ Deprecated alias: `reset()`
+
+* `keys()`
+
+ Return a generator yielding the keys in the cache.
+
+* `values()`
+
+ Return a generator yielding the values in the cache.
+
+* `entries()`
+
+ Return a generator yielding `[key, value]` pairs.
+
+* `find(fn, [getOptions])`
+
+ Find a value for which the supplied `fn` method returns a truthy value,
+ similar to `Array.find()`.
+
+ `fn` is called as `fn(value, key, cache)`.
+
+ The optional `getOptions` are applied to the resulting `get()` of the
+ item found.
+
+* `dump()`
+
+ Return an array of `[key, entry]` objects which can be passed to
+ `cache.load()`
+
+ Note: this returns an actual array, not a generator, so it can be more
+ easily passed around.
+
+* `load(entries)`
+
+ Reset the cache and load in the items in `entries` in the order listed.
+ Note that the shape of the resulting cache may be different if the same
+ options are not used in both caches.
+
+* `purgeStale()`
+
+ Delete any stale entries. Returns `true` if anything was removed,
+ `false` otherwise.
+
+ Deprecated alias: `prune`
+
+* `forEach(fn, [thisp])`
+
+ Call the `fn` function with each set of `fn(value, key, cache)` in the
+ LRU cache, from most recent to least recently used.
+
+ Does not affect recency of use.
+
+ If `thisp` is provided, function will be called in the `this`-context
+ of the provided object.
+
+* `rforEach(fn, [thisp])`
+
+ Same as `cache.forEach(fn, thisp)`, but in order from least recently
+ used to most recently used.
+
+* `pop()`
+
+ Evict the least recently used item, returning its value.
+
+ Returns `undefined` if cache is empty.
+
+### Internal Methods and Properties
+
+In order to optimize performance as much as possible, "private" members and
+methods are exposed on the object as normal properties, rather than being
+accessed via Symbols, private members, or closure variables.
+
+**Do not use or rely on these.** They will change or be removed without
+notice. They will cause undefined behavior if used inappropriately. There
+is no need or reason to ever call them directly.
+
+This documentation is here so that it is especially clear that this not
+"undocumented" because someone forgot; it _is_ documented, and the
+documentation is telling you not to do it.
+
+**Do not report bugs that stem from using these properties.** They will be
+ignored.
+
+* `initializeTTLTracking()` Set up the cache for tracking TTLs
+* `updateItemAge(index)` Called when an item age is updated, by internal ID
+* `setItemTTL(index)` Called when an item ttl is updated, by internal ID
+* `isStale(index)` Called to check an item's staleness, by internal ID
+* `initializeSizeTracking()` Set up the cache for tracking item size.
+ Called automatically when a size is specified.
+* `removeItemSize(index)` Updates the internal size calculation when an
+ item is removed or modified, by internal ID
+* `addItemSize(index)` Updates the internal size calculation when an item
+ is added or modified, by internal ID
+* `indexes()` An iterator over the non-stale internal IDs, from most
+ recently to least recently used.
+* `rindexes()` An iterator over the non-stale internal IDs, from least
+ recently to most recently used.
+* `newIndex()` Create a new internal ID, either reusing a deleted ID,
+ evicting the least recently used ID, or walking to the end of the
+ allotted space.
+* `evict()` Evict the least recently used internal ID, returning its ID.
+ Does not do any bounds checking.
+* `connect(p, n)` Connect the `p` and `n` internal IDs in the linked list.
+* `moveToTail(index)` Move the specified internal ID to the most recently
+ used position.
+* `keyMap` Map of keys to internal IDs
+* `keyList` List of keys by internal ID
+* `valList` List of values by internal ID
+* `sizes` List of calculated sizes by internal ID
+* `ttls` List of TTL values by internal ID
+* `starts` List of start time values by internal ID
+* `next` Array of "next" pointers by internal ID
+* `prev` Array of "previous" pointers by internal ID
+* `head` Internal ID of least recently used item
+* `tail` Internal ID of most recently used item
+* `free` Stack of deleted internal IDs
+
+## Performance
+
+As of January 2022, version 7 of this library is one of the most performant
+LRU cache implementations in JavaScript.
+
+Benchmarks can be extremely difficult to get right. In particular, the
+performance of set/get/delete operations on objects will vary _wildly_
+depending on the type of key used. V8 is highly optimized for objects with
+keys that are short strings, especially integer numeric strings. Thus any
+benchmark which tests _solely_ using numbers as keys will tend to find that
+an object-based approach performs the best.
+
+Note that coercing _anything_ to strings to use as object keys is unsafe,
+unless you can be 100% certain that no other type of value will be used.
+For example:
+
+```js
+const myCache = {}
+const set = (k, v) => myCache[k] = v
+const get = (k) => myCache[k]
+
+set({}, 'please hang onto this for me')
+set('[object Object]', 'oopsie')
+```
+
+Also beware of "Just So" stories regarding performance. Garbage collection
+of large (especially: deep) object graphs can be incredibly costly, with
+several "tipping points" where it increases exponentially. As a result,
+putting that off until later can make it much worse, and less predictable.
+If a library performs well, but only in a scenario where the object graph is
+kept shallow, then that won't help you if you are using large objects as
+keys.
+
+In general, when attempting to use a library to improve performance (such
+as a cache like this one), it's best to choose an option that will perform
+well in the sorts of scenarios where you'll actually use it.
+
+This library is optimized for repeated gets and minimizing eviction time,
+since that is the expected need of a LRU. Set operations are somewhat
+slower on average than a few other options, in part because of that
+optimization. It is assumed that you'll be caching some costly operation,
+ideally as rarely as possible, so optimizing set over get would be unwise.
+
+If performance matters to you:
+
+1. If it's at all possible to use small integer values as keys, and you can
+ guarantee that no other types of values will be used as keys, then do
+ that, and use a cache such as
+ [lru-fast](https://npmjs.com/package/lru-fast), or [mnemonist's
+ LRUCache](https://yomguithereal.github.io/mnemonist/lru-cache) which
+ uses an Object as its data store.
+2. Failing that, if at all possible, use short non-numeric strings (ie,
+ less than 256 characters) as your keys, and use [mnemonist's
+ LRUCache](https://yomguithereal.github.io/mnemonist/lru-cache).
+3. If the types of your keys will be long strings, strings that look like
+ floats, `null`, objects, or some mix of types, or if you aren't sure,
+ then this library will work well for you.
+4. Do not use a `dispose` function, size tracking, or especially ttl
+ behavior, unless absolutely needed. These features are convenient, and
+ necessary in some use cases, and every attempt has been made to make the
+ performance impact minimal, but it isn't nothing.
+
+## Breaking Changes in Version 7
+
+This library changed to a different algorithm and internal data structure
+in version 7, yielding significantly better performance, albeit with
+some subtle changes as a result.
+
+If you were relying on the internals of LRUCache in version 6 or before, it
+probably will not work in version 7 and above.
+
+For more info, see the [change log](CHANGELOG.md).
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.js
new file mode 100644
index 00000000..7eef327e
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.js
@@ -0,0 +1 @@
+(()=>{var t={10:t=>{const i="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,s=new Set,e=(t,i)=>{const s=`LRU_CACHE_OPTION_${t}`;l(s)&&o(s,`${t} option`,`options.${i}`,d)},h=(t,i)=>{const s=`LRU_CACHE_METHOD_${t}`;if(l(s)){const{prototype:e}=d,{get:h}=Object.getOwnPropertyDescriptor(e,t);o(s,`${t} method`,`cache.${i}()`,h)}},l=t=>!(process.noDeprecation||s.has(t)),o=(t,i,e,h)=>{s.add(t),process.emitWarning(`The ${i} is deprecated. Please use ${e} instead.`,"DeprecationWarning",t,h)},n=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),a=t=>n(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?r:null:null;class r extends Array{constructor(t){super(t),this.fill(0)}}class p{constructor(t){const i=a(t);this.heap=new i(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}}class d{constructor(t={}){const{max:i,ttl:s,ttlResolution:h=1,ttlAutopurge:l,updateAgeOnGet:o,allowStale:r,dispose:c,disposeAfter:f,noDisposeOnSet:u,noUpdateTTL:z,maxSize:v,sizeCalculation:y}=t,{length:g,maxAge:m,stale:S}=t instanceof d?{}:t;if(!n(i))throw new TypeError("max option must be an integer");const x=a(i);if(!x)throw new Error("invalid max value: "+i);if(this.max=i,this.maxSize=v||0,this.sizeCalculation=y||g,this.sizeCalculation){if(!this.maxSize)throw new TypeError("cannot set sizeCalculation without setting maxSize");if("function"!=typeof this.sizeCalculation)throw new TypeError("sizeCalculating set to non-function")}if(this.keyMap=new Map,this.keyList=new Array(i).fill(null),this.valList=new Array(i).fill(null),this.next=new x(i),this.prev=new x(i),this.head=0,this.tail=0,this.free=new p(i),this.initialFill=1,this.size=0,"function"==typeof c&&(this.dispose=c),"function"==typeof f?(this.disposeAfter=f,this.disposed=[]):(this.disposeAfter=null,this.disposed=null),this.noDisposeOnSet=!!u,this.noUpdateTTL=!!z,this.maxSize){if(!n(this.maxSize))throw new TypeError("maxSize must be a positive integer if specified");this.initializeSizeTracking()}if(this.allowStale=!!r||!!S,this.updateAgeOnGet=!!o,this.ttlResolution=n(h)||0===h?h:1,this.ttlAutopurge=!!l,this.ttl=s||m||0,this.ttl){if(!n(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.initializeTTLTracking()}S&&e("stale","allowStale"),m&&e("maxAge","ttl"),g&&e("length","sizeCalculation")}initializeTTLTracking(){this.ttls=new r(this.max),this.starts=new r(this.max),this.setItemTTL=(t,s)=>{if(this.starts[t]=0!==s?i.now():0,this.ttls[t]=s,0!==s&&this.ttlAutopurge){const i=setTimeout((()=>{this.isStale(t)&&this.delete(this.keyList[t])}),s+1);i.unref&&i.unref()}},this.updateItemAge=t=>{this.starts[t]=0!==this.ttls[t]?i.now():0};let t=0;const s=()=>{const s=i.now();if(this.ttlResolution>0){t=s;const i=setTimeout((()=>t=0),this.ttlResolution);i.unref&&i.unref()}return s};this.isStale=i=>0!==this.ttls[i]&&0!==this.starts[i]&&(t||s())-this.starts[i]>this.ttls[i]}updateItemAge(t){}setItemTTL(t,i){}isStale(t){return!1}initializeSizeTracking(){this.calculatedSize=0,this.sizes=new r(this.max),this.removeItemSize=t=>this.calculatedSize-=this.sizes[t],this.addItemSize=(t,i,s,e,h)=>{const l=e||(h?h(i,s):0);this.sizes[t]=n(l)?l:0;const o=this.maxSize-this.sizes[t];for(;this.calculatedSize>o;)this.evict();this.calculatedSize+=this.sizes[t]},this.delete=t=>{if(0!==this.size){const i=this.keyMap.get(t);void 0!==i&&(this.calculatedSize-=this.sizes[i])}return d.prototype.delete.call(this,t)}}removeItemSize(t){}addItemSize(t,i,s,e,h){}*indexes(){if(this.size)for(let t=this.tail;this.isStale(t)||(yield t),t!==this.head;t=this.prev[t]);}*rindexes(){if(this.size)for(let t=this.head;this.isStale(t)||(yield t),t!==this.tail;t=this.next[t]);}*entries(){for(const t of this.indexes())yield[this.keyList[t],this.valList[t]]}*keys(){for(const t of this.indexes())yield this.keyList[t]}*values(){for(const t of this.indexes())yield this.valList[t]}[Symbol.iterator](){return this.entries()}find(t,i={}){for(const s of this.indexes())if(t(this.valList[s],this.keyList[s],this))return this.get(this.keyList[s],i)}forEach(t,i=this){for(const s of this.indexes())t.call(i,this.valList[s],this.keyList[s],this)}rforEach(t,i=this){for(const s of this.rindexes())t.call(i,this.valList[s],this.keyList[s],this)}get prune(){return h("prune","purgeStale"),this.purgeStale}purgeStale(){let t=!1;if(this.size)for(let i=this.head;;i=this.next[i]){const s=i===this.tail;if(this.isStale(i)&&(this.delete(this.keyList[i]),t=!0),s)break}return t}dump(){const t=[];for(const i of this.indexes()){const s=this.keyList[i],e={value:this.valList[i]};this.ttls&&(e.ttl=this.ttls[i]),this.sizes&&(e.size=this.sizes[i]),t.unshift([s,e])}return t}load(t){this.clear();for(const[i,s]of t)this.set(i,s.value,s)}dispose(t,i,s){}set(t,i,{ttl:s=this.ttl,noDisposeOnSet:e=this.noDisposeOnSet,size:h=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:o=this.noUpdateTTL}={}){let n=0===this.size?void 0:this.keyMap.get(t);if(void 0===n)n=this.newIndex(),this.keyList[n]=t,this.valList[n]=i,this.keyMap.set(t,n),this.next[this.tail]=n,this.prev[n]=this.tail,this.tail=n,this.size++,this.addItemSize(n,i,t,h,l),o=!1;else{const s=this.valList[n];i!==s&&(e||(this.dispose(s,t,"set"),this.disposeAfter&&this.disposed.push([s,t,"set"])),this.removeItemSize(n),this.valList[n]=i,this.addItemSize(n,i,t,h,l)),this.moveToTail(n)}if(0===s||0!==this.ttl||this.ttls||this.initializeTTLTracking(),o||this.setItemTTL(n,s),this.disposeAfter)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return this}newIndex(){return 0===this.size?this.tail:this.size===this.max?this.evict():0!==this.free.length?this.free.pop():this.initialFill++}pop(){if(this.size){const t=this.valList[this.head];return this.evict(),t}}evict(){const t=this.head,i=this.keyList[t],s=this.valList[t];return this.dispose(s,i,"evict"),this.disposeAfter&&this.disposed.push([s,i,"evict"]),this.removeItemSize(t),this.head=this.next[t],this.keyMap.delete(i),this.size--,t}has(t){return this.keyMap.has(t)&&!this.isStale(this.keyMap.get(t))}peek(t,{allowStale:i=this.allowStale}={}){const s=this.keyMap.get(t);if(void 0!==s&&(i||!this.isStale(s)))return this.valList[s]}get(t,{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet}={}){const e=this.keyMap.get(t);if(void 0!==e){if(this.isStale(e)){const s=i?this.valList[e]:void 0;return this.delete(t),s}return this.moveToTail(e),s&&this.updateItemAge(e),this.valList[e]}}connect(t,i){this.prev[i]=t,this.next[t]=i}moveToTail(t){t!==this.tail&&(t===this.head?this.head=this.next[t]:this.connect(this.prev[t],this.next[t]),this.connect(this.tail,t),this.tail=t)}get del(){return h("del","delete"),this.delete}delete(t){let i=!1;if(0!==this.size){const s=this.keyMap.get(t);void 0!==s&&(i=!0,1===this.size?this.clear():(this.removeItemSize(s),this.dispose(this.valList[s],t,"delete"),this.disposeAfter&&this.disposed.push([this.valList[s],t,"delete"]),this.keyMap.delete(t),this.keyList[s]=null,this.valList[s]=null,s===this.tail?this.tail=this.prev[s]:s===this.head?this.head=this.next[s]:(this.next[this.prev[s]]=this.next[s],this.prev[this.next[s]]=this.prev[s]),this.size--,this.free.push(s)))}if(this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return i}clear(){if(this.dispose!==d.prototype.dispose)for(const t of this.rindexes())this.dispose(this.valList[t],this.keyList[t],"delete");if(this.disposeAfter)for(const t of this.rindexes())this.disposed.push([this.valList[t],this.keyList[t],"delete"]);if(this.keyMap.clear(),this.valList.fill(null),this.keyList.fill(null),this.ttls&&(this.ttls.fill(0),this.starts.fill(0)),this.sizes&&this.sizes.fill(0),this.head=0,this.tail=0,this.initialFill=1,this.free.length=0,this.calculatedSize=0,this.size=0,this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift())}get reset(){return h("reset","clear"),this.clear}get length(){return((t,i)=>{const s="LRU_CACHE_PROPERTY_length";if(l(s)){const{prototype:i}=d,{get:e}=Object.getOwnPropertyDescriptor(i,t);o(s,"length property","cache.size",e)}})("length"),this.size}}t.exports=d}},i={},s=function s(e){var h=i[e];if(void 0!==h)return h.exports;var l=i[e]={exports:{}};return t[e](l,l.exports,s),l.exports}(10);module.exports=s})(); \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.mjs b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.mjs
new file mode 100644
index 00000000..3a4d674c
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/bundle/main.mjs
@@ -0,0 +1 @@
+var t={10:t=>{const i="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,s=new Set,e=(t,i)=>{const s=`LRU_CACHE_OPTION_${t}`;l(s)&&o(s,`${t} option`,`options.${i}`,d)},h=(t,i)=>{const s=`LRU_CACHE_METHOD_${t}`;if(l(s)){const{prototype:e}=d,{get:h}=Object.getOwnPropertyDescriptor(e,t);o(s,`${t} method`,`cache.${i}()`,h)}},l=t=>!(process.noDeprecation||s.has(t)),o=(t,i,e,h)=>{s.add(t),process.emitWarning(`The ${i} is deprecated. Please use ${e} instead.`,"DeprecationWarning",t,h)},n=t=>t&&t===Math.floor(t)&&t>0&&isFinite(t),a=t=>n(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?r:null:null;class r extends Array{constructor(t){super(t),this.fill(0)}}class p{constructor(t){const i=a(t);this.heap=new i(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}}class d{constructor(t={}){const{max:i,ttl:s,ttlResolution:h=1,ttlAutopurge:l,updateAgeOnGet:o,allowStale:r,dispose:c,disposeAfter:f,noDisposeOnSet:u,noUpdateTTL:z,maxSize:v,sizeCalculation:y}=t,{length:g,maxAge:m,stale:S}=t instanceof d?{}:t;if(!n(i))throw new TypeError("max option must be an integer");const L=a(i);if(!L)throw new Error("invalid max value: "+i);if(this.max=i,this.maxSize=v||0,this.sizeCalculation=y||g,this.sizeCalculation){if(!this.maxSize)throw new TypeError("cannot set sizeCalculation without setting maxSize");if("function"!=typeof this.sizeCalculation)throw new TypeError("sizeCalculating set to non-function")}if(this.keyMap=new Map,this.keyList=new Array(i).fill(null),this.valList=new Array(i).fill(null),this.next=new L(i),this.prev=new L(i),this.head=0,this.tail=0,this.free=new p(i),this.initialFill=1,this.size=0,"function"==typeof c&&(this.dispose=c),"function"==typeof f?(this.disposeAfter=f,this.disposed=[]):(this.disposeAfter=null,this.disposed=null),this.noDisposeOnSet=!!u,this.noUpdateTTL=!!z,this.maxSize){if(!n(this.maxSize))throw new TypeError("maxSize must be a positive integer if specified");this.initializeSizeTracking()}if(this.allowStale=!!r||!!S,this.updateAgeOnGet=!!o,this.ttlResolution=n(h)||0===h?h:1,this.ttlAutopurge=!!l,this.ttl=s||m||0,this.ttl){if(!n(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.initializeTTLTracking()}S&&e("stale","allowStale"),m&&e("maxAge","ttl"),g&&e("length","sizeCalculation")}initializeTTLTracking(){this.ttls=new r(this.max),this.starts=new r(this.max),this.setItemTTL=(t,s)=>{if(this.starts[t]=0!==s?i.now():0,this.ttls[t]=s,0!==s&&this.ttlAutopurge){const i=setTimeout((()=>{this.isStale(t)&&this.delete(this.keyList[t])}),s+1);i.unref&&i.unref()}},this.updateItemAge=t=>{this.starts[t]=0!==this.ttls[t]?i.now():0};let t=0;const s=()=>{const s=i.now();if(this.ttlResolution>0){t=s;const i=setTimeout((()=>t=0),this.ttlResolution);i.unref&&i.unref()}return s};this.isStale=i=>0!==this.ttls[i]&&0!==this.starts[i]&&(t||s())-this.starts[i]>this.ttls[i]}updateItemAge(t){}setItemTTL(t,i){}isStale(t){return!1}initializeSizeTracking(){this.calculatedSize=0,this.sizes=new r(this.max),this.removeItemSize=t=>this.calculatedSize-=this.sizes[t],this.addItemSize=(t,i,s,e,h)=>{const l=e||(h?h(i,s):0);this.sizes[t]=n(l)?l:0;const o=this.maxSize-this.sizes[t];for(;this.calculatedSize>o;)this.evict();this.calculatedSize+=this.sizes[t]},this.delete=t=>{if(0!==this.size){const i=this.keyMap.get(t);void 0!==i&&(this.calculatedSize-=this.sizes[i])}return d.prototype.delete.call(this,t)}}removeItemSize(t){}addItemSize(t,i,s,e,h){}*indexes(){if(this.size)for(let t=this.tail;this.isStale(t)||(yield t),t!==this.head;t=this.prev[t]);}*rindexes(){if(this.size)for(let t=this.head;this.isStale(t)||(yield t),t!==this.tail;t=this.next[t]);}*entries(){for(const t of this.indexes())yield[this.keyList[t],this.valList[t]]}*keys(){for(const t of this.indexes())yield this.keyList[t]}*values(){for(const t of this.indexes())yield this.valList[t]}[Symbol.iterator](){return this.entries()}find(t,i={}){for(const s of this.indexes())if(t(this.valList[s],this.keyList[s],this))return this.get(this.keyList[s],i)}forEach(t,i=this){for(const s of this.indexes())t.call(i,this.valList[s],this.keyList[s],this)}rforEach(t,i=this){for(const s of this.rindexes())t.call(i,this.valList[s],this.keyList[s],this)}get prune(){return h("prune","purgeStale"),this.purgeStale}purgeStale(){let t=!1;if(this.size)for(let i=this.head;;i=this.next[i]){const s=i===this.tail;if(this.isStale(i)&&(this.delete(this.keyList[i]),t=!0),s)break}return t}dump(){const t=[];for(const i of this.indexes()){const s=this.keyList[i],e={value:this.valList[i]};this.ttls&&(e.ttl=this.ttls[i]),this.sizes&&(e.size=this.sizes[i]),t.unshift([s,e])}return t}load(t){this.clear();for(const[i,s]of t)this.set(i,s.value,s)}dispose(t,i,s){}set(t,i,{ttl:s=this.ttl,noDisposeOnSet:e=this.noDisposeOnSet,size:h=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:o=this.noUpdateTTL}={}){let n=0===this.size?void 0:this.keyMap.get(t);if(void 0===n)n=this.newIndex(),this.keyList[n]=t,this.valList[n]=i,this.keyMap.set(t,n),this.next[this.tail]=n,this.prev[n]=this.tail,this.tail=n,this.size++,this.addItemSize(n,i,t,h,l),o=!1;else{const s=this.valList[n];i!==s&&(e||(this.dispose(s,t,"set"),this.disposeAfter&&this.disposed.push([s,t,"set"])),this.removeItemSize(n),this.valList[n]=i,this.addItemSize(n,i,t,h,l)),this.moveToTail(n)}if(0===s||0!==this.ttl||this.ttls||this.initializeTTLTracking(),o||this.setItemTTL(n,s),this.disposeAfter)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return this}newIndex(){return 0===this.size?this.tail:this.size===this.max?this.evict():0!==this.free.length?this.free.pop():this.initialFill++}pop(){if(this.size){const t=this.valList[this.head];return this.evict(),t}}evict(){const t=this.head,i=this.keyList[t],s=this.valList[t];return this.dispose(s,i,"evict"),this.disposeAfter&&this.disposed.push([s,i,"evict"]),this.removeItemSize(t),this.head=this.next[t],this.keyMap.delete(i),this.size--,t}has(t){return this.keyMap.has(t)&&!this.isStale(this.keyMap.get(t))}peek(t,{allowStale:i=this.allowStale}={}){const s=this.keyMap.get(t);if(void 0!==s&&(i||!this.isStale(s)))return this.valList[s]}get(t,{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet}={}){const e=this.keyMap.get(t);if(void 0!==e){if(this.isStale(e)){const s=i?this.valList[e]:void 0;return this.delete(t),s}return this.moveToTail(e),s&&this.updateItemAge(e),this.valList[e]}}connect(t,i){this.prev[i]=t,this.next[t]=i}moveToTail(t){t!==this.tail&&(t===this.head?this.head=this.next[t]:this.connect(this.prev[t],this.next[t]),this.connect(this.tail,t),this.tail=t)}get del(){return h("del","delete"),this.delete}delete(t){let i=!1;if(0!==this.size){const s=this.keyMap.get(t);void 0!==s&&(i=!0,1===this.size?this.clear():(this.removeItemSize(s),this.dispose(this.valList[s],t,"delete"),this.disposeAfter&&this.disposed.push([this.valList[s],t,"delete"]),this.keyMap.delete(t),this.keyList[s]=null,this.valList[s]=null,s===this.tail?this.tail=this.prev[s]:s===this.head?this.head=this.next[s]:(this.next[this.prev[s]]=this.next[s],this.prev[this.next[s]]=this.prev[s]),this.size--,this.free.push(s)))}if(this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return i}clear(){if(this.dispose!==d.prototype.dispose)for(const t of this.rindexes())this.dispose(this.valList[t],this.keyList[t],"delete");if(this.disposeAfter)for(const t of this.rindexes())this.disposed.push([this.valList[t],this.keyList[t],"delete"]);if(this.keyMap.clear(),this.valList.fill(null),this.keyList.fill(null),this.ttls&&(this.ttls.fill(0),this.starts.fill(0)),this.sizes&&this.sizes.fill(0),this.head=0,this.tail=0,this.initialFill=1,this.free.length=0,this.calculatedSize=0,this.size=0,this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift())}get reset(){return h("reset","clear"),this.clear}get length(){return((t,i)=>{const s="LRU_CACHE_PROPERTY_length";if(l(s)){const{prototype:i}=d,{get:e}=Object.getOwnPropertyDescriptor(i,t);o(s,"length property","cache.size",e)}})("length"),this.size}}t.exports=d}},i={};!function s(e){var h=i[e];if(void 0!==h)return h.exports;var l=i[e]={exports:{}};return t[e](l,l.exports,s),l.exports}(10); \ No newline at end of file
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/index.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/index.js
new file mode 100644
index 00000000..e9b2f370
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/index.js
@@ -0,0 +1,587 @@
+const perf = typeof performance === 'object' && performance &&
+ typeof performance.now === 'function' ? performance : Date
+
+const warned = new Set()
+const deprecatedOption = (opt, instead) => {
+ const code = `LRU_CACHE_OPTION_${opt}`
+ if (shouldWarn(code)) {
+ warn(code, `${opt} option`, `options.${instead}`, LRUCache)
+ }
+}
+const deprecatedMethod = (method, instead) => {
+ const code = `LRU_CACHE_METHOD_${method}`
+ if (shouldWarn(code)) {
+ const { prototype } = LRUCache
+ const { get } = Object.getOwnPropertyDescriptor(prototype, method)
+ warn(code, `${method} method`, `cache.${instead}()`, get)
+ }
+}
+const deprecatedProperty = (field, instead) => {
+ const code = `LRU_CACHE_PROPERTY_${field}`
+ if (shouldWarn(code)) {
+ const { prototype } = LRUCache
+ const { get } = Object.getOwnPropertyDescriptor(prototype, field)
+ warn(code, `${field} property`, `cache.${instead}`, get)
+ }
+}
+const shouldWarn = (code) => !(process.noDeprecation || warned.has(code))
+const warn = (code, what, instead, fn) => {
+ warned.add(code)
+ process.emitWarning(`The ${what} is deprecated. Please use ${instead} instead.`, 'DeprecationWarning', code, fn)
+}
+
+const isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)
+
+/* istanbul ignore next - This is a little bit ridiculous, tbh.
+ * The maximum array length is 2^32-1 or thereabouts on most JS impls.
+ * And well before that point, you're caching the entire world, I mean,
+ * that's ~32GB of just integers for the next/prev links, plus whatever
+ * else to hold that many keys and values. Just filling the memory with
+ * zeroes at init time is brutal when you get that big.
+ * But why not be complete?
+ * Maybe in the future, these limits will have expanded. */
+const getUintArray = max => !isPosInt(max) ? null
+: max <= Math.pow(2, 8) ? Uint8Array
+: max <= Math.pow(2, 16) ? Uint16Array
+: max <= Math.pow(2, 32) ? Uint32Array
+: max <= Number.MAX_SAFE_INTEGER ? ZeroArray
+: null
+
+class ZeroArray extends Array {
+ constructor (size) {
+ super(size)
+ this.fill(0)
+ }
+}
+
+class Stack {
+ constructor (max) {
+ const UintArray = getUintArray(max)
+ this.heap = new UintArray(max)
+ this.length = 0
+ }
+ push (n) {
+ this.heap[this.length++] = n
+ }
+ pop () {
+ return this.heap[--this.length]
+ }
+}
+
+class LRUCache {
+ constructor (options = {}) {
+ const {
+ max,
+ ttl,
+ ttlResolution = 1,
+ ttlAutopurge,
+ updateAgeOnGet,
+ allowStale,
+ dispose,
+ disposeAfter,
+ noDisposeOnSet,
+ noUpdateTTL,
+ maxSize,
+ sizeCalculation,
+ } = options
+
+ // deprecated options, don't trigger a warning for getting them if
+ // the thing being passed in is another LRUCache we're copying.
+ const {
+ length,
+ maxAge,
+ stale,
+ } = options instanceof LRUCache ? {} : options
+
+ if (!isPosInt(max)) {
+ throw new TypeError('max option must be an integer')
+ }
+
+ const UintArray = getUintArray(max)
+ if (!UintArray) {
+ throw new Error('invalid max value: ' + max)
+ }
+
+ this.max = max
+ this.maxSize = maxSize || 0
+ this.sizeCalculation = sizeCalculation || length
+ if (this.sizeCalculation) {
+ if (!this.maxSize) {
+ throw new TypeError('cannot set sizeCalculation without setting maxSize')
+ }
+ if (typeof this.sizeCalculation !== 'function') {
+ throw new TypeError('sizeCalculating set to non-function')
+ }
+ }
+ this.keyMap = new Map()
+ this.keyList = new Array(max).fill(null)
+ this.valList = new Array(max).fill(null)
+ this.next = new UintArray(max)
+ this.prev = new UintArray(max)
+ this.head = 0
+ this.tail = 0
+ this.free = new Stack(max)
+ this.initialFill = 1
+ this.size = 0
+
+ if (typeof dispose === 'function') {
+ this.dispose = dispose
+ }
+ if (typeof disposeAfter === 'function') {
+ this.disposeAfter = disposeAfter
+ this.disposed = []
+ } else {
+ this.disposeAfter = null
+ this.disposed = null
+ }
+ this.noDisposeOnSet = !!noDisposeOnSet
+ this.noUpdateTTL = !!noUpdateTTL
+
+ if (this.maxSize) {
+ if (!isPosInt(this.maxSize)) {
+ throw new TypeError('maxSize must be a positive integer if specified')
+ }
+ this.initializeSizeTracking()
+ }
+
+ this.allowStale = !!allowStale || !!stale
+ this.updateAgeOnGet = !!updateAgeOnGet
+ this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0
+ ? ttlResolution : 1
+ this.ttlAutopurge = !!ttlAutopurge
+ this.ttl = ttl || maxAge || 0
+ if (this.ttl) {
+ if (!isPosInt(this.ttl)) {
+ throw new TypeError('ttl must be a positive integer if specified')
+ }
+ this.initializeTTLTracking()
+ }
+
+ if (stale) {
+ deprecatedOption('stale', 'allowStale')
+ }
+ if (maxAge) {
+ deprecatedOption('maxAge', 'ttl')
+ }
+ if (length) {
+ deprecatedOption('length', 'sizeCalculation')
+ }
+ }
+
+ initializeTTLTracking () {
+ this.ttls = new ZeroArray(this.max)
+ this.starts = new ZeroArray(this.max)
+ this.setItemTTL = (index, ttl) => {
+ this.starts[index] = ttl !== 0 ? perf.now() : 0
+ this.ttls[index] = ttl
+ if (ttl !== 0 && this.ttlAutopurge) {
+ const t = setTimeout(() => {
+ if (this.isStale(index)) {
+ this.delete(this.keyList[index])
+ }
+ }, ttl + 1)
+ /* istanbul ignore else - unref() not supported on all platforms */
+ if (t.unref) {
+ t.unref()
+ }
+ }
+ }
+ this.updateItemAge = (index) => {
+ this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0
+ }
+ // debounce calls to perf.now() to 1s so we're not hitting
+ // that costly call repeatedly.
+ let cachedNow = 0
+ const getNow = () => {
+ const n = perf.now()
+ if (this.ttlResolution > 0) {
+ cachedNow = n
+ const t = setTimeout(() => cachedNow = 0, this.ttlResolution)
+ /* istanbul ignore else - not available on all platforms */
+ if (t.unref) {
+ t.unref()
+ }
+ }
+ return n
+ }
+ this.isStale = (index) => {
+ return this.ttls[index] !== 0 && this.starts[index] !== 0 &&
+ ((cachedNow || getNow()) - this.starts[index] > this.ttls[index])
+ }
+ }
+ updateItemAge (index) {}
+ setItemTTL (index, ttl) {}
+ isStale (index) { return false }
+
+ initializeSizeTracking () {
+ this.calculatedSize = 0
+ this.sizes = new ZeroArray(this.max)
+ this.removeItemSize = index => this.calculatedSize -= this.sizes[index]
+ this.addItemSize = (index, v, k, size, sizeCalculation) => {
+ const s = size || (sizeCalculation ? sizeCalculation(v, k) : 0)
+ this.sizes[index] = isPosInt(s) ? s : 0
+ const maxSize = this.maxSize - this.sizes[index]
+ while (this.calculatedSize > maxSize) {
+ this.evict()
+ }
+ this.calculatedSize += this.sizes[index]
+ }
+ this.delete = k => {
+ if (this.size !== 0) {
+ const index = this.keyMap.get(k)
+ if (index !== undefined) {
+ this.calculatedSize -= this.sizes[index]
+ }
+ }
+ return LRUCache.prototype.delete.call(this, k)
+ }
+ }
+ removeItemSize (index) {}
+ addItemSize (index, v, k, size, sizeCalculation) {}
+
+ *indexes () {
+ if (this.size) {
+ for (let i = this.tail; true; i = this.prev[i]) {
+ if (!this.isStale(i)) {
+ yield i
+ }
+ if (i === this.head) {
+ break
+ }
+ }
+ }
+ }
+ *rindexes () {
+ if (this.size) {
+ for (let i = this.head; true; i = this.next[i]) {
+ if (!this.isStale(i)) {
+ yield i
+ }
+ if (i === this.tail) {
+ break
+ }
+ }
+ }
+ }
+
+ *entries () {
+ for (const i of this.indexes()) {
+ yield [this.keyList[i], this.valList[i]]
+ }
+ }
+
+ *keys () {
+ for (const i of this.indexes()) {
+ yield this.keyList[i]
+ }
+ }
+
+ *values () {
+ for (const i of this.indexes()) {
+ yield this.valList[i]
+ }
+ }
+
+ [Symbol.iterator] () {
+ return this.entries()
+ }
+
+ find (fn, getOptions = {}) {
+ for (const i of this.indexes()) {
+ if (fn(this.valList[i], this.keyList[i], this)) {
+ return this.get(this.keyList[i], getOptions)
+ }
+ }
+ }
+
+ forEach (fn, thisp = this) {
+ for (const i of this.indexes()) {
+ fn.call(thisp, this.valList[i], this.keyList[i], this)
+ }
+ }
+
+ rforEach (fn, thisp = this) {
+ for (const i of this.rindexes()) {
+ fn.call(thisp, this.valList[i], this.keyList[i], this)
+ }
+ }
+
+ get prune () {
+ deprecatedMethod('prune', 'purgeStale')
+ return this.purgeStale
+ }
+
+ purgeStale () {
+ let deleted = false
+ if (this.size) {
+ for (let i = this.head; true; i = this.next[i]) {
+ const b = i === this.tail
+ if (this.isStale(i)) {
+ this.delete(this.keyList[i])
+ deleted = true
+ }
+ if (b) {
+ break
+ }
+ }
+ }
+ return deleted
+ }
+
+ dump () {
+ const arr = []
+ for (const i of this.indexes()) {
+ const key = this.keyList[i]
+ const value = this.valList[i]
+ const entry = { value }
+ if (this.ttls) {
+ entry.ttl = this.ttls[i]
+ }
+ if (this.sizes) {
+ entry.size = this.sizes[i]
+ }
+ arr.unshift([key, entry])
+ }
+ return arr
+ }
+
+ load (arr) {
+ this.clear()
+ for (const [key, entry] of arr) {
+ this.set(key, entry.value, entry)
+ }
+ }
+
+ dispose (v, k, reason) {}
+
+ set (k, v, {
+ ttl = this.ttl,
+ noDisposeOnSet = this.noDisposeOnSet,
+ size = 0,
+ sizeCalculation = this.sizeCalculation,
+ noUpdateTTL = this.noUpdateTTL,
+ } = {}) {
+ let index = this.size === 0 ? undefined : this.keyMap.get(k)
+ if (index === undefined) {
+ // addition
+ index = this.newIndex()
+ this.keyList[index] = k
+ this.valList[index] = v
+ this.keyMap.set(k, index)
+ this.next[this.tail] = index
+ this.prev[index] = this.tail
+ this.tail = index
+ this.size ++
+ this.addItemSize(index, v, k, size, sizeCalculation)
+ noUpdateTTL = false
+ } else {
+ // update
+ const oldVal = this.valList[index]
+ if (v !== oldVal) {
+ if (!noDisposeOnSet) {
+ this.dispose(oldVal, k, 'set')
+ if (this.disposeAfter) {
+ this.disposed.push([oldVal, k, 'set'])
+ }
+ }
+ this.removeItemSize(index)
+ this.valList[index] = v
+ this.addItemSize(index, v, k, size, sizeCalculation)
+ }
+ this.moveToTail(index)
+ }
+ if (ttl !== 0 && this.ttl === 0 && !this.ttls) {
+ this.initializeTTLTracking()
+ }
+ if (!noUpdateTTL) {
+ this.setItemTTL(index, ttl)
+ }
+ if (this.disposeAfter) {
+ while (this.disposed.length) {
+ this.disposeAfter(...this.disposed.shift())
+ }
+ }
+ return this
+ }
+
+ newIndex () {
+ if (this.size === 0) {
+ return this.tail
+ }
+ if (this.size === this.max) {
+ return this.evict()
+ }
+ if (this.free.length !== 0) {
+ return this.free.pop()
+ }
+ // initial fill, just keep writing down the list
+ return this.initialFill++
+ }
+
+ pop () {
+ if (this.size) {
+ const val = this.valList[this.head]
+ this.evict()
+ return val
+ }
+ }
+
+ evict () {
+ const head = this.head
+ const k = this.keyList[head]
+ const v = this.valList[head]
+ this.dispose(v, k, 'evict')
+ if (this.disposeAfter) {
+ this.disposed.push([v, k, 'evict'])
+ }
+ this.removeItemSize(head)
+ this.head = this.next[head]
+ this.keyMap.delete(k)
+ this.size --
+ return head
+ }
+
+ has (k) {
+ return this.keyMap.has(k) && !this.isStale(this.keyMap.get(k))
+ }
+
+ // like get(), but without any LRU updating or TTL expiration
+ peek (k, { allowStale = this.allowStale } = {}) {
+ const index = this.keyMap.get(k)
+ if (index !== undefined && (allowStale || !this.isStale(index))) {
+ return this.valList[index]
+ }
+ }
+
+ get (k, {
+ allowStale = this.allowStale,
+ updateAgeOnGet = this.updateAgeOnGet,
+ } = {}) {
+ const index = this.keyMap.get(k)
+ if (index !== undefined) {
+ if (this.isStale(index)) {
+ const value = allowStale ? this.valList[index] : undefined
+ this.delete(k)
+ return value
+ } else {
+ this.moveToTail(index)
+ if (updateAgeOnGet) {
+ this.updateItemAge(index)
+ }
+ return this.valList[index]
+ }
+ }
+ }
+
+ connect (p, n) {
+ this.prev[n] = p
+ this.next[p] = n
+ }
+
+ moveToTail (index) {
+ // if tail already, nothing to do
+ // if head, move head to next[index]
+ // else
+ // move next[prev[index]] to next[index] (head has no prev)
+ // move prev[next[index]] to prev[index]
+ // prev[index] = tail
+ // next[tail] = index
+ // tail = index
+ if (index !== this.tail) {
+ if (index === this.head) {
+ this.head = this.next[index]
+ } else {
+ this.connect(this.prev[index], this.next[index])
+ }
+ this.connect(this.tail, index)
+ this.tail = index
+ }
+ }
+
+ get del () {
+ deprecatedMethod('del', 'delete')
+ return this.delete
+ }
+ delete (k) {
+ let deleted = false
+ if (this.size !== 0) {
+ const index = this.keyMap.get(k)
+ if (index !== undefined) {
+ deleted = true
+ if (this.size === 1) {
+ this.clear()
+ } else {
+ this.removeItemSize(index)
+ this.dispose(this.valList[index], k, 'delete')
+ if (this.disposeAfter) {
+ this.disposed.push([this.valList[index], k, 'delete'])
+ }
+ this.keyMap.delete(k)
+ this.keyList[index] = null
+ this.valList[index] = null
+ if (index === this.tail) {
+ this.tail = this.prev[index]
+ } else if (index === this.head) {
+ this.head = this.next[index]
+ } else {
+ this.next[this.prev[index]] = this.next[index]
+ this.prev[this.next[index]] = this.prev[index]
+ }
+ this.size --
+ this.free.push(index)
+ }
+ }
+ }
+ if (this.disposed) {
+ while (this.disposed.length) {
+ this.disposeAfter(...this.disposed.shift())
+ }
+ }
+ return deleted
+ }
+
+ clear () {
+ if (this.dispose !== LRUCache.prototype.dispose) {
+ for (const index of this.rindexes()) {
+ this.dispose(this.valList[index], this.keyList[index], 'delete')
+ }
+ }
+ if (this.disposeAfter) {
+ for (const index of this.rindexes()) {
+ this.disposed.push([this.valList[index], this.keyList[index], 'delete'])
+ }
+ }
+ this.keyMap.clear()
+ this.valList.fill(null)
+ this.keyList.fill(null)
+ if (this.ttls) {
+ this.ttls.fill(0)
+ this.starts.fill(0)
+ }
+ if (this.sizes) {
+ this.sizes.fill(0)
+ }
+ this.head = 0
+ this.tail = 0
+ this.initialFill = 1
+ this.free.length = 0
+ this.calculatedSize = 0
+ this.size = 0
+ if (this.disposed) {
+ while (this.disposed.length) {
+ this.disposeAfter(...this.disposed.shift())
+ }
+ }
+ }
+ get reset () {
+ deprecatedMethod('reset', 'clear')
+ return this.clear
+ }
+
+ get length () {
+ deprecatedProperty('length', 'size')
+ return this.size
+ }
+}
+
+module.exports = LRUCache
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/package.json b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/package.json
new file mode 100644
index 00000000..ae921169
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/lru-cache/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "lru-cache",
+ "description": "A cache object that deletes the least-recently-used items.",
+ "version": "7.4.0",
+ "author": "Isaac Z. Schlueter <i@izs.me>",
+ "keywords": [
+ "mru",
+ "lru",
+ "cache"
+ ],
+ "scripts": {
+ "prepare": "webpack-cli -o bundle ./index.js --node-env production",
+ "build": "npm run prepare",
+ "presize": "npm run prepare",
+ "test": "tap",
+ "snap": "tap",
+ "size": "size-limit",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "prepublishOnly": "git push origin --follow-tags"
+ },
+ "main": "index.js",
+ "browser": "./bundle/main.js",
+ "exports": {
+ ".": "./index.js",
+ "./browser": "./bundle/main.js"
+ },
+ "repository": "git://github.com/isaacs/node-lru-cache.git",
+ "devDependencies": {
+ "@size-limit/preset-small-lib": "^7.0.8",
+ "benchmark": "^2.1.4",
+ "size-limit": "^7.0.8",
+ "tap": "^15.1.6",
+ "webpack-cli": "^4.9.2"
+ },
+ "license": "ISC",
+ "files": [
+ "index.js",
+ "bundle"
+ ],
+ "engines": {
+ "node": ">=12"
+ },
+ "tap": {
+ "coverage-map": "map.js"
+ },
+ "size-limit": [
+ {
+ "path": "./bundle/main.js"
+ }
+ ]
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/LICENSE b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/LICENSE
new file mode 100644
index 00000000..1808eb28
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/LICENSE
@@ -0,0 +1,16 @@
+ISC License
+
+Copyright 2017-2022 (c) npm, Inc.
+
+Permission to use, copy, modify, and/or distribute this software for
+any purpose with or without fee is hereby granted, provided that the
+above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE COPYRIGHT HOLDER DISCLAIMS
+ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/README.md b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/README.md
new file mode 100644
index 00000000..4102bae6
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/README.md
@@ -0,0 +1,389 @@
+# make-fetch-happen
+[![npm version](https://img.shields.io/npm/v/make-fetch-happen.svg)](https://npm.im/make-fetch-happen) [![license](https://img.shields.io/npm/l/make-fetch-happen.svg)](https://npm.im/make-fetch-happen) [![Travis](https://img.shields.io/travis/npm/make-fetch-happen.svg)](https://travis-ci.org/npm/make-fetch-happen) [![Coverage Status](https://coveralls.io/repos/github/npm/make-fetch-happen/badge.svg?branch=latest)](https://coveralls.io/github/npm/make-fetch-happen?branch=latest)
+
+[`make-fetch-happen`](https://github.com/npm/make-fetch-happen) is a Node.js
+library that wraps [`minipass-fetch`](https://github.com/npm/minipass-fetch) with additional
+features [`minipass-fetch`](https://github.com/npm/minipass-fetch) doesn't intend to include, including HTTP Cache support, request
+pooling, proxies, retries, [and more](#features)!
+
+## Install
+
+`$ npm install --save make-fetch-happen`
+
+## Table of Contents
+
+* [Example](#example)
+* [Features](#features)
+* [Contributing](#contributing)
+* [API](#api)
+ * [`fetch`](#fetch)
+ * [`fetch.defaults`](#fetch-defaults)
+ * [`minipass-fetch` options](#minipass-fetch-options)
+ * [`make-fetch-happen` options](#extra-options)
+ * [`opts.cachePath`](#opts-cache-path)
+ * [`opts.cache`](#opts-cache)
+ * [`opts.proxy`](#opts-proxy)
+ * [`opts.noProxy`](#opts-no-proxy)
+ * [`opts.ca, opts.cert, opts.key`](#https-opts)
+ * [`opts.maxSockets`](#opts-max-sockets)
+ * [`opts.retry`](#opts-retry)
+ * [`opts.onRetry`](#opts-onretry)
+ * [`opts.integrity`](#opts-integrity)
+* [Message From Our Sponsors](#wow)
+
+### Example
+
+```javascript
+const fetch = require('make-fetch-happen').defaults({
+ cachePath: './my-cache' // path where cache will be written (and read)
+})
+
+fetch('https://registry.npmjs.org/make-fetch-happen').then(res => {
+ return res.json() // download the body as JSON
+}).then(body => {
+ console.log(`got ${body.name} from web`)
+ return fetch('https://registry.npmjs.org/make-fetch-happen', {
+ cache: 'no-cache' // forces a conditional request
+ })
+}).then(res => {
+ console.log(res.status) // 304! cache validated!
+ return res.json().then(body => {
+ console.log(`got ${body.name} from cache`)
+ })
+})
+```
+
+### Features
+
+* Builds around [`minipass-fetch`](https://npm.im/minipass-fetch) for the core [`fetch` API](https://fetch.spec.whatwg.org) implementation
+* Request pooling out of the box
+* Quite fast, really
+* Automatic HTTP-semantics-aware request retries
+* Cache-fallback automatic "offline mode"
+* Proxy support (http, https, socks, socks4, socks5)
+* Built-in request caching following full HTTP caching rules (`Cache-Control`, `ETag`, `304`s, cache fallback on error, etc).
+* Customize cache storage with any [Cache API](https://developer.mozilla.org/en-US/docs/Web/API/Cache)-compliant `Cache` instance. Cache to Redis!
+* Node.js Stream support
+* Transparent gzip and deflate support
+* [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) support
+* Literally punches nazis
+* (PENDING) Range request caching and resuming
+
+### Contributing
+
+The make-fetch-happen team enthusiastically welcomes contributions and project participation! There's a bunch of things you can do if you want to contribute! The [Contributor Guide](https://github.com/npm/cli/blob/latest/CONTRIBUTING.md) outlines the process for community interaction and contribution. Please don't hesitate to jump in if you'd like to, or even ask us questions if something isn't clear.
+
+All participants and maintainers in this project are expected to follow the [npm Code of Conduct](https://www.npmjs.com/policies/conduct), and just generally be excellent to each other.
+
+Please refer to the [Changelog](CHANGELOG.md) for project history details, too.
+
+Happy hacking!
+
+### API
+
+#### <a name="fetch"></a> `> fetch(uriOrRequest, [opts]) -> Promise<Response>`
+
+This function implements most of the [`fetch` API](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch): given a `uri` string or a `Request` instance, it will fire off an http request and return a Promise containing the relevant response.
+
+If `opts` is provided, the [`minipass-fetch`-specific options](#minipass-fetch-options) will be passed to that library. There are also [additional options](#extra-options) specific to make-fetch-happen that add various features, such as HTTP caching, integrity verification, proxy support, and more.
+
+##### Example
+
+```javascript
+fetch('https://google.com').then(res => res.buffer())
+```
+
+#### <a name="fetch-defaults"></a> `> fetch.defaults([defaultUrl], [defaultOpts])`
+
+Returns a new `fetch` function that will call `make-fetch-happen` using `defaultUrl` and `defaultOpts` as default values to any calls.
+
+A defaulted `fetch` will also have a `.defaults()` method, so they can be chained.
+
+##### Example
+
+```javascript
+const fetch = require('make-fetch-happen').defaults({
+ cachePath: './my-local-cache'
+})
+
+fetch('https://registry.npmjs.org/make-fetch-happen') // will always use the cache
+```
+
+#### <a name="minipass-fetch-options"></a> `> minipass-fetch options`
+
+The following options for `minipass-fetch` are used as-is:
+
+* method
+* body
+* redirect
+* follow
+* timeout
+* compress
+* size
+
+These other options are modified or augmented by make-fetch-happen:
+
+* headers - Default `User-Agent` set to make-fetch happen. `Connection` is set to `keep-alive` or `close` automatically depending on `opts.agent`.
+* agent
+ * If agent is null, an http or https Agent will be automatically used. By default, these will be `http.globalAgent` and `https.globalAgent`.
+ * If [`opts.proxy`](#opts-proxy) is provided and `opts.agent` is null, the agent will be set to an appropriate proxy-handling agent.
+ * If `opts.agent` is an object, it will be used as the request-pooling agent argument for this request.
+ * If `opts.agent` is `false`, it will be passed as-is to the underlying request library. This causes a new Agent to be spawned for every request.
+
+For more details, see [the documentation for `minipass-fetch` itself](https://github.com/npm/minipass-fetch#options).
+
+#### <a name="extra-options"></a> `> make-fetch-happen options`
+
+make-fetch-happen augments the `minipass-fetch` API with additional features available through extra options. The following extra options are available:
+
+* [`opts.cachePath`](#opts-cache-path) - Cache target to read/write
+* [`opts.cache`](#opts-cache) - `fetch` cache mode. Controls cache *behavior*.
+* [`opts.proxy`](#opts-proxy) - Proxy agent
+* [`opts.noProxy`](#opts-no-proxy) - Domain segments to disable proxying for.
+* [`opts.ca, opts.cert, opts.key, opts.strictSSL`](#https-opts)
+* [`opts.localAddress`](#opts-local-address)
+* [`opts.maxSockets`](#opts-max-sockets)
+* [`opts.retry`](#opts-retry) - Request retry settings
+* [`opts.onRetry`](#opts-onretry) - a function called whenever a retry is attempted
+* [`opts.integrity`](#opts-integrity) - [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) metadata.
+
+#### <a name="opts-cache-path"></a> `> opts.cachePath`
+
+A string `Path` to be used as the cache root for [`cacache`](https://npm.im/cacache).
+
+**NOTE**: Requests will not be cached unless their response bodies are consumed. You will need to use one of the `res.json()`, `res.buffer()`, etc methods on the response, or drain the `res.body` stream, in order for it to be written.
+
+The default cache manager also adds the following headers to cached responses:
+
+* `X-Local-Cache`: Path to the cache the content was found in
+* `X-Local-Cache-Key`: Unique cache entry key for this response
+* `X-Local-Cache-Mode`: Either `stream` or `buffer` to indicate how the response was read from cacache
+* `X-Local-Cache-Hash`: Specific integrity hash for the cached entry
+* `X-Local-Cache-Status`: One of `miss`, `hit`, `stale`, `revalidated`, `updated`, or `skip` to signal how the response was created
+* `X-Local-Cache-Time`: UTCString of the cache insertion time for the entry
+
+Using [`cacache`](https://npm.im/cacache), a call like this may be used to
+manually fetch the cached entry:
+
+```javascript
+const h = response.headers
+cacache.get(h.get('x-local-cache'), h.get('x-local-cache-key'))
+
+// grab content only, directly:
+cacache.get.byDigest(h.get('x-local-cache'), h.get('x-local-cache-hash'))
+```
+
+##### Example
+
+```javascript
+fetch('https://registry.npmjs.org/make-fetch-happen', {
+ cachePath: './my-local-cache'
+}) // -> 200-level response will be written to disk
+```
+
+A possible (minimal) implementation for `MyCustomRedisCache`:
+
+```javascript
+const bluebird = require('bluebird')
+const redis = require("redis")
+bluebird.promisifyAll(redis.RedisClient.prototype)
+class MyCustomRedisCache {
+ constructor (opts) {
+ this.redis = redis.createClient(opts)
+ }
+ match (req) {
+ return this.redis.getAsync(req.url).then(res => {
+ if (res) {
+ const parsed = JSON.parse(res)
+ return new fetch.Response(parsed.body, {
+ url: req.url,
+ headers: parsed.headers,
+ status: 200
+ })
+ }
+ })
+ }
+ put (req, res) {
+ return res.buffer().then(body => {
+ return this.redis.setAsync(req.url, JSON.stringify({
+ body: body,
+ headers: res.headers.raw()
+ }))
+ }).then(() => {
+ // return the response itself
+ return res
+ })
+ }
+ 'delete' (req) {
+ return this.redis.unlinkAsync(req.url)
+ }
+}
+```
+
+#### <a name="opts-cache"></a> `> opts.cache`
+
+This option follows the standard `fetch` API cache option. This option will do nothing if [`opts.cachePath`](#opts-cache-path) is null. The following values are accepted (as strings):
+
+* `default` - Fetch will inspect the HTTP cache on the way to the network. If there is a fresh response it will be used. If there is a stale response a conditional request will be created, and a normal request otherwise. It then updates the HTTP cache with the response. If the revalidation request fails (for example, on a 500 or if you're offline), the stale response will be returned.
+* `no-store` - Fetch behaves as if there is no HTTP cache at all.
+* `reload` - Fetch behaves as if there is no HTTP cache on the way to the network. Ergo, it creates a normal request and updates the HTTP cache with the response.
+* `no-cache` - Fetch creates a conditional request if there is a response in the HTTP cache and a normal request otherwise. It then updates the HTTP cache with the response.
+* `force-cache` - Fetch uses any response in the HTTP cache matching the request, not paying attention to staleness. If there was no response, it creates a normal request and updates the HTTP cache with the response.
+* `only-if-cached` - Fetch uses any response in the HTTP cache matching the request, not paying attention to staleness. If there was no response, it returns a network error. (Can only be used when request’s mode is "same-origin". Any cached redirects will be followed assuming request’s redirect mode is "follow" and the redirects do not violate request’s mode.)
+
+(Note: option descriptions are taken from https://fetch.spec.whatwg.org/#http-network-or-cache-fetch)
+
+##### Example
+
+```javascript
+const fetch = require('make-fetch-happen').defaults({
+ cachePath: './my-cache'
+})
+
+// Will error with ENOTCACHED if we haven't already cached this url
+fetch('https://registry.npmjs.org/make-fetch-happen', {
+ cache: 'only-if-cached'
+})
+
+// Will refresh any local content and cache the new response
+fetch('https://registry.npmjs.org/make-fetch-happen', {
+ cache: 'reload'
+})
+
+// Will use any local data, even if stale. Otherwise, will hit network.
+fetch('https://registry.npmjs.org/make-fetch-happen', {
+ cache: 'force-cache'
+})
+```
+
+#### <a name="opts-proxy"></a> `> opts.proxy`
+
+A string or `new url.URL()`-d URI to proxy through. Different Proxy handlers will be
+used depending on the proxy's protocol.
+
+Additionally, `process.env.HTTP_PROXY`, `process.env.HTTPS_PROXY`, and
+`process.env.PROXY` are used if present and no `opts.proxy` value is provided.
+
+(Pending) `process.env.NO_PROXY` may also be configured to skip proxying requests for all, or specific domains.
+
+##### Example
+
+```javascript
+fetch('https://registry.npmjs.org/make-fetch-happen', {
+ proxy: 'https://corporate.yourcompany.proxy:4445'
+})
+
+fetch('https://registry.npmjs.org/make-fetch-happen', {
+ proxy: {
+ protocol: 'https:',
+ hostname: 'corporate.yourcompany.proxy',
+ port: 4445
+ }
+})
+```
+
+#### <a name="opts-no-proxy"></a> `> opts.noProxy`
+
+If present, should be a comma-separated string or an array of domain extensions
+that a proxy should _not_ be used for.
+
+This option may also be provided through `process.env.NO_PROXY`.
+
+#### <a name="https-opts"></a> `> opts.ca, opts.cert, opts.key, opts.strictSSL`
+
+These values are passed in directly to the HTTPS agent and will be used for both
+proxied and unproxied outgoing HTTPS requests. They mostly correspond to the
+same options the `https` module accepts, which will be themselves passed to
+`tls.connect()`. `opts.strictSSL` corresponds to `rejectUnauthorized`.
+
+#### <a name="opts-local-address"></a> `> opts.localAddress`
+
+Passed directly to `http` and `https` request calls. Determines the local
+address to bind to.
+
+#### <a name="opts-max-sockets"></a> `> opts.maxSockets`
+
+Default: 15
+
+Maximum number of active concurrent sockets to use for the underlying
+Http/Https/Proxy agents. This setting applies once per spawned agent.
+
+15 is probably a _pretty good value_ for most use-cases, and balances speed
+with, uh, not knocking out people's routers. 🤓
+
+#### <a name="opts-retry"></a> `> opts.retry`
+
+An object that can be used to tune request retry settings. Retries will only be attempted on the following conditions:
+
+* Request method is NOT `POST` AND
+* Request status is one of: `408`, `420`, `429`, or any status in the 500-range. OR
+* Request errored with `ECONNRESET`, `ECONNREFUSED`, `EADDRINUSE`, `ETIMEDOUT`, or the `fetch` error `request-timeout`.
+
+The following are worth noting as explicitly not retried:
+
+* `getaddrinfo ENOTFOUND` and will be assumed to be either an unreachable domain or the user will be assumed offline. If a response is cached, it will be returned immediately.
+
+If `opts.retry` is `false`, it is equivalent to `{retries: 0}`
+
+If `opts.retry` is a number, it is equivalent to `{retries: num}`
+
+The following retry options are available if you want more control over it:
+
+* retries
+* factor
+* minTimeout
+* maxTimeout
+* randomize
+
+For details on what each of these do, refer to the [`retry`](https://npm.im/retry) documentation.
+
+##### Example
+
+```javascript
+fetch('https://flaky.site.com', {
+ retry: {
+ retries: 10,
+ randomize: true
+ }
+})
+
+fetch('http://reliable.site.com', {
+ retry: false
+})
+
+fetch('http://one-more.site.com', {
+ retry: 3
+})
+```
+
+#### <a name="opts-onretry"></a> `> opts.onRetry`
+
+A function called whenever a retry is attempted.
+
+##### Example
+
+```javascript
+fetch('https://flaky.site.com', {
+ onRetry() {
+ console.log('we will retry!')
+ }
+})
+```
+
+#### <a name="opts-integrity"></a> `> opts.integrity`
+
+Matches the response body against the given [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) metadata. If verification fails, the request will fail with an `EINTEGRITY` error.
+
+`integrity` may either be a string or an [`ssri`](https://npm.im/ssri) `Integrity`-like.
+
+##### Example
+
+```javascript
+fetch('https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-1.0.0.tgz', {
+ integrity: 'sha1-o47j7zAYnedYFn1dF/fR9OV3z8Q='
+}) // -> ok
+
+fetch('https://malicious-registry.org/make-fetch-happen/-/make-fetch-happen-1.0.0.tgz', {
+ integrity: 'sha1-o47j7zAYnedYFn1dF/fR9OV3z8Q='
+}) // Error: EINTEGRITY
+```
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/agent.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/agent.js
new file mode 100644
index 00000000..cc1d3886
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/agent.js
@@ -0,0 +1,205 @@
+'use strict'
+const LRU = require('lru-cache')
+const url = require('url')
+const isLambda = require('is-lambda')
+
+const AGENT_CACHE = new LRU({ max: 50 })
+const HttpAgent = require('agentkeepalive')
+const HttpsAgent = HttpAgent.HttpsAgent
+
+module.exports = getAgent
+
+const getAgentTimeout = timeout =>
+ typeof timeout !== 'number' || !timeout ? 0 : timeout + 1
+
+const getMaxSockets = maxSockets => maxSockets || 15
+
+function getAgent (uri, opts) {
+ const parsedUri = new url.URL(typeof uri === 'string' ? uri : uri.url)
+ const isHttps = parsedUri.protocol === 'https:'
+ const pxuri = getProxyUri(parsedUri.href, opts)
+
+ // If opts.timeout is zero, set the agentTimeout to zero as well. A timeout
+ // of zero disables the timeout behavior (OS limits still apply). Else, if
+ // opts.timeout is a non-zero value, set it to timeout + 1, to ensure that
+ // the node-fetch-npm timeout will always fire first, giving us more
+ // consistent errors.
+ const agentTimeout = getAgentTimeout(opts.timeout)
+ const agentMaxSockets = getMaxSockets(opts.maxSockets)
+
+ const key = [
+ `https:${isHttps}`,
+ pxuri
+ ? `proxy:${pxuri.protocol}//${pxuri.host}:${pxuri.port}`
+ : '>no-proxy<',
+ `local-address:${opts.localAddress || '>no-local-address<'}`,
+ `strict-ssl:${isHttps ? opts.rejectUnauthorized : '>no-strict-ssl<'}`,
+ `ca:${(isHttps && opts.ca) || '>no-ca<'}`,
+ `cert:${(isHttps && opts.cert) || '>no-cert<'}`,
+ `key:${(isHttps && opts.key) || '>no-key<'}`,
+ `timeout:${agentTimeout}`,
+ `maxSockets:${agentMaxSockets}`,
+ ].join(':')
+
+ if (opts.agent != null) { // `agent: false` has special behavior!
+ return opts.agent
+ }
+
+ // keep alive in AWS lambda makes no sense
+ const lambdaAgent = !isLambda ? null
+ : isHttps ? require('https').globalAgent
+ : require('http').globalAgent
+
+ if (isLambda && !pxuri) {
+ return lambdaAgent
+ }
+
+ if (AGENT_CACHE.peek(key)) {
+ return AGENT_CACHE.get(key)
+ }
+
+ if (pxuri) {
+ const pxopts = isLambda ? {
+ ...opts,
+ agent: lambdaAgent,
+ } : opts
+ const proxy = getProxy(pxuri, pxopts, isHttps)
+ AGENT_CACHE.set(key, proxy)
+ return proxy
+ }
+
+ const agent = isHttps ? new HttpsAgent({
+ maxSockets: agentMaxSockets,
+ ca: opts.ca,
+ cert: opts.cert,
+ key: opts.key,
+ localAddress: opts.localAddress,
+ rejectUnauthorized: opts.rejectUnauthorized,
+ timeout: agentTimeout,
+ freeSocketTimeout: 15000,
+ }) : new HttpAgent({
+ maxSockets: agentMaxSockets,
+ localAddress: opts.localAddress,
+ timeout: agentTimeout,
+ freeSocketTimeout: 15000,
+ })
+ AGENT_CACHE.set(key, agent)
+ return agent
+}
+
+function checkNoProxy (uri, opts) {
+ const host = new url.URL(uri).hostname.split('.').reverse()
+ let noproxy = (opts.noProxy || getProcessEnv('no_proxy'))
+ if (typeof noproxy === 'string') {
+ noproxy = noproxy.split(',').map(n => n.trim())
+ }
+
+ return noproxy && noproxy.some(no => {
+ const noParts = no.split('.').filter(x => x).reverse()
+ if (!noParts.length) {
+ return false
+ }
+ for (let i = 0; i < noParts.length; i++) {
+ if (host[i] !== noParts[i]) {
+ return false
+ }
+ }
+ return true
+ })
+}
+
+module.exports.getProcessEnv = getProcessEnv
+
+function getProcessEnv (env) {
+ if (!env) {
+ return
+ }
+
+ let value
+
+ if (Array.isArray(env)) {
+ for (const e of env) {
+ value = process.env[e] ||
+ process.env[e.toUpperCase()] ||
+ process.env[e.toLowerCase()]
+ if (typeof value !== 'undefined') {
+ break
+ }
+ }
+ }
+
+ if (typeof env === 'string') {
+ value = process.env[env] ||
+ process.env[env.toUpperCase()] ||
+ process.env[env.toLowerCase()]
+ }
+
+ return value
+}
+
+module.exports.getProxyUri = getProxyUri
+function getProxyUri (uri, opts) {
+ const protocol = new url.URL(uri).protocol
+
+ const proxy = opts.proxy ||
+ (
+ protocol === 'https:' &&
+ getProcessEnv('https_proxy')
+ ) ||
+ (
+ protocol === 'http:' &&
+ getProcessEnv(['https_proxy', 'http_proxy', 'proxy'])
+ )
+ if (!proxy) {
+ return null
+ }
+
+ const parsedProxy = (typeof proxy === 'string') ? new url.URL(proxy) : proxy
+
+ return !checkNoProxy(uri, opts) && parsedProxy
+}
+
+const getAuth = u =>
+ u.username && u.password ? decodeURIComponent(`${u.username}:${u.password}`)
+ : u.username ? decodeURIComponent(u.username)
+ : null
+
+const getPath = u => u.pathname + u.search + u.hash
+
+const HttpProxyAgent = require('http-proxy-agent')
+const HttpsProxyAgent = require('https-proxy-agent')
+const SocksProxyAgent = require('socks-proxy-agent')
+module.exports.getProxy = getProxy
+function getProxy (proxyUrl, opts, isHttps) {
+ const popts = {
+ host: proxyUrl.hostname,
+ port: proxyUrl.port,
+ protocol: proxyUrl.protocol,
+ path: getPath(proxyUrl),
+ auth: getAuth(proxyUrl),
+ ca: opts.ca,
+ cert: opts.cert,
+ key: opts.key,
+ timeout: getAgentTimeout(opts.timeout),
+ localAddress: opts.localAddress,
+ maxSockets: getMaxSockets(opts.maxSockets),
+ rejectUnauthorized: opts.rejectUnauthorized,
+ }
+
+ if (proxyUrl.protocol === 'http:' || proxyUrl.protocol === 'https:') {
+ if (!isHttps) {
+ return new HttpProxyAgent(popts)
+ } else {
+ return new HttpsProxyAgent(popts)
+ }
+ } else if (proxyUrl.protocol.startsWith('socks')) {
+ return new SocksProxyAgent(popts)
+ } else {
+ throw Object.assign(
+ new Error(`unsupported proxy protocol: '${proxyUrl.protocol}'`),
+ {
+ url: proxyUrl.href,
+ }
+ )
+ }
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/entry.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/entry.js
new file mode 100644
index 00000000..ae2ad8c7
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/entry.js
@@ -0,0 +1,494 @@
+const { Request, Response } = require('minipass-fetch')
+const Minipass = require('minipass')
+const MinipassCollect = require('minipass-collect')
+const MinipassFlush = require('minipass-flush')
+const MinipassPipeline = require('minipass-pipeline')
+const cacache = require('cacache')
+const url = require('url')
+
+const CachePolicy = require('./policy.js')
+const cacheKey = require('./key.js')
+const remote = require('../remote.js')
+
+const hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
+
+// maximum amount of data we will buffer into memory
+// if we'll exceed this, we switch to streaming
+const MAX_MEM_SIZE = 5 * 1024 * 1024 // 5MB
+
+// allow list for request headers that will be written to the cache index
+// note: we will also store any request headers
+// that are named in a response's vary header
+const KEEP_REQUEST_HEADERS = [
+ 'accept-charset',
+ 'accept-encoding',
+ 'accept-language',
+ 'accept',
+ 'cache-control',
+]
+
+// allow list for response headers that will be written to the cache index
+// note: we must not store the real response's age header, or when we load
+// a cache policy based on the metadata it will think the cached response
+// is always stale
+const KEEP_RESPONSE_HEADERS = [
+ 'cache-control',
+ 'content-encoding',
+ 'content-language',
+ 'content-type',
+ 'date',
+ 'etag',
+ 'expires',
+ 'last-modified',
+ 'location',
+ 'pragma',
+ 'vary',
+]
+
+// return an object containing all metadata to be written to the index
+const getMetadata = (request, response, options) => {
+ const metadata = {
+ time: Date.now(),
+ url: request.url,
+ reqHeaders: {},
+ resHeaders: {},
+
+ // options on which we must match the request and vary the response
+ options: {
+ compress: options.compress != null ? options.compress : request.compress,
+ },
+ }
+
+ // only save the status if it's not a 200 or 304
+ if (response.status !== 200 && response.status !== 304) {
+ metadata.status = response.status
+ }
+
+ for (const name of KEEP_REQUEST_HEADERS) {
+ if (request.headers.has(name)) {
+ metadata.reqHeaders[name] = request.headers.get(name)
+ }
+ }
+
+ // if the request's host header differs from the host in the url
+ // we need to keep it, otherwise it's just noise and we ignore it
+ const host = request.headers.get('host')
+ const parsedUrl = new url.URL(request.url)
+ if (host && parsedUrl.host !== host) {
+ metadata.reqHeaders.host = host
+ }
+
+ // if the response has a vary header, make sure
+ // we store the relevant request headers too
+ if (response.headers.has('vary')) {
+ const vary = response.headers.get('vary')
+ // a vary of "*" means every header causes a different response.
+ // in that scenario, we do not include any additional headers
+ // as the freshness check will always fail anyway and we don't
+ // want to bloat the cache indexes
+ if (vary !== '*') {
+ // copy any other request headers that will vary the response
+ const varyHeaders = vary.trim().toLowerCase().split(/\s*,\s*/)
+ for (const name of varyHeaders) {
+ if (request.headers.has(name)) {
+ metadata.reqHeaders[name] = request.headers.get(name)
+ }
+ }
+ }
+ }
+
+ for (const name of KEEP_RESPONSE_HEADERS) {
+ if (response.headers.has(name)) {
+ metadata.resHeaders[name] = response.headers.get(name)
+ }
+ }
+
+ return metadata
+}
+
+// symbols used to hide objects that may be lazily evaluated in a getter
+const _request = Symbol('request')
+const _response = Symbol('response')
+const _policy = Symbol('policy')
+
+class CacheEntry {
+ constructor ({ entry, request, response, options }) {
+ if (entry) {
+ this.key = entry.key
+ this.entry = entry
+ // previous versions of this module didn't write an explicit timestamp in
+ // the metadata, so fall back to the entry's timestamp. we can't use the
+ // entry timestamp to determine staleness because cacache will update it
+ // when it verifies its data
+ this.entry.metadata.time = this.entry.metadata.time || this.entry.time
+ } else {
+ this.key = cacheKey(request)
+ }
+
+ this.options = options
+
+ // these properties are behind getters that lazily evaluate
+ this[_request] = request
+ this[_response] = response
+ this[_policy] = null
+ }
+
+ // returns a CacheEntry instance that satisfies the given request
+ // or undefined if no existing entry satisfies
+ static async find (request, options) {
+ try {
+ // compacts the index and returns an array of unique entries
+ var matches = await cacache.index.compact(options.cachePath, cacheKey(request), (A, B) => {
+ const entryA = new CacheEntry({ entry: A, options })
+ const entryB = new CacheEntry({ entry: B, options })
+ return entryA.policy.satisfies(entryB.request)
+ }, {
+ validateEntry: (entry) => {
+ // clean out entries with a buggy content-encoding value
+ if (entry.metadata &&
+ entry.metadata.resHeaders &&
+ entry.metadata.resHeaders['content-encoding'] === null) {
+ return false
+ }
+
+ // if an integrity is null, it needs to have a status specified
+ if (entry.integrity === null) {
+ return !!(entry.metadata && entry.metadata.status)
+ }
+
+ return true
+ },
+ })
+ } catch (err) {
+ // if the compact request fails, ignore the error and return
+ return
+ }
+
+ // a cache mode of 'reload' means to behave as though we have no cache
+ // on the way to the network. return undefined to allow cacheFetch to
+ // create a brand new request no matter what.
+ if (options.cache === 'reload') {
+ return
+ }
+
+ // find the specific entry that satisfies the request
+ let match
+ for (const entry of matches) {
+ const _entry = new CacheEntry({
+ entry,
+ options,
+ })
+
+ if (_entry.policy.satisfies(request)) {
+ match = _entry
+ break
+ }
+ }
+
+ return match
+ }
+
+ // if the user made a PUT/POST/PATCH then we invalidate our
+ // cache for the same url by deleting the index entirely
+ static async invalidate (request, options) {
+ const key = cacheKey(request)
+ try {
+ await cacache.rm.entry(options.cachePath, key, { removeFully: true })
+ } catch (err) {
+ // ignore errors
+ }
+ }
+
+ get request () {
+ if (!this[_request]) {
+ this[_request] = new Request(this.entry.metadata.url, {
+ method: 'GET',
+ headers: this.entry.metadata.reqHeaders,
+ ...this.entry.metadata.options,
+ })
+ }
+
+ return this[_request]
+ }
+
+ get response () {
+ if (!this[_response]) {
+ this[_response] = new Response(null, {
+ url: this.entry.metadata.url,
+ counter: this.options.counter,
+ status: this.entry.metadata.status || 200,
+ headers: {
+ ...this.entry.metadata.resHeaders,
+ 'content-length': this.entry.size,
+ },
+ })
+ }
+
+ return this[_response]
+ }
+
+ get policy () {
+ if (!this[_policy]) {
+ this[_policy] = new CachePolicy({
+ entry: this.entry,
+ request: this.request,
+ response: this.response,
+ options: this.options,
+ })
+ }
+
+ return this[_policy]
+ }
+
+ // wraps the response in a pipeline that stores the data
+ // in the cache while the user consumes it
+ async store (status) {
+ // if we got a status other than 200, 301, or 308,
+ // or the CachePolicy forbid storage, append the
+ // cache status header and return it untouched
+ if (
+ this.request.method !== 'GET' ||
+ ![200, 301, 308].includes(this.response.status) ||
+ !this.policy.storable()
+ ) {
+ this.response.headers.set('x-local-cache-status', 'skip')
+ return this.response
+ }
+
+ const size = this.response.headers.get('content-length')
+ const fitsInMemory = !!size && Number(size) < MAX_MEM_SIZE
+ const shouldBuffer = this.options.memoize !== false && fitsInMemory
+ const cacheOpts = {
+ algorithms: this.options.algorithms,
+ metadata: getMetadata(this.request, this.response, this.options),
+ size,
+ memoize: fitsInMemory && this.options.memoize,
+ }
+
+ let body = null
+ // we only set a body if the status is a 200, redirects are
+ // stored as metadata only
+ if (this.response.status === 200) {
+ let cacheWriteResolve, cacheWriteReject
+ const cacheWritePromise = new Promise((resolve, reject) => {
+ cacheWriteResolve = resolve
+ cacheWriteReject = reject
+ })
+
+ body = new MinipassPipeline(new MinipassFlush({
+ flush () {
+ return cacheWritePromise
+ },
+ }))
+
+ let abortStream, onResume
+ if (shouldBuffer) {
+ // if the result fits in memory, use a collect stream to gather
+ // the response and write it to cacache while also passing it through
+ // to the user
+ onResume = () => {
+ const collector = new MinipassCollect.PassThrough()
+ abortStream = collector
+ collector.on('collect', (data) => {
+ // TODO if the cache write fails, log a warning but return the response anyway
+ cacache.put(this.options.cachePath, this.key, data, cacheOpts)
+ .then(cacheWriteResolve, cacheWriteReject)
+ })
+ body.unshift(collector)
+ body.unshift(this.response.body)
+ }
+ } else {
+ // if it does not fit in memory, create a tee stream and use
+ // that to pipe to both the cache and the user simultaneously
+ onResume = () => {
+ const tee = new Minipass()
+ const cacheStream = cacache.put.stream(this.options.cachePath, this.key, cacheOpts)
+ abortStream = cacheStream
+ tee.pipe(cacheStream)
+ // TODO if the cache write fails, log a warning but return the response anyway
+ cacheStream.promise().then(cacheWriteResolve, cacheWriteReject)
+ body.unshift(tee)
+ body.unshift(this.response.body)
+ }
+ }
+
+ body.once('resume', onResume)
+ body.once('end', () => body.removeListener('resume', onResume))
+ this.response.body.on('error', (err) => {
+ // the abortStream will either be a MinipassCollect if we buffer
+ // or a cacache write stream, either way be sure to listen for
+ // errors from the actual response and avoid writing data that we
+ // know to be invalid to the cache
+ abortStream.destroy(err)
+ })
+ } else {
+ await cacache.index.insert(this.options.cachePath, this.key, null, cacheOpts)
+ }
+
+ // note: we do not set the x-local-cache-hash header because we do not know
+ // the hash value until after the write to the cache completes, which doesn't
+ // happen until after the response has been sent and it's too late to write
+ // the header anyway
+ this.response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath))
+ this.response.headers.set('x-local-cache-key', encodeURIComponent(this.key))
+ this.response.headers.set('x-local-cache-mode', shouldBuffer ? 'buffer' : 'stream')
+ this.response.headers.set('x-local-cache-status', status)
+ this.response.headers.set('x-local-cache-time', new Date().toISOString())
+ const newResponse = new Response(body, {
+ url: this.response.url,
+ status: this.response.status,
+ headers: this.response.headers,
+ counter: this.options.counter,
+ })
+ return newResponse
+ }
+
+ // use the cached data to create a response and return it
+ async respond (method, options, status) {
+ let response
+ const size = Number(this.response.headers.get('content-length'))
+ const fitsInMemory = !!size && size < MAX_MEM_SIZE
+ const shouldBuffer = this.options.memoize !== false && fitsInMemory
+ if (method === 'HEAD' || [301, 308].includes(this.response.status)) {
+ // if the request is a HEAD, or the response is a redirect,
+ // then the metadata in the entry already includes everything
+ // we need to build a response
+ response = this.response
+ } else {
+ // we're responding with a full cached response, so create a body
+ // that reads from cacache and attach it to a new Response
+ const body = new Minipass()
+ const removeOnResume = () => body.removeListener('resume', onResume)
+ let onResume
+ if (shouldBuffer) {
+ onResume = async () => {
+ removeOnResume()
+ try {
+ const content = await cacache.get.byDigest(
+ this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }
+ )
+ body.end(content)
+ } catch (err) {
+ if (err.code === 'EINTEGRITY') {
+ await cacache.rm.content(
+ this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }
+ )
+ }
+ if (err.code === 'ENOENT' || err.code === 'EINTEGRITY') {
+ await CacheEntry.invalidate(this.request, this.options)
+ }
+ body.emit('error', err)
+ }
+ }
+ } else {
+ onResume = () => {
+ const cacheStream = cacache.get.stream.byDigest(
+ this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }
+ )
+ cacheStream.on('error', async (err) => {
+ cacheStream.pause()
+ if (err.code === 'EINTEGRITY') {
+ await cacache.rm.content(
+ this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }
+ )
+ }
+ if (err.code === 'ENOENT' || err.code === 'EINTEGRITY') {
+ await CacheEntry.invalidate(this.request, this.options)
+ }
+ body.emit('error', err)
+ cacheStream.resume()
+ })
+ cacheStream.pipe(body)
+ }
+ }
+
+ body.once('resume', onResume)
+ body.once('end', removeOnResume)
+ response = new Response(body, {
+ url: this.entry.metadata.url,
+ counter: options.counter,
+ status: 200,
+ headers: {
+ ...this.policy.responseHeaders(),
+ },
+ })
+ }
+
+ response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath))
+ response.headers.set('x-local-cache-hash', encodeURIComponent(this.entry.integrity))
+ response.headers.set('x-local-cache-key', encodeURIComponent(this.key))
+ response.headers.set('x-local-cache-mode', shouldBuffer ? 'buffer' : 'stream')
+ response.headers.set('x-local-cache-status', status)
+ response.headers.set('x-local-cache-time', new Date(this.entry.metadata.time).toUTCString())
+ return response
+ }
+
+ // use the provided request along with this cache entry to
+ // revalidate the stored response. returns a response, either
+ // from the cache or from the update
+ async revalidate (request, options) {
+ const revalidateRequest = new Request(request, {
+ headers: this.policy.revalidationHeaders(request),
+ })
+
+ try {
+ // NOTE: be sure to remove the headers property from the
+ // user supplied options, since we have already defined
+ // them on the new request object. if they're still in the
+ // options then those will overwrite the ones from the policy
+ var response = await remote(revalidateRequest, {
+ ...options,
+ headers: undefined,
+ })
+ } catch (err) {
+ // if the network fetch fails, return the stale
+ // cached response unless it has a cache-control
+ // of 'must-revalidate'
+ if (!this.policy.mustRevalidate) {
+ return this.respond(request.method, options, 'stale')
+ }
+
+ throw err
+ }
+
+ if (this.policy.revalidated(revalidateRequest, response)) {
+ // we got a 304, write a new index to the cache and respond from cache
+ const metadata = getMetadata(request, response, options)
+ // 304 responses do not include headers that are specific to the response data
+ // since they do not include a body, so we copy values for headers that were
+ // in the old cache entry to the new one, if the new metadata does not already
+ // include that header
+ for (const name of KEEP_RESPONSE_HEADERS) {
+ if (
+ !hasOwnProperty(metadata.resHeaders, name) &&
+ hasOwnProperty(this.entry.metadata.resHeaders, name)
+ ) {
+ metadata.resHeaders[name] = this.entry.metadata.resHeaders[name]
+ }
+ }
+
+ try {
+ await cacache.index.insert(options.cachePath, this.key, this.entry.integrity, {
+ size: this.entry.size,
+ metadata,
+ })
+ } catch (err) {
+ // if updating the cache index fails, we ignore it and
+ // respond anyway
+ }
+ return this.respond(request.method, options, 'revalidated')
+ }
+
+ // if we got a modified response, create a new entry based on it
+ const newEntry = new CacheEntry({
+ request,
+ response,
+ options,
+ })
+
+ // respond with the new entry while writing it to the cache
+ return newEntry.store('updated')
+ }
+}
+
+module.exports = CacheEntry
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/errors.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/errors.js
new file mode 100644
index 00000000..67a66573
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/errors.js
@@ -0,0 +1,11 @@
+class NotCachedError extends Error {
+ constructor (url) {
+ /* eslint-disable-next-line max-len */
+ super(`request to ${url} failed: cache mode is 'only-if-cached' but no cached response is available.`)
+ this.code = 'ENOTCACHED'
+ }
+}
+
+module.exports = {
+ NotCachedError,
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/index.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/index.js
new file mode 100644
index 00000000..17a64255
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/index.js
@@ -0,0 +1,49 @@
+const { NotCachedError } = require('./errors.js')
+const CacheEntry = require('./entry.js')
+const remote = require('../remote.js')
+
+// do whatever is necessary to get a Response and return it
+const cacheFetch = async (request, options) => {
+ // try to find a cached entry that satisfies this request
+ const entry = await CacheEntry.find(request, options)
+ if (!entry) {
+ // no cached result, if the cache mode is 'only-if-cached' that's a failure
+ if (options.cache === 'only-if-cached') {
+ throw new NotCachedError(request.url)
+ }
+
+ // otherwise, we make a request, store it and return it
+ const response = await remote(request, options)
+ const entry = new CacheEntry({ request, response, options })
+ return entry.store('miss')
+ }
+
+ // we have a cached response that satisfies this request, however if the cache
+ // mode is 'no-cache' then we send the revalidation request no matter what
+ if (options.cache === 'no-cache') {
+ return entry.revalidate(request, options)
+ }
+
+ // if the cached entry is not stale, or if the cache mode is 'force-cache' or
+ // 'only-if-cached' we can respond with the cached entry. set the status
+ // based on the result of needsRevalidation and respond
+ const _needsRevalidation = entry.policy.needsRevalidation(request)
+ if (options.cache === 'force-cache' ||
+ options.cache === 'only-if-cached' ||
+ !_needsRevalidation) {
+ return entry.respond(request.method, options, _needsRevalidation ? 'stale' : 'hit')
+ }
+
+ // if we got here, the cache entry is stale so revalidate it
+ return entry.revalidate(request, options)
+}
+
+cacheFetch.invalidate = async (request, options) => {
+ if (!options.cachePath) {
+ return
+ }
+
+ return CacheEntry.invalidate(request, options)
+}
+
+module.exports = cacheFetch
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/key.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/key.js
new file mode 100644
index 00000000..f7684d56
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/key.js
@@ -0,0 +1,17 @@
+const { URL, format } = require('url')
+
+// options passed to url.format() when generating a key
+const formatOptions = {
+ auth: false,
+ fragment: false,
+ search: true,
+ unicode: false,
+}
+
+// returns a string to be used as the cache key for the Request
+const cacheKey = (request) => {
+ const parsed = new URL(request.url)
+ return `make-fetch-happen:request-cache:${format(parsed, formatOptions)}`
+}
+
+module.exports = cacheKey
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/policy.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/policy.js
new file mode 100644
index 00000000..ada3c860
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/cache/policy.js
@@ -0,0 +1,161 @@
+const CacheSemantics = require('http-cache-semantics')
+const Negotiator = require('negotiator')
+const ssri = require('ssri')
+
+// options passed to http-cache-semantics constructor
+const policyOptions = {
+ shared: false,
+ ignoreCargoCult: true,
+}
+
+// a fake empty response, used when only testing the
+// request for storability
+const emptyResponse = { status: 200, headers: {} }
+
+// returns a plain object representation of the Request
+const requestObject = (request) => {
+ const _obj = {
+ method: request.method,
+ url: request.url,
+ headers: {},
+ compress: request.compress,
+ }
+
+ request.headers.forEach((value, key) => {
+ _obj.headers[key] = value
+ })
+
+ return _obj
+}
+
+// returns a plain object representation of the Response
+const responseObject = (response) => {
+ const _obj = {
+ status: response.status,
+ headers: {},
+ }
+
+ response.headers.forEach((value, key) => {
+ _obj.headers[key] = value
+ })
+
+ return _obj
+}
+
+class CachePolicy {
+ constructor ({ entry, request, response, options }) {
+ this.entry = entry
+ this.request = requestObject(request)
+ this.response = responseObject(response)
+ this.options = options
+ this.policy = new CacheSemantics(this.request, this.response, policyOptions)
+
+ if (this.entry) {
+ // if we have an entry, copy the timestamp to the _responseTime
+ // this is necessary because the CacheSemantics constructor forces
+ // the value to Date.now() which means a policy created from a
+ // cache entry is likely to always identify itself as stale
+ this.policy._responseTime = this.entry.metadata.time
+ }
+ }
+
+ // static method to quickly determine if a request alone is storable
+ static storable (request, options) {
+ // no cachePath means no caching
+ if (!options.cachePath) {
+ return false
+ }
+
+ // user explicitly asked not to cache
+ if (options.cache === 'no-store') {
+ return false
+ }
+
+ // we only cache GET and HEAD requests
+ if (!['GET', 'HEAD'].includes(request.method)) {
+ return false
+ }
+
+ // otherwise, let http-cache-semantics make the decision
+ // based on the request's headers
+ const policy = new CacheSemantics(requestObject(request), emptyResponse, policyOptions)
+ return policy.storable()
+ }
+
+ // returns true if the policy satisfies the request
+ satisfies (request) {
+ const _req = requestObject(request)
+ if (this.request.headers.host !== _req.headers.host) {
+ return false
+ }
+
+ if (this.request.compress !== _req.compress) {
+ return false
+ }
+
+ const negotiatorA = new Negotiator(this.request)
+ const negotiatorB = new Negotiator(_req)
+
+ if (JSON.stringify(negotiatorA.mediaTypes()) !== JSON.stringify(negotiatorB.mediaTypes())) {
+ return false
+ }
+
+ if (JSON.stringify(negotiatorA.languages()) !== JSON.stringify(negotiatorB.languages())) {
+ return false
+ }
+
+ if (JSON.stringify(negotiatorA.encodings()) !== JSON.stringify(negotiatorB.encodings())) {
+ return false
+ }
+
+ if (this.options.integrity) {
+ return ssri.parse(this.options.integrity).match(this.entry.integrity)
+ }
+
+ return true
+ }
+
+ // returns true if the request and response allow caching
+ storable () {
+ return this.policy.storable()
+ }
+
+ // NOTE: this is a hack to avoid parsing the cache-control
+ // header ourselves, it returns true if the response's
+ // cache-control contains must-revalidate
+ get mustRevalidate () {
+ return !!this.policy._rescc['must-revalidate']
+ }
+
+ // returns true if the cached response requires revalidation
+ // for the given request
+ needsRevalidation (request) {
+ const _req = requestObject(request)
+ // force method to GET because we only cache GETs
+ // but can serve a HEAD from a cached GET
+ _req.method = 'GET'
+ return !this.policy.satisfiesWithoutRevalidation(_req)
+ }
+
+ responseHeaders () {
+ return this.policy.responseHeaders()
+ }
+
+ // returns a new object containing the appropriate headers
+ // to send a revalidation request
+ revalidationHeaders (request) {
+ const _req = requestObject(request)
+ return this.policy.revalidationHeaders(_req)
+ }
+
+ // returns true if the request/response was revalidated
+ // successfully. returns false if a new response was received
+ revalidated (request, response) {
+ const _req = requestObject(request)
+ const _res = responseObject(response)
+ const policy = this.policy.revalidatedPolicy(_req, _res)
+ return !policy.modified
+ }
+}
+
+module.exports = CachePolicy
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/fetch.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/fetch.js
new file mode 100644
index 00000000..233ba67e
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/fetch.js
@@ -0,0 +1,118 @@
+'use strict'
+
+const { FetchError, Request, isRedirect } = require('minipass-fetch')
+const url = require('url')
+
+const CachePolicy = require('./cache/policy.js')
+const cache = require('./cache/index.js')
+const remote = require('./remote.js')
+
+// given a Request, a Response and user options
+// return true if the response is a redirect that
+// can be followed. we throw errors that will result
+// in the fetch being rejected if the redirect is
+// possible but invalid for some reason
+const canFollowRedirect = (request, response, options) => {
+ if (!isRedirect(response.status)) {
+ return false
+ }
+
+ if (options.redirect === 'manual') {
+ return false
+ }
+
+ if (options.redirect === 'error') {
+ throw new FetchError(`redirect mode is set to error: ${request.url}`,
+ 'no-redirect', { code: 'ENOREDIRECT' })
+ }
+
+ if (!response.headers.has('location')) {
+ throw new FetchError(`redirect location header missing for: ${request.url}`,
+ 'no-location', { code: 'EINVALIDREDIRECT' })
+ }
+
+ if (request.counter >= request.follow) {
+ throw new FetchError(`maximum redirect reached at: ${request.url}`,
+ 'max-redirect', { code: 'EMAXREDIRECT' })
+ }
+
+ return true
+}
+
+// given a Request, a Response, and the user's options return an object
+// with a new Request and a new options object that will be used for
+// following the redirect
+const getRedirect = (request, response, options) => {
+ const _opts = { ...options }
+ const location = response.headers.get('location')
+ const redirectUrl = new url.URL(location, /^https?:/.test(location) ? undefined : request.url)
+ // Comment below is used under the following license:
+ /**
+ * @license
+ * Copyright (c) 2010-2012 Mikeal Rogers
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an "AS
+ * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+
+ // Remove authorization if changing hostnames (but not if just
+ // changing ports or protocols). This matches the behavior of request:
+ // https://github.com/request/request/blob/b12a6245/lib/redirect.js#L134-L138
+ if (new url.URL(request.url).hostname !== redirectUrl.hostname) {
+ request.headers.delete('authorization')
+ request.headers.delete('cookie')
+ }
+
+ // for POST request with 301/302 response, or any request with 303 response,
+ // use GET when following redirect
+ if (
+ response.status === 303 ||
+ (request.method === 'POST' && [301, 302].includes(response.status))
+ ) {
+ _opts.method = 'GET'
+ _opts.body = null
+ request.headers.delete('content-length')
+ }
+
+ _opts.headers = {}
+ request.headers.forEach((value, key) => {
+ _opts.headers[key] = value
+ })
+
+ _opts.counter = ++request.counter
+ const redirectReq = new Request(url.format(redirectUrl), _opts)
+ return {
+ request: redirectReq,
+ options: _opts,
+ }
+}
+
+const fetch = async (request, options) => {
+ const response = CachePolicy.storable(request, options)
+ ? await cache(request, options)
+ : await remote(request, options)
+
+ // if the request wasn't a GET or HEAD, and the response
+ // status is between 200 and 399 inclusive, invalidate the
+ // request url
+ if (!['GET', 'HEAD'].includes(request.method) &&
+ response.status >= 200 &&
+ response.status <= 399) {
+ await cache.invalidate(request, options)
+ }
+
+ if (!canFollowRedirect(request, response, options)) {
+ return response
+ }
+
+ const redirect = getRedirect(request, response, options)
+ return fetch(redirect.request, redirect.options)
+}
+
+module.exports = fetch
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/index.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/index.js
new file mode 100644
index 00000000..6028bc07
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/index.js
@@ -0,0 +1,40 @@
+const { FetchError, Headers, Request, Response } = require('minipass-fetch')
+
+const configureOptions = require('./options.js')
+const fetch = require('./fetch.js')
+
+const makeFetchHappen = (url, opts) => {
+ const options = configureOptions(opts)
+
+ const request = new Request(url, options)
+ return fetch(request, options)
+}
+
+makeFetchHappen.defaults = (defaultUrl, defaultOptions = {}) => {
+ if (typeof defaultUrl === 'object') {
+ defaultOptions = defaultUrl
+ defaultUrl = null
+ }
+
+ const defaultedFetch = (url, options = {}) => {
+ const finalUrl = url || defaultUrl
+ const finalOptions = {
+ ...defaultOptions,
+ ...options,
+ headers: {
+ ...defaultOptions.headers,
+ ...options.headers,
+ },
+ }
+ return makeFetchHappen(finalUrl, finalOptions)
+ }
+
+ defaultedFetch.defaults = makeFetchHappen.defaults
+ return defaultedFetch
+}
+
+module.exports = makeFetchHappen
+module.exports.FetchError = FetchError
+module.exports.Headers = Headers
+module.exports.Request = Request
+module.exports.Response = Response
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/options.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/options.js
new file mode 100644
index 00000000..a0c8664a
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/options.js
@@ -0,0 +1,48 @@
+const conditionalHeaders = [
+ 'if-modified-since',
+ 'if-none-match',
+ 'if-unmodified-since',
+ 'if-match',
+ 'if-range',
+]
+
+const configureOptions = (opts) => {
+ const { strictSSL, ...options } = { ...opts }
+ options.method = options.method ? options.method.toUpperCase() : 'GET'
+ options.rejectUnauthorized = strictSSL !== false
+
+ if (!options.retry) {
+ options.retry = { retries: 0 }
+ } else if (typeof options.retry === 'string') {
+ const retries = parseInt(options.retry, 10)
+ if (isFinite(retries)) {
+ options.retry = { retries }
+ } else {
+ options.retry = { retries: 0 }
+ }
+ } else if (typeof options.retry === 'number') {
+ options.retry = { retries: options.retry }
+ } else {
+ options.retry = { retries: 0, ...options.retry }
+ }
+
+ options.cache = options.cache || 'default'
+ if (options.cache === 'default') {
+ const hasConditionalHeader = Object.keys(options.headers || {}).some((name) => {
+ return conditionalHeaders.includes(name.toLowerCase())
+ })
+ if (hasConditionalHeader) {
+ options.cache = 'no-store'
+ }
+ }
+
+ // cacheManager is deprecated, but if it's set and
+ // cachePath is not we should copy it to the new field
+ if (options.cacheManager && !options.cachePath) {
+ options.cachePath = options.cacheManager
+ }
+
+ return options
+}
+
+module.exports = configureOptions
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/remote.js b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/remote.js
new file mode 100644
index 00000000..a8b8d2a0
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/lib/remote.js
@@ -0,0 +1,108 @@
+const Minipass = require('minipass')
+const MinipassPipeline = require('minipass-pipeline')
+const fetch = require('minipass-fetch')
+const promiseRetry = require('promise-retry')
+const ssri = require('ssri')
+
+const getAgent = require('./agent.js')
+const pkg = require('../package.json')
+
+const USER_AGENT = `${pkg.name}/${pkg.version} (+https://npm.im/${pkg.name})`
+
+const RETRY_ERRORS = [
+ 'ECONNRESET', // remote socket closed on us
+ 'ECONNREFUSED', // remote host refused to open connection
+ 'EADDRINUSE', // failed to bind to a local port (proxy?)
+ 'ETIMEDOUT', // someone in the transaction is WAY TOO SLOW
+ 'ERR_SOCKET_TIMEOUT', // same as above, but this one comes from agentkeepalive
+ // Known codes we do NOT retry on:
+ // ENOTFOUND (getaddrinfo failure. Either bad hostname, or offline)
+]
+
+const RETRY_TYPES = [
+ 'request-timeout',
+]
+
+// make a request directly to the remote source,
+// retrying certain classes of errors as well as
+// following redirects (through the cache if necessary)
+// and verifying response integrity
+const remoteFetch = (request, options) => {
+ const agent = getAgent(request.url, options)
+ if (!request.headers.has('connection')) {
+ request.headers.set('connection', agent ? 'keep-alive' : 'close')
+ }
+
+ if (!request.headers.has('user-agent')) {
+ request.headers.set('user-agent', USER_AGENT)
+ }
+
+ // keep our own options since we're overriding the agent
+ // and the redirect mode
+ const _opts = {
+ ...options,
+ agent,
+ redirect: 'manual',
+ }
+
+ return promiseRetry(async (retryHandler, attemptNum) => {
+ const req = new fetch.Request(request, _opts)
+ try {
+ let res = await fetch(req, _opts)
+ if (_opts.integrity && res.status === 200) {
+ // we got a 200 response and the user has specified an expected
+ // integrity value, so wrap the response in an ssri stream to verify it
+ const integrityStream = ssri.integrityStream({ integrity: _opts.integrity })
+ res = new fetch.Response(new MinipassPipeline(res.body, integrityStream), res)
+ }
+
+ res.headers.set('x-fetch-attempts', attemptNum)
+
+ // do not retry POST requests, or requests with a streaming body
+ // do retry requests with a 408, 420, 429 or 500+ status in the response
+ const isStream = Minipass.isStream(req.body)
+ const isRetriable = req.method !== 'POST' &&
+ !isStream &&
+ ([408, 420, 429].includes(res.status) || res.status >= 500)
+
+ if (isRetriable) {
+ if (typeof options.onRetry === 'function') {
+ options.onRetry(res)
+ }
+
+ return retryHandler(res)
+ }
+
+ return res
+ } catch (err) {
+ const code = (err.code === 'EPROMISERETRY')
+ ? err.retried.code
+ : err.code
+
+ // err.retried will be the thing that was thrown from above
+ // if it's a response, we just got a bad status code and we
+ // can re-throw to allow the retry
+ const isRetryError = err.retried instanceof fetch.Response ||
+ (RETRY_ERRORS.includes(code) && RETRY_TYPES.includes(err.type))
+
+ if (req.method === 'POST' || isRetryError) {
+ throw err
+ }
+
+ if (typeof options.onRetry === 'function') {
+ options.onRetry(err)
+ }
+
+ return retryHandler(err)
+ }
+ }, options.retry).catch((err) => {
+ // don't reject for http errors, just return them
+ if (err.status >= 400 && err.type !== 'system') {
+ return err
+ }
+
+ throw err
+ })
+}
+
+module.exports = remoteFetch
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/package.json b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/package.json
new file mode 100644
index 00000000..c01a09ac
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/node_modules/make-fetch-happen/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "make-fetch-happen",
+ "version": "10.0.3",
+ "description": "Opinionated, caching, retrying fetch client",
+ "main": "lib/index.js",
+ "files": [
+ "bin",
+ "lib"
+ ],
+ "scripts": {
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "prepublishOnly": "git push origin --follow-tags",
+ "test": "tap",
+ "posttest": "npm run lint",
+ "eslint": "eslint",
+ "lint": "eslint '**/*.js'",
+ "lintfix": "npm run lint -- --fix",
+ "postlint": "npm-template-check",
+ "snap": "tap",
+ "template-copy": "npm-template-copy --force"
+ },
+ "repository": "https://github.com/npm/make-fetch-happen",
+ "keywords": [
+ "http",
+ "request",
+ "fetch",
+ "mean girls",
+ "caching",
+ "cache",
+ "subresource integrity"
+ ],
+ "author": "GitHub Inc.",
+ "license": "ISC",
+ "dependencies": {
+ "agentkeepalive": "^4.2.0",
+ "cacache": "^15.3.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.3.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^1.4.1",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^6.1.1",
+ "ssri": "^8.0.1"
+ },
+ "devDependencies": {
+ "@npmcli/template-oss": "^2.7.1",
+ "eslint": "^8.9.0",
+ "mkdirp": "^1.0.4",
+ "nock": "^13.2.4",
+ "rimraf": "^3.0.2",
+ "safe-buffer": "^5.2.1",
+ "standard-version": "^9.3.2",
+ "tap": "^15.1.6"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16"
+ },
+ "tap": {
+ "color": 1,
+ "files": "test/*.js",
+ "check-coverage": true
+ },
+ "templateOSS": {
+ "version": "2.7.1"
+ }
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/package.json b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/package.json
new file mode 100644
index 00000000..f1aab5c7
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/npm-registry-fetch/package.json
@@ -0,0 +1,60 @@
+{
+ "name": "npm-registry-fetch",
+ "version": "12.0.2",
+ "description": "Fetch-based http client for use with npm registry APIs",
+ "main": "lib",
+ "files": [
+ "bin",
+ "lib"
+ ],
+ "scripts": {
+ "eslint": "eslint",
+ "lint": "eslint '**/*.js'",
+ "lintfix": "npm run lint -- --fix",
+ "prepublishOnly": "git push origin --follow-tags",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "test": "tap",
+ "posttest": "npm run lint",
+ "npmclilint": "npmcli-lint",
+ "postsnap": "npm run lintfix --",
+ "postlint": "npm-template-check",
+ "snap": "tap",
+ "template-copy": "npm-template-copy --force"
+ },
+ "repository": "https://github.com/npm/npm-registry-fetch",
+ "keywords": [
+ "npm",
+ "registry",
+ "fetch"
+ ],
+ "author": "GitHub Inc.",
+ "license": "ISC",
+ "dependencies": {
+ "make-fetch-happen": "^10.0.1",
+ "minipass": "^3.1.6",
+ "minipass-fetch": "^1.4.1",
+ "minipass-json-stream": "^1.0.1",
+ "minizlib": "^2.1.2",
+ "npm-package-arg": "^8.1.5"
+ },
+ "devDependencies": {
+ "@npmcli/template-oss": "^2.7.1",
+ "cacache": "^15.3.0",
+ "nock": "^13.2.4",
+ "npmlog": "^6.0.0",
+ "require-inject": "^1.4.4",
+ "ssri": "^8.0.1",
+ "tap": "^15.1.6"
+ },
+ "tap": {
+ "check-coverage": true,
+ "test-ignore": "test[\\\\/](util|cache)[\\\\/]"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16"
+ },
+ "templateOSS": {
+ "version": "2.7.1"
+ }
+}