cleanup | esm

This commit is contained in:
Code 2025-01-28 06:38:52 +01:00
parent 739e521d5e
commit 8f4c5531f2
36 changed files with 260 additions and 189 deletions

View File

@ -1,15 +1,18 @@
{
"name": "@polymech/osr-cache",
"name": "@polymech/cache",
"description": "",
"version": "0.4.8",
"typings": "dist/index.d.ts",
"type": "module",
"exports": {
".": {
"import": "./dist/index.js",
"require": "./dist/index.cjs"
}
},
"publishConfig": {
"access": "public"
},
"bin": {
"osr-cache": "main.js"
},
"dependencies": {
"@polymech/commons": "link:..\\commons",
"@polymech/core": "link:..\\core",

View File

@ -0,0 +1,20 @@
export declare function isFrontmatterValid(frontmatter: Record<string, any>): boolean;
export declare function extractFrontmatter(code: string): string | undefined;
export interface ParseFrontmatterOptions {
/**
* How the frontmatter should be handled in the returned `content` string.
* - `preserve`: Keep the frontmatter.
* - `remove`: Remove the frontmatter.
* - `empty-with-spaces`: Replace the frontmatter with empty spaces. (preserves sourcemap line/col/offset)
* - `empty-with-lines`: Replace the frontmatter with empty line breaks. (preserves sourcemap line/col)
*
* @default 'remove'
*/
frontmatter: 'preserve' | 'remove' | 'empty-with-spaces' | 'empty-with-lines';
}
export interface ParseFrontmatterResult {
frontmatter: Record<string, any>;
rawFrontmatter: string;
content: string;
}
export declare function parseFrontmatter(code: string, options?: ParseFrontmatterOptions): ParseFrontmatterResult;

View File

@ -0,0 +1,48 @@
import yaml from 'js-yaml';
export function isFrontmatterValid(frontmatter) {
try {
// ensure frontmatter is JSON-serializable
JSON.stringify(frontmatter);
}
catch {
return false;
}
return typeof frontmatter === 'object' && frontmatter !== null;
}
// Capture frontmatter wrapped with `---`, including any characters and new lines within it.
// Only capture if `---` exists near the top of the file, including:
// 1. Start of file (including if has BOM encoding)
// 2. Start of file with any whitespace (but `---` must still start on a new line)
const frontmatterRE = /(?:^\uFEFF?|^\s*\n)---([\s\S]*?\n)---/;
export function extractFrontmatter(code) {
return frontmatterRE.exec(code)?.[1];
}
export function parseFrontmatter(code, options) {
const rawFrontmatter = extractFrontmatter(code);
if (rawFrontmatter == null) {
return { frontmatter: {}, rawFrontmatter: '', content: code };
}
const parsed = yaml.load(rawFrontmatter);
const frontmatter = (parsed && typeof parsed === 'object' ? parsed : {});
let content;
switch (options?.frontmatter ?? 'remove') {
case 'preserve':
content = code;
break;
case 'remove':
content = code.replace(`---${rawFrontmatter}---`, '');
break;
case 'empty-with-spaces':
content = code.replace(`---${rawFrontmatter}---`, ` ${rawFrontmatter.replace(/[^\r\n]/g, ' ')} `);
break;
case 'empty-with-lines':
content = code.replace(`---${rawFrontmatter}---`, rawFrontmatter.replace(/[^\r\n]/g, ''));
break;
}
return {
frontmatter,
rawFrontmatter,
content,
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGFuZy9mcm9udG1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7QUFFM0IsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQWdDO0lBQ2xFLElBQUk7UUFDSCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM1QjtJQUFDLE1BQU07UUFDUCxPQUFPLEtBQUssQ0FBQztLQUNiO0lBQ0QsT0FBTyxPQUFPLFdBQVcsS0FBSyxRQUFRLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQztBQUNoRSxDQUFDO0FBRUQsNEZBQTRGO0FBQzVGLG9FQUFvRTtBQUNwRSxtREFBbUQ7QUFDbkQsa0ZBQWtGO0FBQ2xGLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDO0FBQzlELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFZO0lBQzlDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFxQkQsTUFBTSxVQUFVLGdCQUFnQixDQUMvQixJQUFZLEVBQ1osT0FBaUM7SUFFakMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEQsSUFBSSxjQUFjLElBQUksSUFBSSxFQUFFO1FBQzNCLE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0tBQzlEO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUF3QixDQUFDO0lBRWhHLElBQUksT0FBZSxDQUFDO0lBQ3BCLFFBQVEsT0FBTyxFQUFFLFdBQVcsSUFBSSxRQUFRLEVBQUU7UUFDekMsS0FBSyxVQUFVO1lBQ2QsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLE1BQU07UUFDUCxLQUFLLFFBQVE7WUFDWixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLGNBQWMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU07UUFDUCxLQUFLLG1CQUFtQjtZQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDckIsTUFBTSxjQUFjLEtBQUssRUFDekIsTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUNsRCxDQUFDO1lBQ0YsTUFBTTtRQUNQLEtBQUssa0JBQWtCO1lBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sY0FBYyxLQUFLLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRixNQUFNO0tBQ1A7SUFFRCxPQUFPO1FBQ04sV0FBVztRQUNYLGNBQWM7UUFDZCxPQUFPO0tBQ1AsQ0FBQztBQUNILENBQUMifQ==

View File

@ -8,7 +8,7 @@ interface EnvConfig {
export interface IProfile {
includes: string[];
variables: EnvVariables;
env: {
env?: {
[key: string]: EnvConfig;
};
}

View File

@ -87,9 +87,6 @@ export class ZodMetaMap {
catch {
// no default
}
if (key == 'path') {
debugger;
}
fieldUi = {
...fieldUi,
...this.getMetadata(key),
@ -99,4 +96,4 @@ export class ZodMetaMap {
return uiSchema;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGVtYXMvem9kX21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUF5QixNQUFNLEtBQUssQ0FBQztBQUUvQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNYLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFHdkIsQ0FBQztJQUVKOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQXVCLEdBQVcsRUFBRSxNQUFTLEVBQUUsUUFBbUI7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUk7UUFDQSxNQUFNLEtBQUssR0FBK0IsRUFBRSxDQUFDO1FBQzdDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNULE9BQU8sSUFBSSxVQUFVLEVBQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVc7UUFDUCx3REFBd0Q7UUFDeEQsTUFBTSxRQUFRLEdBQTRCO1lBQ3RDLHdCQUF3QixFQUFFO2dCQUN0QixLQUFLLEVBQUU7b0JBQ0gsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsU0FBUyxFQUFFLGNBQWM7aUJBQzVCO2dCQUNELFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxRQUFRO2FBQ3ZCO1NBQ0osQ0FBQztRQUVGLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyRCxJQUFJLE9BQU8sR0FBNEIsRUFBRyxDQUFDO1lBQzNDLHVDQUF1QztZQUN2Qyx1RUFBdUU7WUFDdkUsTUFBTSxJQUFJLEdBQUcsTUFBYSxDQUFDO1lBQzNCLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3JEO1lBRUQsK0RBQStEO1lBQy9ELDhDQUE4QztZQUM5QyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFFeEUseUVBQXlFO1lBQ3pFLElBQUk7Z0JBQ0EsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0MsNEVBQTRFO2dCQUM1RSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDMUM7WUFBQyxNQUFNO2dCQUNKLGFBQWE7YUFDaEI7WUFDRCxJQUFHLEdBQUcsSUFBRSxNQUFNLEVBQUM7Z0JBQ1gsUUFBUSxDQUFBO2FBQ1g7WUFDRCxPQUFPLEdBQUc7Z0JBQ04sR0FBRyxPQUFPO2dCQUNWLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDM0IsQ0FBQTtZQUNELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDM0I7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGVtYXMvem9kX21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUF5QixNQUFNLEtBQUssQ0FBQztBQUUvQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNYLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFHdkIsQ0FBQztJQUVKOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQXVCLEdBQVcsRUFBRSxNQUFTLEVBQUUsUUFBbUI7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUk7UUFDQSxNQUFNLEtBQUssR0FBK0IsRUFBRSxDQUFDO1FBQzdDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNULE9BQU8sSUFBSSxVQUFVLEVBQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVc7UUFDUCx3REFBd0Q7UUFDeEQsTUFBTSxRQUFRLEdBQTRCO1lBQ3RDLHdCQUF3QixFQUFFO2dCQUN0QixLQUFLLEVBQUU7b0JBQ0gsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsU0FBUyxFQUFFLGNBQWM7aUJBQzVCO2dCQUNELFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxRQUFRO2FBQ3ZCO1NBQ0osQ0FBQztRQUVGLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyRCxJQUFJLE9BQU8sR0FBNEIsRUFBRyxDQUFDO1lBQzNDLHVDQUF1QztZQUN2Qyx1RUFBdUU7WUFDdkUsTUFBTSxJQUFJLEdBQUcsTUFBYSxDQUFDO1lBQzNCLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3JEO1lBRUQsK0RBQStEO1lBQy9ELDhDQUE4QztZQUM5QyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFFeEUseUVBQXlFO1lBQ3pFLElBQUk7Z0JBQ0EsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0MsNEVBQTRFO2dCQUM1RSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDMUM7WUFBQyxNQUFNO2dCQUNKLGFBQWE7YUFDaEI7WUFDRCxPQUFPLEdBQUc7Z0JBQ04sR0FBRyxPQUFPO2dCQUNWLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDM0IsQ0FBQTtZQUNELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDM0I7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oifQ==

View File

@ -42,6 +42,10 @@
"./glob": {
"import": "./dist/_glob.js",
"require": "./dist/_glob.cjs"
},
"./frontmatter": {
"import": "./dist/lang/frontmatter.js",
"require": "./dist/lang/frontmatter.js"
}
},
"licenses": [
@ -62,6 +66,7 @@
"@schemastore/package": "^0.0.10",
"env-var": "^7.5.0",
"glob": "^10.4.1",
"js-yaml": "^4.1.0",
"tslog": "^3.3.3",
"tsup": "^8.3.5",
"yargs": "^17.7.2",

View File

@ -0,0 +1,78 @@
import yaml from 'js-yaml';
export function isFrontmatterValid(frontmatter: Record<string, any>) {
try {
// ensure frontmatter is JSON-serializable
JSON.stringify(frontmatter);
} catch {
return false;
}
return typeof frontmatter === 'object' && frontmatter !== null;
}
// Capture frontmatter wrapped with `---`, including any characters and new lines within it.
// Only capture if `---` exists near the top of the file, including:
// 1. Start of file (including if has BOM encoding)
// 2. Start of file with any whitespace (but `---` must still start on a new line)
const frontmatterRE = /(?:^\uFEFF?|^\s*\n)---([\s\S]*?\n)---/;
export function extractFrontmatter(code: string): string | undefined {
return frontmatterRE.exec(code)?.[1];
}
export interface ParseFrontmatterOptions {
/**
* How the frontmatter should be handled in the returned `content` string.
* - `preserve`: Keep the frontmatter.
* - `remove`: Remove the frontmatter.
* - `empty-with-spaces`: Replace the frontmatter with empty spaces. (preserves sourcemap line/col/offset)
* - `empty-with-lines`: Replace the frontmatter with empty line breaks. (preserves sourcemap line/col)
*
* @default 'remove'
*/
frontmatter: 'preserve' | 'remove' | 'empty-with-spaces' | 'empty-with-lines';
}
export interface ParseFrontmatterResult {
frontmatter: Record<string, any>;
rawFrontmatter: string;
content: string;
}
export function parseFrontmatter(
code: string,
options?: ParseFrontmatterOptions,
): ParseFrontmatterResult {
const rawFrontmatter = extractFrontmatter(code);
if (rawFrontmatter == null) {
return { frontmatter: {}, rawFrontmatter: '', content: code };
}
const parsed = yaml.load(rawFrontmatter);
const frontmatter = (parsed && typeof parsed === 'object' ? parsed : {}) as Record<string, any>;
let content: string;
switch (options?.frontmatter ?? 'remove') {
case 'preserve':
content = code;
break;
case 'remove':
content = code.replace(`---${rawFrontmatter}---`, '');
break;
case 'empty-with-spaces':
content = code.replace(
`---${rawFrontmatter}---`,
` ${rawFrontmatter.replace(/[^\r\n]/g, ' ')} `,
);
break;
case 'empty-with-lines':
content = code.replace(`---${rawFrontmatter}---`, rawFrontmatter.replace(/[^\r\n]/g, ''));
break;
}
return {
frontmatter,
rawFrontmatter,
content,
};
}

View File

@ -18,7 +18,7 @@ interface EnvConfig {
export interface IProfile {
includes: string[]
variables: EnvVariables
env: {
env?: {
[key: string]: EnvConfig
}
}

View File

@ -98,9 +98,6 @@ export class ZodMetaMap<MetaType = Record<string, unknown>> {
} catch {
// no default
}
if(key=='path'){
debugger
}
fieldUi = {
...fieldUi,
...this.getMetadata(key),

View File

@ -1,3 +1,4 @@
export declare const exports: {};
export declare const ErrNoFileOrDir: (path: string) => Error;
export declare const ErrCantDelete: (path: string) => Error;
export declare const ErrNotFile: (path: string) => Error;

View File

@ -1,5 +1,6 @@
import { ErrnoException } from './interfaces.js';
import { code } from './errno.js';
export const exports = {};
Object.keys(code).forEach(function (code) {
const e = code[code];
exports[code] = (path) => {

View File

@ -1,6 +1,7 @@
import * as fs from 'node:fs';
import { readlinkSync, statSync, lstatSync, readFileSync } from 'node:fs';
import { getType } from 'mime';
import pkg from 'mime';
const { getType } = pkg;
import * as pathUtil from 'node:path';
import { createHash } from 'node:crypto';
import { validateArgument, validateOptions } from './utils/validate.js';

View File

@ -30,7 +30,7 @@
"eslint-plugin-regexp": "^2.7.0",
"glob": "^10.4.1",
"mime": "^2.0.3",
"minimatch": "^3.0.4",
"minimatch": "^10.0.1",
"mkdirp": "^3.0.1",
"progress-stream": "^1.2.0",
"q": "^1.4.1",
@ -45,7 +45,6 @@
"@types/denodeify": "^1.2.31",
"@types/glob": "^8.1.0",
"@types/mime": "^2.0.0",
"@types/minimatch": "^3.0.3",
"@types/mkdirp": "^0.5.1",
"@types/node": "^22.10.2",
"chai": "^3.5.0",

View File

@ -1,5 +1,7 @@
import { ErrnoException } from './interfaces.js';
import { errno, code } from './errno.js'
import { code } from './errno.js'
export const exports = {}
Object.keys(code).forEach(function (code) {
const e = code[code];
@ -9,8 +11,8 @@ Object.keys(code).forEach(function (code) {
err.code = code;
err.path = path;
return err;
};
});
}
})
export const ErrNoFileOrDir = (path: string): Error => {
return new Error('Can\'t remove ' + path + ' The path is not file nor directory');
};

View File

@ -1,6 +1,9 @@
import * as fs from 'node:fs'
import { Stats, readlinkSync, statSync, lstatSync, readFileSync } from 'node:fs'
import { getType } from 'mime'
import pkg from 'mime';
const {getType} = pkg;
import * as pathUtil from 'node:path'
import { createHash } from 'node:crypto'
import { validateArgument, validateOptions } from './utils/validate.js'

View File

@ -1,4 +1,5 @@
import { Minimatch } from 'minimatch';
import { Minimatch } from 'minimatch'
export interface IOptions {
matchBase: boolean;
nocomment: boolean;

View File

@ -1,12 +1,8 @@
import * as path from 'path';
const globBase = require('glob-base');
import { pairs } from '../lib/glossary.js';
import { defaults, sanitize } from '../_cli.js';
import { parse } from '../options.js';
import { logger } from '../index.js';
import { defaults } from '../_cli.js';
import { CONFIG_DEFAULT } from '@polymech/commons';
import { resolve } from "@polymech/commons/variables";
import pMap from 'p-map';
const defaultOptions = (yargs) => {
return yargs.option('debug', {
default: false,
@ -51,42 +47,46 @@ export const register = (cli) => {
const config = CONFIG_DEFAULT(args.env_key);
const verb = argv.verb;
if (verb === 'create') {
let options = sanitize(argv);
/*
let options = sanitize(argv as any) as IOptions
if (!options) {
logger.error(`Invalid options, abort`);
return;
return
}
let opts = parse(options, args);
opts.config = config;
let opts = parse(options, args)
opts.config = config
if (!opts.srcInfo) {
logger.error(`Invalid source : ${argv.src}`, opts);
return;
logger.error(`Invalid source : ${argv.src}`, opts)
return
}
if (opts.srcInfo.IS_GLOB) {
const glob_base = globBase(opts.src);
opts.pathVariables.ROOT = path.resolve(glob_base.base);
const glob_base = globBase(opts.src)
opts.pathVariables.ROOT = path.resolve(glob_base.base)
} else {
options.pathVariables.ROOT = path.resolve(opts.cwd)
}
else {
options.pathVariables.ROOT = path.resolve(opts.cwd);
}
opts.pathVariables['DST_LANG'] = opts.dstLang.toLocaleLowerCase();
opts.pathVariables['SRC_LANG'] = opts.srcLang.toLocaleLowerCase();
opts.pathVariables['CWD'] = path.resolve(opts.cwd);
opts.pathVariables['DST_LANG'] = opts.dstLang.toLocaleLowerCase()
opts.pathVariables['SRC_LANG'] = opts.srcLang.toLocaleLowerCase()
opts.pathVariables['CWD'] = path.resolve(opts.cwd)
if (!opts.srcInfo || (opts.srcInfo && !opts.srcInfo.FILES)) {
logger.error(`Have no source files for ${opts.src}`);
return;
logger.error(`Have no source files for ${opts.src}`)
return
}
if (opts.srcInfo && opts.srcInfo.FILES) {
await pMap(opts.srcInfo.FILES, async (files) => {
await pMap(files, (source) => {
await pMap(files, (source: string) => {
//return create(options.srcLang, options.dstLang, options, source)
}, { concurrency: 1 });
});
}, { concurrency: 1 })
})
}
*/
}
if (verb === 'pairs' && argv.dst) {
await pairs(config.deepl, path.resolve(resolve(argv.dst)));
}
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZ2xvc3NhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXJDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUNyRCxPQUFPLElBQUksTUFBTSxPQUFPLENBQUE7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUscUNBQXFDO0tBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLHVEQUF1RDtLQUNwRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLFFBQVEsRUFBRSxhQUFhO0tBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLHdEQUF3RDtRQUNsRSxPQUFP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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZ2xvc3NhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUVyRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDekIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFFBQVEsRUFBRSxxQ0FBcUM7S0FDbEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsdURBQXVEO0tBQ3BFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLGFBQWE7S0FDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsd0RBQXdEO1FBQ2xFLE9BQU8sRUFBRSw4Q0FBOEM7S0FDMUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsUUFBUSxFQUFFLDRFQUE0RTtRQUN0RixPQUFPLEVBQUUsRUFBRTtLQUNkLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixPQUFPLEVBQUUseUJBQXlCO0tBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSw0RUFBNEU7UUFDdEYsT0FBTyxFQUFFLElBQUk7S0FDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDZCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0I7S0FDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSx5Q0FBeUM7UUFDbkQsSUFBSSxFQUFFLFNBQVM7S0FDbEIsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUd4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFtQixFQUFHLEVBQUU7UUFDekcsUUFBUSxFQUFFLENBQUE7UUFFVixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFNO1NBQUU7UUFDekIsTUFBTSxJQUFJLEdBQVEsSUFBSSxDQUFBO1FBQ3RCLE1BQU0sTUFBTSxHQUFRLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUN0QixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBbUNFO1NBQ0w7UUFDRCxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5QixNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFhLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDdkU7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQSJ9

View File

@ -8,4 +8,4 @@ export * from './types.js';
export * from './zod_schema.js';
export * from './zod_types.js';
export const logger = createLogger('commons');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBSTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGdCQUFnQixDQUFBO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUEifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGdCQUFnQixDQUFBO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUEifQ==

View File

@ -1,4 +1 @@
export declare const Hugo: (raw: string, translated: string, file?: string) => string;
export declare const Filters: {
Hugo: (raw: string, translated: string, file?: string) => string;
};
export declare const Filters: {};

View File

@ -1,43 +1,2 @@
import { logger } from "../index.js";
import { sync as write } from "@polymech/fs/write";
const frontMatter = require('front-matter');
const YAML = require('json-to-pretty-yaml');
const index = (attrs, key) => Object.keys(attrs).indexOf(key);
export const Hugo = (raw, translated, file = "") => {
let fm = {};
if (!frontMatter.test(raw)) {
return translated;
}
fm = frontMatter(raw).attributes;
let fmTranslated = {};
try {
fmTranslated = frontMatter(translated);
}
catch (e) {
write(file + "_e.md", translated);
}
const translatedKeys = {};
const keys = [
'title'
];
keys.forEach((k) => {
const e = Object.entries(fmTranslated.attributes);
const s = Object.entries(fm).findIndex((v) => v[0] == k);
const v = e[s][1];
translatedKeys[k] = v;
});
const fmPatch = {
...fm,
...translatedKeys
};
try {
return `---\n${YAML.stringify(fmPatch)}---\n${fmTranslated.body}`;
}
catch (e) {
logger.error(`Error, `, e);
}
};
export const Filters = {
Hugo
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBQzNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0FBRTNDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBVSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFMUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBVyxFQUFFLFVBQWtCLEVBQUUsT0FBYSxFQUFFLEVBQUUsRUFBRTtJQUNyRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN4QixPQUFPLFVBQVUsQ0FBQTtLQUNwQjtJQUNELEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFBO0lBRWhDLElBQUksWUFBWSxHQUFRLEVBQUUsQ0FBQTtJQUMxQixJQUFJO1FBQ0EsWUFBWSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtLQUN6QztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7S0FDcEM7SUFFRCxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUE7SUFFekIsTUFBTSxJQUFJLEdBQUc7UUFDVCxPQUFPO0tBQ1YsQ0FBQTtJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNmLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDeEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pCLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsQ0FBQyxDQUFDLENBQUE7SUFFRixNQUFNLE9BQU8sR0FBRztRQUNaLEdBQUcsRUFBRTtRQUNMLEdBQUcsY0FBYztLQUNwQixDQUFBO0lBRUQsSUFBSTtRQUNBLE9BQU8sUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtLQUNwRTtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7S0FDN0I7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDbkIsSUFBSTtDQUNQLENBQUEifQ==
export const Filters = {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsRUFFdEIsQ0FBQSJ9

View File

@ -2,3 +2,4 @@ export * from './deepl.js';
export * from './codes.js';
export * from './filters.js';
export * from './store.js';
export * from './translate.js';

View File

@ -2,4 +2,5 @@ export * from './deepl.js';
export * from './codes.js';
export * from './filters.js';
export * from './store.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsWUFBWSxDQUFBIn0=
export * from './translate.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsZ0JBQWdCLENBQUEifQ==

View File

@ -1,4 +1,3 @@
export declare const clean: (text?: string) => string;
export declare const sortObjectKeysAlpha: (obj: Record<string, any>) => Record<string, any>;
export declare const store: (storePath: string, text: string, translation: string, options?: any) => string;
export declare const get: (storePath: string, text: string, options?: any) => any;

View File

@ -3,7 +3,7 @@ import { sync as read } from '@polymech/fs/read';
import { resolve } from '@polymech/commons';
import * as path from 'path';
const removeNonPrintableCharacters = (text) => text.replace(/[^\x20-\x7E]/g, '');
export const clean = (text = "") => text.trim();
const clean = (text = "") => text.trim();
export const sortObjectKeysAlpha = (obj) => {
const sortedKeys = Object.keys(obj).sort();
const sortedObj = {};
@ -34,4 +34,4 @@ export const get = (storePath, text, options = {}) => {
return store[text];
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFaEcsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUV2RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQXdCLEVBQXVCLEVBQUU7SUFDcEYsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBd0IsRUFBRSxDQUFDO0lBQzFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBZ0IsRUFBRSxJQUFZLEVBQUUsV0FBa0IsRUFBRSxVQUFjLEVBQUUsRUFBRSxFQUFFO0lBQzdGLElBQUksU0FBUyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3BDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDekQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQzVCLENBQUMsQ0FBQyxDQUFBO0tBQ047SUFDSixNQUFNLEtBQUssR0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hDLEtBQUssQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUM1QyxPQUFPLFdBQVcsQ0FBQTtBQUNuQixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFnQixFQUFFLElBQVksRUFBRSxVQUFjLEVBQUUsRUFBRSxFQUFFO0lBQ3ZFLElBQUksU0FBUyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3BDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDekQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQzVCLENBQUMsQ0FBQyxDQUFBO0tBQ047SUFDSixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQyxJQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQztRQUNkLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ2xCO0FBQ0YsQ0FBQyxDQUFBIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFaEcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0FBRWhELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBd0IsRUFBdUIsRUFBRTtJQUNwRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7SUFDMUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFnQixFQUFFLElBQVksRUFBRSxXQUFrQixFQUFFLFVBQWMsRUFBRSxFQUFFLEVBQUU7SUFDN0YsSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDcEMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDLENBQUE7S0FDTjtJQUNKLE1BQU0sS0FBSyxHQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9DLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDaEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzVDLE9BQU8sV0FBVyxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQWdCLEVBQUUsSUFBWSxFQUFFLFVBQWMsRUFBRSxFQUFFLEVBQUU7SUFDdkUsSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDcEMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDLENBQUE7S0FDTjtJQUNKLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzNDLElBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDO1FBQ2QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDbEI7QUFDRixDQUFDLENBQUEifQ==

View File

@ -1,3 +1,4 @@
import * as TOML from '@iarna/toml';
import { IOptions } from '../types.js';
import * as deepl from './deepl.js';
export declare const clean: (text?: string) => string;
@ -10,7 +11,7 @@ export declare const getTranslation: (translations: any, all?: boolean) => any;
export declare const translateMarkup: (src: string, dst: string, options: IOptions) => Promise<any>;
export declare const translateJSON: (src: string, dst: string, options: IOptions) => Promise<any>;
export declare const translateTOML: (src: string, dst: string, options: IOptions) => Promise<any>;
export declare const translateYAML: (src: string, dst: string, options: IOptions) => Promise<any>;
export declare const translateYAML: (src: string, dst: string, options: IOptions) => Promise<string | TOML.JsonMap>;
export declare const translateFiles: (file: any, targets: string[], options: IOptions) => Promise<false | any[]>;
export declare const translate: (opts: IOptions) => Promise<any[]>;
export declare const translateText: (text: string, srcLang: string, dstLang: string, options?: IOptions) => Promise<any>;
@ -21,7 +22,7 @@ export declare const TRANSLATORS: {
'.html': (src: string, dst: string, options: IOptions) => Promise<any>;
'.json': (src: string, dst: string, options: IOptions) => Promise<any>;
'.toml': (src: string, dst: string, options: IOptions) => Promise<any>;
'.yaml': (src: string, dst: string, options: IOptions) => Promise<any>;
'.yaml': (src: string, dst: string, options: IOptions) => Promise<string | TOML.JsonMap>;
'.xlsx': (src: string, dst: string, options: IOptions) => Promise<any>;
'.xls': (src: string, dst: string, options: IOptions) => Promise<any>;
};

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,5 @@
import { Hash } from '@polymech/core';
import { PATH_INFO } from '@polymech/commons/types';
import { Logger } from 'tslog';
export type TranslateFilter = (raw: string, translated: string, file?: string) => string;
export type IOptions = {
src?: string;
@ -33,5 +32,4 @@ export type IOptions = {
storeRoot?: string;
api_key?: string;
logLevel?: string;
logger?: Logger<unknown>;
};

View File

@ -1,5 +1,5 @@
{
"name": "@polymech/osr-i18n",
"name": "@polymech/i18n",
"version": "0.3.0",
"typings": "index.d.ts",
"type": "module",
@ -9,22 +9,30 @@
"bin": {
"osr-i18n": "main.js"
},
"exports": {
".": {
"import": "./dist/index.js",
"require": "./dist/index.cjs"
},
"./lib": {
"import": "./dist/lib/index.js",
"require": "./dist/lib/index.cjs"
}
},
"dependencies": {
"@iarna/toml": "^2.2.5",
"@polymech/cache": "link:..\\cache",
"@polymech/commons": "link:..\\commons",
"@polymech/core": "link:..\\core",
"@polymech/fs": "link:..\\fs",
"@polymech/log": "link:..\\log",
"@polymech/osr-cache": "link:..\\cache",
"@types/html-minifier-terser": "^7.0.2",
"@types/node": "^20.14.9",
"@types/node": "^22.12.0",
"axios": "^1.7.9",
"convert-units": "^2.3.4",
"cryptr": "^6.0.3",
"deepl-node": "^1.8.0",
"env-var": "^7.1.1",
"front-matter": "^4.0.2",
"glob-base": "^0.3.0",
"html-minifier-terser": "^7.2.0",
"json-to-pretty-yaml": "^1.2.2",
"jsonpath-plus": "^8.1.0",
@ -35,9 +43,8 @@
"p-throttle": "^4.1.1",
"querystring": "^0.2.1",
"ssri": "^10.0.1",
"tslog": "^4.9.3",
"typesafe-i18n": "^5.11.0",
"typescript": "^4.9.5",
"tslog": "^3.3.3",
"typescript": "^5.7.3",
"xlsx": "^0.18.5",
"yaml": "^2.4.1",
"yargs": "^17.7.2",
@ -71,4 +78,4 @@
"keywords": [
"typescript"
]
}
}

View File

@ -1,17 +1,10 @@
import * as CLI from 'yargs'
import * as path from 'path'
const globBase = require('glob-base')
import { pairs } from '../lib/glossary.js'
import { defaults, sanitize } from '../_cli.js'
import { parse } from '../options.js'
import { IOptions } from '../types.js'
import { logger } from '../index.js'
import { defaults } from '../_cli.js'
import { CONFIG_DEFAULT } from '@polymech/commons'
import { resolve } from "@polymech/commons/variables"
import pMap from 'p-map'
const defaultOptions = (yargs: CLI.Argv) => {
return yargs.option('debug', {
@ -59,6 +52,7 @@ export const register = (cli: CLI.Argv) => {
const config: any = CONFIG_DEFAULT(args.env_key)
const verb = argv.verb
if (verb === 'create') {
/*
let options = sanitize(argv as any) as IOptions
if (!options) {
logger.error(`Invalid options, abort`);
@ -93,6 +87,7 @@ export const register = (cli: CLI.Argv) => {
}, { concurrency: 1 })
})
}
*/
}
if (verb === 'pairs' && argv.dst) {
await pairs(config.deepl, path.resolve(resolve(argv.dst as string)))

View File

@ -1,8 +1,6 @@
export { Logger } from 'tslog'
import { createLogger } from '@polymech/log'
import { Logger } from 'tslog'
export { MODULE_NAME } from './constants.js'
export { sanitize } from './_cli.js'

View File

@ -1,50 +1,7 @@
import { logger } from "../index.js"
import { sync as write } from "@polymech/fs/write"
const frontMatter = require('front-matter')
const YAML = require('json-to-pretty-yaml')
const index = (attrs: any, key: string) => Object.keys(attrs).indexOf(key)
export const Hugo = (raw: string, translated: string, file:string ="") => {
let fm = {}
if (!frontMatter.test(raw)) {
return translated
}
fm = frontMatter(raw).attributes
let fmTranslated: any = {}
try {
fmTranslated = frontMatter(translated)
} catch (e) {
write(file + "_e.md", translated)
}
const translatedKeys = {}
const keys = [
'title'
]
keys.forEach((k) => {
const e = Object.entries(fmTranslated.attributes)
const s = Object.entries(fm).findIndex((v) => v[0] == k)
const v = e[s][1]
translatedKeys[k] = v
})
const fmPatch = {
...fm,
...translatedKeys
}
try {
return `---\n${YAML.stringify(fmPatch)}---\n${fmTranslated.body}`
} catch (e) {
logger.error(`Error, `, e)
}
}
import { parseFrontmatter, extractFrontmatter } from '@polymech/commons/frontmatter'
export const Filters = {
Hugo
}

View File

@ -2,3 +2,4 @@ export * from './deepl.js'
export * from './codes.js'
export * from './filters.js'
export * from './store.js'
export * from './translate.js'

View File

@ -5,7 +5,7 @@ import * as path from 'path'
const removeNonPrintableCharacters = (text: string): string => text.replace(/[^\x20-\x7E]/g, '')
export const clean = (text: string = "") => text.trim()
const clean = (text: string = "") => text.trim()
export const sortObjectKeysAlpha = (obj: Record<string, any>): Record<string, any> => {
const sortedKeys = Object.keys(obj).sort();

View File

@ -1,9 +1,12 @@
import * as path from 'path'
import { JSONPath } from 'jsonpath-plus'
import { createHash } from 'crypto'
import { get_cached, set_cached } from '@polymech/osr-cache'
import { get_cached, set_cached } from '@polymech/cache'
import { OSR_CACHE } from '@polymech/commons'
import { CONFIG_DEFAULT } from '@polymech/commons'
import { resolve } from '@polymech/commons'
import { isString, isArray, isObject, isNumber } from '@polymech/core/primitives'
import { sync as read } from "@polymech/fs/read"
@ -14,9 +17,8 @@ import * as XLSX from 'xlsx'
import { parse, stringify } from 'yaml'
import pMap from 'p-map'
import { minify as minify_html } from 'html-minifier-terser'
const TOML = require('@iarna/toml')
const globBase = require('glob-base')
import { globBase } from '@polymech/commons'
import * as TOML from '@iarna/toml'
import {
targets,
@ -24,13 +26,13 @@ import {
} from '../options.js'
import { MODULE_NAME } from '../constants.js'
import { IOptions, TranslateFilter } from '../types.js'
import { store, get } from './store.js'
import * as deepl from './deepl.js'
import { logger as loggerDefault } from '../index.js'
let logger = loggerDefault
import { createLogger } from '@polymech/log'
let logger = createLogger('i18n')
const minify = false
const extension = (file: string) => path.parse(file).ext
@ -322,10 +324,8 @@ export const translateTOML = async (
if (osr_cache && cached && options.cache) {
return cached
}
let srcContent = read(src) as string
let toml = TOML.parse(srcContent)
toml = await translateObject(toml, src, options)
if (osr_cache && options.cache) {
@ -375,8 +375,6 @@ export const translateFiles = async (
}
export const translate = async (opts: IOptions) => {
opts = parseOptions(opts as any, {})
logger = opts.logger || loggerDefault
logger.settings.minLevel = opts.logLevel as any || 'warn'
if (!opts.api_key) {
logger.error('i18n : No API key provided')
return
@ -445,7 +443,6 @@ export const translateText = async (text: string, srcLang: string, dstLang: stri
}
const config: any = CONFIG_DEFAULT()
text = clean(text)
if (exists(options.store)) {
const stored = storeGet(options.store, text)
if (stored) {
@ -456,6 +453,10 @@ export const translateText = async (text: string, srcLang: string, dstLang: stri
options.storeRoot = "${OSR_ROOT}/i18n-store"
}
if(!options.api_key){
if(!config || !config.deepl || !config.deepl.auth_key){
logger.error('i18n:translateText: No API key provided')
return text
}
options.api_key = config.deepl.auth_key
}
const out: string[] = await translateDeepL(text, srcLang, dstLang,

View File

@ -1,6 +1,5 @@
import { Hash } from '@polymech/core'
import { PATH_INFO } from '@polymech/commons/types'
import { Logger } from 'tslog'
export type TranslateFilter = (raw: string, translated: string, file?: string) => string
@ -35,5 +34,4 @@ export type IOptions = {
storeRoot?: string
api_key?: string
logLevel?: string
logger?: Logger<unknown>
}