Socket
Socket
Sign inDemoInstall

i18next-scanner

Package Overview
Dependencies
Maintainers
1
Versions
92
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

i18next-scanner - npm Package Compare versions

Comparing version 2.4.1 to 2.4.2

lib/flatten-object-keys.js

58

lib/parser.js

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

var _cloneDeep = require('clone-deep');
var _cloneDeep2 = _interopRequireDefault(_cloneDeep);
var _deepmerge = require('deepmerge');
var _deepmerge2 = _interopRequireDefault(_deepmerge);
var _ensureArray = require('ensure-array');
var _ensureArray2 = _interopRequireDefault(_ensureArray);
var _esprima = require('esprima');

@@ -36,6 +48,10 @@

var _ensureArray = require('./ensure-array');
var _flattenObjectKeys = require('./flatten-object-keys');
var _ensureArray2 = _interopRequireDefault(_ensureArray);
var _flattenObjectKeys2 = _interopRequireDefault(_flattenObjectKeys);
var _omitEmptyObject = require('./omit-empty-object');
var _omitEmptyObject2 = _interopRequireDefault(_omitEmptyObject);
var _jsxParser = require('./jsx-parser');

@@ -585,2 +601,4 @@

value: function get(key) {
var _this3 = this;
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

@@ -595,12 +613,30 @@

if (this.options.removeUnusedKeys) {
resStore = this.resScan;
// Merge two objects `resStore` and `resScan` deeply, returning a new merged object with the elements from both `resStore` and `resScan`.
var resMerged = (0, _deepmerge2.default)(this.resStore, this.resScan);
Object.keys(this.resStore).forEach(function (lng) {
Object.keys(_this3.resStore[lng]).forEach(function (ns) {
var resStoreKeys = (0, _flattenObjectKeys2.default)(_lodash2.default.get(_this3.resStore, [lng, ns], {}));
var resScanKeys = (0, _flattenObjectKeys2.default)(_lodash2.default.get(_this3.resScan, [lng, ns], {}));
var unusedKeys = _lodash2.default.differenceWith(resStoreKeys, resScanKeys, _lodash2.default.isEqual);
for (var i = 0; i < unusedKeys.length; ++i) {
_lodash2.default.unset(resMerged[lng][ns], unusedKeys[i]);
}
// Omit empty object
resMerged[lng][ns] = (0, _omitEmptyObject2.default)(resMerged[lng][ns]);
});
});
resStore = resMerged;
} else {
resStore = this.resStore;
resStore = (0, _cloneDeep2.default)(this.resStore);
}
if (opts.sort) {
// sort by key
Object.keys(resStore).forEach(function (lng) {
var namespaces = resStore[lng];
Object.keys(namespaces).forEach(function (ns) {
// Deeply sort an object by its keys without mangling any arrays inside of it
resStore[lng][ns] = (0, _sortobject2.default)(namespaces[ns]);

@@ -660,3 +696,3 @@ });

value: function set(key) {
var _this3 = this;
var _this4 = this;

@@ -720,8 +756,8 @@ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

lngs.forEach(function (lng) {
var resLoad = _this3.resStore[lng] && _this3.resStore[lng][ns];
var resScan = _this3.resScan[lng] && _this3.resScan[lng][ns];
var resLoad = _this4.resStore[lng] && _this4.resStore[lng][ns];
var resScan = _this4.resScan[lng] && _this4.resScan[lng][ns];
if (!_lodash2.default.isPlainObject(resLoad)) {
// Skip undefined namespace
_this3.log('i18next-scanner: The namespace ' + _chalk2.default.yellow(JSON.stringify(ns)) + ' does not exist:', { key: key, options: options });
_this4.log('i18next-scanner: The namespace ' + _chalk2.default.yellow(JSON.stringify(ns)) + ' does not exist:', { key: key, options: options });
return;

@@ -811,3 +847,3 @@ }

}
_this3.log('i18next-scanner: Added a new translation key { ' + _chalk2.default.yellow(JSON.stringify(resKey)) + ': ' + _chalk2.default.yellow(JSON.stringify(resLoad[resKey])) + ' } to ' + _chalk2.default.yellow(JSON.stringify(_this3.formatResourceLoadPath(lng, ns))));
_this4.log('i18next-scanner: Added a new translation key { ' + _chalk2.default.yellow(JSON.stringify(resKey)) + ': ' + _chalk2.default.yellow(JSON.stringify(resLoad[resKey])) + ' } to ' + _chalk2.default.yellow(JSON.stringify(_this4.formatResourceLoadPath(lng, ns))));
} else if (options.defaultValue) {

@@ -819,3 +855,3 @@ if (!resLoad[resKey]) {

// A default value has provided but it's different with the expected default
_this3.log('i18next-scanner: The translation key ' + _chalk2.default.yellow(JSON.stringify(resKey)) + ' has a different default value, you may need to check the translation key of default language (' + defaultLng + ')');
_this4.log('i18next-scanner: The translation key ' + _chalk2.default.yellow(JSON.stringify(resKey)) + ' has a different default value, you may need to check the translation key of default language (' + defaultLng + ')');
}

@@ -822,0 +858,0 @@ }

9

package.json
{
"name": "i18next-scanner",
"version": "2.4.1",
"version": "2.4.2",
"description": "Scan your code, extract translation keys/values, and merge them into i18n resource files.",

@@ -51,3 +51,6 @@ "homepage": "https://github.com/i18next/i18next-scanner",

"chalk": "^2.3.0",
"clone-deep": "^3.0.1",
"commander": "^2.13.0",
"deepmerge": "^2.0.1",
"ensure-array": "^1.0.0",
"eol": "^0.9.1",

@@ -57,4 +60,4 @@ "esprima": "^4.0.0",

"htmlparser2": "^3.9.2",
"lodash": "^4.17.4",
"parse5": "^3.0.3",
"lodash": "^4.0.0",
"parse5": "^4.0.0",
"sortobject": "^1.1.1",

@@ -61,0 +64,0 @@ "through2": "^2.0.3",

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