diff --git a/package-lock.json b/package-lock.json index 76f5a8a..40bc8a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "workspaces": [ "packages/config", "packages/core", + "packages/watch", "packages/nextjs-dev-translate-plugin", "packages/vite-plugin-dev-translate", "packages/cli", @@ -49,6 +50,10 @@ "resolved": "packages/core", "link": true }, + "node_modules/@aexol/dev-translate-watch": { + "resolved": "packages/watch", + "link": true + }, "node_modules/@aexol/nextjs-dev-translate-plugin": { "resolved": "packages/nextjs-dev-translate-plugin", "link": true @@ -5518,10 +5523,10 @@ }, "packages/cli": { "name": "@aexol/dev-translate", - "version": "0.1.2", + "version": "0.1.3", "dependencies": { - "@aexol/dev-translate-config": "^0.1.2", - "@aexol/dev-translate-core": "^0.1.2", + "@aexol/dev-translate-config": "^0.1.3", + "@aexol/dev-translate-core": "^0.1.3", "chalk": "^5.3.0", "chokidar": "^3.6.0", "commander": "^11.0.0" @@ -5542,14 +5547,14 @@ }, "packages/config": { "name": "@aexol/dev-translate-config", - "version": "0.1.2", + "version": "0.1.3", "dependencies": { "config-maker": "^0.0.6" } }, "packages/core": { "name": "@aexol/dev-translate-core", - "version": "0.1.2", + "version": "0.1.3", "dependencies": { "cross-fetch": "^4.1.0" } @@ -5581,10 +5586,9 @@ }, "packages/nextjs-dev-translate-plugin": { "name": "@aexol/nextjs-dev-translate-plugin", - "version": "0.1.2", + "version": "0.1.3", "dependencies": { - "@aexol/dev-translate-core": "^0.1.2", - "chokidar": "^3.6.0" + "@aexol/dev-translate-watch": "^0.1.3" }, "devDependencies": { "next": "^15.1.4" @@ -5595,17 +5599,16 @@ }, "packages/testground": { "name": "@aexol/testground-dev-translate", - "version": "0.1.2", + "version": "0.1.3", "dependencies": { - "@aexol/dev-translate": "^0.1.2" + "@aexol/dev-translate": "^0.1.3" } }, "packages/vite-plugin-dev-translate": { "name": "@aexol/vite-plugin-dev-translate", - "version": "0.1.2", + "version": "0.1.3", "dependencies": { - "@aexol/dev-translate-core": "^0.1.2", - "chokidar": "^3.6.0" + "@aexol/dev-translate-watch": "^0.1.3" }, "devDependencies": { "vite": "^6.0.7" @@ -5613,6 +5616,17 @@ "peerDependencies": { "vite": ">=5" } + }, + "packages/watch": { + "name": "@aexol/dev-translate-watch", + "version": "0.1.3", + "dependencies": { + "@aexol/dev-translate-core": "^0.1.3", + "chokidar": "^3.6.0" + }, + "devDependencies": { + "vite": "^6.0.7" + } } } } diff --git a/package.json b/package.json index 36132e0..166b82c 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "workspaces": [ "packages/config", "packages/core", + "packages/watch", "packages/nextjs-dev-translate-plugin", "packages/vite-plugin-dev-translate", "packages/cli", diff --git a/packages/cli/package.json b/packages/cli/package.json index db86559..5dc239f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@aexol/dev-translate", - "version": "0.1.2", + "version": "0.1.3", "private": false, "main": "./lib/index.js", "author": "Aexol, Artur Czemiel", @@ -17,8 +17,8 @@ "lib" ], "dependencies": { - "@aexol/dev-translate-config": "^0.1.2", - "@aexol/dev-translate-core": "^0.1.2", + "@aexol/dev-translate-config": "^0.1.3", + "@aexol/dev-translate-core": "^0.1.3", "chalk": "^5.3.0", "chokidar": "^3.6.0", "commander": "^11.0.0" diff --git a/packages/config/package.json b/packages/config/package.json index df669b9..78d2099 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -1,6 +1,6 @@ { "name": "@aexol/dev-translate-config", - "version": "0.1.2", + "version": "0.1.3", "private": false, "main": "./lib/index.js", "author": "Aexol, Artur Czemiel", diff --git a/packages/core/package.json b/packages/core/package.json index 5433dc2..fd60d46 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@aexol/dev-translate-core", - "version": "0.1.2", + "version": "0.1.3", "private": false, "main": "./lib/index.js", "author": "Aexol, Artur Czemiel", diff --git a/packages/nextjs-dev-translate-plugin/index.ts b/packages/nextjs-dev-translate-plugin/index.ts index a1219c1..ef1bb17 100644 --- a/packages/nextjs-dev-translate-plugin/index.ts +++ b/packages/nextjs-dev-translate-plugin/index.ts @@ -1,49 +1,5 @@ -import chokidar from 'chokidar'; -import path from 'path'; import { NextConfig } from 'next'; -import { LangPair, translateLocaleFolder, Languages } from '@aexol/dev-translate-core'; - -export type DevTranslateOptions = { - apiKey: string; - folderName: string; - lang: LangPair['lang']; - localeDir: string; - context?: string; -}; - -const setupFileWatcher = async (opts: DevTranslateOptions) => { - const { apiKey, folderName, lang, localeDir, context } = opts; - const directoryToWatch = path.join(process.cwd(), localeDir, opts.folderName); - const translate = async () => { - await translateLocaleFolder({ - srcLang: { - folderName, - lang, - }, - apiKey, - context, - cwd: process.cwd(), - localeDir, - }); - }; - const watcher = chokidar.watch(directoryToWatch, { - persistent: true, - }); - - watcher.on('change', () => { - translate(); - }); - - watcher.on('add', () => { - translate(); - }); - - watcher.on('unlink', () => { - translate(); - }); - - console.log(`Watching for file changes in ${directoryToWatch}`); -}; +import { watch, Languages, DevTranslateOptions } from '@aexol/dev-translate-watch'; // Plugin function to be used in next.config.js export function withDevTranslate(nextConfig: NextConfig = {}, options: DevTranslateOptions): NextConfig { @@ -51,7 +7,7 @@ export function withDevTranslate(nextConfig: NextConfig = {}, options: DevTransl if (env !== 'development') { return nextConfig; } - setupFileWatcher(options); + watch(options); return { ...nextConfig, webpack(config, options) { diff --git a/packages/nextjs-dev-translate-plugin/package.json b/packages/nextjs-dev-translate-plugin/package.json index eb36876..9dacb0b 100644 --- a/packages/nextjs-dev-translate-plugin/package.json +++ b/packages/nextjs-dev-translate-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@aexol/nextjs-dev-translate-plugin", - "version": "0.1.2", + "version": "0.1.3", "private": false, "main": "./lib/index.js", "author": "Aexol, Artur Czemiel", @@ -15,8 +15,7 @@ "commonjs" ], "dependencies": { - "@aexol/dev-translate-core": "^0.1.2", - "chokidar": "^3.6.0" + "@aexol/dev-translate-watch": "^0.1.3" }, "peerDependencies": { "next": ">=13" diff --git a/packages/nextjs-dev-translate-plugin/tsconfig.json b/packages/nextjs-dev-translate-plugin/tsconfig.json index 942f5e6..47852f2 100644 --- a/packages/nextjs-dev-translate-plugin/tsconfig.json +++ b/packages/nextjs-dev-translate-plugin/tsconfig.json @@ -39,6 +39,7 @@ }, "exclude": [ "lib", + "commonjs", "node_modules", "jest.config.js", ] diff --git a/packages/testground/package.json b/packages/testground/package.json index e043e62..583a8ae 100644 --- a/packages/testground/package.json +++ b/packages/testground/package.json @@ -1,6 +1,6 @@ { "name": "@aexol/testground-dev-translate", - "version": "0.1.2", + "version": "0.1.3", "private": true, "main": "./lib/index.js", "author": "Aexol, Artur Czemiel", @@ -14,6 +14,6 @@ "lib" ], "dependencies": { - "@aexol/dev-translate": "^0.1.2" + "@aexol/dev-translate": "^0.1.3" } } diff --git a/packages/vite-plugin-dev-translate/index.ts b/packages/vite-plugin-dev-translate/index.ts index d708a8a..d0233f9 100644 --- a/packages/vite-plugin-dev-translate/index.ts +++ b/packages/vite-plugin-dev-translate/index.ts @@ -1,51 +1,5 @@ -import chokidar from 'chokidar'; -import path from 'path'; import { Plugin } from 'vite'; -import { LangPair, translateLocaleFolder, Languages } from '@aexol/dev-translate-core'; - -export type DevTranslateOptions = { - apiKey: string; - folderName: string; - lang: LangPair['lang']; - localeDir: string; - context?: string; -}; - -const setupFileWatcher = async (opts: DevTranslateOptions) => { - const { apiKey, folderName, lang, localeDir, context } = opts; - const directoryToWatch = path.join(process.cwd(), localeDir, opts.folderName); - const translate = async () => { - await translateLocaleFolder({ - srcLang: { - folderName, - lang, - }, - apiKey, - cwd: process.cwd(), - localeDir, - context, - }); - }; - const watcher = chokidar.watch(directoryToWatch, { - persistent: true, - }); - - watcher.on('change', () => { - translate(); - }); - - watcher.on('add', () => { - translate(); - }); - - watcher.on('unlink', () => { - translate(); - }); - - console.log(`Watching for file changes in ${directoryToWatch}`); - - return watcher; -}; +import { watch, DevTranslateOptions, Languages } from '@aexol/dev-translate-watch'; export default function devTranslatePlugin(options: DevTranslateOptions): Plugin { return { @@ -54,7 +8,7 @@ export default function devTranslatePlugin(options: DevTranslateOptions): Plugin configureServer(server) { // Initialize the watcher - setupFileWatcher(options).then((watcher) => { + watch(options).then((watcher) => { // Clean up the watcher when the server closes server.httpServer?.on('close', () => { watcher.close(); diff --git a/packages/vite-plugin-dev-translate/package.json b/packages/vite-plugin-dev-translate/package.json index 334e298..db777dd 100644 --- a/packages/vite-plugin-dev-translate/package.json +++ b/packages/vite-plugin-dev-translate/package.json @@ -1,6 +1,6 @@ { "name": "@aexol/vite-plugin-dev-translate", - "version": "0.1.2", + "version": "0.1.3", "private": false, "main": "./lib/index.js", "author": "Aexol, Artur Czemiel", @@ -15,8 +15,7 @@ "commonjs" ], "dependencies": { - "@aexol/dev-translate-core": "^0.1.2", - "chokidar": "^3.6.0" + "@aexol/dev-translate-watch": "^0.1.3" }, "peerDependencies": { "vite": ">=5" diff --git a/packages/watch/.eslintrc.json b/packages/watch/.eslintrc.json new file mode 100644 index 0000000..0cc18d4 --- /dev/null +++ b/packages/watch/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": [ + "../../.eslintrc.json" + ], + "rules":{ + "@typescript-eslint/no-explicit-any":"off" + } +} \ No newline at end of file diff --git a/packages/watch/.gitignore b/packages/watch/.gitignore new file mode 100644 index 0000000..1b4ea93 --- /dev/null +++ b/packages/watch/.gitignore @@ -0,0 +1,6 @@ +.env +/lib +/commonjs +node_modules +.graphql-editor-auth.json +tsconfig.tsbuildinfo \ No newline at end of file diff --git a/packages/watch/index.ts b/packages/watch/index.ts new file mode 100644 index 0000000..3216663 --- /dev/null +++ b/packages/watch/index.ts @@ -0,0 +1,48 @@ +import chokidar from 'chokidar'; +import path from 'path'; +import { LangPair, translateLocaleFolder, Languages } from '@aexol/dev-translate-core'; + +export type DevTranslateOptions = { + apiKey: string; + folderName: string; + lang: LangPair['lang']; + localeDir: string; + context?: string; +}; + +export const watch = async (opts: DevTranslateOptions) => { + const { apiKey, folderName, lang, localeDir, context } = opts; + const directoryToWatch = path.join(process.cwd(), localeDir, opts.folderName); + const translate = async () => { + try { + await translateLocaleFolder({ + srcLang: { + folderName, + lang, + }, + apiKey, + cwd: process.cwd(), + localeDir, + context, + }); + } catch (error) { + console.log(error); + } + }; + const watcher = chokidar.watch(directoryToWatch, { + persistent: true, + }); + watcher.on('change', () => { + translate(); + }); + watcher.on('add', () => { + translate(); + }); + watcher.on('unlink', () => { + translate(); + }); + console.log(`Watching for file changes in ${directoryToWatch}`); + return watcher; +}; + +export { Languages }; diff --git a/packages/watch/package.json b/packages/watch/package.json new file mode 100644 index 0000000..d4d3a1f --- /dev/null +++ b/packages/watch/package.json @@ -0,0 +1,28 @@ +{ + "name": "@aexol/dev-translate-watch", + "version": "0.1.3", + "private": false, + "main": "./lib/index.js", + "author": "Aexol, Artur Czemiel", + "type": "module", + "scripts": { + "build": "rimraf lib commonjs && tspc && tspc -p tsconfig.commonjs.json", + "start": "tspc --watch", + "lint": "tspc && eslint \"./src/**/*.{ts,js}\" --quiet --fix" + }, + "files": [ + "lib", + "commonjs" + ], + "dependencies": { + "@aexol/dev-translate-core": "^0.1.3", + "chokidar": "^3.6.0" + }, + "exports": { + "import": "./lib/index.js", + "require": "./commonjs/index.js" + }, + "devDependencies": { + "vite": "^6.0.7" + } +} diff --git a/packages/watch/tsconfig.commonjs.json b/packages/watch/tsconfig.commonjs.json new file mode 100644 index 0000000..8387d9b --- /dev/null +++ b/packages/watch/tsconfig.commonjs.json @@ -0,0 +1,8 @@ +{ + "extends":"./tsconfig.json", + "compilerOptions": { + "target": "ES6", + "module": "CommonJS", + "outDir": "./commonjs", + }, +} \ No newline at end of file diff --git a/packages/watch/tsconfig.json b/packages/watch/tsconfig.json new file mode 100644 index 0000000..47852f2 --- /dev/null +++ b/packages/watch/tsconfig.json @@ -0,0 +1,46 @@ +{ + "compilerOptions": { + "sourceMap": true, + "target": "es2022", + "module": "es2022", + "moduleResolution": "node", + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "declaration": true, + "incremental": true, + "removeComments": true, + "noUnusedLocals": true, + "strictNullChecks": true, + "skipLibCheck": true, + "strict": true, + "outDir": "./lib", + "lib": [ + "ESNext", + "DOM", + "DOM.Iterable" + ], + "rootDir": "./", + "baseUrl": "./", + "composite": true, + "paths": { + "@/*": [ + "./*" + ] + }, + "plugins": [ + { + "transform": "typescript-transform-paths" + }, + { + "transform": "typescript-transform-paths", + "afterDeclarations": true + } + ] + }, + "exclude": [ + "lib", + "commonjs", + "node_modules", + "jest.config.js", + ] +} \ No newline at end of file