Socket
Socket
Sign inDemoInstall

@resoc/create-img

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@resoc/create-img - npm Package Compare versions

Comparing version 0.4.0 to 0.4.1

build/compile.test.d.ts

1

build/compile.d.ts

@@ -8,4 +8,5 @@ import { ImageTemplate, ImageResolution, ParamValues } from '@resoc/core';

export declare const compileLocalTemplate: (templateManifestPath: string, paramValues: ParamValues, resolution: ImageResolution, imagePath: string, options?: LocalTemplateOptions | undefined) => Promise<string>;
export declare const isLocalResource: (url: string) => boolean;
export declare const compileTemplate: (template: ImageTemplate, paramValues: ParamValues, resolution: ImageResolution, imagePath: string, resourcePath?: string | undefined) => Promise<void>;
export declare const urlToImage: (url: string, outputPath: string) => Promise<void>;
export {};

@@ -1,2 +0,2 @@

import { renderTemplateToHtml } from '@resoc/core';
import { renderTemplateToHtml, ParamType } from '@resoc/core';
import puppeteer from 'puppeteer';

@@ -10,2 +10,3 @@ import fs from 'fs/promises';

import Mustache from 'mustache';
import { v4 } from 'uuid';

@@ -215,22 +216,57 @@ /*! *****************************************************************************

}); };
var compileTemplate = function (template, paramValues, resolution, imagePath, resourcePath) { return __awaiter(void 0, void 0, void 0, function () {
var html, tmpDir, htmlPath;
var isLocalResource = function (url) {
var up = url.toLowerCase();
return (!up.startsWith('http://') &&
!up.startsWith('https://') &&
!up.startsWith('//'));
};
var copyLocalResources = function (parameters, values, tmpDir) { return __awaiter(void 0, void 0, void 0, function () {
var newValues, _i, parameters_1, param, url, dest;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
html = renderTemplateToHtml(template, paramValues, resolution);
return [4 /*yield*/, fs.mkdtemp(path.join(os.tmpdir(), 'resoc-compile-'))];
newValues = Object.assign({}, values);
_i = 0, parameters_1 = parameters;
_a.label = 1;
case 1:
if (!(_i < parameters_1.length)) return [3 /*break*/, 4];
param = parameters_1[_i];
url = values[param.name];
if (!(param.type === ParamType.ImageUrl && isLocalResource(url))) return [3 /*break*/, 3];
dest = tmpDir + "/" + v4() + "-" + path.basename(url);
return [4 /*yield*/, fs.copyFile(url, dest)];
case 2:
_a.sent();
newValues[param.name] = dest;
_a.label = 3;
case 3:
_i++;
return [3 /*break*/, 1];
case 4: return [2 /*return*/, newValues];
}
});
}); };
var compileTemplate = function (template, paramValues, resolution, imagePath, resourcePath) { return __awaiter(void 0, void 0, void 0, function () {
var tmpDir, html, htmlPath;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fs.mkdtemp(path.join(os.tmpdir(), 'resoc-compile-'))];
case 1:
tmpDir = _a.sent();
return [4 /*yield*/, copyLocalResources(template.parameters, paramValues, tmpDir)];
case 2:
// Copy extenal resources
paramValues = _a.sent();
html = renderTemplateToHtml(template, paramValues, resolution);
htmlPath = tmpDir + "/content.html";
return [4 /*yield*/, fs.writeFile(htmlPath, html)];
case 2:
case 3:
_a.sent();
if (!resourcePath) return [3 /*break*/, 4];
if (!resourcePath) return [3 /*break*/, 5];
return [4 /*yield*/, copy(resourcePath, tmpDir)];
case 3:
case 4:
_a.sent();
_a.label = 4;
case 4: return [4 /*yield*/, urlToImage("file:///" + htmlPath, imagePath)];
case 5:
_a.label = 5;
case 5: return [4 /*yield*/, urlToImage("file:///" + htmlPath, imagePath)];
case 6:
_a.sent();

@@ -237,0 +273,0 @@ return [2 /*return*/];

@@ -14,2 +14,3 @@ 'use strict';

var Mustache = require('mustache');
var uuid = require('uuid');

@@ -229,22 +230,57 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }

}); };
var compileTemplate = function (template, paramValues, resolution, imagePath, resourcePath) { return __awaiter(void 0, void 0, void 0, function () {
var html, tmpDir, htmlPath;
var isLocalResource = function (url) {
var up = url.toLowerCase();
return (!up.startsWith('http://') &&
!up.startsWith('https://') &&
!up.startsWith('//'));
};
var copyLocalResources = function (parameters, values, tmpDir) { return __awaiter(void 0, void 0, void 0, function () {
var newValues, _i, parameters_1, param, url, dest;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
html = core.renderTemplateToHtml(template, paramValues, resolution);
return [4 /*yield*/, fs__default['default'].mkdtemp(path__default['default'].join(os__default['default'].tmpdir(), 'resoc-compile-'))];
newValues = Object.assign({}, values);
_i = 0, parameters_1 = parameters;
_a.label = 1;
case 1:
if (!(_i < parameters_1.length)) return [3 /*break*/, 4];
param = parameters_1[_i];
url = values[param.name];
if (!(param.type === core.ParamType.ImageUrl && isLocalResource(url))) return [3 /*break*/, 3];
dest = tmpDir + "/" + uuid.v4() + "-" + path__default['default'].basename(url);
return [4 /*yield*/, fs__default['default'].copyFile(url, dest)];
case 2:
_a.sent();
newValues[param.name] = dest;
_a.label = 3;
case 3:
_i++;
return [3 /*break*/, 1];
case 4: return [2 /*return*/, newValues];
}
});
}); };
var compileTemplate = function (template, paramValues, resolution, imagePath, resourcePath) { return __awaiter(void 0, void 0, void 0, function () {
var tmpDir, html, htmlPath;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fs__default['default'].mkdtemp(path__default['default'].join(os__default['default'].tmpdir(), 'resoc-compile-'))];
case 1:
tmpDir = _a.sent();
return [4 /*yield*/, copyLocalResources(template.parameters, paramValues, tmpDir)];
case 2:
// Copy extenal resources
paramValues = _a.sent();
html = core.renderTemplateToHtml(template, paramValues, resolution);
htmlPath = tmpDir + "/content.html";
return [4 /*yield*/, fs__default['default'].writeFile(htmlPath, html)];
case 2:
case 3:
_a.sent();
if (!resourcePath) return [3 /*break*/, 4];
if (!resourcePath) return [3 /*break*/, 5];
return [4 /*yield*/, copy__default['default'](resourcePath, tmpDir)];
case 3:
case 4:
_a.sent();
_a.label = 4;
case 4: return [4 /*yield*/, urlToImage("file:///" + htmlPath, imagePath)];
case 5:
_a.label = 5;
case 5: return [4 /*yield*/, urlToImage("file:///" + htmlPath, imagePath)];
case 6:
_a.sent();

@@ -251,0 +287,0 @@ return [2 /*return*/];

8

package.json
{
"name": "@resoc/create-img",
"version": "0.4.0",
"version": "0.4.1",
"description": "Create an image based on a Resoc image template",

@@ -35,3 +35,4 @@ "main": "build/index.js",

"recursive-copy": "^2.0.13",
"sha256": "^0.2.0"
"sha256": "^0.2.0",
"uuid": "^8.3.2"
},

@@ -50,2 +51,3 @@ "devDependencies": {

"@types/sha256": "^0.2.0",
"@types/uuid": "^8.3.1",
"jest": "^27.0.6",

@@ -60,3 +62,3 @@ "nodemon": "^2.0.12",

},
"gitHead": "25c7bcf1cc97afdaf172820fab056df954b80719"
"gitHead": "8b642b3dc8e2d002fdc7d1ae49e0afe16bab2dcf"
}

@@ -1,2 +0,2 @@

import { ImageTemplate, ImageResolution, loadRemoteTemplate, ParamValues, renderTemplateToHtml } from '@resoc/core'
import { ImageTemplate, ImageResolution, loadRemoteTemplate, ParamValues, renderTemplateToHtml, TemplateParam, ParamType } from '@resoc/core'
import puppeteer from 'puppeteer'

@@ -10,2 +10,3 @@ import fs from 'fs/promises'

import Mustache from 'mustache'
import { v4 as uuidv4 } from 'uuid'

@@ -64,7 +65,32 @@ type LocalTemplateOptions = {

export const isLocalResource = (url: string): boolean => {
const up = url.toLowerCase();
return (
!up.startsWith('http://') &&
!up.startsWith('https://') &&
!up.startsWith('//')
);
};
const copyLocalResources = async (parameters: TemplateParam[], values: ParamValues, tmpDir: string): Promise<ParamValues> => {
const newValues = Object.assign({}, values);
for (const param of parameters) {
const url = values[param.name];
if (param.type === ParamType.ImageUrl && isLocalResource(url)) {
const dest = `${tmpDir}/${uuidv4()}-${path.basename(url)}`;
await fs.copyFile(url, dest);
newValues[param.name] = dest;
}
}
return newValues;
};
export const compileTemplate = async (template: ImageTemplate, paramValues: ParamValues, resolution: ImageResolution, imagePath: string, resourcePath?: string): Promise<void> => {
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'resoc-compile-'));
// Copy extenal resources
paramValues = await copyLocalResources(template.parameters, paramValues, tmpDir);
const html = renderTemplateToHtml(template, paramValues, resolution);
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'resoc-compile-'));
// Write filled template

@@ -71,0 +97,0 @@ const htmlPath = `${tmpDir}/content.html`;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc