mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-01-27 22:59:51 -05:00
connect storage with fastify server as decorator (#2299)
* connect storage with fastify server as decorator * remove dep
This commit is contained in:
parent
8ca5fe6d26
commit
09a7cf3456
9 changed files with 67 additions and 12 deletions
|
@ -42,7 +42,7 @@ export class NewServer extends Command {
|
||||||
|
|
||||||
process.title = web?.title || DEFAULT_PROCESS_NAME;
|
process.title = web?.title || DEFAULT_PROCESS_NAME;
|
||||||
// const { version, name } = require('../../package.json');
|
// const { version, name } = require('../../package.json');
|
||||||
const ser = await server({ logger });
|
const ser = await server({ logger, config: configParsed });
|
||||||
await ser.listen(4873);
|
await ser.listen(4873);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
|
|
@ -19,7 +19,7 @@ const debug = buildDebug('verdaccio:fastify:debug');
|
||||||
logger.info(`config location ${configFile}`);
|
logger.info(`config location ${configFile}`);
|
||||||
debug('configParsed %s', configParsed);
|
debug('configParsed %s', configParsed);
|
||||||
process.title = 'fastify-verdaccio';
|
process.title = 'fastify-verdaccio';
|
||||||
const ser = await server({ logger });
|
const ser = await server({ logger, config: configParsed });
|
||||||
await ser.listen(4873);
|
await ser.listen(4873);
|
||||||
logger.info('fastify running on port 4873');
|
logger.info('fastify running on port 4873');
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|
|
@ -34,14 +34,16 @@
|
||||||
"access": "public"
|
"access": "public"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@verdaccio/config": "workspace:6.0.0-6-next.7",
|
||||||
|
"@verdaccio/auth": "workspace:6.0.0-6-next.9",
|
||||||
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
|
"@verdaccio/logger": "workspace:6.0.0-6-next.4",
|
||||||
|
"@verdaccio/store": "workspace:6.0.0-6-next.10",
|
||||||
|
"debug": "4.3.1",
|
||||||
"fastify": "3.15.1",
|
"fastify": "3.15.1",
|
||||||
"fastify-plugin": "3.0.0",
|
"fastify-plugin": "3.0.0"
|
||||||
"debug": "4.3.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@verdaccio/types": "workspace:11.0.0-6-next.7",
|
"@verdaccio/types": "workspace:11.0.0-6-next.7",
|
||||||
"@verdaccio/config": "workspace:6.0.0-6-next.7",
|
|
||||||
"ts-node": "9.1.1"
|
"ts-node": "9.1.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
|
/* eslint-disable no-console */
|
||||||
|
/* eslint-disable no-invalid-this */
|
||||||
import { logger } from '@verdaccio/logger';
|
import { logger } from '@verdaccio/logger';
|
||||||
|
|
||||||
async function pingRoute(fastify) {
|
async function pingRoute(fastify) {
|
||||||
fastify.get('/-/ping', async () => {
|
fastify.get('/-/ping', async () => {
|
||||||
logger.http('ping endpoint');
|
logger.http('ping endpoint');
|
||||||
|
// @ts-ignore
|
||||||
|
console.log('-storage->', fastify.storage);
|
||||||
|
console.log('-config->', fastify.config);
|
||||||
return {};
|
return {};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
9
packages/core/server/src/plugins/storage.ts
Normal file
9
packages/core/server/src/plugins/storage.ts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import { Storage, IStorageHandler } from '@verdaccio/store';
|
||||||
|
|
||||||
|
export async function storageService(fastify, opts, done) {
|
||||||
|
const { config, filters } = opts;
|
||||||
|
const storage: IStorageHandler = new Storage(config);
|
||||||
|
await storage.init(config, filters ?? {});
|
||||||
|
fastify.decorate('storage', storage);
|
||||||
|
done();
|
||||||
|
}
|
|
@ -1,14 +1,36 @@
|
||||||
|
import { Config as IConfig } from '@verdaccio/types';
|
||||||
|
import { Config as AppConfig } from '@verdaccio/config';
|
||||||
|
|
||||||
import fastify from 'fastify';
|
import fastify from 'fastify';
|
||||||
import buildDebug from 'debug';
|
import buildDebug from 'debug';
|
||||||
|
import fp from 'fastify-plugin';
|
||||||
|
|
||||||
import ping from './endpoints/ping';
|
import ping from './endpoints/ping';
|
||||||
|
import { storageService } from './plugins/storage';
|
||||||
|
|
||||||
const debug = buildDebug('verdaccio:fastify');
|
const debug = buildDebug('verdaccio:fastify');
|
||||||
|
|
||||||
async function startServer({ logger }) {
|
async function startServer({ logger, config }) {
|
||||||
|
const configInstance: IConfig = new AppConfig(Object.assign({}, config));
|
||||||
debug('start server');
|
debug('start server');
|
||||||
const app = fastify({ logger });
|
const app = fastify({ logger });
|
||||||
app.register(ping);
|
|
||||||
|
app.decorate('config', configInstance);
|
||||||
|
app.register(fp(storageService), { config: configInstance });
|
||||||
|
|
||||||
|
// api
|
||||||
|
app.register((instance, opts, done) => {
|
||||||
|
instance.decorate('utility', new Map());
|
||||||
|
instance.register(ping);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
// web
|
||||||
|
app.register((instance, opts, done) => {
|
||||||
|
instance.register(ping, { prefix: '/web' });
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,5 +5,19 @@
|
||||||
"outDir": "./build"
|
"outDir": "./build"
|
||||||
},
|
},
|
||||||
"include": ["src/**/*"],
|
"include": ["src/**/*"],
|
||||||
"exclude": ["src/**/*.test.ts"]
|
"exclude": ["src/**/*.test.ts"],
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "../store"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../config"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../auth"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "../logger"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ import cors from 'cors';
|
||||||
import RateLimit from 'express-rate-limit';
|
import RateLimit from 'express-rate-limit';
|
||||||
import { HttpError } from 'http-errors';
|
import { HttpError } from 'http-errors';
|
||||||
|
|
||||||
import { Storage } from '@verdaccio/store';
|
|
||||||
import { loadPlugin } from '@verdaccio/loaders';
|
import { loadPlugin } from '@verdaccio/loaders';
|
||||||
import { Auth } from '@verdaccio/auth';
|
import { Auth } from '@verdaccio/auth';
|
||||||
import apiEndpoint from '@verdaccio/api';
|
import apiEndpoint from '@verdaccio/api';
|
||||||
|
@ -17,7 +16,7 @@ import webMiddleware from '@verdaccio/web';
|
||||||
import { ConfigRuntime } from '@verdaccio/types';
|
import { ConfigRuntime } from '@verdaccio/types';
|
||||||
|
|
||||||
import { IAuth, IBasicAuth } from '@verdaccio/auth';
|
import { IAuth, IBasicAuth } from '@verdaccio/auth';
|
||||||
import { IStorageHandler } from '@verdaccio/store';
|
import { Storage, IStorageHandler } from '@verdaccio/store';
|
||||||
import { logger } from '@verdaccio/logger';
|
import { logger } from '@verdaccio/logger';
|
||||||
import { log, final, errorReportingMiddleware } from '@verdaccio/middleware';
|
import { log, final, errorReportingMiddleware } from '@verdaccio/middleware';
|
||||||
import AuditMiddleware from 'verdaccio-audit';
|
import AuditMiddleware from 'verdaccio-audit';
|
||||||
|
@ -156,8 +155,8 @@ export default (async function (configHash: ConfigRuntime): Promise<any> {
|
||||||
(plugin: IPluginStorageFilter<IConfig>) => plugin.filter_metadata
|
(plugin: IPluginStorageFilter<IConfig>) => plugin.filter_metadata
|
||||||
);
|
);
|
||||||
const storage: IStorageHandler = new Storage(config);
|
const storage: IStorageHandler = new Storage(config);
|
||||||
// waits until init calls have been initialized
|
|
||||||
try {
|
try {
|
||||||
|
// waits until init calls have been initialized
|
||||||
await storage.init(config, filters);
|
await storage.init(config, filters);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error({ error: err.msg }, 'storage has failed: @{error}');
|
logger.error({ error: err.msg }, 'storage has failed: @{error}');
|
||||||
|
|
6
pnpm-lock.yaml
generated
6
pnpm-lock.yaml
generated
|
@ -428,20 +428,24 @@ importers:
|
||||||
|
|
||||||
packages/core/server:
|
packages/core/server:
|
||||||
specifiers:
|
specifiers:
|
||||||
|
'@verdaccio/auth': workspace:6.0.0-6-next.9
|
||||||
'@verdaccio/config': workspace:6.0.0-6-next.7
|
'@verdaccio/config': workspace:6.0.0-6-next.7
|
||||||
'@verdaccio/logger': workspace:6.0.0-6-next.4
|
'@verdaccio/logger': workspace:6.0.0-6-next.4
|
||||||
|
'@verdaccio/store': workspace:6.0.0-6-next.10
|
||||||
'@verdaccio/types': workspace:11.0.0-6-next.7
|
'@verdaccio/types': workspace:11.0.0-6-next.7
|
||||||
debug: 4.3.1
|
debug: 4.3.1
|
||||||
fastify: 3.15.1
|
fastify: 3.15.1
|
||||||
fastify-plugin: 3.0.0
|
fastify-plugin: 3.0.0
|
||||||
ts-node: 9.1.1
|
ts-node: 9.1.1
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@verdaccio/auth': link:../../auth
|
||||||
|
'@verdaccio/config': link:../../config
|
||||||
'@verdaccio/logger': link:../../logger
|
'@verdaccio/logger': link:../../logger
|
||||||
|
'@verdaccio/store': link:../../store
|
||||||
debug: 4.3.1
|
debug: 4.3.1
|
||||||
fastify: 3.15.1
|
fastify: 3.15.1
|
||||||
fastify-plugin: 3.0.0
|
fastify-plugin: 3.0.0
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@verdaccio/config': link:../../config
|
|
||||||
'@verdaccio/types': link:../types
|
'@verdaccio/types': link:../types
|
||||||
ts-node: 9.1.1
|
ts-node: 9.1.1
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue