@verdaccio/node-api 8.0.0-next-8.20 → 8.0.0-next-8.22
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/build/server.d.ts +1 -1
- package/build/server.js +3 -7
- package/build/server.js.map +1 -1
- package/package.json +8 -8
package/build/server.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { ConfigYaml } from '@verdaccio/types';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare function createServerFactory(config: ConfigYaml, addr: any, app: any): any;
|
|
9
9
|
/**
|
|
10
|
-
* Start the server on the port defined
|
|
10
|
+
* Start the server on the port defined (or the port defined in the config file)
|
|
11
11
|
* @param config
|
|
12
12
|
* @param port
|
|
13
13
|
* @param version
|
package/build/server.js
CHANGED
|
@@ -14,7 +14,6 @@ var _nodeHttp = _interopRequireDefault(require("node:http"));
|
|
|
14
14
|
var _nodeHttps = _interopRequireDefault(require("node:https"));
|
|
15
15
|
var _nodeUrl = _interopRequireDefault(require("node:url"));
|
|
16
16
|
var _config = require("@verdaccio/config");
|
|
17
|
-
var _core = require("@verdaccio/core");
|
|
18
17
|
var _logger = require("@verdaccio/logger");
|
|
19
18
|
var _server = _interopRequireDefault(require("@verdaccio/server"));
|
|
20
19
|
var _serverFastify = _interopRequireDefault(require("@verdaccio/server-fastify"));
|
|
@@ -111,7 +110,7 @@ function createServerFactory(config, addr, app) {
|
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
/**
|
|
114
|
-
* Start the server on the port defined
|
|
113
|
+
* Start the server on the port defined (or the port defined in the config file)
|
|
115
114
|
* @param config
|
|
116
115
|
* @param port
|
|
117
116
|
* @param version
|
|
@@ -120,8 +119,7 @@ function createServerFactory(config, addr, app) {
|
|
|
120
119
|
async function initServer(config, port, version, pkgName) {
|
|
121
120
|
return new Promise(async (resolve, reject) => {
|
|
122
121
|
const logger = (0, _logger.setup)(config?.log);
|
|
123
|
-
const
|
|
124
|
-
const addr = (0, _config.getListenAddress)(combined, logger);
|
|
122
|
+
const addr = (0, _config.getListenAddress)(port ?? config?.listen, logger);
|
|
125
123
|
(0, _experiments.displayExperimentsInfoBox)(config.flags);
|
|
126
124
|
let app;
|
|
127
125
|
if (process.env.VERDACCIO_SERVER === 'fastify') {
|
|
@@ -198,9 +196,7 @@ async function runServer(config) {
|
|
|
198
196
|
const configurationParsed = (0, _config.getConfigParsed)(config);
|
|
199
197
|
(0, _logger.setup)(configurationParsed.log);
|
|
200
198
|
(0, _experiments.displayExperimentsInfoBox)(configurationParsed.flags);
|
|
201
|
-
|
|
202
|
-
const combined = [configurationParsed?.listen, _core.DEFAULT_PORT];
|
|
203
|
-
const addr = (0, _config.getListenAddress)(combined, _logger.logger);
|
|
199
|
+
const addr = (0, _config.getListenAddress)(configurationParsed.listen, _logger.logger);
|
|
204
200
|
const app = await (0, _server.default)(configurationParsed);
|
|
205
201
|
return createServerFactory(configurationParsed, addr, app);
|
|
206
202
|
}
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","names":["_debug","_interopRequireDefault","require","_lodash","_nodeConstants","_nodeFs","_nodeHttp","_nodeHttps","_nodeUrl","_config","_core","_logger","_server","_serverFastify","_experiments","e","__esModule","default","debug","buildDebug","unlinkAddressPath","addr","path","fs","existsSync","unlinkSync","createServerFactory","config","app","serverFactory","proto","httpsOptions","secureOptions","constants","SSL_OP_NO_SSLv2","SSL_OP_NO_SSLv3","keyCertConfig","https","pfxConfig","key","cert","pfx","Error","passphrase","assign","readFileSync","ca","createServer","err","message","http","printRoutes","layer","route","Object","keys","methods","join","name","handle","stack","forEach","nestedLayer","_router","server","keepAliveTimeout","initServer","port","version","pkgName","Promise","resolve","reject","logger","setup","log","combined","listen","DEFAULT_PORT","getListenAddress","displayExperimentsInfoBox","flags","process","env","VERDACCIO_SERVER","fastifyServer","host","expressServer","isFunction","send","verdaccio_started","addressServer","url","format","protocol","pathname","hostname","info","on","exitCode","handleShutdownGracefully","close","exit","signal","once","runServer","configurationParsed","getConfigParsed"],"sources":["../src/server.ts"],"sourcesContent":["/* eslint-disable */\nimport buildDebug from 'debug';\nimport _, { assign, isFunction } from 'lodash';\nimport constants from 'node:constants';\nimport fs from 'node:fs';\nimport http from 'node:http';\nimport https from 'node:https';\nimport url from 'node:url';\n\nimport { getConfigParsed, getListenAddress } from '@verdaccio/config';\nimport { DEFAULT_PORT } from '@verdaccio/core';\nimport { logger, setup } from '@verdaccio/logger';\nimport expressServer from '@verdaccio/server';\nimport fastifyServer from '@verdaccio/server-fastify';\nimport { ConfigYaml, HttpsConfKeyCert, HttpsConfPfx } from '@verdaccio/types';\n\nimport { displayExperimentsInfoBox } from './experiments';\n\nconst debug = buildDebug('verdaccio:node-api');\n\nfunction unlinkAddressPath(addr) {\n if (addr.path && fs.existsSync(addr.path)) {\n fs.unlinkSync(addr.path);\n }\n}\n\n/**\n * Return a native HTTP/HTTPS server instance\n * @param config\n * @param addr\n * @param app\n */\nexport function createServerFactory(config: ConfigYaml, addr, app) {\n let serverFactory;\n if (addr.proto === 'https') {\n debug('https enabled');\n try {\n let httpsOptions = {\n // disable insecure SSLv2 and SSLv3\n secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3,\n };\n\n const keyCertConfig = config.https as HttpsConfKeyCert;\n const pfxConfig = config.https as HttpsConfPfx;\n\n // https must either have key and cert or a pfx and (optionally) a passphrase\n if (!((keyCertConfig.key && keyCertConfig.cert) || pfxConfig.pfx)) {\n // logHTTPSError(configPath);\n throw Error('bad format https configuration');\n }\n\n if (pfxConfig.pfx) {\n const { pfx, passphrase } = pfxConfig;\n httpsOptions = assign(httpsOptions, {\n pfx: fs.readFileSync(pfx),\n passphrase: passphrase || '',\n });\n } else {\n const { key, cert, ca } = keyCertConfig;\n httpsOptions = assign(httpsOptions, {\n key: fs.readFileSync(key),\n cert: fs.readFileSync(cert),\n ...(ca && {\n ca: fs.readFileSync(ca),\n }),\n });\n }\n // TODO: enable http2 as feature\n // if (config.server.http2) <-- check if force http2\n serverFactory = https.createServer(httpsOptions, app);\n } catch (err: any) {\n throw new Error(`cannot create https server: ${err.message}`);\n }\n } else {\n // http\n debug('http enabled');\n serverFactory = http.createServer(app);\n }\n\n // List of all routes registered in the app\n function printRoutes(layer) {\n if (layer.route) {\n debug('%s (%s)', layer.route.path, Object.keys(layer.route.methods).join(', '));\n } else if (layer.name === 'router') {\n layer.handle.stack.forEach((nestedLayer) => {\n printRoutes(nestedLayer);\n });\n }\n }\n\n debug('registered routes:');\n app._router.stack.forEach(printRoutes);\n\n if (\n config.server &&\n typeof config.server.keepAliveTimeout !== 'undefined' &&\n // @ts-ignore\n config.server.keepAliveTimeout !== 'null'\n ) {\n // library definition for node is not up to date (doesn't contain recent 8.0 changes)\n serverFactory.keepAliveTimeout = config.server.keepAliveTimeout * 1000;\n }\n // FIXE: I could not find the reason of this code.\n unlinkAddressPath(addr);\n\n return serverFactory;\n}\n\n/**\n * Start the server on the port defined\n * @param config\n * @param port\n * @param version\n * @param pkgName\n */\nexport async function initServer(\n config: ConfigYaml,\n port: string | void,\n version: string,\n pkgName: string\n): Promise<void> {\n return new Promise(async (resolve, reject) => {\n const logger = setup(config?.log as any);\n const combined: string | undefined | any[] = [port, config?.listen, DEFAULT_PORT];\n const addr = getListenAddress(combined, logger);\n displayExperimentsInfoBox(config.flags);\n\n let app;\n if (process.env.VERDACCIO_SERVER === 'fastify') {\n app = await fastifyServer(config);\n app.listen({ port: addr.port, host: addr.host }, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n } else {\n app = await expressServer(config);\n const serverFactory = createServerFactory(config, addr, app);\n serverFactory\n .listen(addr.port || addr.path, addr.host, (): void => {\n // send a message for test\n if (isFunction(process.send)) {\n process.send({\n verdaccio_started: true,\n });\n }\n const addressServer = `${\n addr.path\n ? url.format({\n protocol: 'unix',\n pathname: addr.path,\n })\n : url.format({\n protocol: addr.proto,\n hostname: addr.host,\n port: addr.port,\n pathname: '/',\n })\n }`;\n logger.info({ addressServer }, 'http address: @{addressServer}');\n logger.info({ version }, 'version: @{version}');\n resolve();\n })\n .on('error', function (err): void {\n reject(err);\n process.exitCode = 1;\n });\n function handleShutdownGracefully() {\n logger.info('received shutdown signal - closing server gracefully...');\n serverFactory.close(() => {\n logger.info('server closed.');\n process.exit(0);\n });\n }\n\n for (const signal of ['SIGINT', 'SIGTERM', 'SIGHUP']) {\n // Use once() so that receiving double signals exit the app.\n process.once(signal, handleShutdownGracefully);\n }\n }\n });\n}\n\n/**\n * Exposes a server factory to be instantiated programmatically.\n *\n ```ts\n const app = await runServer(); // default configuration\n const app = await runServer('./config/config.yaml');\n const app = await runServer({ configuration });\n app.listen(4000, (event) => {\n // do something\n });\n ```\n * @param config\n */\nexport async function runServer(config?: string | ConfigYaml): Promise<any> {\n const configurationParsed = getConfigParsed(config);\n setup(configurationParsed.log as any);\n displayExperimentsInfoBox(configurationParsed.flags);\n // FIXME: get only the first match, the multiple address will be removed\n const combined: string | undefined | any[] = [configurationParsed?.listen, DEFAULT_PORT];\n const addr = getListenAddress(combined, logger);\n const app = await expressServer(configurationParsed);\n return createServerFactory(configurationParsed, addr, app);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"server.js","names":["_debug","_interopRequireDefault","require","_lodash","_nodeConstants","_nodeFs","_nodeHttp","_nodeHttps","_nodeUrl","_config","_logger","_server","_serverFastify","_experiments","e","__esModule","default","debug","buildDebug","unlinkAddressPath","addr","path","fs","existsSync","unlinkSync","createServerFactory","config","app","serverFactory","proto","httpsOptions","secureOptions","constants","SSL_OP_NO_SSLv2","SSL_OP_NO_SSLv3","keyCertConfig","https","pfxConfig","key","cert","pfx","Error","passphrase","assign","readFileSync","ca","createServer","err","message","http","printRoutes","layer","route","Object","keys","methods","join","name","handle","stack","forEach","nestedLayer","_router","server","keepAliveTimeout","initServer","port","version","pkgName","Promise","resolve","reject","logger","setup","log","getListenAddress","listen","displayExperimentsInfoBox","flags","process","env","VERDACCIO_SERVER","fastifyServer","host","expressServer","isFunction","send","verdaccio_started","addressServer","url","format","protocol","pathname","hostname","info","on","exitCode","handleShutdownGracefully","close","exit","signal","once","runServer","configurationParsed","getConfigParsed"],"sources":["../src/server.ts"],"sourcesContent":["/* eslint-disable */\nimport buildDebug from 'debug';\nimport { assign, isFunction } from 'lodash';\nimport constants from 'node:constants';\nimport fs from 'node:fs';\nimport http from 'node:http';\nimport https from 'node:https';\nimport url from 'node:url';\n\nimport { getConfigParsed, getListenAddress } from '@verdaccio/config';\nimport { logger, setup } from '@verdaccio/logger';\nimport expressServer from '@verdaccio/server';\nimport fastifyServer from '@verdaccio/server-fastify';\nimport { ConfigYaml, HttpsConfKeyCert, HttpsConfPfx } from '@verdaccio/types';\n\nimport { displayExperimentsInfoBox } from './experiments';\n\nconst debug = buildDebug('verdaccio:node-api');\n\nfunction unlinkAddressPath(addr) {\n if (addr.path && fs.existsSync(addr.path)) {\n fs.unlinkSync(addr.path);\n }\n}\n\n/**\n * Return a native HTTP/HTTPS server instance\n * @param config\n * @param addr\n * @param app\n */\nexport function createServerFactory(config: ConfigYaml, addr, app) {\n let serverFactory;\n if (addr.proto === 'https') {\n debug('https enabled');\n try {\n let httpsOptions = {\n // disable insecure SSLv2 and SSLv3\n secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3,\n };\n\n const keyCertConfig = config.https as HttpsConfKeyCert;\n const pfxConfig = config.https as HttpsConfPfx;\n\n // https must either have key and cert or a pfx and (optionally) a passphrase\n if (!((keyCertConfig.key && keyCertConfig.cert) || pfxConfig.pfx)) {\n // logHTTPSError(configPath);\n throw Error('bad format https configuration');\n }\n\n if (pfxConfig.pfx) {\n const { pfx, passphrase } = pfxConfig;\n httpsOptions = assign(httpsOptions, {\n pfx: fs.readFileSync(pfx),\n passphrase: passphrase || '',\n });\n } else {\n const { key, cert, ca } = keyCertConfig;\n httpsOptions = assign(httpsOptions, {\n key: fs.readFileSync(key),\n cert: fs.readFileSync(cert),\n ...(ca && {\n ca: fs.readFileSync(ca),\n }),\n });\n }\n // TODO: enable http2 as feature\n // if (config.server.http2) <-- check if force http2\n serverFactory = https.createServer(httpsOptions, app);\n } catch (err: any) {\n throw new Error(`cannot create https server: ${err.message}`);\n }\n } else {\n // http\n debug('http enabled');\n serverFactory = http.createServer(app);\n }\n\n // List of all routes registered in the app\n function printRoutes(layer) {\n if (layer.route) {\n debug('%s (%s)', layer.route.path, Object.keys(layer.route.methods).join(', '));\n } else if (layer.name === 'router') {\n layer.handle.stack.forEach((nestedLayer) => {\n printRoutes(nestedLayer);\n });\n }\n }\n\n debug('registered routes:');\n app._router.stack.forEach(printRoutes);\n\n if (\n config.server &&\n typeof config.server.keepAliveTimeout !== 'undefined' &&\n // @ts-ignore\n config.server.keepAliveTimeout !== 'null'\n ) {\n // library definition for node is not up to date (doesn't contain recent 8.0 changes)\n serverFactory.keepAliveTimeout = config.server.keepAliveTimeout * 1000;\n }\n // FIXE: I could not find the reason of this code.\n unlinkAddressPath(addr);\n\n return serverFactory;\n}\n\n/**\n * Start the server on the port defined (or the port defined in the config file)\n * @param config\n * @param port\n * @param version\n * @param pkgName\n */\nexport async function initServer(\n config: ConfigYaml,\n port: string | void,\n version: string,\n pkgName: string\n): Promise<void> {\n return new Promise(async (resolve, reject) => {\n const logger = setup(config?.log as any);\n const addr = getListenAddress(port ?? config?.listen, logger);\n displayExperimentsInfoBox(config.flags);\n\n let app;\n if (process.env.VERDACCIO_SERVER === 'fastify') {\n app = await fastifyServer(config);\n app.listen({ port: addr.port, host: addr.host }, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n } else {\n app = await expressServer(config);\n const serverFactory = createServerFactory(config, addr, app);\n serverFactory\n .listen(addr.port || addr.path, addr.host, (): void => {\n // send a message for test\n if (isFunction(process.send)) {\n process.send({\n verdaccio_started: true,\n });\n }\n const addressServer = `${\n addr.path\n ? url.format({\n protocol: 'unix',\n pathname: addr.path,\n })\n : url.format({\n protocol: addr.proto,\n hostname: addr.host,\n port: addr.port,\n pathname: '/',\n })\n }`;\n logger.info({ addressServer }, 'http address: @{addressServer}');\n logger.info({ version }, 'version: @{version}');\n resolve();\n })\n .on('error', function (err): void {\n reject(err);\n process.exitCode = 1;\n });\n function handleShutdownGracefully() {\n logger.info('received shutdown signal - closing server gracefully...');\n serverFactory.close(() => {\n logger.info('server closed.');\n process.exit(0);\n });\n }\n\n for (const signal of ['SIGINT', 'SIGTERM', 'SIGHUP']) {\n // Use once() so that receiving double signals exit the app.\n process.once(signal, handleShutdownGracefully);\n }\n }\n });\n}\n\n/**\n * Exposes a server factory to be instantiated programmatically.\n *\n ```ts\n const app = await runServer(); // default configuration\n const app = await runServer('./config/config.yaml');\n const app = await runServer({ configuration });\n app.listen(4000, (event) => {\n // do something\n });\n ```\n * @param config\n */\nexport async function runServer(config?: string | ConfigYaml): Promise<any> {\n const configurationParsed = getConfigParsed(config);\n setup(configurationParsed.log as any);\n displayExperimentsInfoBox(configurationParsed.flags);\n const addr = getListenAddress(configurationParsed.listen, logger);\n const app = await expressServer(configurationParsed);\n return createServerFactory(configurationParsed, addr, app);\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdaccio/node-api",
|
|
3
|
-
"version": "8.0.0-next-8.
|
|
3
|
+
"version": "8.0.0-next-8.22",
|
|
4
4
|
"description": "Verdaccio Node API",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -33,19 +33,19 @@
|
|
|
33
33
|
},
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@verdaccio/config": "8.0.0-next-8.
|
|
37
|
-
"@verdaccio/core": "8.0.0-next-8.
|
|
38
|
-
"@verdaccio/logger": "8.0.0-next-8.
|
|
39
|
-
"@verdaccio/server": "8.0.0-next-8.
|
|
40
|
-
"@verdaccio/server-fastify": "8.0.0-next-8.
|
|
36
|
+
"@verdaccio/config": "8.0.0-next-8.22",
|
|
37
|
+
"@verdaccio/core": "8.0.0-next-8.22",
|
|
38
|
+
"@verdaccio/logger": "8.0.0-next-8.22",
|
|
39
|
+
"@verdaccio/server": "8.0.0-next-8.22",
|
|
40
|
+
"@verdaccio/server-fastify": "8.0.0-next-8.22",
|
|
41
41
|
"debug": "4.4.1",
|
|
42
42
|
"lodash": "4.17.21"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@verdaccio/types": "13.0.0-next-8.7",
|
|
46
46
|
"selfsigned": "2.4.1",
|
|
47
|
-
"supertest": "7.
|
|
48
|
-
"vitest": "3.
|
|
47
|
+
"supertest": "7.1.4",
|
|
48
|
+
"vitest": "3.2.4"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|