Socket
Socket
Sign inDemoInstall

@namecheap/tailorx

Package Overview
Dependencies
23
Maintainers
2
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 7.0.1 to 8.0.0

65

lib/fetch-template.js
'use strict';
const path = require('path');
const url = require('url');
const fs = require('fs');
const promisify = require('util.promisify');
const path = require('node:path');
const url = require('node:url');
const {
readFile: readFilePromise,
lstat: lstatPromise
} = require('node:fs/promises');

@@ -26,8 +28,2 @@ const TEMPLATE_ERROR = 0;

/**
* Promisify the functions
*/
const readFilePromise = promisify(fs.readFile);
const lstatPromise = promisify(fs.lstat);
/**
* Read the file from File System

@@ -101,32 +97,33 @@ *

*/
module.exports = (templatesPath, baseTemplateFn) => (
request,
parseTemplate
) => {
const pathname = getPathName(request);
module.exports =
(templatesPath, baseTemplateFn) => (request, parseTemplate) => {
const pathname = getPathName(request);
return getTemplatePath(templatesPath, pathname).then(templateStat => {
return readFile(templateStat.path).then(baseTemplate => {
if (templateStat.isFile || typeof baseTemplateFn !== 'function') {
return parseTemplate(baseTemplate);
}
return getTemplatePath(templatesPath, pathname).then(templateStat => {
return readFile(templateStat.path).then(baseTemplate => {
if (
templateStat.isFile ||
typeof baseTemplateFn !== 'function'
) {
return parseTemplate(baseTemplate);
}
const templateName = baseTemplateFn(pathname);
if (!templateName) {
return parseTemplate(baseTemplate);
}
const templateName = baseTemplateFn(pathname);
if (!templateName) {
return parseTemplate(baseTemplate);
}
const pageTemplate = baseTemplate;
const baseTemplatePath = factoryFilePath(
templatesPath,
templateName
);
return readFile(baseTemplatePath).then(baseTemplate =>
parseTemplate(baseTemplate, pageTemplate)
);
const pageTemplate = baseTemplate;
const baseTemplatePath = factoryFilePath(
templatesPath,
templateName
);
return readFile(baseTemplatePath).then(baseTemplate =>
parseTemplate(baseTemplate, pageTemplate)
);
});
});
});
};
};
module.exports.TEMPLATE_ERROR = TEMPLATE_ERROR;
module.exports.TEMPLATE_NOT_FOUND = TEMPLATE_NOT_FOUND;

@@ -32,55 +32,56 @@ 'use strict';

*/
module.exports = (filterHeaders, processFragmentResponse) => (
fragmentUrl,
fragmentAttributes,
request,
span = null
) =>
new Promise((resolve, reject) => {
const parsedUrl = url.parse(fragmentUrl);
const options = Object.assign(
{
headers: Object.assign(
filterHeaders(fragmentAttributes, request),
requiredHeaders
),
timeout: fragmentAttributes.timeout
},
parsedUrl
);
module.exports =
(filterHeaders, processFragmentResponse) =>
(fragmentUrl, fragmentAttributes, request, span = null) =>
new Promise((resolve, reject) => {
const parsedUrl = url.parse(fragmentUrl);
const options = Object.assign(
{
headers: Object.assign(
filterHeaders(fragmentAttributes, request),
requiredHeaders
),
timeout: fragmentAttributes.timeout
},
parsedUrl
);
if (span) {
tracer.inject(span.context(), FORMAT_HTTP_HEADERS, options.headers);
}
if (span) {
tracer.inject(
span.context(),
FORMAT_HTTP_HEADERS,
options.headers
);
}
const { protocol: reqProtocol, timeout } = options;
const hasHttpsProtocol = reqProtocol === 'https:';
const protocol = hasHttpsProtocol ? https : http;
options.agent = hasHttpsProtocol ? kaAgentHttps : kaAgent;
const { protocol: reqProtocol, timeout } = options;
const hasHttpsProtocol = reqProtocol === 'https:';
const protocol = hasHttpsProtocol ? https : http;
options.agent = hasHttpsProtocol ? kaAgentHttps : kaAgent;
if (hasHttpsProtocol && fragmentAttributes.ignoreInvalidSsl) {
options.rejectUnauthorized = false;
}
if (hasHttpsProtocol && fragmentAttributes.ignoreInvalidSsl) {
options.rejectUnauthorized = false;
}
const fragmentRequest = protocol.request(options);
const fragmentRequest = protocol.request(options);
if (timeout) {
fragmentRequest.setTimeout(timeout, fragmentRequest.abort);
}
if (timeout) {
fragmentRequest.setTimeout(timeout, fragmentRequest.abort);
}
fragmentRequest.on('response', response => {
try {
resolve(
processFragmentResponse(response, {
request,
fragmentUrl,
fragmentAttributes
})
);
} catch (e) {
reject(e);
}
fragmentRequest.on('response', response => {
try {
resolve(
processFragmentResponse(response, {
request,
fragmentUrl,
fragmentAttributes
})
);
} catch (e) {
reject(e);
}
});
fragmentRequest.on('error', reject);
fragmentRequest.end();
});
fragmentRequest.on('error', reject);
fragmentRequest.end();
});
'use strict';
const MARKED_PARTS_TO_IGNORE = /<!-- TailorX: Ignore during parsing START -->.*?<!-- TailorX: Ignore during parsing END -->/gims;
const IGNORED_PART_WITH_INDEX = /<!-- TailorX: Ignored content during parsing #(\d+) -->/gm;
const MARKED_PARTS_TO_IGNORE =
/<!-- TailorX: Ignore during parsing START -->.*?<!-- TailorX: Ignore during parsing END -->/gims;
const IGNORED_PART_WITH_INDEX =
/<!-- TailorX: Ignored content during parsing #(\d+) -->/gm;

@@ -6,0 +8,0 @@ function replaceIgnorePart(ignoredPartIndex) {

@@ -12,3 +12,3 @@ 'use strict';

module.exports = {
initTracer: function(implementation) {
initTracer: function (implementation) {
opentracing.initGlobalTracer(

@@ -15,0 +15,0 @@ implementation || new opentracing.Tracer()

@@ -5,3 +5,3 @@ 'use strict';

const memoize = require('memoizee');
const treeAdapter = parse5.treeAdapters.htmlparser2;
const treeAdapter = require('parse5-htmlparser2-tree-adapter');
const CustomSerializer = require('./serializer');

@@ -8,0 +8,0 @@

@@ -7,7 +7,7 @@ 'use strict';

waitFor(fragment) {
const p = new Promise(function(resolve) {
fragment.on('response', function(statusCode, headers) {
const p = new Promise(function (resolve) {
fragment.on('response', function (statusCode, headers) {
resolve([fragment.attributes, headers]);
});
fragment.on('error', function() {
fragment.on('error', function () {
resolve(null);

@@ -14,0 +14,0 @@ });

{
"name": "@namecheap/tailorx",
"version": "7.0.1",
"version": "8.0.0",
"description": "Tailor assembles a web page from multiple fragments",

@@ -32,29 +32,28 @@ "keywords": [

"dependencies": {
"@namecheap/error-extender": "^1.1.1",
"agentkeepalive": "^4.1.0",
"device-detector-js": "^2.2.1",
"lodash": "^4.17.15",
"memoizee": "^0.4.14",
"opentracing": "^0.14.3",
"parse5": "^3.0.3",
"util.promisify": "^1.0.0"
"@namecheap/error-extender": "^2.0.0",
"agentkeepalive": "^4.5.0",
"device-detector-js": "^3.0.3",
"lodash": "^4.17.21",
"memoizee": "^0.4.15",
"opentracing": "^0.14.7",
"parse5": "^6.0.1",
"parse5-htmlparser2-tree-adapter": "^6.0.1"
},
"devDependencies": {
"@babel/core": "^7.23.2",
"@babel/eslint-parser": "^7.22.15",
"babel-eslint": "^10.0.3",
"codecov": "^3.6.2",
"eslint": "^6.8.0",
"eslint-plugin-prettier": "^3.1.2",
"iamdee": "^0.4.0",
"lazypipe": "^1.0.1",
"loadtest": "^2.3.0",
"metrics": "^0.1.11",
"mocha": "^7.0.1",
"nock": "^11.7.2",
"nyc": "^15.0.0",
"codecov": "^3.8.2",
"eslint": "^8.52.0",
"eslint-plugin-prettier": "^5.0.1",
"loadtest": "^8.0.3",
"metrics": "^0.1.21",
"mocha": "^10.2.0",
"nock": "^13.3.7",
"nyc": "^15.1.0",
"pre-commit": "^1.2.2",
"prettier": "^1.19.1",
"proxyquire": "^1.8.0",
"puppeteer": "^1.0.0",
"sinon": "^8.1.1",
"wd": "^1.2.0"
"prettier": "^3.0.3",
"proxyquire": "^2.1.3",
"puppeteer": "^21.4.1",
"sinon": "^17.0.0"
},

@@ -61,0 +60,0 @@ "files": [

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc