@verdaccio/url 11.0.0-6-next.5 → 11.0.0-6-next.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Change Log
2
2
 
3
+ ## 11.0.0-6-next.6
4
+
5
+ ### Major Changes
6
+
7
+ - 794af76c: Remove Node 12 support
8
+
9
+ - We need move to the new `undici` and does not support Node.js 12
10
+
11
+ ### Minor Changes
12
+
13
+ - 154b2ecd: refactor: remove @verdaccio/commons-api in favor @verdaccio/core and remove duplications
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies [794af76c]
18
+ - Updated dependencies [154b2ecd]
19
+ - @verdaccio/core@6.0.0-6-next.2
20
+
3
21
  ## 11.0.0-6-next.5
4
22
 
5
23
  ### Patch Changes
package/build/index.js CHANGED
@@ -17,7 +17,7 @@ var _debug = _interopRequireDefault(require("debug"));
17
17
 
18
18
  var _isURL = _interopRequireDefault(require("validator/lib/isURL"));
19
19
 
20
- var _commonsApi = require("@verdaccio/commons-api");
20
+ var _core = require("@verdaccio/core");
21
21
 
22
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
23
 
@@ -128,7 +128,7 @@ function getPublicUrl(url_prefix = '', req) {
128
128
  throw new Error('invalid host');
129
129
  }
130
130
 
131
- const protoHeader = (_process$env$VERDACCI = process.env.VERDACCIO_FORWARDED_PROTO) !== null && _process$env$VERDACCI !== void 0 ? _process$env$VERDACCI : _commonsApi.HEADERS.FORWARDED_PROTO;
131
+ const protoHeader = (_process$env$VERDACCI = process.env.VERDACCIO_FORWARDED_PROTO) !== null && _process$env$VERDACCI !== void 0 ? _process$env$VERDACCI : _core.HEADERS.FORWARDED_PROTO;
132
132
  const protocol = getWebProtocol(req.get(protoHeader), req.protocol);
133
133
  const combinedUrl = combineBaseUrl(protocol, host, url_prefix);
134
134
  debug('public url by request %o', combinedUrl);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["debug","validProtocols","isURLhasValidProtocol","uri","test","isHost","url","options","require_host","allow_trailing_dot","require_valid_protocol","require_port","require_tld","getWebProtocol","headerProtocol","protocol","returnProtocol","defaultProtocol","commaIndex","indexOf","substr","includes","wrapPrefix","prefix","startsWith","endsWith","combineBaseUrl","host","newPrefix","groupedURI","URL","result","href","validateURL","publicUrl","parsed","replace","Error","err","getPublicUrl","url_prefix","req","process","env","VERDACCIO_PUBLIC_URL","envURL","get","protoHeader","VERDACCIO_FORWARDED_PROTO","HEADERS","FORWARDED_PROTO","combinedUrl"],"mappings":"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","sourcesContent":["import { URL } from 'url';\nimport buildDebug from 'debug';\nimport isURLValidator from 'validator/lib/isURL';\nimport { HEADERS } from '@verdaccio/commons-api';\n\nconst debug = buildDebug('verdaccio:core:url');\n\nconst validProtocols = ['https', 'http'];\n\n/**\n * Check if URI is starting with \"http://\", \"https://\" or \"//\"\n * @param {string} uri\n */\nexport function isURLhasValidProtocol(uri: string): boolean {\n return /^(https?:)?\\/\\//.test(uri);\n}\n\nexport function isHost(url: string = '', options = {}): boolean {\n return isURLValidator(url, {\n require_host: true,\n allow_trailing_dot: false,\n require_valid_protocol: false,\n // @ts-ignore\n require_port: false,\n require_tld: false,\n ...options,\n });\n}\n\n/**\n * Detect running protocol (http or https)\n */\nexport function getWebProtocol(headerProtocol: string | void, protocol: string): string {\n let returnProtocol;\n const [, defaultProtocol] = validProtocols;\n // HAProxy variant might return http,http with X-Forwarded-Proto\n if (typeof headerProtocol === 'string' && headerProtocol !== '') {\n debug('header protocol: %o', protocol);\n const commaIndex = headerProtocol.indexOf(',');\n returnProtocol = commaIndex > 0 ? headerProtocol.substr(0, commaIndex) : headerProtocol;\n } else {\n debug('req protocol: %o', headerProtocol);\n returnProtocol = protocol;\n }\n\n return validProtocols.includes(returnProtocol) ? returnProtocol : defaultProtocol;\n}\n\nexport function wrapPrefix(prefix: string | void): string {\n if (prefix === '' || typeof prefix === 'undefined' || prefix === null) {\n return '';\n } else if (!prefix.startsWith('/') && prefix.endsWith('/')) {\n return `/${prefix}`;\n } else if (!prefix.startsWith('/') && !prefix.endsWith('/')) {\n return `/${prefix}/`;\n } else if (prefix.startsWith('/') && !prefix.endsWith('/')) {\n return `${prefix}/`;\n } else {\n return prefix;\n }\n}\n\n/**\n * Create base url for registry.\n * @return {String} base registry url\n */\nexport function combineBaseUrl(protocol: string, host: string, prefix: string = ''): string {\n debug('combined protocol %o', protocol);\n debug('combined host %o', host);\n const newPrefix = wrapPrefix(prefix);\n debug('combined prefix %o', newPrefix);\n const groupedURI = new URL(wrapPrefix(prefix), `${protocol}://${host}`);\n const result = groupedURI.href;\n debug('combined url %o', result);\n return result;\n}\n\nexport function validateURL(publicUrl: string | void) {\n try {\n const parsed = new URL(publicUrl as string);\n if (!validProtocols.includes(parsed.protocol.replace(':', ''))) {\n throw Error('invalid protocol');\n }\n return true;\n } catch (err: any) {\n // TODO: add error logger here\n return false;\n }\n}\n\nexport function getPublicUrl(url_prefix: string = '', req): string {\n if (validateURL(process.env.VERDACCIO_PUBLIC_URL as string)) {\n const envURL = new URL(wrapPrefix(url_prefix), process.env.VERDACCIO_PUBLIC_URL as string).href;\n debug('public url by env %o', envURL);\n return envURL;\n } else if (req.get('host')) {\n const host = req.get('host');\n if (!isHost(host)) {\n throw new Error('invalid host');\n }\n const protoHeader = process.env.VERDACCIO_FORWARDED_PROTO ?? HEADERS.FORWARDED_PROTO;\n const protocol = getWebProtocol(req.get(protoHeader), req.protocol);\n const combinedUrl = combineBaseUrl(protocol, host, url_prefix);\n debug('public url by request %o', combinedUrl);\n return combinedUrl;\n } else {\n return '/';\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["debug","validProtocols","isURLhasValidProtocol","uri","test","isHost","url","options","require_host","allow_trailing_dot","require_valid_protocol","require_port","require_tld","getWebProtocol","headerProtocol","protocol","returnProtocol","defaultProtocol","commaIndex","indexOf","substr","includes","wrapPrefix","prefix","startsWith","endsWith","combineBaseUrl","host","newPrefix","groupedURI","URL","result","href","validateURL","publicUrl","parsed","replace","Error","err","getPublicUrl","url_prefix","req","process","env","VERDACCIO_PUBLIC_URL","envURL","get","protoHeader","VERDACCIO_FORWARDED_PROTO","HEADERS","FORWARDED_PROTO","combinedUrl"],"mappings":"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","sourcesContent":["import { URL } from 'url';\nimport buildDebug from 'debug';\nimport isURLValidator from 'validator/lib/isURL';\nimport { HEADERS } from '@verdaccio/core';\n\nconst debug = buildDebug('verdaccio:core:url');\n\nconst validProtocols = ['https', 'http'];\n\n/**\n * Check if URI is starting with \"http://\", \"https://\" or \"//\"\n * @param {string} uri\n */\nexport function isURLhasValidProtocol(uri: string): boolean {\n return /^(https?:)?\\/\\//.test(uri);\n}\n\nexport function isHost(url: string = '', options = {}): boolean {\n return isURLValidator(url, {\n require_host: true,\n allow_trailing_dot: false,\n require_valid_protocol: false,\n // @ts-ignore\n require_port: false,\n require_tld: false,\n ...options,\n });\n}\n\n/**\n * Detect running protocol (http or https)\n */\nexport function getWebProtocol(headerProtocol: string | void, protocol: string): string {\n let returnProtocol;\n const [, defaultProtocol] = validProtocols;\n // HAProxy variant might return http,http with X-Forwarded-Proto\n if (typeof headerProtocol === 'string' && headerProtocol !== '') {\n debug('header protocol: %o', protocol);\n const commaIndex = headerProtocol.indexOf(',');\n returnProtocol = commaIndex > 0 ? headerProtocol.substr(0, commaIndex) : headerProtocol;\n } else {\n debug('req protocol: %o', headerProtocol);\n returnProtocol = protocol;\n }\n\n return validProtocols.includes(returnProtocol) ? returnProtocol : defaultProtocol;\n}\n\nexport function wrapPrefix(prefix: string | void): string {\n if (prefix === '' || typeof prefix === 'undefined' || prefix === null) {\n return '';\n } else if (!prefix.startsWith('/') && prefix.endsWith('/')) {\n return `/${prefix}`;\n } else if (!prefix.startsWith('/') && !prefix.endsWith('/')) {\n return `/${prefix}/`;\n } else if (prefix.startsWith('/') && !prefix.endsWith('/')) {\n return `${prefix}/`;\n } else {\n return prefix;\n }\n}\n\n/**\n * Create base url for registry.\n * @return {String} base registry url\n */\nexport function combineBaseUrl(protocol: string, host: string, prefix: string = ''): string {\n debug('combined protocol %o', protocol);\n debug('combined host %o', host);\n const newPrefix = wrapPrefix(prefix);\n debug('combined prefix %o', newPrefix);\n const groupedURI = new URL(wrapPrefix(prefix), `${protocol}://${host}`);\n const result = groupedURI.href;\n debug('combined url %o', result);\n return result;\n}\n\nexport function validateURL(publicUrl: string | void) {\n try {\n const parsed = new URL(publicUrl as string);\n if (!validProtocols.includes(parsed.protocol.replace(':', ''))) {\n throw Error('invalid protocol');\n }\n return true;\n } catch (err: any) {\n // TODO: add error logger here\n return false;\n }\n}\n\nexport function getPublicUrl(url_prefix: string = '', req): string {\n if (validateURL(process.env.VERDACCIO_PUBLIC_URL as string)) {\n const envURL = new URL(wrapPrefix(url_prefix), process.env.VERDACCIO_PUBLIC_URL as string).href;\n debug('public url by env %o', envURL);\n return envURL;\n } else if (req.get('host')) {\n const host = req.get('host');\n if (!isHost(host)) {\n throw new Error('invalid host');\n }\n const protoHeader = process.env.VERDACCIO_FORWARDED_PROTO ?? HEADERS.FORWARDED_PROTO;\n const protocol = getWebProtocol(req.get(protoHeader), req.protocol);\n const combinedUrl = combineBaseUrl(protocol, host, url_prefix);\n debug('public url by request %o', combinedUrl);\n return combinedUrl;\n } else {\n return '/';\n }\n}\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/url",
3
- "version": "11.0.0-6-next.5",
3
+ "version": "11.0.0-6-next.6",
4
4
  "description": "url utilities resolver",
5
5
  "keywords": [
6
6
  "private",
@@ -19,7 +19,7 @@
19
19
  "license": "MIT",
20
20
  "homepage": "https://verdaccio.org",
21
21
  "engines": {
22
- "node": ">=10",
22
+ "node": ">=14",
23
23
  "npm": ">=6"
24
24
  },
25
25
  "repository": {
@@ -34,13 +34,13 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@verdaccio/commons-api": "11.0.0-6-next.4",
37
+ "@verdaccio/core": "6.0.0-6-next.2",
38
38
  "debug": "4.3.2",
39
39
  "lodash": "4.17.21",
40
40
  "validator": "13.6.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@verdaccio/types": "11.0.0-6-next.8",
43
+ "@verdaccio/types": "11.0.0-6-next.9",
44
44
  "node-mocks-http": "1.10.1"
45
45
  },
46
46
  "funding": {
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { URL } from 'url';
2
2
  import buildDebug from 'debug';
3
3
  import isURLValidator from 'validator/lib/isURL';
4
- import { HEADERS } from '@verdaccio/commons-api';
4
+ import { HEADERS } from '@verdaccio/core';
5
5
 
6
6
  const debug = buildDebug('verdaccio:core:url');
7
7
 
@@ -1,6 +1,6 @@
1
1
  import * as httpMocks from 'node-mocks-http';
2
2
 
3
- import { HEADERS } from '@verdaccio/commons-api';
3
+ import { HEADERS } from '@verdaccio/core';
4
4
  import { getPublicUrl } from '../src';
5
5
 
6
6
  describe('host', () => {
package/tsconfig.json CHANGED
@@ -5,10 +5,5 @@
5
5
  "outDir": "./build"
6
6
  },
7
7
  "include": ["src/**/*"],
8
- "exclude": ["src/**/*.test.ts"],
9
- "references": [
10
- {
11
- "path": "../commons-api"
12
- }
13
- ]
8
+ "exclude": ["src/**/*.test.ts"]
14
9
  }