@wp-blocks/make-pot 1.5.0 → 1.5.1

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.
Files changed (69) hide show
  1. package/README.md +3 -3
  2. package/lib/assets/block-i18n.js.map +7 -0
  3. package/lib/assets/package-i18n.js.map +7 -0
  4. package/lib/assets/theme-i18n.js.map +7 -0
  5. package/lib/assets/wp-plugin-i18n.js.map +7 -0
  6. package/lib/assets/wp-theme-i18n.js.map +7 -0
  7. package/lib/cli/getArgs.js.map +7 -0
  8. package/lib/cli/getJsonArgs.js +1 -1
  9. package/lib/cli/getJsonArgs.js.map +7 -0
  10. package/lib/cli/parseCli.js.map +7 -0
  11. package/lib/cli.js +1 -1
  12. package/lib/cli.js.map +7 -0
  13. package/lib/const.js +1 -1
  14. package/lib/const.js.map +7 -0
  15. package/lib/extractors/css.js +1 -1
  16. package/lib/extractors/css.js.map +7 -0
  17. package/lib/extractors/headers.js +3 -3
  18. package/lib/extractors/headers.js.map +7 -0
  19. package/lib/extractors/json.js +1 -1
  20. package/lib/extractors/json.js.map +7 -0
  21. package/lib/extractors/packageJson.js +1 -0
  22. package/lib/extractors/packageJson.js.map +7 -0
  23. package/lib/extractors/php.js +2 -2
  24. package/lib/extractors/php.js.map +7 -0
  25. package/lib/extractors/schema.js +4 -4
  26. package/lib/extractors/schema.js.map +7 -0
  27. package/lib/extractors/text.js +1 -1
  28. package/lib/extractors/text.js.map +7 -0
  29. package/lib/fs/fs.js +2 -1
  30. package/lib/fs/fs.js.map +7 -0
  31. package/lib/fs/glob.js.map +7 -0
  32. package/lib/index.js +1 -1
  33. package/lib/index.js.map +7 -0
  34. package/lib/jsonCommand.js +1 -1
  35. package/lib/jsonCommand.js.map +7 -0
  36. package/lib/makeJson.js +1 -1
  37. package/lib/makeJson.js.map +7 -0
  38. package/lib/makePot.js +1 -1
  39. package/lib/makePot.js.map +7 -0
  40. package/lib/parser/exec.js +3 -3
  41. package/lib/parser/exec.js.map +7 -0
  42. package/lib/parser/makeJson.js +1 -1
  43. package/lib/parser/makeJson.js.map +7 -0
  44. package/lib/parser/makePot.js +1 -1
  45. package/lib/parser/makePot.js.map +7 -0
  46. package/lib/parser/patterns.js.map +7 -0
  47. package/lib/parser/process.js.map +7 -0
  48. package/lib/parser/progress.js +1 -1
  49. package/lib/parser/progress.js.map +7 -0
  50. package/lib/parser/taskRunner.js +2 -1
  51. package/lib/parser/taskRunner.js.map +7 -0
  52. package/lib/parser/tree.js +1 -1
  53. package/lib/parser/tree.js.map +7 -0
  54. package/lib/potCommand.js +1 -1
  55. package/lib/potCommand.js.map +7 -0
  56. package/lib/types.js.map +7 -0
  57. package/lib/utils/common.js +3 -2
  58. package/lib/utils/common.js.map +7 -0
  59. package/lib/utils/extractors.js +1 -0
  60. package/lib/utils/extractors.js.map +7 -0
  61. package/package.json +13 -12
  62. package/tests/extract-headers.test.js +54 -0
  63. package/tests/extract.test.js +1 -1
  64. package/tests/jsonParse.test.js +167 -0
  65. package/tests/parse-headers.test.js +74 -0
  66. package/lib/extractors/utils.js +0 -1
  67. package/tests/getFiles.test.no.js +0 -85
  68. package/tests/jsonParse.no.js +0 -49
  69. package/tests/wpcliCompare.no.js +0 -32
@@ -0,0 +1,167 @@
1
+ const fs = require("node:fs");
2
+ const { describe, it } = require("node:test");
3
+ const assert = require("node:assert");
4
+ const { parseJsonFile } = require("../lib");
5
+
6
+ describe("should parse json", () => {
7
+ describe("should parse block.json", () => {
8
+ it("block.json", async () => {
9
+ const expected = [
10
+ {
11
+ msgid: "block title",
12
+ msgctxt: "my block title",
13
+ comments: {
14
+ reference: ["block.json"],
15
+ },
16
+ },
17
+ {
18
+ msgid: "block description",
19
+ msgctxt: "my block description",
20
+ comments: {
21
+ reference: ["block.json"],
22
+ },
23
+ },
24
+ {
25
+ msgid: "block keyword",
26
+ msgctxt: "my block keyword",
27
+ comments: {
28
+ reference: ["block.json"],
29
+ },
30
+ },
31
+ {
32
+ msgid: "block keyword",
33
+ msgctxt: "my block keyword 2",
34
+ comments: {
35
+ reference: ["block.json"],
36
+ },
37
+ },
38
+ {
39
+ msgid: "block keyword",
40
+ msgctxt: "my block keyword 3",
41
+ comments: {
42
+ reference: ["block.json"],
43
+ },
44
+ },
45
+ ];
46
+
47
+ const result = await parseJsonFile({
48
+ fileContent: fs.readFileSync("tests/fixtures/block/block.json", "utf8"),
49
+ filename: "block.json",
50
+ });
51
+
52
+ assert.deepStrictEqual(result, expected);
53
+ });
54
+ });
55
+
56
+ describe("should parse theme.json", () => {
57
+ it("theme.json", async () => {
58
+ const expected = [
59
+ {
60
+ msgid: "Font size name",
61
+ msgctxt: "Extra small",
62
+ comments: {
63
+ reference: ["block.json"],
64
+ },
65
+ },
66
+ {
67
+ msgid: "Font size name",
68
+ msgctxt: "Small",
69
+ comments: {
70
+ reference: ["block.json"],
71
+ },
72
+ },
73
+ {
74
+ msgid: "Font size name",
75
+ msgctxt: "Medium",
76
+ comments: {
77
+ reference: ["block.json"],
78
+ },
79
+ },
80
+ {
81
+ msgid: "Font size name",
82
+ msgctxt: "Large",
83
+ comments: {
84
+ reference: ["block.json"],
85
+ },
86
+ },
87
+ {
88
+ msgid: "Font size name",
89
+ msgctxt: "Extra large",
90
+ comments: {
91
+ reference: ["block.json"],
92
+ },
93
+ },
94
+ {
95
+ msgid: "Font family name",
96
+ msgctxt: "System Fonts",
97
+ comments: {
98
+ reference: ["block.json"],
99
+ },
100
+ },
101
+ {
102
+ msgid: "Color name",
103
+ msgctxt: "Base",
104
+ comments: {
105
+ reference: ["block.json"],
106
+ },
107
+ },
108
+ {
109
+ msgid: "Color name",
110
+ msgctxt: "Contrast",
111
+ comments: {
112
+ reference: ["block.json"],
113
+ },
114
+ },
115
+ {
116
+ msgid: "Color name",
117
+ msgctxt: "Accent",
118
+ comments: {
119
+ reference: ["block.json"],
120
+ },
121
+ },
122
+ {
123
+ msgid: "Color name",
124
+ msgctxt: "Accent Two",
125
+ comments: {
126
+ reference: ["block.json"],
127
+ },
128
+ },
129
+ {
130
+ msgid: "Color name",
131
+ msgctxt: "Accent Three",
132
+ comments: {
133
+ reference: ["block.json"],
134
+ },
135
+ },
136
+ {
137
+ msgid: "Gradient name",
138
+ msgctxt: "Accent Two to Contrast",
139
+ comments: {
140
+ reference: ["block.json"],
141
+ },
142
+ },
143
+ {
144
+ msgid: "Template part name",
145
+ msgctxt: "Header",
146
+ comments: {
147
+ reference: ["block.json"],
148
+ },
149
+ },
150
+ {
151
+ msgid: "Template part name",
152
+ msgctxt: "Footer",
153
+ comments: {
154
+ reference: ["block.json"],
155
+ },
156
+ },
157
+ ];
158
+
159
+ const result = await parseJsonFile({
160
+ fileContent: fs.readFileSync("tests/fixtures/fse/theme.json", "utf8"),
161
+ filename: "theme.json",
162
+ });
163
+
164
+ assert.deepStrictEqual(result, expected);
165
+ });
166
+ });
167
+ });
@@ -0,0 +1,74 @@
1
+ const fs = require("node:fs");
2
+ const { describe, it } = require("node:test");
3
+ const assert = require("node:assert");
4
+ const { generateHeader, getAuthorFromPackage } = require("../lib");
5
+ const { join } = require("node:path");
6
+
7
+ describe("Header generation", () => {
8
+ describe("Should generate a valid header", () => {
9
+ it("from user full data", async () => {
10
+ const expected = {};
11
+ const author = await getAuthorFromPackage({
12
+ authors: ["John Doe <1dHsK@example.com> (http://example.com)"],
13
+ });
14
+
15
+ assert.deepStrictEqual(author, {
16
+ name: "John Doe",
17
+ email: "1dHsK@example.com",
18
+ website: "http://example.com",
19
+ });
20
+ });
21
+
22
+ it("from user data", async () => {
23
+ const expected = {};
24
+ const author = await getAuthorFromPackage({
25
+ authors: ["erik"],
26
+ });
27
+
28
+ assert.deepStrictEqual(author, {
29
+ name: "erik",
30
+ email: undefined,
31
+ website: undefined,
32
+ });
33
+ });
34
+
35
+ it("from package.json data", async () => {
36
+ const expected = {
37
+ "Project-Id-Version": "plugin 1.0.0",
38
+ "Report-Msgid-Bugs-To": "John Doe <bbb@ccc.ddd>",
39
+ "MIME-Version": "1.0",
40
+ "Content-Transfer-Encoding": "8bit",
41
+ "content-type": "text/plain; charset=iso-8859-1",
42
+ "plural-forms": "nplurals=2; plural=(n!=1);",
43
+ "POT-Creation-Date": undefined,
44
+ "PO-Revision-Date": undefined,
45
+ "Last-Translator": "John Doe <bbb@ccc.ddd>",
46
+ "Language-Team": "John Doe <bbb@ccc.ddd>",
47
+ "X-Generator": "@wp-blocks/make-pot 1.5.1",
48
+ Language: "en",
49
+ "X-Domain": "plugin",
50
+ };
51
+
52
+ const result = await generateHeader({
53
+ headers: {
54
+ name: "my-block",
55
+ author: "John Doe",
56
+ version: "1.0.0",
57
+ license: "MIT",
58
+ homepage: "https://example.com",
59
+ repository: "https://github.com/example/my-block",
60
+ domain: "my-plugin-text-domain",
61
+ },
62
+ paths: {
63
+ cwd: join(process.cwd(), "tests/fixtures/plugin"),
64
+ },
65
+ });
66
+
67
+ // remove the date "POT-Creation-Date"
68
+ result["POT-Creation-Date"] = undefined;
69
+ result["PO-Revision-Date"] = undefined;
70
+
71
+ assert.deepStrictEqual(result, expected);
72
+ });
73
+ });
74
+ });
@@ -1 +0,0 @@
1
- "use strict";var l=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var r in e)l(t,r,{get:e[r],enumerable:!0})},B=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!x.call(t,o)&&o!==r&&l(t,o,{get:()=>e[o],enumerable:!(n=k(e,o))||n.enumerable});return t};var O=t=>B(l({},"__esModule",{value:!0}),t);var v={};p(v,{gentranslation:()=>m,getKeyByValue:()=>b,yieldParsedData:()=>j});module.exports=O(v);var g=require("gettext-merger"),d=require("./json.js");function b(t,e){return Object.keys(t).find(r=>t[r]===e)??void 0}const m=(t,e,r)=>{const n=new g.Block([]);return n.msgctxt=void 0,n.msgid=e,n.msgid_plural="",n.msgstr=[],n.comments={extracted:[t],reference:[r]},n};function j(t,e,r){const n=new g.SetOfBlocks([],r);if(!t)return n;n.path=r;for(const[u,s]of Object.entries(t)){let i=function(c,f=u){const a=m((0,d.getJsonComment)(u,e),f,r);n.add(a)};var o=i;if(s)if(typeof s=="string")i(s);else if(Array.isArray(s))for(const c of s)i(c);else for(const[c,f]of Object.entries(s))typeof f=="string"&&i(f,c)}return n}0&&(module.exports={gentranslation,getKeyByValue,yieldParsedData});
@@ -1,85 +0,0 @@
1
- const { sep } = require("node:path");
2
- const { describe, it } = require("node:test");
3
- const assert = require("node:assert");
4
- const { parseCliArgs } = require("../lib/cli/parseCli.js");
5
- const { getFiles } = require("../lib/fs/glob.js");
6
-
7
- describe("getFiles", () => {
8
- const DEFAULTS = parseCliArgs({
9
- domain: "plugin",
10
- slug: "plugin-slug",
11
- paths: { cwd: "tests/fixtures/", out: "tests/fixtures/" },
12
- options: {
13
- silent: true,
14
- },
15
- $0: "makepot",
16
- _: [0, 1],
17
- });
18
-
19
- it("should retrieve a all files", async () => {
20
- const args = { ...DEFAULTS, domain: "theme" };
21
- const pattern = { include: ["./src/**"], exclude: [] };
22
-
23
- const files = getFiles(args, pattern);
24
- const collected = [];
25
- for (const file of files) {
26
- assert.equal(!!file, true);
27
- collected.push(file);
28
- }
29
- assert.deepStrictEqual(collected.length, 28);
30
- assert.strictEqual(
31
- collected.find((e) => e.includes("const.ts")),
32
- "src\\const.ts",
33
- );
34
- });
35
-
36
- it("Should retrieve a list of txt files based on the provided plugin pattern", async () => {
37
- const args = {
38
- ...DEFAULTS,
39
- };
40
- const pattern = {
41
- include: ["**/*.txt"],
42
- exclude: ["node_modules", "dist"],
43
- };
44
- const expectedFiles = [
45
- `tests${sep}fixtures${sep}file1.txt`,
46
- `tests${sep}fixtures${sep}sourcedir${sep}file2.txt`,
47
- `tests${sep}fixtures${sep}block${sep}readme.txt`,
48
- ];
49
-
50
- const files = getFiles(args, pattern);
51
- const collected = [];
52
- for (const file of files) {
53
- assert.equal(!!file, true);
54
- collected.push(file);
55
- }
56
-
57
- assert.deepStrictEqual(collected, expectedFiles);
58
- });
59
-
60
- it("should retrieve a list of theme.json files based on the provided theme pattern", async () => {
61
- const args = {
62
- ...DEFAULTS,
63
- };
64
- const pattern = {
65
- include: ["tests/fixtures/sourcedir/**/*.json"],
66
- exclude: [],
67
- };
68
- const expectedFiles = [
69
- `tests${sep}fixtures${sep}sourcedir${sep}theme.json`,
70
- `tests${sep}fixtures${sep}sourcedir${sep}package.json`,
71
- `tests${sep}fixtures${sep}sourcedir${sep}node_modules${sep}module${sep}block.json`,
72
- ];
73
-
74
- const files = getFiles(args, pattern);
75
- const collected = [];
76
- for (const file of files) {
77
- assert.equal(!!file, true);
78
- collected.push(file);
79
- }
80
-
81
- const fileFound = collected.filter((file) => expectedFiles.includes(file));
82
-
83
- assert.deepStrictEqual(fileFound.length, 3);
84
- });
85
- });
@@ -1,49 +0,0 @@
1
- const fs = require("node:fs");
2
- const { describe, it } = require("node:test");
3
- const assert = require("node:assert");
4
- const { parseJsonFile } = require("../lib/extractors/json.js");
5
-
6
- describe("should parse json", () => {
7
- it("theme.json", async () => {
8
- const expected = {
9
- "block style label": {
10
- label: {
11
- comments: {
12
- reference: "block/block.json",
13
- },
14
- msgctxt: "block style label",
15
- msgid: "label",
16
- msgstr: [],
17
- },
18
- },
19
- "block description": {
20
- description: {
21
- comments: {
22
- reference: "block/block.json",
23
- },
24
- msgctxt: "block description",
25
- msgid: "description",
26
- msgstr: [],
27
- },
28
- },
29
- "block keyword": {
30
- undefined: {
31
- comments: {
32
- reference: "block/block.json",
33
- },
34
- msgctxt: "block keyword",
35
- msgid: undefined,
36
- msgstr: [],
37
- },
38
- },
39
- };
40
-
41
- const result = await parseJsonFile({
42
- fileContent: fs.readFileSync("tests/fixtures/block/block.json", "utf8"),
43
- filename: "block.json",
44
- filepath: "block/block.json",
45
- });
46
-
47
- assert.strictEqual(result, expected);
48
- });
49
- });
@@ -1,32 +0,0 @@
1
- const fs = require("node:fs");
2
- const path = require("node:path");
3
- const { describe, it } = require("node:test");
4
- const assert = require("node:assert");
5
-
6
- const { makePot } = require("../lib/");
7
- const { getArgs } = require("../lib/cli/getArgs.js");
8
-
9
- describe("doTree is like wpcli", () => {
10
- it("Should emit a pot file for theme like the wp-cli makepot", async () => {
11
- const filePath = path.join(process.cwd(), "./tests/fixtures/theme/");
12
- const potPath = path.join(process.cwd(), "./tests/fixtures/theme.pot");
13
- const potContent = fs.readFileSync(potPath, "utf8");
14
- const args = getArgs({
15
- _: [filePath],
16
- });
17
- const fileParsed = await makePot(args);
18
- assert.deepEqual(fileParsed, potContent);
19
- });
20
-
21
- it("should emit a pot file for plugin like the wp-cli makepot", async () => {
22
- const filePath = path.join(process.cwd(), "./tests/fixtures/vinyl/");
23
- const potPath = path.join(process.cwd(), "./tests/fixtures/vinyl.pot");
24
- const potContent = fs.readFileSync(potPath, "utf8");
25
-
26
- const args = getArgs({
27
- _: [filePath],
28
- });
29
- const fileParsed = await makePot(args);
30
- assert.deepEqual(fileParsed, potContent);
31
- });
32
- });