JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q51140F
  • License MIT

Utility functions for Holofy

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/utils provides 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-prod

Import 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.js

uploadMedia 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.js

uploadImage

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.js

uploadFile

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.js

Please 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]