UNPKG

3.2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const fs = require("fs-extra");
4const qq = require("qqjs");
5const log_1 = require("./log");
6const debug = log_1.debug.new('aws');
7const cache = {};
8const aws = {
9 get creds() {
10 const creds = {
11 accessKeyId: process.env.AWS_ACCESS_KEY_ID,
12 secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
13 };
14 if (!creds.accessKeyId)
15 throw new Error('AWS_ACCESS_KEY_ID not set');
16 if (!creds.secretAccessKey)
17 throw new Error('AWS_SECRET_ACCESS_KEY not set');
18 return creds;
19 },
20 get s3() {
21 try {
22 return cache.s3 = cache.s3 || new (require('aws-sdk/clients/s3'))(this.creds);
23 }
24 catch (err) {
25 if (err.code === 'MODULE_NOT_FOUND')
26 throw new Error(`${err.message}\naws-sdk is needed to run this command.\nInstall aws-sdk as a devDependency in your CLI. \`yarn add -D aws-sdk\``);
27 throw err;
28 }
29 },
30 get cloudfront() { return cache.cloudfront = cache.cloudfront || new (require('aws-sdk/clients/cloudfront'))(this.creds); },
31};
32exports.default = {
33 get cloudfront() {
34 return {
35 createCloudfrontInvalidation: (options) => new Promise((resolve, reject) => {
36 log_1.log('createCloudfrontInvalidation', options.DistributionId, options.InvalidationBatch.Paths.Items);
37 aws.cloudfront.createInvalidation(options, err => {
38 if (err)
39 reject(err);
40 else
41 resolve();
42 });
43 }),
44 };
45 },
46 get s3() {
47 return {
48 uploadFile: (local, options) => new Promise((resolve, reject) => {
49 log_1.log('s3:uploadFile', qq.prettifyPaths(local), `s3://${options.Bucket}/${options.Key}`);
50 options.Body = fs.createReadStream(local);
51 aws.s3.upload(options, err => {
52 if (err)
53 reject(err);
54 else
55 resolve();
56 });
57 }),
58 headObject: (options) => new Promise((resolve, reject) => {
59 debug('s3:headObject', `s3://${options.Bucket}/${options.Key}`);
60 aws.s3.headObject(options, (err, data) => {
61 if (err)
62 reject(err);
63 else
64 resolve(data);
65 });
66 }),
67 };
68 }
69};
70// export const getObject = (options: S3.Types.GetObjectRequest) => new Promise<S3.GetObjectOutput>((resolve, reject) => {
71// debug('getObject', `s3://${options.Bucket}/${options.Key}`)
72// s3().getObject(options, (err, data) => {
73// if (err) reject(err)
74// else resolve(data)
75// })
76// })
77// export const listObjects = (options: S3.Types.ListObjectsV2Request) => new Promise<S3.ListObjectsV2Output>((resolve, reject) => {
78// debug('listObjects', `s3://${options.Bucket}/${options.Prefix}`)
79// s3().listObjectsV2(options, (err, objects) => {
80// if (err) reject(err)
81// else resolve(objects)
82// })
83// })