@wp-blocks/make-pot 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/makeJson.js +1 -0
- package/lib/utils/common.js +1 -1
- package/package.json +2 -2
- package/tests/tree.test.js +3 -3
package/lib/makeJson.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var k=Object.create;var h=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var P=(l,s,o,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let e of w(s))!R.call(l,e)&&e!==o&&h(l,e,{get:()=>s[e],enumerable:!(t=$(s,e))||t.enumerable});return l};var j=(l,s,o)=>(o=l!=null?k(v(l)):{},P(s||!l||!l.__esModule?h(o,"default",{value:l,enumerable:!0}):o,l));var a=j(require("node:fs")),g=j(require("node:path")),S=require("glob"),T=require("node:crypto"),y=require("gettext-parser");class M{json_options=0;async invoke(s,o){const t=g.default.resolve(s[0]);if(!t||!a.default.existsSync(t)||!a.default.statSync(t).isFile()&&!a.default.statSync(t).isDirectory())throw new Error("Source file or directory does not exist!");const e=a.default.statSync(t).isFile()?g.default.dirname(t):t,n=this.buildMap(mapPaths);if(n&&Object.keys(n).length===0)throw new Error("No valid keys found. No file was created.");if(!a.default.existsSync(e)&&!a.default.mkdirSync(e,{recursive:!0})&&!a.default.existsSync(e))throw new Error("Could not create destination directory!");let r=0;const c=a.default.statSync(t).isFile()?[t]:(0,S.glob)(g.default.join(t,"**/*.po"));for(const i of c)if(a.default.statSync(i).isFile()&&a.default.statSync(i)&&g.default.extname(i)===".po"){const u=this.makeJson(i,e,n);if(r+=u.length,purge){if(!this.removeJsStringsFromPoFile(i)){console.warn(`Could not update file ${g.default.basename(t)}`);continue}if(updateMoFiles){const p=g.default.basename(i,".po"),b=g.default.join(e,`${p}.mo`);Translations.fromPoFile(i).toMoFile(b)||console.warn(`! Could not create file ${b}`)}}}console.log(`Created ${r} ${r===1?"file":"files"}.`)}buildMap(s){const o={},t=s?s.filter(n=>!0):[];console.info(`Using ${t.length} map files: ${t.join(", ")}`,"make-json");const e=maps.map((n,r)=>[n,`inline object ${r}`]);for(const n of t){if(!a.default.existsSync(n)||a.default.statSync(n).isDirectory()){console.warn(`Map file ${n} does not exist`);continue}const r=JSON.parse(a.default.readFileSync(n,"utf8"));if(!r||typeof r!="object"){console.warn(`Map file ${n} invalid`);continue}e.push([r,n])}for(const n of e){let[r,c]=n;const i=Object.keys(r).length;r=Object.fromEntries(Object.entries(r).map(([u,d])=>[u,Array.isArray(d)?d.filter(p=>typeof p=="string"):[]])),console.log(`Dropped ${Object.keys(r).length-i} keys from ${c}`,"make-json"),o={...o,...r}}return o}makeJson(s,o,t){const e={},n=a.default.readFileSync(s,"utf8"),r=y.po.parse(n),c=[];let i=g.default.basename(s,".po");const u=r.headers.TextDomain||null;return u&&!i.startsWith(u)&&(i=`${u}-${i}`),r.forEach(d=>{const p=(d.getReferences()||[]).map(f=>{const m=f[0];return m.endsWith(".min.js")?m.slice(0,-7)+".js":m.endsWith(".js")?m:null}).filter(Boolean);Array.from(new Set(p)).forEach(f=>{if(!e[f]){e[f]=new Translations,e[f].setHeader("Language",r.getLanguage()||""),e[f].setHeader("PO-Revision-Date",r.getHeader("PO-Revision-Date")||"");const m=r.getPluralForms();if(m){const[F,x]=m;e[f].setPluralForms(F,x)}}e[f].append(d)})}),c.push(...this.buildJsonFiles(e,i,o)),c}referenceMap(s,o){return o===null?s:s.map(([n,r])=>{const c=n;return o[c]?o[c]:[]}).flat().map(n=>[n,0])}buildJsonFiles(s,o,t){const e=[];for(const n of Object.keys(s)){const r=s[n],c=(0,T.createHash)("md5").update(n).digest("hex"),i=g.default.join(t,`${o}-${c}.json`);if(!y.po.compile(r,i,{json:this.json_options,source:n})){warning(`Could not create file ${g.default.basename(i,".json")}`);continue}e.push(i)}return e}removeJsStringsFromPoFile(s){const{translations:o}=y.po.parse(s);return o.forEach(t=>{if(t.comments?.reference){for(const e of t.comments?.reference)e[0].endsWith(".js");delete o.translations[t.msgid]}}),y.po.compile(o,s)}}const C=new M;C.invoke(process.argv.slice(2),{}).catch(l=>console.error(l));
|
package/lib/utils/common.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";var l=Object.create;var s=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var d=(n,t)=>{for(var r in t)s(n,r,{get:t[r],enumerable:!0})},c=(n,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of f(t))!m.call(n,e)&&e!==r&&s(n,e,{get:()=>t[e],enumerable:!(o=a(t,e))||o.enumerable});return n};var u=(n,t,r)=>(r=n!=null?l(p(n)):{},c(t||!n||!n.__esModule?s(r,"default",{value:n,enumerable:!0}):r,n)),k=n=>c(s({},"__esModule",{value:!0}),n);var w={};d(w,{detectPatternType:()=>P,getCommentBlock:()=>h,getCopyright:()=>S,getPkgJsonData:()=>v,removeCommentMarkup:()=>x,reverseSlashes:()=>b,stringstring:()=>C,stripTranslationMarkup:()=>y});module.exports=k(w);var g=u(require("node:fs")),i=u(require("node:path"));function h(n){const t=n.match(/\/\*\*?[\s\S]*?\*\//);return t!==null?t[0]:n}function x(n){return n.match(/[a-zA-Z].*/gm)}function y(n){const t=/\/\*\*?\s*(?:translators:)\s*([\s\S]*?)\s*\*\/|\/\/\s*(?:translators:)\s*(.*)$/i,r=n.match(t);return r?r[1]:n}function C(n){return typeof n=="string"?n.includes(",")?n.split(","):[n]:null}function P(n){const t=n.includes("."),r=n.includes(i.default.sep);return n.includes("*")?"glob":!t&&!r?"directory":t&&!r?"file":"glob"}function S(n,t="GPL v2 or later"){return`# Copyright (C) ${new Date().getFullYear()} ${n}
|
|
2
|
-
# This file is distributed under the ${t} license.`}function b(n){return n.replace(
|
|
2
|
+
# This file is distributed under the ${t} license.`}function b(n){return n.replace(/\\/g,"/")}function v(...n){const t={},r=i.default.join(__dirname,"..","..","package.json"),o=g.default.existsSync(r)?require(r):{name:"makepot",version:""};for(const e of n)o[e]&&(t[e]=o[e]);return t}0&&(module.exports={detectPatternType,getCommentBlock,getCopyright,getPkgJsonData,removeCommentMarkup,reverseSlashes,stringstring,stripTranslationMarkup});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wp-blocks/make-pot",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"license": "GPL-3.0-or-later",
|
|
5
5
|
"homepage": "https://wp-blocks.github.io/make-pot/",
|
|
6
6
|
"description": "A Node.js script for generating a POT file from source code",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"run": "node ./lib/index.js tests/fixtures/vinyl/"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"axios": "^1.
|
|
57
|
+
"axios": "^1.7.2",
|
|
58
58
|
"cli-progress": "^3.12.0",
|
|
59
59
|
"gettext-merger": "^1.2.1",
|
|
60
60
|
"gettext-parser": "^4.0.4",
|
package/tests/tree.test.js
CHANGED
|
@@ -12,7 +12,7 @@ describe("doTree js", () => {
|
|
|
12
12
|
const fileParsed = doTree(fileContent, filepath);
|
|
13
13
|
assert.deepEqual(fileParsed.blocks[0], {
|
|
14
14
|
comments: {
|
|
15
|
-
reference: ["tests
|
|
15
|
+
reference: ["tests/fixtures/block/javascript.js:7"],
|
|
16
16
|
translator: undefined,
|
|
17
17
|
},
|
|
18
18
|
msgctxt: undefined,
|
|
@@ -31,7 +31,7 @@ describe("doTree php", () => {
|
|
|
31
31
|
const fileParsed = doTree(fileContent, filepath);
|
|
32
32
|
assert.deepEqual(fileParsed.blocks[1], {
|
|
33
33
|
comments: {
|
|
34
|
-
reference: ["tests
|
|
34
|
+
reference: ["tests/fixtures/plugin/plugin.php:65"],
|
|
35
35
|
translator: undefined,
|
|
36
36
|
},
|
|
37
37
|
msgctxt: undefined,
|
|
@@ -50,7 +50,7 @@ describe("doTree tsx file", () => {
|
|
|
50
50
|
const fileParsed = doTree(fileContent, filepath);
|
|
51
51
|
assert.deepEqual(fileParsed.blocks[2], {
|
|
52
52
|
comments: {
|
|
53
|
-
reference: ["tests
|
|
53
|
+
reference: ["tests/fixtures/block/SvgControls.tsx:107"],
|
|
54
54
|
translator: undefined,
|
|
55
55
|
},
|
|
56
56
|
msgctxt: undefined,
|