@translation-cms/sync 1.2.81 → 1.2.82

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 CHANGED
@@ -15,26 +15,62 @@ Choose the approach that fits your workflow:
15
15
 
16
16
  ### Method 1: Next.js Plugin (Automatic)
17
17
 
18
- Edit `next.config.ts`:
18
+ The `init` command automatically generates your `next.config.ts`. It looks like
19
+ this:
19
20
 
20
21
  ```ts
21
- import withTranslationsCMS from '@translation-cms/sync/next';
22
+ import type { NextConfig } from 'next';
23
+ import {
24
+ PHASE_DEVELOPMENT_SERVER,
25
+ PHASE_PRODUCTION_BUILD,
26
+ } from 'next/constants';
27
+ import {
28
+ syncTranslations,
29
+ pullTranslations,
30
+ watchTranslations,
31
+ } from '@translation-cms/sync/api';
22
32
 
23
- export default withTranslationsCMS(
24
- {
25
- // your Next.js config
26
- },
27
- {
28
- pullOnBuild: true, // auto pull on `next build`
29
- pullOnDev: true, // auto pull on `next dev` startup
30
- watchInterval: 300000, // poll CMS for updates every 5min in dev (0 to disable)
33
+ // Mirror your tsconfig.json paths so the scanner can resolve @/ alias imports
34
+ const pathMappings: Record<string, string[]> = {
35
+ '@/*': ['src/*'],
36
+ };
37
+
38
+ const pluralSuffixes = ['_zero', '_one', '_two', '_few', '_many', '_other'];
39
+
40
+ export default async function config(phase: string): Promise<NextConfig> {
41
+ if (phase === PHASE_DEVELOPMENT_SERVER) {
42
+ await syncTranslations({
43
+ projectRoot: '.',
44
+ pathMappings,
45
+ verbose: true,
46
+ pluralSuffixes,
47
+ });
48
+ await pullTranslations({ projectRoot: '.', verbose: true });
49
+ watchTranslations({ projectRoot: '.', interval: 300000 });
31
50
  }
32
- );
51
+
52
+ if (phase === PHASE_PRODUCTION_BUILD) {
53
+ await syncTranslations({
54
+ projectRoot: '.',
55
+ pathMappings,
56
+ pluralSuffixes,
57
+ });
58
+ await pullTranslations({ projectRoot: '.' });
59
+ }
60
+
61
+ return {
62
+ // Your Next.js configuration goes here
63
+ // Example:
64
+ // images: { remotePatterns: [...] },
65
+ // redirects: async () => [...],
66
+ // rewrites: async () => [...],
67
+ };
68
+ }
33
69
  ```
34
70
 
35
- Your translations sync automatically and in dev mode, the JSON files are
36
- re-pulled automatically whenever you publish new translations in the CMS. No
37
- extra commands needed.
71
+ Your translations sync automatically during development and build and the JSON
72
+ files are re-pulled automatically whenever you publish new translations in the
73
+ CMS.
38
74
 
39
75
  ### Method 2: CLI (Manual)
40
76
 
@@ -54,7 +90,8 @@ pnpm sync-translations init
54
90
 
55
91
  ### Method 3: Programmatic API
56
92
 
57
- Use in scripts, build tools, or a custom `next.config.ts`:
93
+ Use in scripts, build tools, or a custom `next.config.ts`. This is the full API
94
+ — all functions available:
58
95
 
59
96
  ```ts
60
97
  import type { NextConfig } from 'next';
@@ -66,30 +103,47 @@ import {
66
103
  syncTranslations,
67
104
  pullTranslations,
68
105
  watchTranslations,
106
+ syncAndPull,
69
107
  } from '@translation-cms/sync/api';
70
108
 
71
- const pathMappings = { '@/*': ['src/*'] }; // mirror your tsconfig paths
109
+ // Extract from tsconfig.json to resolve alias imports (@/*, @tellr/*, etc.)
110
+ const pathMappings: Record<string, string[]> = {
111
+ '@/*': ['src/*'],
112
+ '@components': ['src/components'],
113
+ // Add more as needed from your tsconfig.json
114
+ };
115
+
116
+ // Register plural forms for keys like t('ns:key_one'), t('ns:key_other')
117
+ const pluralSuffixes = ['_zero', '_one', '_two', '_few', '_many', '_other'];
72
118
 
73
119
  export default async function config(phase: string): Promise<NextConfig> {
74
120
  if (phase === PHASE_DEVELOPMENT_SERVER) {
75
- // Scan keys and upload, then pull translations
121
+ // Scan code and upload new/changed keys
76
122
  await syncTranslations({
77
123
  projectRoot: '.',
78
124
  pathMappings,
125
+ pluralSuffixes,
79
126
  verbose: true,
80
127
  });
128
+ // Download translations from CMS
81
129
  await pullTranslations({ projectRoot: '.', verbose: true });
82
- // Poll the CMS in the background re-pulls whenever you publish
83
- watchTranslations({ projectRoot: '.' });
130
+ // Poll CMS every 5min for new translations (non-blocking)
131
+ watchTranslations({ projectRoot: '.', interval: 300000 });
84
132
  }
85
133
 
86
134
  if (phase === PHASE_PRODUCTION_BUILD) {
87
- await syncTranslations({ projectRoot: '.', pathMappings });
88
- await pullTranslations({ projectRoot: '.' });
135
+ // One-shot: sync + pull (no watch in production)
136
+ await syncAndPull({
137
+ projectRoot: '.',
138
+ pathMappings,
139
+ pluralSuffixes,
140
+ });
89
141
  }
90
142
 
91
143
  return {
92
- // ... your Next.js config
144
+ // Your Next.js configuration
145
+ // images: { remotePatterns: [...] },
146
+ // redirects: async () => [...],
93
147
  };
94
148
  }
95
149
  ```
@@ -231,33 +285,38 @@ Plus the peer dependencies:
231
285
  pnpm add i18next react-i18next i18next-resources-to-backend
232
286
  ```
233
287
 
234
- ## Step 3: Set Up CMS Credentials
288
+ ## Step 3: Automatic Setup (Recommended)
235
289
 
236
- Create `.env.local` in your project root:
290
+ Run the interactive setup wizard:
237
291
 
238
292
  ```bash
239
- NEXT_PUBLIC_CMS_URL=https://cms.example.com
240
- NEXT_PUBLIC_CMS_PROJECT_ID=your-project-id
241
- CMS_SYNC_API_KEY=your-jwt-api-key
293
+ pnpm sync-translations init
242
294
  ```
243
295
 
244
- The `CMS_SYNC_API_KEY` is a **JWT token**. You can find it in the CMS under
245
- **Project Settings → Environments → your environment → API Key**. If the key
246
- there still looks like a UUID, use "Regenerate" to generate a JWT.
296
+ This will ask for your CMS credentials and automatically:
247
297
 
248
- > **Note:** use `CMS_SYNC_API_KEY` (without `NEXT_PUBLIC_`). This prevents the
249
- > JWT from accidentally ending up in the browser. The old name
250
- > `NEXT_PUBLIC_CMS_ANON_KEY` still works as a fallback, but is discouraged.
298
+ - Create/update `.env.local` with your CMS settings:
299
+ ```
300
+ NEXT_PUBLIC_CMS_URL=https://cms.example.com
301
+ NEXT_PUBLIC_CMS_PROJECT_ID=your-project-id
302
+ CMS_SYNC_API_KEY=your-jwt-api-key
303
+ ```
304
+ - Generate `.translationsrc.json` with output directory and settings
305
+ - Create the i18n directory structure
251
306
 
252
- ## Step 4: Automatic Setup (Recommended)
307
+ ### Getting Your API Key
253
308
 
254
- Run the interactive setup wizard:
309
+ The `CMS_SYNC_API_KEY` is a **JWT token**. Find it in the CMS under: **Project
310
+ Settings → Environments → your environment → API Key**
255
311
 
256
- ```bash
257
- pnpm sync-translations init
258
- ```
312
+ If it still looks like a UUID, use "Regenerate" to generate a JWT.
259
313
 
260
- This automatically creates:
314
+ > **Note:** The key is stored in `.env.local` (not committed to git) for
315
+ > security.
316
+
317
+ ### Generated Files
318
+
319
+ The init command creates:
261
320
 
262
321
  ```
263
322
  src/lib/i18n/
@@ -271,21 +330,20 @@ src/lib/i18n/
271
330
  └── nl.json # Dutch (empty, filled by pull)
272
331
  ```
273
332
 
274
- Also `.translationsrc.json` is generated:
333
+ And `.translationsrc.json`:
275
334
 
276
335
  ```json
277
336
  {
278
337
  "outputDir": "./src/lib/i18n/dictionaries",
279
338
  "pullTtlMs": 300000,
280
- "excludedDirs": ["e2e", "node_modules", "fixtures"],
281
- "routeParams": {}
339
+ "excludedDirs": ["e2e", "node_modules", "fixtures"]
282
340
  }
283
341
  ```
284
342
 
285
343
  **Note:** `routeParams` can stay empty! The scanner automatically generates
286
344
  sensible defaults for all dynamic routes.
287
345
 
288
- ## Step 5: First Sync — Upload Keys
346
+ ## Step 4: First Sync — Upload Keys
289
347
 
290
348
  Scan your code and upload detected keys to the CMS:
291
349
 
@@ -306,7 +364,7 @@ Check in the CMS if your keys appeared.
306
364
  — this is normal! The keys were just uploaded but don't have translations yet.
307
365
  Go to your CMS, fill in translations, then run `pull` again.
308
366
 
309
- ## Step 5b: Add Translations in CMS
367
+ ## Step 5: Add Translations in CMS
310
368
 
311
369
  1. Open your Translations CMS project
312
370
  2. Your keys are now listed (without translations)
@@ -394,7 +452,7 @@ t('auth:login.email');
394
452
  t('payments:amount'); // namespace not added
395
453
  ```
396
454
 
397
- ## Step 8: Automatic Sync in Your Workflow
455
+ ## Step 7: Automatic Sync in Your Workflow
398
456
 
399
457
  Add this to `package.json`:
400
458
 
@@ -409,7 +467,7 @@ Add this to `package.json`:
409
467
 
410
468
  Now you automatically pull the latest translations on startup.
411
469
 
412
- ## Step 9 (Optional): Set Up Preview Mode
470
+ ## Step 8 (Optional): Set Up Preview Mode
413
471
 
414
472
  Enable live in-context preview — editors can live see how their text looks in
415
473
  your app.
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Interactive `init` command.
3
3
  *
4
- * Walks the user through a series of prompts and writes a
5
- * `.translationsrc.json` config file to the project root.
6
- * Optionally scaffolds the i18n boilerplate files (settings,
7
- * client, server, provider) into the chosen i18n directory.
4
+ * Walks the user through a series of prompts and generates:
5
+ * - .env.local (CMS credentials)
6
+ * - .translationsrc.json (scanner + pull config)
7
+ * - next.config.ts (or updates existing)
8
+ * - i18n directory structure
8
9
  */
9
10
  export declare function runInit(root: string): Promise<void>;
10
11
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmJzD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA2IA;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkPzD"}
@@ -1,13 +1,121 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
3
  import { scaffoldI18n } from '../scaffold/index.js';
4
+ /**
5
+ * Generate or update next.config.ts with sync-translations configuration.
6
+ */
7
+ function generateNextConfig(root, options) {
8
+ const configPath = path.join(root, 'next.config.ts');
9
+ const tsconfigPath = path.join(root, 'tsconfig.json');
10
+ // Parse tsconfig.json to extract path mappings
11
+ let pathMappingsCode = "'@/*': ['src/*']";
12
+ try {
13
+ if (fs.existsSync(tsconfigPath)) {
14
+ const tsconfigContent = fs.readFileSync(tsconfigPath, 'utf-8');
15
+ // Try to find all path mappings, not just @/*
16
+ const pathsMatch = tsconfigContent.match(/"paths":\s*\{([^}]+)\}/);
17
+ if (pathsMatch) {
18
+ const pathsContent = pathsMatch[1];
19
+ // Extract all path mappings as key: [values]
20
+ const mappings = [];
21
+ const pathRegex = /"([^"]+)":\s*\[\s*"([^"]+)"\s*\]/g;
22
+ let match;
23
+ while ((match = pathRegex.exec(pathsContent)) !== null) {
24
+ mappings.push(`'${match[1]}': ['${match[2]}']`);
25
+ }
26
+ if (mappings.length > 0) {
27
+ pathMappingsCode = mappings.join(',\n ');
28
+ }
29
+ }
30
+ }
31
+ }
32
+ catch {
33
+ // Use default if tsconfig parsing fails
34
+ }
35
+ const pluralLine = options.pluralSuffixes
36
+ ? "const pluralSuffixes = ['_zero', '_one', '_two', '_few', '_many', '_other'];\n\n"
37
+ : '';
38
+ const verboseArg = options.syncOnDev || options.syncOnBuild ? ', verbose: true' : '';
39
+ const syncOnDevBlock = options.syncOnDev
40
+ ? ` await syncTranslations({\n projectRoot: '.',\n pathMappings,${verboseArg}\n pluralSuffixes,\n });\n`
41
+ : '';
42
+ const pullOnDevBlock = ` await pullTranslations({ projectRoot: '.'${verboseArg} });\n`;
43
+ const watchBlock = options.watchOnDev
44
+ ? ` watchTranslations({ projectRoot: '.', interval: ${options.watchInterval} });\n`
45
+ : '';
46
+ const syncOnBuildBlock = options.syncOnBuild
47
+ ? ` await syncTranslations({\n projectRoot: '.',\n pathMappings,\n pluralSuffixes,\n });\n`
48
+ : '';
49
+ const pullOnBuildBlock = ` await pullTranslations({ projectRoot: '.' });\n`;
50
+ let configContent;
51
+ if (fs.existsSync(configPath)) {
52
+ // File exists - try to update it or warn user
53
+ // eslint-disable-next-line no-console
54
+ console.log(`\n[Note] next.config.ts exists. Review the generated template below.`);
55
+ configContent = fs.readFileSync(configPath, 'utf-8');
56
+ // Check if already has sync-translations config
57
+ if (!configContent.includes('@translation-cms/sync/api')) {
58
+ // eslint-disable-next-line no-console
59
+ console.log('(Pre-existing config detected - sync setup may need manual merge)\n');
60
+ }
61
+ }
62
+ else {
63
+ // Create new next.config.ts
64
+ configContent = '';
65
+ }
66
+ // Generate the template if file is empty or doesn't exist
67
+ if (!configContent || configContent.length < 50) {
68
+ configContent = `import type { NextConfig } from '../next.js';
69
+ import {
70
+ PHASE_DEVELOPMENT_SERVER,
71
+ PHASE_PRODUCTION_BUILD,
72
+ } from 'next/constants';
73
+ import {
74
+ syncTranslations,
75
+ pullTranslations,
76
+ watchTranslations,
77
+ } from '@translation-cms/sync/api';
78
+
79
+ // Mirror your tsconfig.json paths so the scanner can resolve @/ alias imports
80
+ const pathMappings: Record<string, string[]> = {
81
+ ${pathMappingsCode},
82
+ };
83
+
84
+ ${pluralLine}export default async function config(
85
+ phase: string
86
+ ): Promise<NextConfig> {
87
+ if (phase === PHASE_DEVELOPMENT_SERVER) {
88
+ ${syncOnDevBlock}${pullOnDevBlock}${watchBlock} }
89
+
90
+ if (phase === PHASE_PRODUCTION_BUILD) {
91
+ ${syncOnBuildBlock}${pullOnBuildBlock} }
92
+
93
+ return {
94
+ // Your Next.js configuration goes here
95
+ // Example:
96
+ // images: { remotePatterns: [...] },
97
+ // redirects: async () => [...],
98
+ // rewrites: async () => [...],
99
+ };
100
+ }
101
+ `;
102
+ fs.writeFileSync(configPath, configContent, 'utf-8');
103
+ // eslint-disable-next-line no-console
104
+ console.log(`[Created] next.config.ts`);
105
+ }
106
+ else {
107
+ // eslint-disable-next-line no-console
108
+ console.log(`[Checked] next.config.ts (exists, review manually if needed)`);
109
+ }
110
+ }
4
111
  /**
5
112
  * Interactive `init` command.
6
113
  *
7
- * Walks the user through a series of prompts and writes a
8
- * `.translationsrc.json` config file to the project root.
9
- * Optionally scaffolds the i18n boilerplate files (settings,
10
- * client, server, provider) into the chosen i18n directory.
114
+ * Walks the user through a series of prompts and generates:
115
+ * - .env.local (CMS credentials)
116
+ * - .translationsrc.json (scanner + pull config)
117
+ * - next.config.ts (or updates existing)
118
+ * - i18n directory structure
11
119
  */
12
120
  export async function runInit(root) {
13
121
  const { createInterface } = await import('readline');
@@ -18,57 +126,136 @@ export async function runInit(root) {
18
126
  });
19
127
  const question = (prompt) => new Promise(resolve => rl.question(prompt, resolve));
20
128
  // eslint-disable-next-line no-console
21
- console.log('sync-translations init\n');
129
+ console.log('\n--- sync-translations setup ---\n');
130
+ // eslint-disable-next-line no-console
131
+ console.log('This wizard will generate:');
132
+ // eslint-disable-next-line no-console
133
+ console.log(' - .env.local (CMS credentials)');
134
+ // eslint-disable-next-line no-console
135
+ console.log(' - .translationsrc.json (config)');
136
+ // eslint-disable-next-line no-console
137
+ console.log(' - next.config.ts (auto-sync setup)');
138
+ // eslint-disable-next-line no-console
139
+ console.log(' - i18n directory structure\n');
140
+ // === CMS Configuration ===
22
141
  // eslint-disable-next-line no-console
23
- console.log('This creates .translationsrc.json in your project root.');
142
+ console.log('CMS Configuration:');
143
+ const cmsUrl = await question(' CMS URL (e.g. https://cms.example.com): ');
144
+ const projectId = await question(' Project ID: ');
145
+ const apiKey = await question(' API key (JWT): ');
146
+ // === i18n Configuration ===
24
147
  // eslint-disable-next-line no-console
25
- console.log('Values here override env vars for the sync-translations CLI.\n');
26
- // Collect required config values from the user
27
- const cmsUrl = await question('CMS URL (e.g. https://cms.example.com): ');
28
- const projectId = await question('Project ID: ');
29
- const apiKey = await question('API key: ');
30
- const i18nDirInput = await question('i18n directory [./src/lib/i18n]: ');
31
- const pullTtlInput = await question('Pull TTL in seconds [300]: ');
32
- const scaffoldInput = await question('Scaffold i18n files (settings, client, server, provider)? [Y/n]: ');
148
+ console.log('\ni18n Configuration:');
149
+ const i18nDirInput = await question(' i18n directory [./src/lib/i18n]: ');
150
+ const localesInput = await question(' Locales (comma-separated) [en,nl]: ');
151
+ const pullTtlInput = await question(' Pull TTL in seconds [300]: ');
152
+ // === Scanner Configuration ===
153
+ // eslint-disable-next-line no-console
154
+ console.log('\nScanner Configuration:');
155
+ const previewRoutesInput = await question(' Enable preview routes? [Y/n]: ');
156
+ const pluralInput = await question(' Support pluralization (count option)? [Y/n]: ');
157
+ // === Next.js Configuration ===
158
+ // eslint-disable-next-line no-console
159
+ console.log('\nNext.js Integration:');
160
+ const syncOnDevInput = await question(' Auto-sync on dev startup? [Y/n]: ');
161
+ const syncOnBuildInput = await question(' Auto-sync on build? [Y/n]: ');
162
+ const watchOnDevInput = await question(' Watch CMS for updates in dev? [Y/n]: ');
163
+ const watchIntervalInput = await question(' Watch interval in seconds [300]: ');
164
+ // === Scaffolding ===
165
+ const scaffoldInput = await question('\nScaffold i18n files (settings, client, server, provider)? [Y/n]: ');
33
166
  rl.close();
34
- // Apply defaults for optional fields
167
+ // === Parse Answers ===
35
168
  const i18nDir = i18nDirInput.trim() || './src/lib/i18n';
36
- // Dictionaries live one level deeper than the i18n dir
37
169
  const outputDir = `${i18nDir.replace(/\/$/, '')}/dictionaries`;
38
- // Build the config object — only include keys that the user actually provided
39
- const config = {
40
- $schema: './node_modules/@translation-cms/sync/schema.json',
41
- };
170
+ const locales = localesInput
171
+ .trim()
172
+ .split(',')
173
+ .map(l => l.trim())
174
+ .filter(l => l) || ['en', 'nl'];
175
+ const ttlSeconds = pullTtlInput.trim()
176
+ ? parseInt(pullTtlInput.trim(), 10)
177
+ : 300;
178
+ const previewRoutes = previewRoutesInput.trim().toLowerCase() !== 'n';
179
+ const pluralSuffixes = pluralInput.trim().toLowerCase() !== 'n';
180
+ const syncOnDev = syncOnDevInput.trim().toLowerCase() !== 'n';
181
+ const syncOnBuild = syncOnBuildInput.trim().toLowerCase() !== 'n';
182
+ const watchOnDev = watchOnDevInput.trim().toLowerCase() !== 'n';
183
+ const watchInterval = watchIntervalInput.trim()
184
+ ? parseInt(watchIntervalInput.trim(), 10) * 1000
185
+ : 300000;
186
+ // === 1. Write .env.local ===
187
+ const envPath = path.join(root, '.env.local');
188
+ let envContent = '';
189
+ if (fs.existsSync(envPath)) {
190
+ envContent = fs.readFileSync(envPath, 'utf-8');
191
+ }
192
+ // Remove existing translation-related vars to avoid duplicates
193
+ envContent = envContent
194
+ .split('\n')
195
+ .filter(line => !line.startsWith('NEXT_PUBLIC_CMS_URL=') &&
196
+ !line.startsWith('NEXT_PUBLIC_CMS_PROJECT_ID=') &&
197
+ !line.startsWith('CMS_SYNC_API_KEY='))
198
+ .filter(line => line.trim() !== '')
199
+ .join('\n');
200
+ const envVars = [];
42
201
  if (cmsUrl.trim())
43
- config['cmsUrl'] = cmsUrl.trim();
202
+ envVars.push(`NEXT_PUBLIC_CMS_URL=${cmsUrl.trim()}`);
44
203
  if (projectId.trim())
45
- config['projectId'] = projectId.trim();
204
+ envVars.push(`NEXT_PUBLIC_CMS_PROJECT_ID=${projectId.trim()}`);
46
205
  if (apiKey.trim())
47
- config['apiKey'] = apiKey.trim();
206
+ envVars.push(`CMS_SYNC_API_KEY=${apiKey.trim()}`);
207
+ if (envVars.length > 0) {
208
+ envContent = envContent + (envContent ? '\n' : '') + envVars.join('\n');
209
+ fs.writeFileSync(envPath, envContent, 'utf-8');
210
+ // eslint-disable-next-line no-console
211
+ console.log(`\n[Created] .env.local`);
212
+ envVars.forEach(v => {
213
+ const [key] = v.split('=');
214
+ // eslint-disable-next-line no-console
215
+ console.log(` + ${key}`);
216
+ });
217
+ }
218
+ // === 2. Generate .translationsrc.json ===
219
+ const config = {
220
+ $schema: './node_modules/@translation-cms/sync/schema.json',
221
+ };
48
222
  config['outputDir'] = outputDir;
49
- if (pullTtlInput.trim()) {
50
- const ttlSec = parseInt(pullTtlInput.trim(), 10);
51
- // Convert seconds → milliseconds for the config field
52
- if (!isNaN(ttlSec))
53
- config['pullTtlMs'] = ttlSec * 1000;
223
+ config['pullTtlMs'] = ttlSeconds * 1000;
224
+ config['previewRoutes'] = previewRoutes;
225
+ config['locales'] = locales;
226
+ if (pluralSuffixes) {
227
+ config['pluralSuffixes'] = [
228
+ '_one',
229
+ '_other',
230
+ '_zero',
231
+ '_two',
232
+ '_few',
233
+ '_many',
234
+ ];
54
235
  }
55
- // Write the config file
236
+ config['excludedDirs'] = [
237
+ 'e2e',
238
+ 'node_modules',
239
+ 'dist',
240
+ '.next',
241
+ 'build',
242
+ 'fixtures',
243
+ ];
244
+ config['sourceExtensions'] = ['.ts', '.tsx', '.js', '.jsx'];
56
245
  const configPath = path.join(root, '.translationsrc.json');
57
246
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
58
- console.log(`\nCreated: ${configPath}`);
59
- console.log('\nTip: add "previewRoutes": false to skip preview route detection and');
60
- console.log(' route params cache (.cms-sync-cache-meta.json). Useful for projects');
61
- console.log(" that don't use the CMS preview feature — speeds up sync significantly.");
62
- console.log('\nTip: For projects using pluralized translation keys (with count option),');
63
- console.log(' add pluralSuffixes to syncTranslations() in next.config.ts to register');
64
- console.log(' plural forms (_one, _other, _zero, etc.) automatically.');
65
- // Warn if an API key was written to disk — it should ideally stay in .env.local
66
- if (config['apiKey']) {
67
- console.log('\nWarning: .translationsrc.json contains an API key. Consider adding it to .gitignore:');
68
- console.log(' echo ".translationsrc.json" >> .gitignore');
69
- console.log('Or move the API key to CMS_SYNC_API_KEY in .env.local instead.');
70
- }
71
- // Default to scaffolding unless the user explicitly answers "n"
247
+ // eslint-disable-next-line no-console
248
+ console.log(`[Created] .translationsrc.json`);
249
+ // === 3. Generate next.config.ts ===
250
+ generateNextConfig(root, {
251
+ i18nDir,
252
+ syncOnDev,
253
+ syncOnBuild,
254
+ watchOnDev,
255
+ watchInterval,
256
+ pluralSuffixes,
257
+ });
258
+ // === 4. Scaffold i18n files ===
72
259
  const doScaffold = scaffoldInput.trim().toLowerCase() !== 'n';
73
260
  if (doScaffold) {
74
261
  const absI18nDir = path.isAbsolute(i18nDir)
@@ -76,41 +263,56 @@ export async function runInit(root) {
76
263
  : path.resolve(root, i18nDir);
77
264
  const { written, skipped } = scaffoldI18n({ i18nDir: absI18nDir });
78
265
  if (written.length > 0) {
79
- console.log('\nScaffolded i18n files:');
80
- for (const f of written)
81
- console.log(` + src/lib/i18n/${f}`);
266
+ // eslint-disable-next-line no-console
267
+ console.log(`\n[Scaffolded] i18n files:`);
268
+ for (const f of written) {
269
+ // eslint-disable-next-line no-console
270
+ console.log(` + ${f}`);
271
+ }
82
272
  }
83
273
  if (skipped.length > 0) {
84
- // Files that already exist are left untouched to avoid overwriting customizations
85
- console.log('\nSkipped (already exist):');
86
- for (const f of skipped)
87
- console.log(` ~ src/lib/i18n/${f}`);
274
+ // eslint-disable-next-line no-console
275
+ console.log(`[Skipped] (already exist):`);
276
+ for (const f of skipped) {
277
+ // eslint-disable-next-line no-console
278
+ console.log(` ~ ${f}`);
279
+ }
88
280
  }
89
- console.log('\nNext steps:');
90
- console.log(' 1. Install peer deps: pnpm add i18next react-i18next i18next-resources-to-backend');
91
- console.log(' 2. Add to next.config.ts:');
92
- console.log('');
93
- console.log(" import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from 'next/constants';");
94
- console.log(" import { syncTranslations, pullTranslations, watchTranslations } from '@translation-cms/sync/api';");
95
- console.log('');
96
- console.log(" const pathMappings = { '@/*': ['src/*'] }; // mirror your tsconfig paths");
97
- console.log(" const pluralSuffixes = ['_one', '_other', '_zero', '_two', '_few', '_many'];");
98
- console.log('');
99
- console.log(' export default async function config(phase) {');
100
- console.log(' if (phase === PHASE_DEVELOPMENT_SERVER) {');
101
- console.log(" await syncTranslations({ projectRoot: '.', pathMappings, pluralSuffixes });");
102
- console.log(" await pullTranslations({ projectRoot: '.' });");
103
- console.log(" watchTranslations({ projectRoot: '.' }); // auto-pull on publish");
104
- console.log(' }');
105
- console.log(' if (phase === PHASE_PRODUCTION_BUILD) {');
106
- console.log(" await syncTranslations({ projectRoot: '.', pathMappings, pluralSuffixes });");
107
- console.log(" await pullTranslations({ projectRoot: '.' });");
108
- console.log(' }');
109
- console.log(' return { /* your next.js config */ };');
110
- console.log(' }');
111
- console.log('');
112
- console.log(' 3. Pull translations: sync-translations pull');
113
- console.log(' 4. Wrap your root layout with <TranslationProvider locale={locale}>');
114
281
  }
282
+ // === Summary ===
283
+ // eslint-disable-next-line no-console
284
+ console.log('\n--- Setup Complete ---\n');
285
+ // eslint-disable-next-line no-console
286
+ console.log('Next steps:');
287
+ // eslint-disable-next-line no-console
288
+ console.log(' 1. Install peer dependencies:');
289
+ // eslint-disable-next-line no-console
290
+ console.log(' pnpm add i18next react-i18next i18next-resources-to-backend');
291
+ // eslint-disable-next-line no-console
292
+ console.log('');
293
+ // eslint-disable-next-line no-console
294
+ console.log(' 2. Fill in your first translations in the CMS');
295
+ // eslint-disable-next-line no-console
296
+ console.log('');
297
+ // eslint-disable-next-line no-console
298
+ console.log(' 3. Pull translations for the first time:');
299
+ // eslint-disable-next-line no-console
300
+ console.log(' pnpm sync-translations pull');
301
+ // eslint-disable-next-line no-console
302
+ console.log('');
303
+ // eslint-disable-next-line no-console
304
+ console.log(' 4. Wrap your root layout with <TranslationProvider>:');
305
+ // eslint-disable-next-line no-console
306
+ console.log(` import { TranslationProvider } from '@/lib/i18n/provider';`);
307
+ // eslint-disable-next-line no-console
308
+ console.log('');
309
+ // eslint-disable-next-line no-console
310
+ console.log('Configuration saved to:');
311
+ // eslint-disable-next-line no-console
312
+ console.log(` - .env.local`);
313
+ // eslint-disable-next-line no-console
314
+ console.log(` - .translationsrc.json`);
315
+ // eslint-disable-next-line no-console
316
+ console.log(` - next.config.ts`);
115
317
  }
116
318
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/core/api-internals/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EACR,iBAAiB,EAEpB,MAAM,4BAA4B,CAAC;AAapC;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,GAAE,iBAA2C,GAClD,OAAO,CAAC,IAAI,CAAC,CA0Jf"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/core/api-internals/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EACR,iBAAiB,EAEpB,MAAM,4BAA4B,CAAC;AAapC;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,GAAE,iBAA2C,GAClD,OAAO,CAAC,IAAI,CAAC,CA8Jf"}
@@ -83,7 +83,11 @@ export async function postToSync(config, namespaces, opts = { root: process.cwd(
83
83
  'Content-Type': 'application/json',
84
84
  'x-api-key': config.apiKey,
85
85
  },
86
- body: JSON.stringify({ namespaces: apiPayload, pruneKeys, pluralSuffixes: opts.pluralSuffixes }),
86
+ body: JSON.stringify({
87
+ namespaces: apiPayload,
88
+ pruneKeys,
89
+ pluralSuffixes: opts.pluralSuffixes,
90
+ }),
87
91
  });
88
92
  const contentType = response.headers.get('content-type') ?? '';
89
93
  const isJson = contentType.includes('application/json');
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/core/api-internals/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/core/api-internals/sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@translation-cms/sync",
3
- "version": "1.2.81",
3
+ "version": "1.2.82",
4
4
  "description": "Scan translation keys in your codebase and sync them to the Translations CMS",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",