Package Exports
- @holofy/utils
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@holofy/utils) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
holofy-utils
About
Utility functions
@holofy/utilsprovides the following utility functions:{ s3: { uploadBase64: uploadBase64(content, folder, bucket), uploadMedia: uploadMedia(req, folder, bucket), uploadImage: uploadImage(path, folder, bucket), } }
Usage
Install the package:
npm install @holofy/utils --save-prodImport as necessary:
const Utils = require('@holofy/utils');
const utils = Utils(config.utils);To test on dev
Add .env to project root folder
AWS_S3_ACCESS_KEY=
AWS_S3_SECRET=
AWS_S3_REGION=
AWS_S3_BUCKET=uploadBase64
Add /sandbox/upload-base64-index.js to project root folder
// eslint-disable-next-line import/no-extraneous-dependencies
require('dotenv').config();
const fs = require('fs');
const Utils = require('../index');
const config = {
s3: {
awsS3AccessKey: process.env.AWS_S3_ACCESS_KEY,
awsS3Secret: process.env.AWS_S3_SECRET,
awsS3Region: process.env.AWS_S3_REGION,
awsS3Bucket: process.env.AWS_S3_BUCKET,
},
};
const utils = Utils(config);
const content = fs.readFileSync('./sandbox/image.txt', 'utf8');
Promise.resolve()
.then(() => utils.s3.uploadBase64(content, 'spaces', config.s3.awsS3Bucket))
.then((key) => console.log(`Upload ${key} to ${config.s3.awsS3Bucket} completed`));Add /sandbox/image.txt to project root folder
image.txt should contain a base64 encoded image string data
On terminal
npm i && node sandbox/upload-base64-index.jsuploadMedia TODO: update
Add /sandbox/upload-media-index.js to project root folder
// eslint-disable-next-line import/no-extraneous-dependencies
require('dotenv').config();
const http = require('http');
const Utils = require('../index');
const PORT = process.env.PORT || 8080;
const config = {
s3: {
awsS3AccessKey: process.env.AWS_S3_ACCESS_KEY,
awsS3Secret: process.env.AWS_S3_SECRET,
awsS3Region: process.env.AWS_S3_REGION,
awsS3Bucket: process.env.AWS_S3_BUCKET,
},
};
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.writeHead(200, { 'content-type': 'text/html' });
res.end(
'<form action="/upload" enctype="multipart/form-data" method="post">'
+ '<input type="text" name="title"><br>'
+ '<input type="file" name="file" multiple="multiple"><br>'
+ '<input type="submit" value="Upload">'
+ '</form>',
);
} else if (req.url === '/upload') {
const utils = Utils(config);
Promise.resolve()
.then(() => utils.s3.uploadMedia(req, 'assets/video', config.s3.awsS3Bucket))
.then((result) => res.end(`Upload ${JSON.stringify(result)} to ${config.s3.awsS3Bucket} completed`));
} else {
res.writeHead(404, { 'content-type': 'text/plain' });
res.end('404');
}
});
server.listen(PORT, () => {
console.info(`listening on http://localhost:${PORT}/`);
});On terminal
npm i && node sandbox/upload-media-index.jsuploadImage
Add /sandbox/upload-image-index.js to project root folder
// eslint-disable-next-line import/no-extraneous-dependencies
require('dotenv').config();
const Utils = require('../index');
const config = {
s3: {
awsS3AccessKey: process.env.AWS_S3_ACCESS_KEY,
awsS3Secret: process.env.AWS_S3_SECRET,
awsS3Region: process.env.AWS_S3_REGION,
awsS3Bucket: process.env.AWS_S3_BUCKET,
},
};
const utils = Utils(config);
Promise.resolve()
.then(() => utils.s3.uploadImage('./screenshot-1.jpg', 'assets/video/images', config.s3.awsS3Bucket))
.then((key) => console.log(`Upload ${key} to ${config.s3.awsS3Bucket} completed`));On terminal
npm i && node sandbox/upload-image-index.jsuploadFile
Add /sandbox/upload-file-index.js to project root folder
// eslint-disable-next-line import/no-extraneous-dependencies
require('dotenv').config();
const Utils = require('../index');
const config = {
s3: {
awsS3AccessKey: process.env.AWS_S3_ACCESS_KEY,
awsS3Secret: process.env.AWS_S3_SECRET,
awsS3Region: process.env.AWS_S3_REGION,
awsS3Bucket: process.env.AWS_S3_BUCKET,
},
};
const utils = Utils(config);
Promise.resolve()
.then(() => utils.s3.uploadFile('./sandbox/index.html', 'accountWidget', config.s3.awsS3Bucket))
.then((key) => console.log(`Upload ${key} to ${config.s3.awsS3Bucket} completed`));On terminal
npm i && node sandbox/upload-file-index.jsPlease do not commit sandbox/* and .env
Publish New Package
- Only once: In this repository: Add NPM_AUTH_TOKEN to GitLab -> Settings -> CI/CD -> Settings -> Variables
git add .
git commit
npm version [major | minor | patch]