@wp-blocks/make-pot 0.1.0 → 1.0.0

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 (114) hide show
  1. package/CODE_OF_CONDUCT.md +45 -0
  2. package/CONTRIBUTING.md +92 -0
  3. package/README.md +54 -3
  4. package/lib/assets/block-i18n.json +17 -0
  5. package/lib/assets/package-i18n.json +11 -0
  6. package/lib/assets/theme-i18n.json +86 -0
  7. package/lib/assets/wp-plugin-i18n.json +14 -0
  8. package/lib/assets/wp-theme-i18n.json +13 -0
  9. package/lib/cli/index.d.ts +1 -0
  10. package/lib/cli/index.js +114 -0
  11. package/lib/cli/index.js.map +1 -0
  12. package/lib/cli/parseCli.d.ts +3 -0
  13. package/lib/cli/parseCli.js +111 -0
  14. package/lib/cli/parseCli.js.map +1 -0
  15. package/lib/cliArgs.js +41 -8
  16. package/lib/cliArgs.js.map +1 -1
  17. package/lib/const.d.ts +112 -0
  18. package/lib/const.js +42 -5
  19. package/lib/const.js.map +1 -1
  20. package/lib/extractors/css.d.ts +2 -0
  21. package/lib/extractors/css.js +42 -0
  22. package/lib/extractors/css.js.map +1 -0
  23. package/lib/extractors/headers.d.ts +6 -0
  24. package/lib/extractors/headers.js +59 -0
  25. package/lib/extractors/headers.js.map +1 -0
  26. package/lib/extractors/index.d.ts +2 -0
  27. package/lib/extractors/index.js +60 -0
  28. package/lib/extractors/index.js.map +1 -0
  29. package/lib/extractors/json.d.ts +9 -0
  30. package/lib/extractors/json.js +82 -0
  31. package/lib/extractors/json.js.map +1 -0
  32. package/lib/extractors/php.d.ts +3 -0
  33. package/lib/extractors/php.js +49 -0
  34. package/lib/extractors/php.js.map +1 -0
  35. package/lib/extractors/schema.d.ts +13 -0
  36. package/lib/extractors/schema.js +121 -0
  37. package/lib/extractors/schema.js.map +1 -0
  38. package/lib/extractors/text.d.ts +1 -0
  39. package/lib/{extractors-text.js → extractors/text.js} +7 -10
  40. package/lib/extractors/text.js.map +1 -0
  41. package/lib/extractors/utils.d.ts +5 -0
  42. package/lib/extractors/utils.js +54 -0
  43. package/lib/extractors/utils.js.map +1 -0
  44. package/lib/fs/glob.d.ts +13 -0
  45. package/lib/fs/glob.js +95 -0
  46. package/lib/fs/glob.js.map +1 -0
  47. package/lib/fs/index.d.ts +2 -0
  48. package/lib/fs/index.js +69 -0
  49. package/lib/fs/index.js.map +1 -0
  50. package/lib/fs.d.ts +2 -1
  51. package/lib/fs.js +15 -8
  52. package/lib/fs.js.map +1 -1
  53. package/lib/index.js +5 -3
  54. package/lib/index.js.map +1 -1
  55. package/lib/makePot.d.ts +1 -1
  56. package/lib/makePot.js +38 -27
  57. package/lib/makePot.js.map +1 -1
  58. package/lib/maps.d.ts +122 -0
  59. package/lib/maps.js +73 -0
  60. package/lib/maps.js.map +1 -0
  61. package/lib/parser/consolidate.d.ts +2 -0
  62. package/lib/parser/consolidate.js +37 -0
  63. package/lib/parser/consolidate.js.map +1 -0
  64. package/lib/parser/exec.d.ts +3 -0
  65. package/lib/parser/exec.js +71 -0
  66. package/lib/parser/exec.js.map +1 -0
  67. package/lib/parser/index.d.ts +2 -0
  68. package/lib/parser/index.js +24 -0
  69. package/lib/parser/index.js.map +1 -0
  70. package/lib/parser/makePot.d.ts +2 -0
  71. package/lib/parser/makePot.js +39 -0
  72. package/lib/parser/makePot.js.map +1 -0
  73. package/lib/parser/patterns.d.ts +2 -0
  74. package/lib/parser/patterns.js +34 -0
  75. package/lib/parser/patterns.js.map +1 -0
  76. package/lib/parser/process.d.ts +5 -0
  77. package/lib/parser/process.js +71 -0
  78. package/lib/parser/process.js.map +1 -0
  79. package/lib/parser/tree.d.ts +2 -0
  80. package/lib/parser/tree.js +78 -0
  81. package/lib/parser/tree.js.map +1 -0
  82. package/lib/parser.d.ts +2 -2
  83. package/lib/parser.js +58 -57
  84. package/lib/parser.js.map +1 -1
  85. package/lib/tree.js +6 -6
  86. package/lib/tree.js.map +1 -1
  87. package/lib/types.d.ts +7 -4
  88. package/lib/utils/index.d.ts +8 -0
  89. package/lib/utils/index.js +78 -0
  90. package/lib/utils/index.js.map +1 -0
  91. package/lib/utils.d.ts +3 -3
  92. package/lib/utils.js +16 -13
  93. package/lib/utils.js.map +1 -1
  94. package/package.json +19 -10
  95. package/tests/consolidate.test.ts +1 -1
  96. package/tests/{extract-2.old.ts → extract-2.test.ts} +10 -3
  97. package/tests/getFiles.old.ts +1 -1
  98. package/tests/getStrings.old.ts +1 -1
  99. package/tests/{jsonParse.test.ts → jsonParse.ts} +9 -8
  100. package/lib/extractors-json.d.ts +0 -9
  101. package/lib/extractors-json.js +0 -53
  102. package/lib/extractors-json.js.map +0 -1
  103. package/lib/extractors-maps.d.ts +0 -109
  104. package/lib/extractors-maps.js +0 -139
  105. package/lib/extractors-maps.js.map +0 -1
  106. package/lib/extractors-php.d.ts +0 -1
  107. package/lib/extractors-php.js +0 -25
  108. package/lib/extractors-php.js.map +0 -1
  109. package/lib/extractors-text.d.ts +0 -1
  110. package/lib/extractors-text.js.map +0 -1
  111. package/lib/extractors.d.ts +0 -17
  112. package/lib/extractors.js +0 -137
  113. package/lib/extractors.js.map +0 -1
  114. package/tests/index.html +0 -78
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.JsonSchemaExtractor = void 0;
39
+ const axios_1 = __importDefault(require("axios"));
40
+ class JsonSchemaExtractor {
41
+ static loadSchema(url, fallback) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ if (this.schemaCache[url]) {
44
+ return this.schemaCache[url];
45
+ }
46
+ try {
47
+ const response = yield axios_1.default.get(url, {
48
+ headers: {
49
+ 'Cache-Control': 'no-cache',
50
+ },
51
+ });
52
+ this.schemaCache[url] = response.data;
53
+ return response.data;
54
+ }
55
+ catch (error) {
56
+ console.error(`Failed to load schema from ${url}. Using fallback.`);
57
+ try {
58
+ const fallbackData = yield Promise.resolve(`${fallback}`).then(s => __importStar(require(s)));
59
+ this.schemaCache[url] = fallbackData.default;
60
+ return fallbackData.default;
61
+ }
62
+ catch (fallbackError) {
63
+ console.error(`Failed to load fallback schema from ${fallback}.`);
64
+ return null;
65
+ }
66
+ }
67
+ });
68
+ }
69
+ static fromString(text, options) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ const schema = yield this.loadSchema(options.schema, options.schemaFallback);
72
+ if (!schema) {
73
+ console.error('Failed to load schema.');
74
+ return;
75
+ }
76
+ const json = JSON.parse(text);
77
+ if (json === null) {
78
+ console.error(`Could not parse JSON.`);
79
+ return;
80
+ }
81
+ return this.extractStringsUsingI18nSchema(schema, json);
82
+ });
83
+ }
84
+ static extractStringsUsingI18nSchema(i18nSchema, settings) {
85
+ if (!i18nSchema || !settings) {
86
+ return {};
87
+ }
88
+ if (Array.isArray(i18nSchema) && typeof settings === 'object') {
89
+ const result = {};
90
+ for (const value in settings) {
91
+ const extracted = this.extractStringsUsingI18nSchema(i18nSchema[value], value);
92
+ Object.assign(result, extracted);
93
+ }
94
+ return result;
95
+ }
96
+ if (typeof i18nSchema === 'object' && typeof settings === 'object') {
97
+ const groupKey = '*';
98
+ const result = {};
99
+ for (const [key, value] of Object.entries(settings)) {
100
+ if (i18nSchema[key]) {
101
+ result[key] = i18nSchema[key];
102
+ }
103
+ else if (Object.prototype.hasOwnProperty.call(i18nSchema, groupKey)) {
104
+ const extracted = this.extractStringsUsingI18nSchema(i18nSchema[groupKey], value);
105
+ if (extracted) {
106
+ Object.assign(result, extracted);
107
+ }
108
+ }
109
+ }
110
+ return result;
111
+ }
112
+ return {};
113
+ }
114
+ }
115
+ exports.JsonSchemaExtractor = JsonSchemaExtractor;
116
+ JsonSchemaExtractor.schemaCache = {};
117
+ JsonSchemaExtractor.themeJsonSource = 'http://develop.svn.wordpress.org/trunk/src/wp-includes/theme-i18n.json';
118
+ JsonSchemaExtractor.themeJsonFallback = '../assets/theme-i18n.json';
119
+ JsonSchemaExtractor.blockJsonSource = 'http://develop.svn.wordpress.org/trunk/src/wp-includes/block-i18n.json';
120
+ JsonSchemaExtractor.blockJsonFallback = '../assets/block-i18n.json';
121
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/extractors/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function extractFileData(fileContent: string, separator?: string): Record<string, string>;
@@ -1,17 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.extractFileData = void 0;
4
- const utils_1 = require("./utils");
5
- function extractFileData(fileContent) {
4
+ const utils_1 = require("../utils");
5
+ function extractFileData(fileContent, separator = ':') {
6
+ var _a;
6
7
  const data = {};
7
- fileContent
8
- .split('\n')
9
- .map((line) => line.trim())
10
- .map((line) => (0, utils_1.removeCommentMarkup)(line))
11
- .forEach((line) => {
8
+ (_a = (0, utils_1.removeCommentMarkup)(fileContent)) === null || _a === void 0 ? void 0 : _a.forEach((line) => {
12
9
  var _a, _b;
13
- const parts = line.split(':');
14
- if (parts[1] === undefined) {
10
+ const parts = line.split(separator);
11
+ if (parts.length !== 2 && Object.values(data).length > 0) {
15
12
  return;
16
13
  }
17
14
  data[(_a = parts[0]) === null || _a === void 0 ? void 0 : _a.trim()] = (_b = parts[1]) === null || _b === void 0 ? void 0 : _b.trim();
@@ -19,4 +16,4 @@ function extractFileData(fileContent) {
19
16
  return data;
20
17
  }
21
18
  exports.extractFileData = extractFileData;
22
- //# sourceMappingURL=extractors-text.js.map
19
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/extractors/text.ts"],"names":[],"mappings":";;;AAAA,oCAA+D;AAW/D,SAAgB,eAAe,CAC9B,WAAmB,EACnB,YAAoB,GAAG;;IAEvB,MAAM,IAAI,GAA2B,EAAE,CAAA;IAGvC,MAAA,IAAA,2BAAmB,EAAC,WAAW,CAAC,0CAE7B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAInC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAM;QACP,CAAC;QACD,IAAI,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,IAAI,EAAE,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,0CAAE,IAAI,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,CAAA;AACZ,CAAC;AArBD,0CAqBC"}
@@ -0,0 +1,5 @@
1
+ import { GetTextTranslation } from 'gettext-parser';
2
+ import type { TranslationStrings } from '../types';
3
+ export declare function getKeyByValue(object: Record<string, unknown>, value: string): string | undefined;
4
+ export declare const gentranslation: (label: string, string: string, filePath?: string | undefined) => GetTextTranslation;
5
+ export declare function yieldParsedData(parsed: Record<string, string | string[]>, filename: 'block.json' | 'theme.json' | 'readme.txt', filepath: string): TranslationStrings;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.yieldParsedData = exports.gentranslation = exports.getKeyByValue = void 0;
4
+ const json_1 = require("./json");
5
+ function getKeyByValue(object, value) {
6
+ var _a;
7
+ return (_a = Object.keys(object).find((key) => object[key] === value)) !== null && _a !== void 0 ? _a : undefined;
8
+ }
9
+ exports.getKeyByValue = getKeyByValue;
10
+ const gentranslation = (label, string, filePath) => {
11
+ return {
12
+ msgctxt: undefined,
13
+ msgid: string,
14
+ msgid_plural: '',
15
+ msgstr: [],
16
+ comments: {
17
+ extracted: label,
18
+ reference: filePath,
19
+ },
20
+ };
21
+ };
22
+ exports.gentranslation = gentranslation;
23
+ function yieldParsedData(parsed, filename, filepath) {
24
+ if (!parsed) {
25
+ return {};
26
+ }
27
+ const gettextTranslations = {};
28
+ Object.entries(parsed).forEach(([term, item]) => {
29
+ function storeTranslation(value, valueKey = term) {
30
+ var _a, _b;
31
+ const entry = (0, exports.gentranslation)((0, json_1.getJsonComment)(term, filename), valueKey, filepath);
32
+ gettextTranslations[(_a = entry.msgctxt) !== null && _a !== void 0 ? _a : ''] = Object.assign(Object.assign({}, (gettextTranslations[(_b = entry.msgctxt) !== null && _b !== void 0 ? _b : ''] || {})), { [entry.msgid]: entry });
33
+ }
34
+ if (!item) {
35
+ return;
36
+ }
37
+ else if (typeof item === 'string') {
38
+ storeTranslation(item);
39
+ }
40
+ else if (Array.isArray(item)) {
41
+ item.forEach((value) => storeTranslation(value));
42
+ }
43
+ else {
44
+ Object.entries(item).forEach(([key, value]) => {
45
+ if (typeof value === 'string') {
46
+ storeTranslation(value, key);
47
+ }
48
+ });
49
+ }
50
+ });
51
+ return gettextTranslations;
52
+ }
53
+ exports.yieldParsedData = yieldParsedData;
54
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/extractors/utils.ts"],"names":[],"mappings":";;;AAEA,iCAAuC;AASvC,SAAgB,aAAa,CAC5B,MAA+B,EAC/B,KAAa;;IAEb,OAAO,MAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,mCAAI,SAAS,CAAA;AAC7E,CAAC;AALD,sCAKC;AASM,MAAM,cAAc,GAAG,CAC7B,KAAa,EACb,MAAc,EACd,QAA6B,EACR,EAAE;IACvB,OAAO;QACN,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACT,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,QAAQ;SACe;KACnC,CAAA;AACF,CAAC,CAAA;AAfY,QAAA,cAAc,kBAe1B;AAUD,SAAgB,eAAe,CAC9B,MAAyC,EACzC,QAAoD,EACpD,QAAgB;IAEhB,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,EAAE,CAAA;IACV,CAAC;IACD,MAAM,mBAAmB,GAAuB,EAAE,CAAA;IAElD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAO/C,SAAS,gBAAgB,CAAC,KAAa,EAAE,WAAmB,IAAI;;YAC/D,MAAM,KAAK,GAAG,IAAA,sBAAc,EAC3B,IAAA,qBAAc,EAAC,IAAI,EAAE,QAAQ,CAAC,EAC9B,QAAQ,EACR,QAAQ,CACR,CAAA;YAED,mBAAmB,CAAC,MAAA,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC,mCACpC,CAAC,mBAAmB,CAAC,MAAA,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KACnD,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GACpB,CAAA;QACF,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAM;QACP,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC/B,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAC7B,CAAC;YACF,CAAC,CAAC,CAAA;QACH,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,OAAO,mBAAmB,CAAA;AAC3B,CAAC;AA9CD,0CA8CC"}
@@ -0,0 +1,13 @@
1
+ import Parser from 'tree-sitter';
2
+ import type { Args, Patterns } from '../types';
3
+ import { Glob, Path } from 'glob';
4
+ export declare function getParser(file: string): string | Parser;
5
+ export declare const ignoreFunc: (filePath: Path, excludedPatterns: string[]) => boolean;
6
+ export declare function getFiles(args: Args, pattern: Patterns): Promise<Glob<{
7
+ ignore: {
8
+ ignored: (p: Path) => boolean;
9
+ };
10
+ nodir: true;
11
+ cwd: string;
12
+ root: string | undefined;
13
+ }>>;
package/lib/fs/glob.js ADDED
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.getFiles = exports.ignoreFunc = exports.getParser = void 0;
39
+ const path_1 = __importDefault(require("path"));
40
+ const glob_1 = require("glob");
41
+ const minimatch_1 = require("minimatch");
42
+ const Javascript = __importStar(require("tree-sitter-javascript"));
43
+ const Ts = __importStar(require("tree-sitter-typescript"));
44
+ const Php = __importStar(require("tree-sitter-php"));
45
+ const utils_1 = require("../utils");
46
+ function getParser(file) {
47
+ const ext = file.split('.').pop();
48
+ switch (ext) {
49
+ case 'ts':
50
+ return Ts.default.typescript;
51
+ case 'tsx':
52
+ return Ts.default.tsx;
53
+ case 'js':
54
+ case 'jsx':
55
+ case 'mjs':
56
+ case 'cjs':
57
+ return Javascript.default;
58
+ case 'php':
59
+ return Php.default;
60
+ default:
61
+ return ext;
62
+ }
63
+ }
64
+ exports.getParser = getParser;
65
+ const ignoreFunc = (filePath, excludedPatterns) => {
66
+ return excludedPatterns.some((exclude) => {
67
+ const type = (0, utils_1.detectPatternType)(exclude);
68
+ switch (type) {
69
+ case 'file':
70
+ return filePath.isNamed(exclude);
71
+ case 'directory':
72
+ return filePath.relative().includes(exclude);
73
+ default:
74
+ return (0, minimatch_1.minimatch)(filePath.relative(), exclude);
75
+ }
76
+ });
77
+ };
78
+ exports.ignoreFunc = ignoreFunc;
79
+ function getFiles(args, pattern) {
80
+ var _a;
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ if (!((_a = args.options) === null || _a === void 0 ? void 0 : _a.silent))
83
+ console.log('Searching in :', path_1.default.resolve(args.paths.cwd), 'for ' + pattern.include.join(), '\nignoring patterns: ' + pattern.exclude.join());
84
+ return new glob_1.Glob(pattern.include, {
85
+ ignore: {
86
+ ignored: (p) => (0, exports.ignoreFunc)(p, pattern.exclude),
87
+ },
88
+ nodir: true,
89
+ cwd: args.paths.cwd,
90
+ root: args.paths.root ? path_1.default.resolve(args.paths.root) : undefined,
91
+ });
92
+ });
93
+ }
94
+ exports.getFiles = getFiles;
95
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/fs/glob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAuB;AAEvB,+BAAiC;AACjC,yCAAqC;AAGrC,mEAAoD;AAEpD,2DAA4C;AAE5C,qDAAsC;AACtC,oCAA4C;AAQ5C,SAAgB,SAAS,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;IACjC,QAAQ,GAAG,EAAE,CAAC;QACb,KAAK,IAAI;YACR,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAA;QAC7B,KAAK,KAAK;YACT,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;QACtB,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACT,OAAO,UAAU,CAAC,OAAO,CAAA;QAC1B,KAAK,KAAK;YACT,OAAO,GAAG,CAAC,OAAO,CAAA;QACnB;YACC,OAAO,GAAI,CAAA;IACb,CAAC;AACF,CAAC;AAjBD,8BAiBC;AAGM,MAAM,UAAU,GAAG,CACzB,QAAc,EACd,gBAA0B,EAChB,EAAE;IACZ,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAA;QAEvC,QAAQ,IAAI,EAAE,CAAC;YACd,KAAK,MAAM;gBACV,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACjC,KAAK,WAAW;gBACf,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC7C;gBAEC,OAAO,IAAA,qBAAS,EAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;IACF,CAAC,CAAY,CAAA;AACd,CAAC,CAAA;AAjBY,QAAA,UAAU,cAiBtB;AASD,SAAsB,QAAQ,CAAC,IAAU,EAAE,OAAiB;;;QAC3D,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAA;YACxB,OAAO,CAAC,GAAG,CACV,gBAAgB,EAChB,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAC5B,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAC/B,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAChD,CAAA;QAGF,OAAO,IAAI,WAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAChC,MAAM,EAAE;gBACP,OAAO,EAAE,CAAC,CAAO,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;aACpD;YACD,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;YACnB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC,CAAA;;CACF;AAlBD,4BAkBC"}
@@ -0,0 +1,2 @@
1
+ export declare function writeFile(fileContent: string, dest: string): void;
2
+ export declare function readFileAsync(path: string): Promise<string>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.readFileAsync = exports.writeFile = void 0;
39
+ const path = __importStar(require("path"));
40
+ const node_fs_1 = __importDefault(require("node:fs"));
41
+ function ensureFolderExists(folderPath) {
42
+ if (folderPath === undefined) {
43
+ return '.';
44
+ }
45
+ try {
46
+ node_fs_1.default.accessSync(path.resolve(folderPath), node_fs_1.default.constants.R_OK | node_fs_1.default.constants.W_OK);
47
+ }
48
+ catch (error) {
49
+ if (error.code === 'ENOENT') {
50
+ node_fs_1.default.mkdirSync(folderPath, { recursive: true });
51
+ console.log(`Folder created: ${folderPath}`);
52
+ return folderPath;
53
+ }
54
+ }
55
+ return folderPath;
56
+ }
57
+ function writeFile(fileContent, dest) {
58
+ if (ensureFolderExists(path.dirname(dest))) {
59
+ node_fs_1.default.writeFileSync(dest, fileContent);
60
+ }
61
+ }
62
+ exports.writeFile = writeFile;
63
+ function readFileAsync(path) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ return node_fs_1.default.promises.readFile(path, 'utf-8');
66
+ });
67
+ }
68
+ exports.readFileAsync = readFileAsync;
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,sDAAwB;AAQxB,SAAS,kBAAkB,CAAC,UAA8B;IACzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QAEJ,iBAAE,CAAC,UAAU,CACZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EACxB,iBAAE,CAAC,SAAS,CAAC,IAAI,GAAG,iBAAE,CAAC,SAAS,CAAC,IAAI,CACrC,CAAA;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAExD,iBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;YAC5C,OAAO,UAAU,CAAA;QAClB,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAA;AAClB,CAAC;AAQD,SAAgB,SAAS,CAAC,WAAmB,EAAE,IAAY;IAC1D,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5C,iBAAE,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IACpC,CAAC;AACF,CAAC;AAJD,8BAIC;AAED,SAAsB,aAAa,CAAC,IAAY;;QAC/C,OAAO,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;CAAA;AAFD,sCAEC"}
package/lib/fs.d.ts CHANGED
@@ -1 +1,2 @@
1
- export declare function writeFile(fileContent: string, dest: string): Promise<void>;
1
+ export declare function writeFile(fileContent: string, dest: string): void;
2
+ export declare function readFileAsync(path: string): Promise<string>;
package/lib/fs.js CHANGED
@@ -31,20 +31,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
31
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
32
32
  });
33
33
  };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
34
37
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.writeFile = void 0;
38
+ exports.readFileAsync = exports.writeFile = void 0;
36
39
  const path = __importStar(require("path"));
37
- const fs = __importStar(require("fs"));
40
+ const node_fs_1 = __importDefault(require("node:fs"));
38
41
  function ensureFolderExists(folderPath) {
39
42
  if (folderPath === undefined) {
40
43
  return '.';
41
44
  }
42
45
  try {
43
- fs.accessSync(path.resolve(folderPath), fs.constants.R_OK | fs.constants.W_OK);
46
+ node_fs_1.default.accessSync(path.resolve(folderPath), node_fs_1.default.constants.R_OK | node_fs_1.default.constants.W_OK);
44
47
  }
45
48
  catch (error) {
46
49
  if (error.code === 'ENOENT') {
47
- fs.mkdirSync(folderPath, { recursive: true });
50
+ node_fs_1.default.mkdirSync(folderPath, { recursive: true });
48
51
  console.log(`Folder created: ${folderPath}`);
49
52
  return folderPath;
50
53
  }
@@ -52,11 +55,15 @@ function ensureFolderExists(folderPath) {
52
55
  return folderPath;
53
56
  }
54
57
  function writeFile(fileContent, dest) {
58
+ if (ensureFolderExists(path.dirname(dest))) {
59
+ node_fs_1.default.writeFileSync(dest, fileContent);
60
+ }
61
+ }
62
+ exports.writeFile = writeFile;
63
+ function readFileAsync(path) {
55
64
  return __awaiter(this, void 0, void 0, function* () {
56
- if (ensureFolderExists(path.dirname(dest))) {
57
- fs.writeFileSync(dest, fileContent);
58
- }
65
+ return node_fs_1.default.promises.readFile(path, 'utf-8');
59
66
  });
60
67
  }
61
- exports.writeFile = writeFile;
68
+ exports.readFileAsync = readFileAsync;
62
69
  //# sourceMappingURL=fs.js.map
package/lib/fs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA4B;AAC5B,uCAAwB;AAQxB,SAAS,kBAAkB,CAAC,UAA8B;IACzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QAEJ,EAAE,CAAC,UAAU,CACZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EACxB,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CACrC,CAAA;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAExD,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;YAC5C,OAAO,UAAU,CAAA;QAClB,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAA;AAClB,CAAC;AAMD,SAAsB,SAAS,CAAC,WAAmB,EAAE,IAAY;;QAChE,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5C,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACpC,CAAC;IACF,CAAC;CAAA;AAJD,8BAIC"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,sDAAwB;AAQxB,SAAS,kBAAkB,CAAC,UAA8B;IACzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAA;IACX,CAAC;IACD,IAAI,CAAC;QAEJ,iBAAE,CAAC,UAAU,CACZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EACxB,iBAAE,CAAC,SAAS,CAAC,IAAI,GAAG,iBAAE,CAAC,SAAS,CAAC,IAAI,CACrC,CAAA;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAExD,iBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;YAC5C,OAAO,UAAU,CAAA;QAClB,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAA;AAClB,CAAC;AAQD,SAAgB,SAAS,CAAC,WAAmB,EAAE,IAAY;IAC1D,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5C,iBAAE,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IACpC,CAAC;AACF,CAAC;AAJD,8BAIC;AAED,SAAsB,aAAa,CAAC,IAAY;;QAC/C,OAAO,iBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;CAAA;AAFD,sCAEC"}
package/lib/index.js CHANGED
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const makePot_1 = require("./makePot");
8
- const cliArgs_1 = require("./cliArgs");
7
+ const makePot_1 = require("./parser/makePot");
9
8
  const yargs_1 = __importDefault(require("yargs"));
10
- const args = (0, cliArgs_1.getArgs)();
9
+ const const_1 = require("./const");
10
+ const cli_1 = require("./cli");
11
+ const args = (0, cli_1.getArgs)();
11
12
  if (Object.keys(args).length > 0) {
13
+ console.log(const_1.pkgJson.name + ' version: ' + const_1.pkgJson.version);
12
14
  const timeStart = new Date();
13
15
  (0, makePot_1.makePot)(args)
14
16
  .then(() => {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,uCAAmC;AAEnC,uCAAmC;AAEnC,kDAAyB;AAGzB,MAAM,IAAI,GAAG,IAAA,iBAAO,GAAE,CAAA;AACtB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;IAC5B,IAAA,iBAAO,EAAC,IAAI,CAAC;SACX,IAAI,CAAC,GAAG,EAAE;QACV,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;QAC1B,OAAO,CAAC,GAAG,CACV,sCAAsC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CACjF,CAAA;IACF,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;AACJ,CAAC;KAAM,CAAC;IACP,eAAK,CAAC,QAAQ,EAAE,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,8CAA0C;AAE1C,kDAAyB;AACzB,mCAAiC;AACjC,+BAA+B;AAG/B,MAAM,IAAI,GAAG,IAAA,aAAO,GAAE,CAAA;AAEtB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,eAAO,CAAC,IAAI,GAAG,YAAY,GAAG,eAAO,CAAC,OAAO,CAAC,CAAA;IAE1D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;IAE5B,IAAA,iBAAO,EAAC,IAAI,CAAC;SACX,IAAI,CAAC,GAAG,EAAE;QAEV,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;QAC1B,OAAO,CAAC,GAAG,CACV,sCAAsC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CACjF,CAAA;IACF,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;AACJ,CAAC;KAAM,CAAC;IAEP,eAAK,CAAC,QAAQ,EAAE,CAAA;AACjB,CAAC"}
package/lib/makePot.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import { type Args } from './types';
2
- export declare function makePot(args: Args): Promise<void>;
2
+ export declare function makePot(args: Args): Promise<string>;
package/lib/makePot.js CHANGED
@@ -13,59 +13,70 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.makePot = void 0;
16
- const extractors_1 = require("./extractors");
16
+ const headers_1 = require("./extractors/headers");
17
17
  const fs_1 = require("./fs");
18
18
  const parser_1 = require("./parser");
19
19
  const node_os_1 = require("node:os");
20
20
  const gettext_parser_1 = __importDefault(require("gettext-parser"));
21
- const utils_1 = require("./utils");
22
21
  const path_1 = __importDefault(require("path"));
22
+ const utils_1 = require("./utils");
23
+ const consolidate_1 = require("./consolidate");
24
+ const json_1 = require("./extractors/json");
23
25
  function exec(args) {
24
26
  var _a, _b, _c, _d, _e, _f;
25
27
  return __awaiter(this, void 0, void 0, function* () {
26
28
  if (!((_a = args.options) === null || _a === void 0 ? void 0 : _a.silent)) {
27
- console.log('📝 Making a pot file...');
28
- console.log('🔍 Extracting strings...', args === null || args === void 0 ? void 0 : args.slug, args);
29
+ console.log('📝 Starting makePot for ', args === null || args === void 0 ? void 0 : args.slug);
30
+ console.log('🔍 Extracting strings from', args.paths);
31
+ console.log('💢 With options', args.options);
29
32
  }
30
- const stringsJson = yield (0, parser_1.runExtract)(args);
33
+ let stringsJson = yield (0, parser_1.runExtract)(args);
34
+ console.log('🎉 Done!', stringsJson);
35
+ stringsJson = stringsJson.filter((value) => value && Object.values(value).length);
36
+ const consolidatedStrings = (0, consolidate_1.consolidate)(stringsJson);
31
37
  if (!((_b = args.options) === null || _b === void 0 ? void 0 : _b.silent)) {
32
- console.log('Memory usage:', (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2), 'MB (Total:', ((0, node_os_1.totalmem)() / 1024 / 1024 / 1024).toFixed(2), 'GB)\n', 'Cpu User:', (process.cpuUsage().user / 1000000).toFixed(2), 'ms Cpu System:', (process.cpuUsage().system / 1000000).toFixed(2), 'ms of', (0, node_os_1.cpus)().length, 'cores');
38
+ console.log('Memory usage:', (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2), 'MB (Free:', ((0, node_os_1.totalmem)() / 1024 / 1024 / 1024).toFixed(2), 'GB)\n', 'Cpu User:', (process.cpuUsage().user / 1000000).toFixed(2), 'ms Cpu System:', (process.cpuUsage().system / 1000000).toFixed(2), 'ms of', (0, node_os_1.cpus)().length, 'cores');
33
39
  }
34
40
  if ((_c = args.options) === null || _c === void 0 ? void 0 : _c.skip.audit) {
35
41
  console.log('Audit strings...');
36
42
  console.log('✅ Done');
37
43
  }
44
+ const potHeader = (0, headers_1.generateHeader)(args);
45
+ const copyrightComment = `# Copyright (C) ${new Date().getFullYear()} ${args.slug}\n` +
46
+ `# This file is distributed under the ${(_e = (_d = args.headers) === null || _d === void 0 ? void 0 : _d.license) !== null && _e !== void 0 ? _e : 'GPL v2 or later'} license.`;
47
+ const potDefinitions = (0, headers_1.translationsHeaders)(args);
48
+ const translationsUnion = (0, utils_1.advancedObjectMerge)({ '': potDefinitions }, consolidatedStrings);
49
+ if (!((_f = args.options) === null || _f === void 0 ? void 0 : _f.silent)) {
50
+ console.log('📝 Found', Object.values(translationsUnion).length, 'group of strings in', stringsJson.length, 'files.\n', 'In total ' +
51
+ Object.values(translationsUnion)
52
+ .map((v) => Object.keys(v).length)
53
+ .reduce((acc, val) => acc + val, 0) +
54
+ ' strings were found');
55
+ }
38
56
  const getTextTranslations = {
39
57
  charset: 'iso-8859-1',
40
- headers: {
41
- '': (_e = (_d = args.headers) === null || _d === void 0 ? void 0 : _d.fileComment) !== null && _e !== void 0 ? _e : (0, utils_1.generateHeaderComments)(args),
42
- },
43
- translations: stringsJson,
58
+ headers: potHeader,
59
+ translations: translationsUnion,
44
60
  };
45
- if (args.headers && Object.values(args.headers).length)
46
- Object.entries(args.headers).map((header) => (getTextTranslations.headers[header[0]] =
47
- typeof header[1] === 'string'
48
- ? header[1]
49
- : JSON.stringify(header[1])));
50
- if ((_f = args.options) === null || _f === void 0 ? void 0 : _f.json) {
51
- return JSON.stringify(getTextTranslations);
52
- }
53
- return gettext_parser_1.default.po
54
- .compile(getTextTranslations, {
55
- sort: true,
56
- })
61
+ const pluginTranslations = gettext_parser_1.default.po
62
+ .compile(getTextTranslations)
57
63
  .toString('utf-8');
64
+ return copyrightComment + '\n' + pluginTranslations;
58
65
  });
59
66
  }
60
67
  function makePot(args) {
61
68
  var _a;
62
69
  return __awaiter(this, void 0, void 0, function* () {
63
- const metadata = (0, extractors_1.extractMainFileData)(args);
64
- const pkgData = (0, extractors_1.extractPackageJson)(args);
65
- const headers = Object.assign(Object.assign(Object.assign({}, pkgData), metadata), args.headers);
66
- args = Object.assign(Object.assign({}, args), { headers });
70
+ const pkgData = (0, json_1.extractPackageJson)(args);
71
+ const metadata = (0, headers_1.extractMainFileData)(args);
72
+ args.headers = Object.assign(Object.assign(Object.assign({}, args.headers), pkgData), {
73
+ name: metadata.name,
74
+ description: metadata.description,
75
+ author: metadata.author,
76
+ });
67
77
  const jsonTranslations = yield exec(args);
68
- return yield (0, fs_1.writeFile)(jsonTranslations, path_1.default.join(process.cwd(), args.paths.out, `${args === null || args === void 0 ? void 0 : args.slug}.${((_a = args.options) === null || _a === void 0 ? void 0 : _a.json) ? 'json' : 'pot'}`));
78
+ (0, fs_1.writeFile)(jsonTranslations, path_1.default.join(process.cwd(), args.paths.out, `${args === null || args === void 0 ? void 0 : args.slug}.${((_a = args.options) === null || _a === void 0 ? void 0 : _a.json) ? 'json' : 'pot'}`));
79
+ return jsonTranslations;
69
80
  });
70
81
  }
71
82
  exports.makePot = makePot;