svelte-i18n
Advanced tools
Comparing version 2.2.1 to 2.2.2
@@ -0,1 +1,11 @@ | ||
## [2.2.2](https://github.com/kaisermann/svelte-i18n/compare/v2.2.0...v2.2.2) (2020-01-14) | ||
### Bug Fixes | ||
* 🐛 lookup message not caching correctly ([bb8c68f](https://github.com/kaisermann/svelte-i18n/commit/bb8c68f2eb7bbe658a40dc528b471ffadd5f92df)) | ||
* 🐛 mjs causing an elusive bug in webpack module resolution ([b2dc782](https://github.com/kaisermann/svelte-i18n/commit/b2dc7828c55b23be05adb0791816cc7bc9910af2)), closes [#36](https://github.com/kaisermann/svelte-i18n/issues/36) | ||
## [2.2.1](https://github.com/kaisermann/svelte-i18n/compare/v2.2.0...v2.2.1) (2020-01-08) | ||
@@ -2,0 +12,0 @@ |
#!/usr/bin/env node | ||
"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}function _interopNamespace(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach((function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})})),t.default=e,t}var fs=_interopDefault(require("fs")),path=require("path"),program=_interopDefault(require("commander")),glob=_interopDefault(require("tiny-glob")),compiler=require("svelte/compiler"),delve=_interopDefault(require("dlv")),estreeWalker=require("estree-walker"); | ||
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var t=e(require("fs")),r=require("path"),n=e(require("commander")),i=e(require("tiny-glob")),o=require("svelte/compiler"),a=e(require("dlv")),l=require("estree-walker"); | ||
/*! ***************************************************************************** | ||
@@ -17,2 +17,2 @@ Copyright (c) Microsoft Corporation. All rights reserved. | ||
***************************************************************************** */ | ||
function __values(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}function __asyncValues(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e="function"==typeof __values?__values(e):e[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}}const isNumberString=e=>!Number.isNaN(parseInt(e));function deepSet(e,t,r){const n=t.replace(/\[(\w+)\]/gi,".$1").split(".");return n.reduce((e,t,i)=>{return t in e?e[t]:i<n.length-1?(a=n[i+1],Number.isNaN(parseInt(a))?e[t]={}:e[t]=[]):e[t]=r;var a},e)}function getObjFromExpression(e){return e.properties.reduce((e,t)=>{if("Literal"===t.value.type&&t.value.value!==Object(t.value.value)){const r=t.key.name;e.meta[r]=t.value.value}return e},{node:e,meta:{}})}const LIB_NAME="svelte-i18n",DEFINE_MESSAGES_METHOD_NAME="defineMessages",FORMAT_METHOD_NAMES=new Set(["format","_","t"]),IGNORED_UTILITIES=new Set(["number","date","time"]);function isFormatCall(e,t){if("CallExpression"!==e.type)return!1;let r;if("MemberExpression"!==e.callee.type||"Identifier"!==e.callee.property.type||IGNORED_UTILITIES.has(e.callee.property.name)?"Identifier"===e.callee.type&&(r=e.callee):r=e.callee.object,!r||"Identifier"!==r.type)return!1;const n=r.name.slice(1);return t.has(n)}function isMessagesDefinitionCall(e,t){return"CallExpression"===e.type&&(e.callee&&"Identifier"===e.callee.type&&e.callee.name===t)}function getLibImportDeclarations(e){return e.instance?e.instance.content.body.filter(e=>"ImportDeclaration"===e.type&&e.source.value===LIB_NAME):[]}function getDefineMessagesSpecifier(e){return e.specifiers.find(e=>"imported"in e&&"defineMessages"===e.imported.name)}function getFormatSpecifiers(e){return e.specifiers.filter(e=>"imported"in e&&FORMAT_METHOD_NAMES.has(e.imported.name))}function collectFormatCalls(e){const t=getLibImportDeclarations(e);if(0===t.length)return[];const r=new Set(t.flatMap(e=>getFormatSpecifiers(e).map(e=>e.local.name)));if(0===r.size)return[];const n=[];function i(e){isFormatCall(e,r)&&(n.push(e),this.skip())}return estreeWalker.walk(e.instance,{enter:i}),estreeWalker.walk(e.html,{enter:i}),n}function collectMessageDefinitions(e){const t=[],r=getLibImportDeclarations(e).find(getDefineMessagesSpecifier);if(null==r)return[];const n=getDefineMessagesSpecifier(r).local.name;return estreeWalker.walk(e.instance,{enter(e){if(!1===isMessagesDefinitionCall(e,n))return;const[r]=e.arguments;"ObjectExpression"===r.type&&(t.push(r),this.skip())}}),t.flatMap(e=>e.properties.map(e=>e.value))}function collectMessages(e){const t=compiler.parse(e),r=collectFormatCalls(t);return[...collectMessageDefinitions(t).map(e=>getObjFromExpression(e)),...r.map(e=>{const[t,r]=e.arguments;if("ObjectExpression"===t.type)return getObjFromExpression(t);const n=t,i=n.value;if(r&&"ObjectExpression"===r.type){const e=getObjFromExpression(r);return e.meta.id=i,e}return{node:n,meta:{id:i}}})].filter(Boolean)}function extractMessages(e,{accumulator:t={},shallow:r=!1,overwrite:n=!1}={}){return collectMessages(e).forEach(e=>{let i=e.meta.default;if(void 0===i&&(i=""),r){if(!1===n&&e.meta.id in t)return;t[e.meta.id]=i}else{if(!1===n&&void 0!==delve(t,e.meta.id))return;deepSet(t,e.meta.id,i)}}),t}const{readFile:readFile,writeFile:writeFile,mkdir:mkdir,access:access}=fs.promises,fileExists=e=>access(e).then(()=>!0).catch(()=>!1);program.command("extract <glob> [output]").description("extract all message definitions from files to a json").option("-s, --shallow","extract to a shallow dictionary (ids with dots interpreted as strings, not paths)",!1).option("--overwrite","overwrite the content of the output file instead of just appending new properties",!1).option("-c, --config <dir>",'path to the "svelte.config.js" file',process.cwd()).action(async(e,t,{shallow:r,overwrite:n,config:i})=>{var a,o;const s=(await glob(e)).filter(e=>e.match(/\.html|svelte$/i)),l=await new Promise((function(e){e(_interopNamespace(require(path.resolve(i,"svelte.config.js"))))})).catch(()=>null);let c={};null!=t&&!1===n&&await fileExists(t)&&(c=await readFile(t).then(e=>JSON.parse(e.toString())).catch(e=>{console.warn(e),c={}}));try{for(var u,p=__asyncValues(s);!(u=await p.next()).done;){const e=u.value;let t=(await readFile(e)).toString();if(l&&l.preprocess){t=(await compiler.preprocess(t,l.preprocess,{filename:e})).code}extractMessages(t,{accumulator:c,shallow:r})}}catch(e){a={error:e}}finally{try{u&&!u.done&&(o=p.return)&&await o.call(p)}finally{if(a)throw a.error}}const f=JSON.stringify(c,null," ");if(null==t)return console.log(f);await mkdir(path.dirname(t),{recursive:!0}),await writeFile(t,f)}),program.parse(process.argv); | ||
function c(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}function s(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=c(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}}function u(e,t,r){const n=t.replace(/\[(\w+)\]/gi,".$1").split(".");return n.reduce((e,t,i)=>{return t in e?e[t]:i<n.length-1?(o=n[i+1],Number.isNaN(parseInt(o))?e[t]={}:e[t]=[]):e[t]=r;var o},e)}function f(e){return e.properties.reduce((e,t)=>{if("Literal"===t.value.type&&t.value.value!==Object(t.value.value)){const r=t.key.name;e.meta[r]=t.value.value}return e},{node:e,meta:{}})}const p=new Set(["format","_","t"]),m=new Set(["number","date","time"]);function d(e){return e.instance?e.instance.content.body.filter(e=>"ImportDeclaration"===e.type&&"svelte-i18n"===e.source.value):[]}function y(e){return e.specifiers.find(e=>"imported"in e&&"defineMessages"===e.imported.name)}function v(e){const t=d(e);if(0===t.length)return[];const r=new Set(t.flatMap(e=>function(e){return e.specifiers.filter(e=>"imported"in e&&p.has(e.imported.name))}(e).map(e=>e.local.name)));if(0===r.size)return[];const n=[];function i(e){(function(e,t){if("CallExpression"!==e.type)return!1;let r;if("MemberExpression"!==e.callee.type||"Identifier"!==e.callee.property.type||m.has(e.callee.property.name)?"Identifier"===e.callee.type&&(r=e.callee):r=e.callee.object,!r||"Identifier"!==r.type)return!1;const n=r.name.slice(1);return t.has(n)})(e,r)&&(n.push(e),this.skip())}return l.walk(e.instance,{enter:i}),l.walk(e.html,{enter:i}),n}function w(e){const t=o.parse(e),r=v(t);return[...function(e){const t=[],r=d(e).find(y);if(null==r)return[];const n=y(r).local.name;return l.walk(e.instance,{enter(e){if(!1===function(e,t){return"CallExpression"===e.type&&(e.callee&&"Identifier"===e.callee.type&&e.callee.name===t)}(e,n))return;const[r]=e.arguments;"ObjectExpression"===r.type&&(t.push(r),this.skip())}}),t.flatMap(e=>e.properties.map(e=>e.value))}(t).map(e=>f(e)),...r.map(e=>{const[t,r]=e.arguments;if("ObjectExpression"===t.type)return f(t);const n=t,i=n.value;if(r&&"ObjectExpression"===r.type){const e=f(r);return e.meta.id=i,e}return{node:n,meta:{id:i}}})].filter(Boolean)}function h(e,{accumulator:t={},shallow:r=!1,overwrite:n=!1}={}){return w(e).forEach(e=>{let i=e.meta.default;if(void 0===i&&(i=""),r){if(!1===n&&e.meta.id in t)return;t[e.meta.id]=i}else{if(!1===n&&void 0!==a(t,e.meta.id))return;u(t,e.meta.id,i)}}),t}const{readFile:g,writeFile:b,mkdir:j,access:S}=t.promises;n.command("extract <glob> [output]").description("extract all message definitions from files to a json").option("-s, --shallow","extract to a shallow dictionary (ids with dots interpreted as strings, not paths)",!1).option("--overwrite","overwrite the content of the output file instead of just appending new properties",!1).option("-c, --config <dir>",'path to the "svelte.config.js" file',process.cwd()).action(async(e,t,{shallow:n,overwrite:a,config:l})=>{var c,u;const f=(await i(e)).filter(e=>e.match(/\.html|svelte$/i)),p=await new Promise((function(e){e(function(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach((function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})})),t.default=e,t}(require(r.resolve(l,"svelte.config.js"))))})).catch(()=>null);let m={};null!=t&&!1===a&&await(e=>S(e).then(()=>!0).catch(()=>!1))(t)&&(m=await g(t).then(e=>JSON.parse(e.toString())).catch(e=>{console.warn(e),m={}}));try{for(var d,y=s(f);!(d=await y.next()).done;){const e=d.value;let t=(await g(e)).toString();if(p&&p.preprocess){t=(await o.preprocess(t,p.preprocess,{filename:e})).code}h(t,{accumulator:m,shallow:n})}}catch(e){c={error:e}}finally{try{d&&!d.done&&(u=y.return)&&await u.call(y)}finally{if(c)throw c.error}}const v=JSON.stringify(m,null," ");if(null==t)return console.log(v);await j(r.dirname(t),{recursive:!0}),await b(t,v)}),n.parse(process.argv); |
{ | ||
"name": "svelte-i18n", | ||
"version": "2.2.1", | ||
"main": "dist/i18n.js", | ||
"module": "dist/i18n.mjs", | ||
"version": "2.2.2", | ||
"main": "dist/i18n.cjs.js", | ||
"module": "dist/i18n.esm.js", | ||
"bin": { | ||
@@ -7,0 +7,0 @@ "svelte-i18n": "dist/cli.js" |
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
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
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
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
28568
101