Socket
Socket
Sign inDemoInstall

camera-media-extractor

Package Overview
Dependencies
334
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.1.0 to 1.1.1

1

dist/configuration.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PreselectedFileTypes = void 0;
exports.PreselectedFileTypes = [

@@ -4,0 +5,0 @@ '.jpg',

31

dist/copy-files.js

@@ -6,2 +6,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.copyFiles = void 0;
const chalk_1 = __importDefault(require("chalk"));

@@ -18,13 +19,13 @@ const ora_1 = __importDefault(require("ora"));

async function copyFiles(src, dest, dryRun) {
const spinner = ora_1.default({
const spinner = (0, ora_1.default)({
text: 'Finding your files',
spinner: 'line',
}).start();
const files = await file_utils_1.findRegularFilesInDir(src);
const files = await (0, file_utils_1.findRegularFilesInDir)(src);
spinner.stop();
console.log(chalk_1.default.green(`Found ${files.length} files`));
const fileTypes = file_utils_1.getExtensionTypes(files);
const fileTypes = (0, file_utils_1.getExtensionTypes)(files);
console.log(`Found ${fileTypes.length} file types:`);
const fileTypeCounts = file_utils_1.getExtensionTypeCounts(fileTypes, files);
const choices = file_utils_1.getFileTypeChoices(fileTypes, configuration_1.PreselectedFileTypes);
const fileTypeCounts = (0, file_utils_1.getExtensionTypeCounts)(fileTypes, files);
const choices = (0, file_utils_1.getFileTypeChoices)(fileTypes, configuration_1.PreselectedFileTypes);
const fileCountAnnotatedChoices = choices.map((choice) => {

@@ -36,3 +37,3 @@ return {

});
const chosenFileTypes = await prompts_1.default({
const chosenFileTypes = await (0, prompts_1.default)({
type: 'multiselect',

@@ -43,8 +44,8 @@ name: 'value',

});
const filesToCopy = file_utils_1.filterFilesByType(files, chosenFileTypes.value);
const filesToCopy = (0, file_utils_1.filterFilesByType)(files, chosenFileTypes.value);
console.log(chalk_1.default.green(`Will copy ${filesToCopy.length} files`));
const filesWithStats = await Promise.all(filesToCopy.map((fileName) => {
return file_utils_1.getFileStats(fileName);
return (0, file_utils_1.getFileStats)(fileName);
}));
const jpgFiles = file_utils_1.filterFilesByType(filesToCopy, ['.jpg', '.jpeg']);
const jpgFiles = (0, file_utils_1.filterFilesByType)(filesToCopy, ['.jpg', '.jpeg']);
spinner.text = 'Scanning file creation dates';

@@ -58,3 +59,3 @@ spinner.start();

try {
const exifDate = await exif_date_1.getExifCreatedDate(file);
const exifDate = await (0, exif_date_1.getExifCreatedDate)(file);
exifFileDates.push({ fileName: file, created: exifDate });

@@ -69,5 +70,5 @@ exifFiles++;

console.log(`Exif files found: ${exifFiles}, non exif files: ${nonExifFiles}`);
const filesWithCreated = utils_1.replaceDateOnFiles(filesWithStats, exifFileDates);
const filesWithDest = utils_1.addDestinationDir(path_1.resolve(dest), filesWithCreated);
const filteredFilesWithDest = await file_reconciliation_1.filterExistingFiles(filesWithDest);
const filesWithCreated = (0, utils_1.replaceDateOnFiles)(filesWithStats, exifFileDates);
const filesWithDest = (0, utils_1.addDestinationDir)((0, path_1.resolve)(dest), filesWithCreated);
const filteredFilesWithDest = await (0, file_reconciliation_1.filterExistingFiles)(filesWithDest);
console.log(`Will copy ${filteredFilesWithDest.length} missing files out of ${filesWithDest.length}`);

@@ -82,4 +83,4 @@ const size = filteredFilesWithDest.reduce((acum, file) => {

for (const [idx, file] of filteredFilesWithDest.entries()) {
spinner.text = `Copying files [${path_1.basename(file.fileName)}] ${idx + 1}..${filteredFilesWithDest.length}`;
await file_copier_1.copyStatFile(file);
spinner.text = `Copying files [${(0, path_1.basename)(file.fileName)}] ${idx + 1}..${filteredFilesWithDest.length}`;
await (0, file_copier_1.copyStatFile)(file);
}

@@ -86,0 +87,0 @@ spinner.stop();

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertExifToUnix = void 0;
/**

@@ -4,0 +5,0 @@ * Converts exif date format into unix format

@@ -7,3 +7,3 @@ "use strict";

const expectedDate = '2015-02-15T19:00:08.000Z';
expect(date_converter_1.convertExifToUnix(exifDate)).toEqual(expectedDate);
expect((0, date_converter_1.convertExifToUnix)(exifDate)).toEqual(expectedDate);
});

@@ -7,4 +7,4 @@ "use strict";

it('returns a promise date object with the exif created date', (done) => {
const file = path_1.resolve(__dirname, 'test/test-background.jpg');
_1.getExifCreatedDate(file).then((date) => {
const file = (0, path_1.resolve)(__dirname, 'test/test-background.jpg');
(0, _1.getExifCreatedDate)(file).then((date) => {
expect(date).toEqual(expect.any(Date));

@@ -15,4 +15,4 @@ done();

it('rejects a promise if the file has no exif data', (done) => {
const file = path_1.resolve(__dirname, 'test/test-background-no-exif.jpg');
_1.getExifCreatedDate(file).then(() => {
const file = (0, path_1.resolve)(__dirname, 'test/test-background-no-exif.jpg');
(0, _1.getExifCreatedDate)(file).then(() => {
// fail the test

@@ -19,0 +19,0 @@ expect(true).toBeFalsy();

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getExifCreatedDate = void 0;
const exif_1 = require("exif");

@@ -15,3 +16,3 @@ const date_converter_1 = require("./date-converter");

if (exifDate) {
const unixDate = date_converter_1.convertExifToUnix(exifDate);
const unixDate = (0, date_converter_1.convertExifToUnix)(exifDate);
resolve(new Date(unixDate));

@@ -18,0 +19,0 @@ }

@@ -31,4 +31,4 @@ "use strict";

];
const filesWithDest = utils_1.addDestinationDir(path_1.resolve(__dirname, './test/dest'), filesWithStats);
const filteredFilesWithDest = await _1.filterExistingFiles(filesWithDest);
const filesWithDest = (0, utils_1.addDestinationDir)((0, path_1.resolve)(__dirname, './test/dest'), filesWithStats);
const filteredFilesWithDest = await (0, _1.filterExistingFiles)(filesWithDest);
expect(filteredFilesWithDest.length).toEqual(2);

@@ -35,0 +35,0 @@ expect(filteredFilesWithDest[0].fileName).toContain('file_1.txt');

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fileExists = exports.filterExistingFiles = void 0;
const fs_1 = require("fs");

@@ -20,3 +21,3 @@ const constants_1 = require("constants");

return new Promise((resolve, reject) => {
fs_1.access(fileName, constants_1.F_OK, (err) => {
(0, fs_1.access)(fileName, constants_1.F_OK, (err) => {
if (!err) {

@@ -23,0 +24,0 @@ resolve(true);

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createDir = exports.copyStatFile = void 0;
const fs_1 = require("fs");

@@ -12,4 +13,4 @@ const path_1 = require("path");

return new Promise(async (resolve, reject) => {
await createDir(path_1.dirname(file.dest));
fs_1.copyFile(file.fileName, file.dest, (err) => {
await createDir((0, path_1.dirname)(file.dest));
(0, fs_1.copyFile)(file.fileName, file.dest, (err) => {
if (!err) {

@@ -27,5 +28,5 @@ resolve();

return new Promise(async (resolve, reject) => {
const isDir = await file_reconciliation_1.fileExists(path);
const isDir = await (0, file_reconciliation_1.fileExists)(path);
if (!isDir) {
fs_1.mkdir(path, (err) => {
(0, fs_1.mkdir)(path, (err) => {
if (!err) {

@@ -32,0 +33,0 @@ resolve();

@@ -11,5 +11,5 @@ "use strict";

const file_reconciliation_1 = require("../file-reconciliation");
const distDir = path_1.resolve(__dirname, './test/temp');
const distDir = (0, path_1.resolve)(__dirname, './test/temp');
beforeEach(() => {
fs_1.mkdirSync(distDir);
(0, fs_1.mkdirSync)(distDir);
});

@@ -20,13 +20,12 @@ afterEach(() => {

describe('createDir', () => {
it('creates a dir if it does not exist', async (done) => {
const expectedPath = path_1.resolve(distDir, 'test-dir');
await file_copier_1.createDir(expectedPath);
const dirExists = await file_reconciliation_1.fileExists(expectedPath);
it('creates a dir if it does not exist', async () => {
const expectedPath = (0, path_1.resolve)(distDir, 'test-dir');
await (0, file_copier_1.createDir)(expectedPath);
const dirExists = await (0, file_reconciliation_1.fileExists)(expectedPath);
expect(dirExists).toEqual(true);
done();
});
it('does not fail if dir already exists', (done) => {
const expectedPath = path_1.resolve(distDir, 'test-dir');
fs_1.mkdirSync(expectedPath);
file_copier_1.createDir(expectedPath).then(() => {
const expectedPath = (0, path_1.resolve)(distDir, 'test-dir');
(0, fs_1.mkdirSync)(expectedPath);
(0, file_copier_1.createDir)(expectedPath).then(() => {
// pass the test

@@ -38,14 +37,13 @@ done();

describe('copyStatFile', () => {
it('copies a file from expected src to dist', async (done) => {
it('copies a file from expected src to dist', async () => {
const file = {
birthtime: new Date('2019-05-24T21:49:000Z'),
dest: path_1.resolve(distDir, '2019-05-24', 'file_2.txt'),
fileName: path_1.resolve(__dirname, './test/file_2.txt'),
dest: (0, path_1.resolve)(distDir, '2019-05-24', 'file_2.txt'),
fileName: (0, path_1.resolve)(__dirname, './test/file_2.txt'),
size: 1024,
};
await file_copier_1.copyStatFile(file);
const copiedCorrectly = await file_reconciliation_1.fileExists(file.dest);
await (0, file_copier_1.copyStatFile)(file);
const copiedCorrectly = await (0, file_reconciliation_1.fileExists)(file.dest);
expect(copiedCorrectly).toEqual(true);
done();
});
});

@@ -7,4 +7,4 @@ "use strict";

it('finds all regular in a given directory files', (done) => {
const dirName = path_1.resolve(__dirname, 'test');
_1.findRegularFilesInDir(dirName).then((files) => {
const dirName = (0, path_1.resolve)(__dirname, 'test');
(0, _1.findRegularFilesInDir)(dirName).then((files) => {
expect(files.length).toEqual(20);

@@ -36,3 +36,3 @@ // only match filenames to avoid using full directory structures

it('returns all diferent extensions in a list of files', () => {
expect(_1.getExtensionTypes(files)).toEqual([
expect((0, _1.getExtensionTypes)(files)).toEqual([
'.txt',

@@ -71,3 +71,3 @@ '.jpg',

};
expect(_1.getExtensionTypeCounts(fileTypes, files)).toEqual(expectedResult);
expect((0, _1.getExtensionTypeCounts)(fileTypes, files)).toEqual(expectedResult);
});

@@ -100,3 +100,3 @@ });

];
expect(_1.getFileTypeChoices(fileTypes, preSelectedTypes)).toEqual(expectedChoices);
expect((0, _1.getFileTypeChoices)(fileTypes, preSelectedTypes)).toEqual(expectedChoices);
});

@@ -127,3 +127,3 @@ });

];
expect(_1.filterFilesByType(files, extensions)).toEqual([
expect((0, _1.filterFilesByType)(files, extensions)).toEqual([
`${filePath}beach.jpg`,

@@ -139,4 +139,4 @@ `${filePath}video6.MP4`,

describe('getFileStats', () => {
it('returns the expected stats map', async (done) => {
const file = path_1.resolve(__dirname, './test/file_2.txt');
it('returns the expected stats map', async () => {
const file = (0, path_1.resolve)(__dirname, './test/file_2.txt');
const expectedStats = {

@@ -147,8 +147,7 @@ fileName: file,

};
const stats = await _1.getFileStats(file);
const stats = await (0, _1.getFileStats)(file);
expect(stats).toEqual(expectedStats);
done();
});
it('rejects a promise on failure', (done) => {
_1.getFileStats('./non-existant-file.txt').then((stats) => {
(0, _1.getFileStats)('./non-existant-file.txt').then((stats) => {
// fail the test

@@ -155,0 +154,0 @@ expect(true).toBeFalsy();

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFileStats = exports.filterFilesByType = exports.getFileTypeChoices = exports.getExtensionTypeCounts = exports.getExtensionTypes = exports.findRegularFilesInDir = void 0;
const find_1 = require("find");

@@ -9,3 +10,3 @@ const path_1 = require("path");

try {
find_1.file(dirName, (files) => {
(0, find_1.file)(dirName, (files) => {
resolve(files);

@@ -23,3 +24,3 @@ });

files.forEach((fileName) => {
const extension = path_1.extname(fileName).toLowerCase();
const extension = (0, path_1.extname)(fileName).toLowerCase();
if (!typesList.includes(extension)) {

@@ -38,3 +39,3 @@ typesList.push(extension);

files.forEach((fileName) => {
const extension = path_1.extname(fileName).toLowerCase();
const extension = (0, path_1.extname)(fileName).toLowerCase();
for (const fileType of fileTypes) {

@@ -64,3 +65,3 @@ if (fileType === extension) {

return files.filter((fileName) => {
const fileExt = path_1.extname(fileName).toLowerCase();
const fileExt = (0, path_1.extname)(fileName).toLowerCase();
if (fileTypes.includes(fileExt)) {

@@ -75,3 +76,3 @@ return true;

return new Promise((resolve, reject) => {
fs_1.stat(fileName, (error, stats) => {
(0, fs_1.stat)(fileName, (error, stats) => {
if (!error) {

@@ -78,0 +79,0 @@ resolve({

@@ -22,3 +22,3 @@ #!/usr/bin/env node

.demandCommand(2)
.argv;
copy_files_1.copyFiles(argv._[0], argv._[1], argv['dry-run'] || false);
.parseSync();
(0, copy_files_1.copyFiles)(String(argv._[0]), String(argv._[1]), argv['dry-run'] || false);
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;

@@ -8,0 +24,0 @@ };

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRandomFileDataKB = exports.getRandomFileData = void 0;
const rand = __importStar(require("randomstring"));

@@ -11,0 +28,0 @@ /**

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addDestinationDir = exports.replaceDateOnFiles = void 0;
const path_1 = require("path");

@@ -31,3 +32,3 @@ /**

...file,
dest: `${dest}/${getDateString(file.birthtime)}/${path_1.basename(file.fileName)}`,
dest: `${dest}/${getDateString(file.birthtime)}/${(0, path_1.basename)(file.fileName)}`,
};

@@ -34,0 +35,0 @@ });

@@ -23,3 +23,3 @@ "use strict";

expectedFiles[3].birthtime = newDate2;
expect(_1.replaceDateOnFiles(files, newDateFiles)).toEqual(expectedFiles);
expect((0, _1.replaceDateOnFiles)(files, newDateFiles)).toEqual(expectedFiles);
});

@@ -44,5 +44,6 @@ });

{ size: 5, fileName: './file5.txt', birthtime: new Date('2018-12-21T11:59'), dest: `${dest}/2018-12-21/file5.txt` },
// tslint:enable max-line-length
];
expect(_1.addDestinationDir(dest, files)).toEqual(expectedResult);
expect((0, _1.addDestinationDir)(dest, files)).toEqual(expectedResult);
});
});
{
"name": "camera-media-extractor",
"version": "1.1.0",
"version": "1.1.1",
"description": "A media extractor from removable media",

@@ -27,22 +27,22 @@ "bin": {

"find": "^0.3.0",
"jest": "^24.9.0",
"ora": "^4.0.2",
"prompts": "^2.2.1",
"randomstring": "^1.1.5",
"yargs": "^14.2.0"
"jest": "^29.3.1",
"ora": "^6.1.2",
"prompts": "^2.4.2",
"randomstring": "^1.2.3",
"yargs": "^17.6.2"
},
"devDependencies": {
"@types/exif": "^0.6.0",
"@types/exif": "^0.6.3",
"@types/find": "^0.2.1",
"@types/jest": "^24.0.21",
"@types/node": "^12.12.5",
"@types/prompts": "^2.4.0",
"@types/randomstring": "^1.1.6",
"@types/rimraf": "^2.0.3",
"rimraf": "^3.0.0",
"ts-jest": "^24.1.0",
"ts-node": "^8.4.1",
"tslint": "^5.20.0",
"typescript": "^3.6.4"
"@types/jest": "^29.2.5",
"@types/node": "^18.11.18",
"@types/prompts": "^2.4.2",
"@types/randomstring": "^1.1.8",
"@types/rimraf": "^3.0.2",
"rimraf": "^3.0.2",
"ts-jest": "^29.0.3",
"ts-node": "^10.9.1",
"tslint": "^5.20.1",
"typescript": "^4.9.4"
}
}
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