require('../bootstrap');
import s3 from '../adapters/s3';
import fetch from 'node-fetch';
const npm = async (registry, name) => {
const response = await fetch(`${registry}${name}`);
if (!response.ok) {
throw new Error(`[${response.status}] Could Not Get Package: ${registry}${name}`);
}
return response.json();
};
export default async ({ path }, context, callback) => {
const { registry, bucket, region } = process.env;
const name = `${decodeURIComponent(path.name)}`;
const storage = new s3({ region, bucket });
try {
const body = await storage.get(`${name}/index.json`);
return callback(JSON.parse(body.toString()));
} catch (error) {
Iif (error.code === 'NoSuchKey') {
try {
const data = await npm(registry, name);
return callback(null, data);
} catch (error) {
return callback(error);
}
}
return callback(error);
}
};
|