@gooddata/i18n-toolkit 10.33.0-alpha.9 → 10.33.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.
- package/README.md +5 -0
- package/esm/data.d.ts +1 -0
- package/esm/data.d.ts.map +1 -1
- package/esm/data.js +1 -1
- package/esm/data.js.map +1 -1
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/validate.d.ts.map +1 -1
- package/esm/validate.js +3 -1
- package/esm/validate.js.map +1 -1
- package/esm/validations/commentValidation.d.ts +3 -0
- package/esm/validations/commentValidation.d.ts.map +1 -0
- package/esm/validations/commentValidation.js +45 -0
- package/esm/validations/commentValidation.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,6 +63,10 @@ Turn on validation of HTML marks inside localisation messages.
|
|
|
63
63
|
|
|
64
64
|
Turn on localisation message id usage validation. This fill turn on feature that try to find if key is really used in application or not. There are more options related to this see [Configuration file](#configuration-file).
|
|
65
65
|
|
|
66
|
+
#### Option `-m, --comments`
|
|
67
|
+
|
|
68
|
+
Turn on validation of translation comments. This will check that all translation entries have non-empty comment fields to provide context for translators. The validation will fail with a clear error message when comments are missing.
|
|
69
|
+
|
|
66
70
|
#### Option `-d, --debug`
|
|
67
71
|
|
|
68
72
|
Turn on debug mode that shows more info on errors and spam console more often that in normal mode.
|
|
@@ -104,6 +108,7 @@ module.exports = {
|
|
|
104
108
|
intl: true, //OPTIONAL, same as "--intl" option on command line
|
|
105
109
|
html: true, //OPTIONAL, same as "--html" option on command line
|
|
106
110
|
usage: true, //OPTIONAL, same as "--usage" option on command line
|
|
111
|
+
comments: true, //OPTIONAL, same as "--comments" option on command line
|
|
107
112
|
debug: true, //OPTIONAL, same as "--debug" option on command line
|
|
108
113
|
//REQUIRED if usage=true, source files with code from tool reads and parse usage of localisations messages
|
|
109
114
|
source: "src/**/*.{ts,js,tsx,jsx}",
|
package/esm/data.d.ts
CHANGED
package/esm/data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QACH,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,EAAE;QACF,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QACH,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,EAAE;QACF,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACL,CAAC"}
|
package/esm/data.js
CHANGED
package/esm/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAe5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAc/C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// (C) 2021-
|
|
2
|
+
// (C) 2021-2025 GoodData Corporation
|
|
3
3
|
import { program } from "commander";
|
|
4
4
|
import { DefaultConfigName } from "./data.js";
|
|
5
5
|
import { validate } from "./validate.js";
|
|
@@ -41,6 +41,7 @@ program
|
|
|
41
41
|
.option("-h, --html", "enable html check")
|
|
42
42
|
.option("-r, --insightToReport", "enable insightToReport check")
|
|
43
43
|
.option("-u, --usage", "enable usage of messages check")
|
|
44
|
+
.option("-m, --comments", "enable comment validation check")
|
|
44
45
|
.option("-d, --debug", "enable debug mode")
|
|
45
46
|
.action(async (opts) => {
|
|
46
47
|
const cwd = opts.cwd || process.cwd();
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,qCAAqC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAqC,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAoB;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,IAAI,CAAC;QACD,OAAO,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,MAAyB;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,OAAO;KACF,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;KAC9F,MAAM,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;KAChF,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,iBAAiB,GAAG,CAAC;KACvF,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;KACnD,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;KAC/D,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,qCAAqC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAqC,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAoB;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,IAAI,CAAC;QACD,OAAO,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,MAAyB;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,OAAO;KACF,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;KAC9F,MAAM,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;KAChF,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,iBAAiB,GAAG,CAAC;KACvF,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;KACnD,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;KAC/D,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;KAC3D,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/esm/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAU9C,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,iBA2BlE"}
|
package/esm/validate.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// (C) 2021-
|
|
1
|
+
// (C) 2021-2025 GoodData Corporation
|
|
2
2
|
import * as path from "path";
|
|
3
3
|
import { getLocalizationFiles, getParsedLocalizations, getLocalizationValues } from "./localizations.js";
|
|
4
4
|
import { getDefaultLocalesCheck } from "./validations/defaultLocales.js";
|
|
@@ -7,6 +7,7 @@ import { getIntlMessageFormatCheck } from "./validations/messageFormat.js";
|
|
|
7
7
|
import { getHtmlSyntaxCheck } from "./validations/htmlSyntax.js";
|
|
8
8
|
import { getInsightToReportCheck } from "./validations/insightToReport.js";
|
|
9
9
|
import { getUsageMessagesCheck } from "./validations/messagesUsage.js";
|
|
10
|
+
import { getCommentValidationCheck } from "./validations/commentValidation.js";
|
|
10
11
|
export async function validate(cwd, opts) {
|
|
11
12
|
const { paths = [], insightToReport } = opts;
|
|
12
13
|
if (Array.isArray(paths) && paths.length === 0) {
|
|
@@ -17,6 +18,7 @@ export async function validate(cwd, opts) {
|
|
|
17
18
|
const localizationValues = getLocalizationValues(localizations);
|
|
18
19
|
await getDefaultLocalesCheck(localizationPaths, localizations, opts.debug);
|
|
19
20
|
await getStructureCheck(localizations, opts.structure || false, opts.debug);
|
|
21
|
+
await getCommentValidationCheck(localizations, opts.comments || false, opts.debug);
|
|
20
22
|
await getIntlMessageFormatCheck(localizationValues, opts.intl || false, opts.debug);
|
|
21
23
|
await getHtmlSyntaxCheck(localizationValues, opts.html || false, opts.debug);
|
|
22
24
|
await getInsightToReportCheck(localizations, opts.insightToReport || false, opts.debug);
|
package/esm/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAuB;IAC/D,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5F,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,yBAAyB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,yBAAyB,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAExF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,qBAAqB,CACvB,GAAG,EACH,aAAa,EACb,IAAI,CAAC,KAAK,IAAI,KAAK,EACnB,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAClC,IAAI,CAAC,KAAK,CACb,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentValidation.d.ts","sourceRoot":"","sources":["../../src/validations/commentValidation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAe,MAAM,2BAA2B,CAAC;AAuC1E,wBAAsB,yBAAyB,CAC3C,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,EAChD,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// (C) 2021-2025 GoodData Corporation
|
|
2
|
+
import { message, error, skipped, done, fail } from "../utils/console.js";
|
|
3
|
+
const FILENAME_CHECK_ONLY = "en-US.json";
|
|
4
|
+
const COMMENT_PROPERTY = "comment";
|
|
5
|
+
const COMMENT_LENGTH_MIN = 3;
|
|
6
|
+
function hasValidComment(value) {
|
|
7
|
+
const comment = value[COMMENT_PROPERTY];
|
|
8
|
+
return comment && comment.toString().trim().length >= COMMENT_LENGTH_MIN;
|
|
9
|
+
}
|
|
10
|
+
function collectCommentErrors(localizations, debug) {
|
|
11
|
+
const errors = [];
|
|
12
|
+
for (const [file, content] of localizations) {
|
|
13
|
+
if (!file.includes(FILENAME_CHECK_ONLY)) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
for (const [key, value] of Object.entries(content)) {
|
|
17
|
+
if (typeof value === "string") {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (!hasValidComment(value)) {
|
|
21
|
+
const errorMessage = ` ${errors.length + 1}. ${key} (${file})`;
|
|
22
|
+
errors.push(errorMessage);
|
|
23
|
+
if (debug) {
|
|
24
|
+
error(new Error(errorMessage));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return errors;
|
|
30
|
+
}
|
|
31
|
+
export async function getCommentValidationCheck(localizations, run, debug) {
|
|
32
|
+
if (!run) {
|
|
33
|
+
skipped("Comment validation check is skipped", true);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
message("Comment validation check is starting ...", debug);
|
|
37
|
+
const errors = collectCommentErrors(localizations, debug);
|
|
38
|
+
if (errors.length > 0) {
|
|
39
|
+
const errorMessage = `Missing comments for ${errors.length} strings:\n${errors.join("\n")}`;
|
|
40
|
+
fail(errorMessage, true);
|
|
41
|
+
throw new Error(`Missing translation comments for ${errors.length} strings`);
|
|
42
|
+
}
|
|
43
|
+
done("Done", debug);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=commentValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentValidation.js","sourceRoot":"","sources":["../../src/validations/commentValidation.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,mBAAmB,GAAG,YAAY,CAAC;AACzC,MAAM,gBAAgB,GAAsB,SAAS,CAAC;AACtD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,SAAS,eAAe,CAAC,KAAkB;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxC,OAAO,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,kBAAkB,CAAC;AAC7E,CAAC;AAED,SAAS,oBAAoB,CAAC,aAAgD,EAAE,KAAc;IAC1F,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE1B,IAAI,KAAK,EAAE,CAAC;oBACR,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,aAAgD,EAChD,GAAY,EACZ,KAAc;IAEd,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IAED,OAAO,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAE1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,wBAAwB,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC"}
|
package/package.json
CHANGED