@sitecore-jss/sitecore-jss-update-package
Advanced tools
Comparing version 7.0.0 to 8.0.0
@@ -1,159 +0,158 @@ | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.createUpdatePackage = undefined; | ||
var _fs = require('fs'); | ||
var _fs2 = _interopRequireDefault(_fs); | ||
var _jszip = require('jszip'); | ||
var _jszip2 = _interopRequireDefault(_jszip); | ||
var _path = require('path'); | ||
var _path2 = _interopRequireDefault(_path); | ||
var _xml = require('xml'); | ||
var _xml2 = _interopRequireDefault(_xml); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var walkSync = function walkSync(dir) { | ||
var filelist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; | ||
_fs2.default.readdirSync(dir).forEach(function (file) { | ||
if (_fs2.default.statSync(_path2.default.join(dir, file)).isDirectory()) { | ||
filelist = filelist.concat(_path2.default.join(dir, file, _path2.default.sep)); | ||
filelist = walkSync(_path2.default.join(dir, file), filelist); | ||
} else { | ||
filelist = filelist.concat(_path2.default.join(dir, file)); | ||
} | ||
}); | ||
return filelist; | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
var getEntries = function getEntries(folder) { | ||
var files = walkSync(folder); | ||
var entries = []; | ||
files.forEach(function (entry) { | ||
var entryPath = _path2.default.join('.', entry); | ||
//remove initial folder and convert to fwd slash | ||
var name = _path2.default.relative(folder, entryPath); | ||
if (entryPath.endsWith(_path2.default.sep)) { | ||
name = name + _path2.default.sep; //ensure we retain trailing slash for dirs | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var fs_1 = __importDefault(require("fs")); | ||
var jszip_1 = __importDefault(require("jszip")); | ||
var path_1 = __importDefault(require("path")); | ||
var xml_1 = __importDefault(require("xml")); | ||
var walkSync = function (dir, filelist) { | ||
if (filelist === void 0) { filelist = []; } | ||
var result = filelist; | ||
fs_1.default.readdirSync(dir).forEach(function (file) { | ||
if (fs_1.default.statSync(path_1.default.join(dir, file)).isDirectory()) { | ||
result = result.concat(path_1.default.join(dir, file, path_1.default.sep)); | ||
result = walkSync(path_1.default.join(dir, file), result); | ||
} | ||
else { | ||
result = result.concat(path_1.default.join(dir, file)); | ||
} | ||
}); | ||
return result; | ||
}; | ||
var getEntries = function (folder) { | ||
var files = walkSync(folder); | ||
var entries = []; | ||
files.forEach(function (entry) { | ||
var entryPath = path_1.default.join('.', entry); | ||
// remove initial folder and convert to fwd slash | ||
var name = path_1.default.relative(folder, entryPath); | ||
if (entryPath.endsWith(path_1.default.sep)) { | ||
name += path_1.default.sep; // ensure we retain trailing slash for dirs | ||
} | ||
name = name.split(path_1.default.sep).join('/'); | ||
entries.push({ path: entryPath, name: name }); | ||
}); | ||
return entries; | ||
}; | ||
var getAddedFolder = function (folderPath) { | ||
var pathForXml = folderPath.replace(new RegExp('/', 'g'), '\\'); | ||
if (pathForXml.endsWith('\\')) { | ||
pathForXml = pathForXml.substring(0, pathForXml.length - 1); | ||
} | ||
name = name.split(_path2.default.sep).join('/'); | ||
entries.push({ path: entryPath, name: name }); | ||
}); | ||
return entries; | ||
var addFolder = [ | ||
{ | ||
addFolder: [ | ||
{ collisionbehavior: '' }, | ||
{ path: pathForXml }, | ||
{ id: pathForXml }, | ||
{ parent: '' }, | ||
], | ||
}, | ||
]; | ||
return { | ||
path: pathForXml.replace(new RegExp('\\\\', 'g'), '/'), | ||
xml: xml_1.default(addFolder, { declaration: { encoding: 'UTF-8' } }), | ||
}; | ||
}; | ||
var getAddedFolder = function getAddedFolder(folderPath) { | ||
var pathForXml = folderPath.replace(new RegExp('\/', 'g'), '\\'); | ||
if (pathForXml.endsWith('\\')) { | ||
pathForXml = pathForXml.substring(0, pathForXml.length - 1); | ||
} | ||
var addFolder = [{ | ||
addFolder: [{ collisionbehavior: '' }, { path: pathForXml }, { id: pathForXml }, { parent: '' }] | ||
}]; | ||
return { | ||
path: pathForXml.replace(new RegExp('\\\\', 'g'), '/'), | ||
xml: (0, _xml2.default)(addFolder, { declaration: { encoding: 'UTF-8' } }) | ||
}; | ||
var getFileProperties = function (filePath) { | ||
var pathForXml = filePath.replace(new RegExp('/', 'g'), '\\'); | ||
var addFile = [ | ||
{ | ||
addFile: [ | ||
{ collisionbehavior: '' }, | ||
{ path: pathForXml }, | ||
{ id: pathForXml }, | ||
{ parent: '' }, | ||
{ file: '' }, | ||
{ hashCode: '' }, | ||
], | ||
}, | ||
]; | ||
var properties = "version=2.0\r\nxml=" + xml_1.default(addFile, { | ||
declaration: { encoding: 'UTF-8' }, | ||
}); | ||
return { | ||
path: pathForXml.replace(new RegExp('\\\\', 'g'), '/'), | ||
properties: properties, | ||
}; | ||
}; | ||
var getFileProperties = function getFileProperties(filePath) { | ||
var pathForXml = filePath.replace(new RegExp('\/', 'g'), '\\'); | ||
var addFile = [{ | ||
addFile: [{ collisionbehavior: '' }, { path: pathForXml }, { id: pathForXml }, { parent: '' }, { file: '' }, { hashCode: '' }] | ||
}]; | ||
var properties = "version=2.0" + "\r\n" + "xml=" + (0, _xml2.default)(addFile, { declaration: { encoding: 'UTF-8' } }); | ||
return { | ||
path: pathForXml.replace(new RegExp('\\\\', 'g'), '/'), | ||
properties: properties | ||
}; | ||
var ensureMetadata = function (name, defaultValue, metadata) { | ||
if (typeof metadata[name] === 'undefined') { | ||
// eslint-disable-next-line no-param-reassign | ||
metadata[name] = defaultValue; | ||
} | ||
}; | ||
var getMetadataEntries = function getMetadataEntries(metadata) { | ||
ensureMetadata('sc_author', '', metadata); | ||
ensureMetadata('sc_name', 'Update Package', metadata); | ||
ensureMetadata('sc_poststep', '', metadata); | ||
ensureMetadata('sc_publisher', '', metadata); | ||
ensureMetadata('sc_readme', '', metadata); | ||
ensureMetadata('sc_version', '', metadata); | ||
var metadataEntries = [{ name: 'installer/version', content: '07.00.000000.000000' }]; | ||
Object.keys(metadata).forEach(function (key) { | ||
var name = key; | ||
if (name.startsWith("sc_")) { | ||
name = name + ".txt"; | ||
} | ||
name = "metadata/" + name; | ||
metadataEntries.push({ | ||
name: name, | ||
content: metadata[key] | ||
var getMetadataEntries = function (metadata) { | ||
ensureMetadata('sc_author', '', metadata); | ||
ensureMetadata('sc_name', 'Update Package', metadata); | ||
ensureMetadata('sc_poststep', '', metadata); | ||
ensureMetadata('sc_publisher', '', metadata); | ||
ensureMetadata('sc_readme', '', metadata); | ||
ensureMetadata('sc_version', '', metadata); | ||
var metadataEntries = [{ name: 'installer/version', content: '07.00.000000.000000' }]; | ||
Object.keys(metadata).forEach(function (key) { | ||
var name = key; | ||
if (name.startsWith('sc_')) { | ||
name += '.txt'; | ||
} | ||
name = "metadata/" + name; | ||
metadataEntries.push({ | ||
name: name, | ||
content: metadata[key], | ||
}); | ||
}); | ||
}); | ||
return metadataEntries; | ||
return metadataEntries; | ||
}; | ||
var ensureMetadata = function ensureMetadata(name, defaultValue, metadata) { | ||
if (typeof metadata[name] === 'undefined') { | ||
metadata[name] = defaultValue; | ||
} | ||
exports.createUpdatePackage = function (contentsPath, outputPath, incomingMetadata, callback) { | ||
var zip = new jszip_1.default(); | ||
var metadata = getMetadataEntries(incomingMetadata); | ||
metadata.forEach(function (entry) { | ||
console.log("Adding metadata " + entry.name + " (" + entry.content + ")"); | ||
zip.file(entry.name, entry.content, { createFolders: false }); | ||
}); | ||
var contents = getEntries(contentsPath); | ||
contents.forEach(function (entry) { | ||
if (entry.name.endsWith('/')) { | ||
var addedFolder = getAddedFolder(entry.name); | ||
var zipFolderPath = "addedfolders/" + addedFolder.path; | ||
console.log("Adding " + zipFolderPath); | ||
zip.file(zipFolderPath, addedFolder.xml, { createFolders: false }); | ||
return; | ||
} | ||
var properties = getFileProperties(entry.name); | ||
var zipPath = "properties/addedfiles/" + properties.path; | ||
console.log("Adding " + zipPath); | ||
zip.file(zipPath, properties.properties, { createFolders: false }); | ||
zipPath = "addedfiles/" + entry.name; | ||
console.log("Adding " + zipPath); | ||
zip.file(zipPath, fs_1.default.readFileSync(path_1.default.normalize(entry.path)), { createFolders: false }); | ||
}); | ||
var zipChunks = []; | ||
zip | ||
.generateNodeStream({ type: 'nodebuffer' }) | ||
.on('data', function (chunk) { | ||
zipChunks.push(chunk); | ||
}) | ||
.on('error', function (error) { | ||
console.error(error); | ||
}) | ||
.on('end', function () { | ||
console.log('Creating wrapper zip'); | ||
var wrapper = new jszip_1.default(); | ||
wrapper.file('package.zip', Buffer.concat(zipChunks)); | ||
wrapper | ||
.generateNodeStream({ type: 'nodebuffer' }) | ||
.pipe(fs_1.default.createWriteStream(outputPath)) | ||
.on('finish', function () { | ||
console.log("Wrote " + outputPath); | ||
if (callback) { | ||
callback(); | ||
} | ||
}) | ||
.on('error', function (error) { | ||
console.error(error); | ||
}); | ||
}); | ||
}; | ||
var createUpdatePackage = exports.createUpdatePackage = function createUpdatePackage(contentsPath, outputPath, metadata, callback) { | ||
var zip = new _jszip2.default(); | ||
var metadata = getMetadataEntries(metadata); | ||
metadata.forEach(function (entry) { | ||
console.log('Adding metadata ' + entry.name + ' (' + entry.content + ')'); | ||
zip.file(entry.name, entry.content, { createFolders: false }); | ||
}); | ||
var contents = getEntries(contentsPath); | ||
contents.forEach(function (entry) { | ||
if (entry.name.endsWith('/')) { | ||
var addedFolder = getAddedFolder(entry.name); | ||
var zipPath = "addedfolders/" + addedFolder.path; | ||
console.log("Adding " + zipPath); | ||
zip.file(zipPath, addedFolder.xml, { createFolders: false }); | ||
return; | ||
} | ||
var properties = getFileProperties(entry.name); | ||
var zipPath = "properties/addedfiles/" + properties.path; | ||
console.log("Adding " + zipPath); | ||
zip.file(zipPath, properties.properties, { createFolders: false }); | ||
zipPath = "addedfiles/" + entry.name; | ||
console.log("Adding " + zipPath); | ||
zip.file(zipPath, _fs2.default.readFileSync(_path2.default.normalize(entry.path)), { createFolders: false }); | ||
}); | ||
var zipChunks = []; | ||
zip.generateNodeStream({ type: "nodebuffer" }).on('data', function (chunk) { | ||
zipChunks.push(chunk); | ||
}).on('error', function (error) { | ||
console.error(error); | ||
}).on('end', function () { | ||
console.log("Creating wrapper zip"); | ||
var wrapper = new _jszip2.default(); | ||
wrapper.file("package.zip", Buffer.concat(zipChunks)); | ||
wrapper.generateNodeStream({ type: 'nodebuffer' }).pipe(_fs2.default.createWriteStream(outputPath)).on('finish', function () { | ||
console.log('Wrote ' + outputPath); | ||
if (callback) { | ||
callback(); | ||
} | ||
}).on('error', function (error) { | ||
console.error(error); | ||
}); | ||
}); | ||
}; |
{ | ||
"name": "@sitecore-jss/sitecore-jss-update-package", | ||
"version": "7.0.0", | ||
"version": "8.0.0", | ||
"description": "Allows creation of Sitecore Update Packages in JavaScript (currently files only).", | ||
"main": "dist/index.js", | ||
"scripts": { | ||
"build": "babel ./src --out-dir ./dist --ignore *.test.js,testData", | ||
"test": "mocha --compilers js:babel-core/register \"./src/**/*.test.js\"", | ||
"prepublishOnly": "npm run build" | ||
"build": "yarn clean && tsc", | ||
"clean": "del-cli dist types", | ||
"lint": "tslint -p . -c ../../tslint.json 'src/**/*.ts'", | ||
"test": "mocha --require ts-node/register \"./src/**/*.test.ts\"", | ||
"prepublishOnly": "yarn build" | ||
}, | ||
@@ -26,16 +28,14 @@ "author": { | ||
"devDependencies": { | ||
"babel-cli": "^6.24.1", | ||
"babel-core": "^6.24.1", | ||
"babel-eslint": "^7.2.3", | ||
"babel-preset-es2015": "^6.24.1", | ||
"babel-preset-minify": "^0.2.0", | ||
"babel-preset-stage-1": "^6.24.1", | ||
"@types/jszip": "^3.1.3", | ||
"@types/node": "^9.6.1", | ||
"@types/xml": "^1.0.2", | ||
"chai": "^3.5.0", | ||
"eslint": "^3.7.1", | ||
"eslint-config-airbnb-base": "^8.0.0", | ||
"eslint-plugin-import": "^2.0.1", | ||
"del-cli": "^1.1.0", | ||
"fetch-mock": "^5.9.4", | ||
"mocha": "^3.2.0", | ||
"sinon": "^2.0.0" | ||
} | ||
"sinon": "^2.0.0", | ||
"ts-node": "^4.1.0", | ||
"typescript": "^2.7.1" | ||
}, | ||
"types": "types/index.d.ts" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
10
159
15485