@verdaccio/server-fastify
Version:
fastify server api implementation
66 lines (58 loc) • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _debug = _interopRequireDefault(require("debug"));
var _core = require("@verdaccio/core");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable @typescript-eslint/no-unused-vars */
const debug = (0, _debug.default)('verdaccio:fastify:tarball');
async function tarballRoute(fastify) {
fastify.get('/:package/-/:filename', async (request, reply) => {
const {
package: pkg,
filename
} = request.params;
debug('stream tarball for %s@%s', pkg, filename);
const abort = new AbortController();
const stream = await fastify.storage.getTarballNext(pkg, filename, {
signal: abort.signal
// enableRemote: true,
});
stream.on('content-length', size => {
reply.header(_core.HEADER_TYPE.CONTENT_LENGTH, size);
});
// request.socket.on('abort', () => {
// debug('request aborted for %o', request.url);
// abort.abort();
// });
return stream;
});
fastify.get('/:scope/:name/-/:filename', async (request, reply) => {
const abort = new AbortController();
const {
scope,
name,
filename
} = request.params;
const scopedPackage = `${scope}/${name}`;
debug('stream scope tarball for %s@%s', scopedPackage, filename);
const stream = await fastify.storage.getTarballNext(scopedPackage, filename, {
signal: abort.signal
// enableRemote: true,
});
stream.on('content-length', size => {
reply.header(_core.HEADER_TYPE.CONTENT_LENGTH, size);
});
// request.socket.on('abort', () => {
// debug('request aborted for %o', request.url);
// abort.abort();
// });
reply.header(_core.HEADERS.CONTENT_TYPE, _core.HEADERS.OCTET_STREAM);
return stream;
});
}
var _default = tarballRoute;
exports.default = _default;
//# sourceMappingURL=tarball.js.map