🚀 DAY 4 OF LAUNCH WEEK:Introducing Socket Scanning for OpenVSX Extensions.Learn more →
Socket
Book a DemoInstallSign in
Socket

@bcgov/carbone-copy-api

Package Overview
Dependencies
Maintainers
12
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bcgov/carbone-copy-api

Express API for calling Carbone with a file caching layer.

latest
Source
npmnpm
Version
2.2.2
Version published
Maintainers
12
Created
Source

[Deprecated] carbone-copy-api

Note: This package has been deprecated and will no longer be receiving support updates.

npm downloads License img

Express library that provides and interface for generating documents from templates and data. It provides a local file storage cache that means callers do not have to upload the template for each render. Callers should should store cache keys/hashes and check if templates exist before generation.

This is a wrapper around carbone, please refer to their documentation for more detail. The API follows their recommendations.

Prerequisites

This library will require LibreOffice installed to do pdf generation.

See image: alpine-node-libreoffice.

Installation

npm i @bcgov/carbone-copy-api

Configuration

There are several configuration variables that allow for customization.

Config VarENV VarDefaultNotes
fileUploadsDirCACHE_DIR/tmp/carbone-filesThis is the root location to read/write files. Error will be thrown if directory does not exist and cannot be created. Default is operating system temp file location.
formFieldNameUPLOAD_FIELD_NAMEtemplateField name for multipart form data upload when uploading templates via /template api. Default is 'template'
maxFileSizeUPLOAD_FILE_SIZE25MBLimit size of template files. Uses the bytes library for parsing values. Default is '25MB'
maxFileCountUPLOAD_FILE_COUNT1Limit the number of files uploaded per call. Default is 1, not recommended to use any other value.
startCarboneSTART_CARBONEtrueIf true, then the carbone converter will be started on application start. This will ensure that the first call to /render will not incur the overhead of starting the converter. Default is 'true'

NOTE: maxFileSize uses the bytes library for parsing values.

Options

const carboneCopyApi = require('@bcgov/carbone-copy-api');
const options = {
    fileUploadsDir: '/tmp/my-application-holding/files',
    formFieldName: 'files',
    maxFileSize: '50MB',
    maxFileCount: 1,
    startCarbone: true
};
carboneCopyApi.init(options);

Environment Variables

export CACHE_DIR = '/tmp/my-application-holding/files'
export CONVERTER_FACTORY_TIMEOUT = 60000
export UPLOAD_FIELD_NAME = 'files'
export UPLOAD_FILE_SIZE = '50MB'
export UPLOAD_FILE_COUNT = 1
export START_CARBONE = 'true'
const carboneCopyApi = require('@bcgov/carbone-copy-api');
carboneCopyApi.init();

Usage

The mount function accepts an express app, a path and configuration options (optional). Once mounted, you can view the OpenAPI spec at /docs wherever it is mounted.

Examples

The following mounts the carbone-copy-api at the root of the server.

const carboneCopyApi = require('@bcgov/carbone-copy-api');

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
...
carboneCopyApi.mount(app, '/');

The following mounts the carbone-copy-api to an alternate path on the server.

const carboneCopyApi = require('@bcgov/carbone-copy-api');

const options = {
   fileUploadsDir: '/tmp/my-application-holding/files',
   formFieldName: 'template',
   maxFileSize: '50MB',
   maxFileCount: 1,
   startCarbone: true
};

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
...
carboneCopyApi.mount(app, '/api/cc/v1', options);

Keywords

carbone

FAQs

Package last updated on 27 Jul 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts