@saidksi/localizer-core 0.1.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/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/ai/anthropic.d.ts +17 -0
- package/dist/ai/anthropic.d.ts.map +1 -0
- package/dist/ai/anthropic.js +58 -0
- package/dist/ai/anthropic.js.map +1 -0
- package/dist/ai/dedup.d.ts +19 -0
- package/dist/ai/dedup.d.ts.map +1 -0
- package/dist/ai/dedup.js +119 -0
- package/dist/ai/dedup.js.map +1 -0
- package/dist/ai/index.d.ts +65 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +464 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/openai.d.ts +11 -0
- package/dist/ai/openai.d.ts.map +1 -0
- package/dist/ai/openai.js +62 -0
- package/dist/ai/openai.js.map +1 -0
- package/dist/ai/prompts.d.ts +20 -0
- package/dist/ai/prompts.d.ts.map +1 -0
- package/dist/ai/prompts.js +151 -0
- package/dist/ai/prompts.js.map +1 -0
- package/dist/cache/index.d.ts +69 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +129 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/rewriter/index.d.ts +31 -0
- package/dist/rewriter/index.d.ts.map +1 -0
- package/dist/rewriter/index.js +128 -0
- package/dist/rewriter/index.js.map +1 -0
- package/dist/rewriter/transforms.d.ts +38 -0
- package/dist/rewriter/transforms.d.ts.map +1 -0
- package/dist/rewriter/transforms.js +189 -0
- package/dist/rewriter/transforms.js.map +1 -0
- package/dist/rewriter/ts-morph.d.ts +19 -0
- package/dist/rewriter/ts-morph.d.ts.map +1 -0
- package/dist/rewriter/ts-morph.js +121 -0
- package/dist/rewriter/ts-morph.js.map +1 -0
- package/dist/scanner/babel.d.ts +3 -0
- package/dist/scanner/babel.d.ts.map +1 -0
- package/dist/scanner/babel.js +504 -0
- package/dist/scanner/babel.js.map +1 -0
- package/dist/scanner/filters.d.ts +38 -0
- package/dist/scanner/filters.d.ts.map +1 -0
- package/dist/scanner/filters.js +133 -0
- package/dist/scanner/filters.js.map +1 -0
- package/dist/scanner/index.d.ts +22 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +82 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/typescript.d.ts +3 -0
- package/dist/scanner/typescript.d.ts.map +1 -0
- package/dist/scanner/typescript.js +542 -0
- package/dist/scanner/typescript.js.map +1 -0
- package/dist/types.d.ts +205 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validator/index.d.ts +65 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +237 -0
- package/dist/validator/index.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
2
|
+
const MIN_LENGTH = 2;
|
|
3
|
+
const URL_RE = /^(https?:\/\/|ftp:\/\/|mailto:|\/\/)/i;
|
|
4
|
+
const NUMERIC_RE = /^\d+(\.\d+)?(%|px|em|rem|vh|vw)?$/;
|
|
5
|
+
const RELATIVE_PATH_RE = /^\.\.?\//;
|
|
6
|
+
// Bare module specifier: "react", "@scope/pkg", "@scope/pkg/sub"
|
|
7
|
+
// Must start with lowercase or @ — avoids filtering user-facing words like "Password", "Settings"
|
|
8
|
+
const MODULE_SPECIFIER_RE = /^(@[\w-]+\/[\w.-]+|[a-z][\w-]*)(\/[\w./-]+)?$/;
|
|
9
|
+
// A single CSS utility token: "flex", "text-sm", "bg-gray-100", "sm:flex", "w-[100px]", "!important"
|
|
10
|
+
const CSS_TOKEN_RE = /^-?!?[a-z][a-z0-9]*([:-][a-z0-9]+)*(\[.+\])?(%)?$/;
|
|
11
|
+
/**
|
|
12
|
+
* JSX attribute names whose string values are never user-facing text.
|
|
13
|
+
* Strings in these attributes are silently skipped by the scanner.
|
|
14
|
+
*/
|
|
15
|
+
export const NON_TRANSLATABLE_ATTRS = new Set([
|
|
16
|
+
"className",
|
|
17
|
+
"class",
|
|
18
|
+
"style",
|
|
19
|
+
"href",
|
|
20
|
+
"src",
|
|
21
|
+
"srcSet",
|
|
22
|
+
"srcset",
|
|
23
|
+
"action",
|
|
24
|
+
"method",
|
|
25
|
+
"type",
|
|
26
|
+
"id",
|
|
27
|
+
"name",
|
|
28
|
+
"key",
|
|
29
|
+
"ref",
|
|
30
|
+
"tabIndex",
|
|
31
|
+
"tabindex",
|
|
32
|
+
"htmlFor",
|
|
33
|
+
"for",
|
|
34
|
+
"target",
|
|
35
|
+
"rel",
|
|
36
|
+
"download",
|
|
37
|
+
"accept",
|
|
38
|
+
"pattern",
|
|
39
|
+
"autoComplete",
|
|
40
|
+
"autocomplete",
|
|
41
|
+
"encType",
|
|
42
|
+
"enctype",
|
|
43
|
+
"role",
|
|
44
|
+
"value",
|
|
45
|
+
"data-testid",
|
|
46
|
+
"data-cy",
|
|
47
|
+
"data-test",
|
|
48
|
+
"xmlns",
|
|
49
|
+
"fill",
|
|
50
|
+
"stroke",
|
|
51
|
+
"viewBox",
|
|
52
|
+
"d", // SVG path
|
|
53
|
+
]);
|
|
54
|
+
/** Translation function names — strings inside these calls are already translated. */
|
|
55
|
+
export const TRANSLATION_FNS = new Set([
|
|
56
|
+
"t",
|
|
57
|
+
"formatMessage",
|
|
58
|
+
"$t",
|
|
59
|
+
"i18n",
|
|
60
|
+
]);
|
|
61
|
+
/**
|
|
62
|
+
* Functions that take default/placeholder values as arguments (not UI text to translate).
|
|
63
|
+
* E.g., useState("John Doe") — "John Doe" is a default, should not be translated.
|
|
64
|
+
*/
|
|
65
|
+
export const STATE_INITIALIZATION_FNS = new Set([
|
|
66
|
+
"useState",
|
|
67
|
+
"useRef",
|
|
68
|
+
"useReducer",
|
|
69
|
+
]);
|
|
70
|
+
// ─── Individual filter predicates (exported for unit testing) ─────────────────
|
|
71
|
+
export function isTooShort(value) {
|
|
72
|
+
return value.trim().length < MIN_LENGTH;
|
|
73
|
+
}
|
|
74
|
+
export function isPurelyNumeric(value) {
|
|
75
|
+
return NUMERIC_RE.test(value.trim());
|
|
76
|
+
}
|
|
77
|
+
export function isUrl(value) {
|
|
78
|
+
return URL_RE.test(value.trim());
|
|
79
|
+
}
|
|
80
|
+
export function isRelativePath(value) {
|
|
81
|
+
return RELATIVE_PATH_RE.test(value.trim());
|
|
82
|
+
}
|
|
83
|
+
export function isModuleSpecifier(value) {
|
|
84
|
+
return MODULE_SPECIFIER_RE.test(value.trim());
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns true if the string looks like a multi-token CSS class string,
|
|
88
|
+
* e.g. "flex items-center bg-gray-100 p-4".
|
|
89
|
+
* Single tokens are NOT flagged — "Settings" and "flex" both match the token
|
|
90
|
+
* pattern but only a space-separated list of tokens is conclusively CSS.
|
|
91
|
+
* Additionally, at least one token must contain a CSS indicator (hyphen, colon,
|
|
92
|
+
* or bracket) to avoid filtering plain English phrases like "pending tasks".
|
|
93
|
+
*/
|
|
94
|
+
export function isCssClassString(value) {
|
|
95
|
+
const trimmed = value.trim();
|
|
96
|
+
if (!trimmed)
|
|
97
|
+
return false;
|
|
98
|
+
const tokens = trimmed.split(/\s+/);
|
|
99
|
+
if (tokens.length <= 1)
|
|
100
|
+
return false;
|
|
101
|
+
const hasCssIndicator = tokens.some((tok) => /[-:[\]]/.test(tok));
|
|
102
|
+
return hasCssIndicator && tokens.every((tok) => CSS_TOKEN_RE.test(tok));
|
|
103
|
+
}
|
|
104
|
+
export function matchesIgnorePattern(value, patterns) {
|
|
105
|
+
return patterns.some((pattern) => {
|
|
106
|
+
try {
|
|
107
|
+
return new RegExp(pattern).test(value);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
// ─── Composite filter ────────────────────────────────────────────────────────
|
|
115
|
+
/**
|
|
116
|
+
* Returns true if this string value should be discarded (not a translatable string).
|
|
117
|
+
* Applied after AST-level checks (translation call, console call, attr name).
|
|
118
|
+
*
|
|
119
|
+
* @param value The string to check
|
|
120
|
+
* @param config The localization config
|
|
121
|
+
* @param isJSX If true, skip MODULE_SPECIFIER_RE filter (for strings already inside JSX)
|
|
122
|
+
*/
|
|
123
|
+
export function shouldFilter(value, config, isJSX = false) {
|
|
124
|
+
const trimmed = value.trim();
|
|
125
|
+
return (isTooShort(trimmed) ||
|
|
126
|
+
isPurelyNumeric(trimmed) ||
|
|
127
|
+
isUrl(trimmed) ||
|
|
128
|
+
isRelativePath(trimmed) ||
|
|
129
|
+
(!isJSX && isModuleSpecifier(trimmed)) ||
|
|
130
|
+
isCssClassString(trimmed) ||
|
|
131
|
+
matchesIgnorePattern(trimmed, config.ignorePatterns ?? []));
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/scanner/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ScanResult, ScanReport, LocalizeConfig } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Scan a single file for hardcoded strings.
|
|
4
|
+
* Returns an empty array if the file extension is not supported.
|
|
5
|
+
*/
|
|
6
|
+
export declare function scanFile(filePath: string, config: LocalizeConfig): Promise<ScanResult[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Scan a list of files and return all results, flattened.
|
|
9
|
+
*/
|
|
10
|
+
export declare function scanFiles(filePaths: string[], config: LocalizeConfig): Promise<ScanResult[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Scan all supported files inside a directory, respecting config.exclude patterns.
|
|
13
|
+
*/
|
|
14
|
+
export declare function scanDirectory(dir: string, config: LocalizeConfig): Promise<ScanResult[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Build a structured ScanReport from a file or directory scan.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildScanReport(options: {
|
|
19
|
+
file?: string;
|
|
20
|
+
dir?: string;
|
|
21
|
+
}, config: LocalizeConfig): Promise<ScanReport>;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA2B1E;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC,CAMvB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC,CAKvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC,CAoBvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EACxC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,UAAU,CAAC,CAkBrB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { readFile } from "fs/promises";
|
|
2
|
+
import { resolve, extname } from "path";
|
|
3
|
+
import fg from "fast-glob";
|
|
4
|
+
import { scanWithBabel } from "./babel.js";
|
|
5
|
+
import { scanWithTypeScript } from "./typescript.js";
|
|
6
|
+
// ─── Extension routing ───────────────────────────────────────────────────────
|
|
7
|
+
const BABEL_EXTS = new Set([".js", ".jsx"]);
|
|
8
|
+
const TS_EXTS = new Set([".ts", ".tsx"]);
|
|
9
|
+
function isSupportedFile(filePath) {
|
|
10
|
+
const ext = extname(filePath).toLowerCase();
|
|
11
|
+
return BABEL_EXTS.has(ext) || TS_EXTS.has(ext);
|
|
12
|
+
}
|
|
13
|
+
function routeFile(filePath, source, config) {
|
|
14
|
+
const ext = extname(filePath).toLowerCase();
|
|
15
|
+
if (BABEL_EXTS.has(ext))
|
|
16
|
+
return scanWithBabel(filePath, source, config);
|
|
17
|
+
if (TS_EXTS.has(ext))
|
|
18
|
+
return scanWithTypeScript(filePath, source, config);
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
22
|
+
/**
|
|
23
|
+
* Scan a single file for hardcoded strings.
|
|
24
|
+
* Returns an empty array if the file extension is not supported.
|
|
25
|
+
*/
|
|
26
|
+
export async function scanFile(filePath, config) {
|
|
27
|
+
const absolute = resolve(filePath);
|
|
28
|
+
if (!isSupportedFile(absolute))
|
|
29
|
+
return [];
|
|
30
|
+
const source = await readFile(absolute, "utf-8");
|
|
31
|
+
return routeFile(absolute, source, config);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Scan a list of files and return all results, flattened.
|
|
35
|
+
*/
|
|
36
|
+
export async function scanFiles(filePaths, config) {
|
|
37
|
+
const results = await Promise.all(filePaths.map((f) => scanFile(f, config)));
|
|
38
|
+
return results.flat();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Scan all supported files inside a directory, respecting config.exclude patterns.
|
|
42
|
+
*/
|
|
43
|
+
export async function scanDirectory(dir, config) {
|
|
44
|
+
const patterns = [
|
|
45
|
+
`${dir}/**/*.{js,jsx,ts,tsx}`,
|
|
46
|
+
];
|
|
47
|
+
const ignorePatterns = [
|
|
48
|
+
"**/node_modules/**",
|
|
49
|
+
"**/dist/**",
|
|
50
|
+
"**/build/**",
|
|
51
|
+
"**/.next/**",
|
|
52
|
+
...config.exclude,
|
|
53
|
+
];
|
|
54
|
+
const files = await fg(patterns, {
|
|
55
|
+
ignore: ignorePatterns,
|
|
56
|
+
absolute: true,
|
|
57
|
+
onlyFiles: true,
|
|
58
|
+
});
|
|
59
|
+
return scanFiles(files, config);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Build a structured ScanReport from a file or directory scan.
|
|
63
|
+
*/
|
|
64
|
+
export async function buildScanReport(options, config) {
|
|
65
|
+
let results = [];
|
|
66
|
+
if (options.file) {
|
|
67
|
+
results = await scanFile(options.file, config);
|
|
68
|
+
}
|
|
69
|
+
else if (options.dir) {
|
|
70
|
+
results = await scanDirectory(options.dir, config);
|
|
71
|
+
}
|
|
72
|
+
const report = {
|
|
73
|
+
generatedAt: new Date().toISOString(),
|
|
74
|
+
results,
|
|
75
|
+
};
|
|
76
|
+
if (options.file)
|
|
77
|
+
report.file = options.file;
|
|
78
|
+
if (options.dir)
|
|
79
|
+
report.dir = options.dir;
|
|
80
|
+
return report;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/scanner/typescript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAoB,MAAM,aAAa,CAAC;AAia1F,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,UAAU,EAAE,CAoSd"}
|