@translation-cms/sync 1.1.99 → 1.2.3
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/dist/bin.d.ts +25 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +173 -0
- package/dist/bin.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +68 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/pull.d.ts +3 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +22 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +46 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +10 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +20 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/watch.d.ts +4 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +51 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/{load-config.d.ts → config/resolve-config.d.ts} +13 -10
- package/dist/config/resolve-config.d.ts.map +1 -0
- package/dist/{resolve-config.js → config/resolve-config.js} +21 -0
- package/dist/config/resolve-config.js.map +1 -0
- package/dist/core/api-internals/helpers.d.ts +9 -0
- package/dist/core/api-internals/helpers.d.ts.map +1 -0
- package/dist/core/api-internals/helpers.js +14 -0
- package/dist/core/api-internals/helpers.js.map +1 -0
- package/dist/core/api-internals/pull.d.ts +11 -0
- package/dist/core/api-internals/pull.d.ts.map +1 -0
- package/dist/core/api-internals/pull.js +124 -0
- package/dist/core/api-internals/pull.js.map +1 -0
- package/dist/core/api-internals/route-config.d.ts +13 -0
- package/dist/core/api-internals/route-config.d.ts.map +1 -0
- package/dist/core/api-internals/route-config.js +34 -0
- package/dist/core/api-internals/route-config.js.map +1 -0
- package/dist/core/api-internals/sync.d.ts +12 -0
- package/dist/core/api-internals/sync.d.ts.map +1 -0
- package/dist/core/api-internals/sync.js +95 -0
- package/dist/core/api-internals/sync.js.map +1 -0
- package/dist/core/api-internals/types.d.ts +25 -0
- package/dist/core/api-internals/types.d.ts.map +1 -0
- package/dist/core/api-internals/types.js +5 -0
- package/dist/core/api-internals/types.js.map +1 -0
- package/dist/core/api.d.ts +11 -0
- package/dist/core/api.d.ts.map +1 -0
- package/dist/core/api.js +11 -0
- package/dist/core/api.js.map +1 -0
- package/dist/{sync.d.ts → core/cache.d.ts} +5 -25
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +143 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/scanner-internals/ast.d.ts +22 -0
- package/dist/core/scanner-internals/ast.d.ts.map +1 -0
- package/dist/core/scanner-internals/ast.js +80 -0
- package/dist/core/scanner-internals/ast.js.map +1 -0
- package/dist/core/scanner-internals/file-walker.d.ts +9 -0
- package/dist/core/scanner-internals/file-walker.d.ts.map +1 -0
- package/dist/core/scanner-internals/file-walker.js +25 -0
- package/dist/core/scanner-internals/file-walker.js.map +1 -0
- package/dist/core/scanner-internals/import-resolver.d.ts +13 -0
- package/dist/core/scanner-internals/import-resolver.d.ts.map +1 -0
- package/dist/core/scanner-internals/import-resolver.js +124 -0
- package/dist/core/scanner-internals/import-resolver.js.map +1 -0
- package/dist/core/scanner-internals/key-extractor.d.ts +16 -0
- package/dist/core/scanner-internals/key-extractor.d.ts.map +1 -0
- package/dist/core/scanner-internals/key-extractor.js +168 -0
- package/dist/core/scanner-internals/key-extractor.js.map +1 -0
- package/dist/core/scanner-internals/route-detector.d.ts +19 -0
- package/dist/core/scanner-internals/route-detector.d.ts.map +1 -0
- package/dist/core/scanner-internals/route-detector.js +74 -0
- package/dist/core/scanner-internals/route-detector.js.map +1 -0
- package/dist/core/scanner-internals/types.d.ts +53 -0
- package/dist/core/scanner-internals/types.d.ts.map +1 -0
- package/dist/core/scanner-internals/types.js +29 -0
- package/dist/core/scanner-internals/types.js.map +1 -0
- package/dist/core/scanner.d.ts +20 -0
- package/dist/core/scanner.d.ts.map +1 -0
- package/dist/core/scanner.js +113 -0
- package/dist/core/scanner.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/preview/index.d.ts +38 -0
- package/dist/preview/index.d.ts.map +1 -0
- package/dist/preview/index.js +114 -0
- package/dist/preview/index.js.map +1 -0
- package/dist/preview/internals/highlight.d.ts +22 -0
- package/dist/preview/internals/highlight.d.ts.map +1 -0
- package/dist/preview/internals/highlight.js +153 -0
- package/dist/preview/internals/highlight.js.map +1 -0
- package/dist/preview/internals/interactions.d.ts +15 -0
- package/dist/preview/internals/interactions.d.ts.map +1 -0
- package/dist/preview/internals/interactions.js +38 -0
- package/dist/preview/internals/interactions.js.map +1 -0
- package/dist/preview/internals/locales.d.ts +9 -0
- package/dist/preview/internals/locales.d.ts.map +1 -0
- package/dist/preview/internals/locales.js +24 -0
- package/dist/preview/internals/locales.js.map +1 -0
- package/dist/preview/internals/state.d.ts +35 -0
- package/dist/preview/internals/state.d.ts.map +1 -0
- package/dist/preview/internals/state.js +65 -0
- package/dist/preview/internals/state.js.map +1 -0
- package/dist/preview/internals/styles.d.ts +8 -0
- package/dist/preview/internals/styles.d.ts.map +1 -0
- package/dist/preview/internals/styles.js +28 -0
- package/dist/preview/internals/styles.js.map +1 -0
- package/dist/preview/internals/types.d.ts +49 -0
- package/dist/preview/internals/types.d.ts.map +1 -0
- package/dist/preview/internals/types.js +5 -0
- package/dist/preview/internals/types.js.map +1 -0
- package/dist/scaffold/index.d.ts +3 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +3 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/scaffold/intenrals/scaffold.d.ts +7 -0
- package/dist/scaffold/intenrals/scaffold.d.ts.map +1 -0
- package/dist/scaffold/intenrals/scaffold.js +34 -0
- package/dist/scaffold/intenrals/scaffold.js.map +1 -0
- package/dist/scaffold/intenrals/templates.d.ts +10 -0
- package/dist/scaffold/intenrals/templates.d.ts.map +1 -0
- package/dist/{scaffold.js → scaffold/intenrals/templates.js} +10 -38
- package/dist/scaffold/intenrals/templates.js.map +1 -0
- package/dist/{scaffold.d.ts → scaffold/intenrals/types.d.ts} +4 -2
- package/dist/scaffold/intenrals/types.d.ts.map +1 -0
- package/dist/scaffold/intenrals/types.js +5 -0
- package/dist/scaffold/intenrals/types.js.map +1 -0
- package/package.json +7 -7
- package/schema.json +64 -0
- package/dist/cli-entry.d.ts +0 -3
- package/dist/cli-entry.d.ts.map +0 -1
- package/dist/cli-entry.js +0 -382
- package/dist/cli-entry.js.map +0 -1
- package/dist/cli.d.ts +0 -16
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -16
- package/dist/cli.js.map +0 -1
- package/dist/load-config.d.ts.map +0 -1
- package/dist/load-config.js +0 -24
- package/dist/load-config.js.map +0 -1
- package/dist/preview.d.ts +0 -88
- package/dist/preview.d.ts.map +0 -1
- package/dist/preview.js +0 -461
- package/dist/preview.js.map +0 -1
- package/dist/resolve-config.d.ts +0 -15
- package/dist/resolve-config.d.ts.map +0 -1
- package/dist/resolve-config.js.map +0 -1
- package/dist/scaffold.d.ts.map +0 -1
- package/dist/scaffold.js.map +0 -1
- package/dist/scanner.d.ts +0 -77
- package/dist/scanner.d.ts.map +0 -1
- package/dist/scanner.js +0 -555
- package/dist/scanner.js.map +0 -1
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js +0 -340
- package/dist/sync.js.map +0 -1
package/dist/preview.js
DELETED
|
@@ -1,461 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Translation CMS — Preview Listener
|
|
3
|
-
*
|
|
4
|
-
* Add this to your client app in development mode to enable live in-context
|
|
5
|
-
* preview of translations from the CMS.
|
|
6
|
-
*
|
|
7
|
-
* Usage in Next.js:
|
|
8
|
-
* ```tsx
|
|
9
|
-
* import { initPreviewListener } from '@translation-cms/sync/preview';
|
|
10
|
-
*
|
|
11
|
-
* // In a useEffect or root layout (development only)
|
|
12
|
-
* if (process.env.NODE_ENV === 'development') {
|
|
13
|
-
* initPreviewListener();
|
|
14
|
-
* }
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* Precise highlighting (recommended):
|
|
18
|
-
* Add `data-cms-key="namespace:key"` to elements that render a translation.
|
|
19
|
-
* The listener will target those elements directly, bypassing text-search heuristics.
|
|
20
|
-
* ```tsx
|
|
21
|
-
* <h1 data-cms-key="blog:post.title">{t('blog:post.title')}</h1>
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
// State
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
let isInitialized = false;
|
|
28
|
-
let highlightedElements = [];
|
|
29
|
-
let opts = {};
|
|
30
|
-
let currentLiveValue = null;
|
|
31
|
-
let currentSearchValue = null;
|
|
32
|
-
let activeLocale = null;
|
|
33
|
-
let interactionBlockerOverlay = null;
|
|
34
|
-
let pendingHighlight = null;
|
|
35
|
-
/** Registry of action IDs to callbacks. Used by triggerPreviewAction() and the CMS. */
|
|
36
|
-
const actionRegistry = new Map();
|
|
37
|
-
// ---------------------------------------------------------------------------
|
|
38
|
-
// Public functions
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
/**
|
|
41
|
-
* Initialize the preview listener.
|
|
42
|
-
* Safe to call multiple times — only initialises once.
|
|
43
|
-
*/
|
|
44
|
-
export function initPreviewListener(options) {
|
|
45
|
-
if (isInitialized)
|
|
46
|
-
return;
|
|
47
|
-
const isDev = typeof window !== 'undefined' &&
|
|
48
|
-
(window.location.hostname === 'localhost' ||
|
|
49
|
-
window.location.hostname === '127.0.0.1' ||
|
|
50
|
-
window.location.search.includes('preview=true'));
|
|
51
|
-
if (!isDev) {
|
|
52
|
-
console.log('[CMS Preview] Not in development mode, skipping...');
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
opts = options ?? {};
|
|
56
|
-
// Seed activeLocale from the URL's ?locale= param so that the first
|
|
57
|
-
// CMS_HIGHLIGHT_KEY doesn't needlessly trigger a locale switch (and
|
|
58
|
-
// re-render) when the iframe already loaded with the correct locale.
|
|
59
|
-
try {
|
|
60
|
-
activeLocale = new URL(window.location.href).searchParams.get('locale');
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
activeLocale = null;
|
|
64
|
-
}
|
|
65
|
-
window.addEventListener('message', handleMessage);
|
|
66
|
-
injectStyles();
|
|
67
|
-
// Only inject the interaction blocker when running inside an iframe
|
|
68
|
-
// (i.e. the CMS preview context). Opening the page directly on localhost
|
|
69
|
-
// should never have interactions blocked.
|
|
70
|
-
if (window.top !== window) {
|
|
71
|
-
injectInteractionBlocker();
|
|
72
|
-
}
|
|
73
|
-
isInitialized = true;
|
|
74
|
-
console.log('%c[CMS Preview] Ready', 'color: #10b981; font-weight: bold;');
|
|
75
|
-
}
|
|
76
|
-
/** Remove the preview listener and clear all highlights. */
|
|
77
|
-
export function cleanupPreviewListener() {
|
|
78
|
-
if (!isInitialized)
|
|
79
|
-
return;
|
|
80
|
-
window.removeEventListener('message', handleMessage);
|
|
81
|
-
document.removeEventListener('click', blockInteraction, true);
|
|
82
|
-
document.removeEventListener('submit', blockInteraction, true);
|
|
83
|
-
interactionBlockerOverlay?.remove();
|
|
84
|
-
interactionBlockerOverlay = null;
|
|
85
|
-
clearHighlights();
|
|
86
|
-
actionRegistry.clear();
|
|
87
|
-
isInitialized = false;
|
|
88
|
-
activeLocale = null;
|
|
89
|
-
pendingHighlight = null;
|
|
90
|
-
console.log('[CMS Preview] Listener cleaned up');
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Register an action that can be triggered by the CMS.
|
|
94
|
-
* Useful for opening dialogs, menus, or other UI interactions.
|
|
95
|
-
*
|
|
96
|
-
* Usage in your app:
|
|
97
|
-
* ```tsx
|
|
98
|
-
* import { registerPreviewAction } from '@translation-cms/sync';
|
|
99
|
-
*
|
|
100
|
-
* function MyDialog() {
|
|
101
|
-
* const [open, setOpen] = useState(false);
|
|
102
|
-
*
|
|
103
|
-
* useEffect(() => {
|
|
104
|
-
* if (process.env.NODE_ENV === 'development') {
|
|
105
|
-
* registerPreviewAction('nav.menu', () => setOpen(true));
|
|
106
|
-
* }
|
|
107
|
-
* }, []);
|
|
108
|
-
*
|
|
109
|
-
* return <Dialog open={open} onOpenChange={setOpen}>...</Dialog>;
|
|
110
|
-
* }
|
|
111
|
-
* ```
|
|
112
|
-
*
|
|
113
|
-
* When the editor clicks "Show in app" in the CMS for a key inside this menu,
|
|
114
|
-
* the CMS notifies the preview and this callback is triggered.
|
|
115
|
-
*/
|
|
116
|
-
export function registerPreviewAction(actionId, callback) {
|
|
117
|
-
actionRegistry.set(actionId, callback);
|
|
118
|
-
console.log(`[CMS Preview] Registered action: ${actionId}`);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Unregister a previously registered action.
|
|
122
|
-
*/
|
|
123
|
-
export function unregisterPreviewAction(actionId) {
|
|
124
|
-
actionRegistry.delete(actionId);
|
|
125
|
-
console.log(`[CMS Preview] Unregistered action: ${actionId}`);
|
|
126
|
-
}
|
|
127
|
-
// ---------------------------------------------------------------------------
|
|
128
|
-
// Message handler
|
|
129
|
-
// ---------------------------------------------------------------------------
|
|
130
|
-
function handleMessage(event) {
|
|
131
|
-
const { type } = (event.data ?? {});
|
|
132
|
-
if (type === 'CMS_HIGHLIGHT_KEY') {
|
|
133
|
-
const { key, value, locale } = event.data;
|
|
134
|
-
console.log(`[CMS Preview] Highlighting: ${key} (${locale}) = "${value}"`);
|
|
135
|
-
// Only switch locale when it actually changed. Switching unconditionally
|
|
136
|
-
// triggers a re-render in the consuming app, which replaces DOM nodes
|
|
137
|
-
// and immediately removes the highlight class we just applied.
|
|
138
|
-
if (locale && locale !== activeLocale) {
|
|
139
|
-
activeLocale = locale;
|
|
140
|
-
handleLocaleSwitch(locale);
|
|
141
|
-
}
|
|
142
|
-
currentLiveValue = null;
|
|
143
|
-
pendingHighlight = { key, value };
|
|
144
|
-
highlightTranslationKey(value, key);
|
|
145
|
-
// If no elements were found (e.g. dialog still animating open), schedule
|
|
146
|
-
// a backup retry after the animation should have settled.
|
|
147
|
-
if (highlightedElements.length === 0) {
|
|
148
|
-
setTimeout(() => {
|
|
149
|
-
if (pendingHighlight?.key === key) {
|
|
150
|
-
console.log(`[CMS Preview] Retrying highlight for: ${key}`);
|
|
151
|
-
highlightTranslationKey(value, key);
|
|
152
|
-
}
|
|
153
|
-
}, 600);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
else if (type === 'CMS_LIVE_UPDATE') {
|
|
157
|
-
const { oldValue, newValue } = event.data;
|
|
158
|
-
updateLiveText(oldValue, newValue);
|
|
159
|
-
}
|
|
160
|
-
else if (type === 'CMS_SWITCH_LOCALE') {
|
|
161
|
-
const { locale } = event.data;
|
|
162
|
-
activeLocale = locale;
|
|
163
|
-
handleLocaleSwitch(locale);
|
|
164
|
-
}
|
|
165
|
-
else if (type === 'CMS_TRIGGER_ACTION') {
|
|
166
|
-
const { actionId } = event.data;
|
|
167
|
-
void handleTriggerAction(actionId);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// ---------------------------------------------------------------------------
|
|
171
|
-
// Locale switching
|
|
172
|
-
// ---------------------------------------------------------------------------
|
|
173
|
-
function handleLocaleSwitch(locale) {
|
|
174
|
-
console.log(`[CMS Preview] Switching locale to: ${locale}`);
|
|
175
|
-
if (opts.onLocaleSwitch) {
|
|
176
|
-
opts.onLocaleSwitch(locale);
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
// Fallback: look for window.__cmsSetLocale (set by the consuming app)
|
|
180
|
-
const globalObj = globalThis;
|
|
181
|
-
if (typeof globalObj['__cmsSetLocale'] === 'function') {
|
|
182
|
-
globalObj['__cmsSetLocale'](locale);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
console.warn('[CMS Preview] No locale switch handler found. ' +
|
|
186
|
-
'Provide onLocaleSwitch option or expose window.__cmsSetLocale(locale).');
|
|
187
|
-
}
|
|
188
|
-
// ---------------------------------------------------------------------------
|
|
189
|
-
// Action triggering
|
|
190
|
-
// ---------------------------------------------------------------------------
|
|
191
|
-
function handleTriggerAction(actionId) {
|
|
192
|
-
const callback = actionRegistry.get(actionId);
|
|
193
|
-
if (callback) {
|
|
194
|
-
console.log(`[CMS Preview] Triggering action: ${actionId}`);
|
|
195
|
-
try {
|
|
196
|
-
Promise.resolve(callback())
|
|
197
|
-
.then(waitForDomPaint)
|
|
198
|
-
.then(() => {
|
|
199
|
-
retryPendingHighlight();
|
|
200
|
-
})
|
|
201
|
-
.catch(err => {
|
|
202
|
-
console.error(`[CMS Preview] Error in action callback for "${actionId}":`, err);
|
|
203
|
-
});
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
catch (err) {
|
|
207
|
-
console.error(`[CMS Preview] Error triggering action "${actionId}":`, err);
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
const globalObj = window;
|
|
212
|
-
if (typeof globalObj.__cmsTriggerPreviewAction !== 'function') {
|
|
213
|
-
console.warn(`[CMS Preview] No action registered for: "${actionId}".`);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
console.log(`[CMS Preview] Triggering action via window bridge: ${actionId}`);
|
|
217
|
-
try {
|
|
218
|
-
Promise.resolve(globalObj.__cmsTriggerPreviewAction(actionId))
|
|
219
|
-
.then(waitForDomPaint)
|
|
220
|
-
.then(() => {
|
|
221
|
-
retryPendingHighlight();
|
|
222
|
-
})
|
|
223
|
-
.catch(err => {
|
|
224
|
-
console.error(`[CMS Preview] Error in bridged action callback for "${actionId}":`, err);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
catch (err) {
|
|
228
|
-
console.error(`[CMS Preview] Error triggering bridged action "${actionId}":`, err);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
// ---------------------------------------------------------------------------
|
|
232
|
-
// Live text update
|
|
233
|
-
// ---------------------------------------------------------------------------
|
|
234
|
-
function updateLiveText(oldValue, newValue) {
|
|
235
|
-
if (highlightedElements.length === 0)
|
|
236
|
-
return;
|
|
237
|
-
const searchFor = currentLiveValue ?? (oldValue || currentSearchValue) ?? oldValue;
|
|
238
|
-
for (const el of highlightedElements) {
|
|
239
|
-
const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null);
|
|
240
|
-
let node;
|
|
241
|
-
while ((node = walker.nextNode())) {
|
|
242
|
-
if (node.nodeValue?.includes(searchFor)) {
|
|
243
|
-
node.nodeValue = node.nodeValue.replace(searchFor, newValue);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
currentLiveValue = newValue;
|
|
248
|
-
}
|
|
249
|
-
// ---------------------------------------------------------------------------
|
|
250
|
-
// Highlight logic
|
|
251
|
-
// ---------------------------------------------------------------------------
|
|
252
|
-
function normalizeForSearch(value) {
|
|
253
|
-
return value
|
|
254
|
-
.replace(/\{\{[^}]+\}\}/g, '')
|
|
255
|
-
.replace(/\{[^}]+\}/g, '')
|
|
256
|
-
.replace(/\s+/g, ' ')
|
|
257
|
-
.trim();
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Strategy 0 (precise): find elements with data-cms-key="key" attribute.
|
|
261
|
-
* When present, this is always preferred over text-content heuristics.
|
|
262
|
-
*/
|
|
263
|
-
function findByDataAttribute(key) {
|
|
264
|
-
return Array.from(document.querySelectorAll(`[data-cms-key="${CSS.escape(key)}"]`));
|
|
265
|
-
}
|
|
266
|
-
/** Strategy 1: walk text nodes, return parent elements whose text includes value. */
|
|
267
|
-
function findByTextNodes(searchValue) {
|
|
268
|
-
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
|
269
|
-
const results = [];
|
|
270
|
-
let node;
|
|
271
|
-
while ((node = walker.nextNode())) {
|
|
272
|
-
if (node.textContent?.includes(searchValue)) {
|
|
273
|
-
const el = node.parentElement;
|
|
274
|
-
if (el && !el.classList.contains('cms-preview-highlight')) {
|
|
275
|
-
results.push(el);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
return results;
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Strategy 2: find the most specific element whose combined textContent
|
|
283
|
-
* includes the value. Works when text is split across siblings.
|
|
284
|
-
*/
|
|
285
|
-
function findByElementContent(searchValue) {
|
|
286
|
-
const all = Array.from(document.body.querySelectorAll('*'));
|
|
287
|
-
let best = null;
|
|
288
|
-
let bestLen = Infinity;
|
|
289
|
-
for (const el of all) {
|
|
290
|
-
if (el.textContent?.includes(searchValue) &&
|
|
291
|
-
!el.classList.contains('cms-preview-highlight')) {
|
|
292
|
-
const len = el.textContent.length;
|
|
293
|
-
if (len < bestLen) {
|
|
294
|
-
bestLen = len;
|
|
295
|
-
best = el;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
return best ? [best] : [];
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Find and highlight DOM elements that display the given translation.
|
|
303
|
-
*
|
|
304
|
-
* Search order:
|
|
305
|
-
* 0. data-cms-key attribute match (precise — skips all heuristics)
|
|
306
|
-
* 1. Exact text node match
|
|
307
|
-
* 2. Element content match (handles split siblings)
|
|
308
|
-
* 3. Normalized text node match (strips {{interpolation}} placeholders)
|
|
309
|
-
* 4. Normalized element match
|
|
310
|
-
* 5. Key fallback (when value is empty — i18next renders the key as text)
|
|
311
|
-
*/
|
|
312
|
-
function highlightTranslationKey(value, key) {
|
|
313
|
-
clearHighlights();
|
|
314
|
-
// --- Strategy 0: data-cms-key attribute (precise) -----------------------
|
|
315
|
-
const byAttr = findByDataAttribute(key);
|
|
316
|
-
if (byAttr.length > 0) {
|
|
317
|
-
applyHighlights(byAttr, 'data-cms-key attribute');
|
|
318
|
-
return;
|
|
319
|
-
}
|
|
320
|
-
// --- Heuristic fallback strategies --------------------------------------
|
|
321
|
-
const normalized = value ? normalizeForSearch(value) : '';
|
|
322
|
-
const hasInterpolation = value ? normalized !== value : false;
|
|
323
|
-
const candidates = [];
|
|
324
|
-
if (value && value.trim() !== '') {
|
|
325
|
-
candidates.push({ label: 'exact text node', search: value, fn: findByTextNodes }, {
|
|
326
|
-
label: 'element content',
|
|
327
|
-
search: value,
|
|
328
|
-
fn: findByElementContent,
|
|
329
|
-
});
|
|
330
|
-
if (hasInterpolation && normalized) {
|
|
331
|
-
candidates.push({
|
|
332
|
-
label: 'normalized text node',
|
|
333
|
-
search: normalized,
|
|
334
|
-
fn: findByTextNodes,
|
|
335
|
-
}, {
|
|
336
|
-
label: 'normalized element',
|
|
337
|
-
search: normalized,
|
|
338
|
-
fn: findByElementContent,
|
|
339
|
-
});
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
const keyWithoutNs = key.includes(':')
|
|
344
|
-
? key.split(':').slice(1).join(':')
|
|
345
|
-
: key;
|
|
346
|
-
candidates.push({ label: 'key (full)', search: key, fn: findByTextNodes }, { label: 'key (no ns)', search: keyWithoutNs, fn: findByTextNodes }, { label: 'key element', search: key, fn: findByElementContent }, {
|
|
347
|
-
label: 'key element (no ns)',
|
|
348
|
-
search: keyWithoutNs,
|
|
349
|
-
fn: findByElementContent,
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
for (const { label, search, fn } of candidates) {
|
|
353
|
-
const found = fn(search);
|
|
354
|
-
if (found.length > 0) {
|
|
355
|
-
currentSearchValue = search;
|
|
356
|
-
applyHighlights(found, label);
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
console.warn(`[CMS Preview] No elements found for key: "${key}" value: "${value}"`);
|
|
361
|
-
}
|
|
362
|
-
function retryPendingHighlight() {
|
|
363
|
-
if (!pendingHighlight) {
|
|
364
|
-
return;
|
|
365
|
-
}
|
|
366
|
-
const { key, value } = pendingHighlight;
|
|
367
|
-
let attempts = 0;
|
|
368
|
-
const maxAttempts = 20;
|
|
369
|
-
const run = () => {
|
|
370
|
-
const byAttr = findByDataAttribute(key);
|
|
371
|
-
if (byAttr.length > 0) {
|
|
372
|
-
highlightTranslationKey(value, key);
|
|
373
|
-
pendingHighlight = null;
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
attempts += 1;
|
|
377
|
-
if (attempts >= maxAttempts) {
|
|
378
|
-
highlightTranslationKey(value, key);
|
|
379
|
-
pendingHighlight = null;
|
|
380
|
-
return;
|
|
381
|
-
}
|
|
382
|
-
requestAnimationFrame(run);
|
|
383
|
-
};
|
|
384
|
-
requestAnimationFrame(run);
|
|
385
|
-
}
|
|
386
|
-
function applyHighlights(elements, matchLabel) {
|
|
387
|
-
console.log(`[CMS Preview] Highlighting ${elements.length} element(s) via ${matchLabel}`);
|
|
388
|
-
elements.forEach((el, i) => {
|
|
389
|
-
el.classList.add('cms-preview-highlight');
|
|
390
|
-
highlightedElements.push(el);
|
|
391
|
-
if (i === 0) {
|
|
392
|
-
el.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
393
|
-
}
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
function clearHighlights() {
|
|
397
|
-
for (const el of highlightedElements) {
|
|
398
|
-
el.classList.remove('cms-preview-highlight');
|
|
399
|
-
}
|
|
400
|
-
highlightedElements = [];
|
|
401
|
-
currentSearchValue = null;
|
|
402
|
-
}
|
|
403
|
-
// ---------------------------------------------------------------------------
|
|
404
|
-
// Interaction blocking
|
|
405
|
-
// ---------------------------------------------------------------------------
|
|
406
|
-
/**
|
|
407
|
-
* Capture-phase handler that swallows all clicks and form submits.
|
|
408
|
-
* Prevents links from navigating and buttons from firing actions.
|
|
409
|
-
*/
|
|
410
|
-
function blockInteraction(e) {
|
|
411
|
-
e.preventDefault();
|
|
412
|
-
e.stopPropagation();
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Inject a transparent full-page overlay that absorbs pointer events,
|
|
416
|
-
* and register capture-phase listeners for belt-and-suspenders blocking
|
|
417
|
-
* (covers keyboard-activated links/buttons the overlay doesn't intercept).
|
|
418
|
-
*/
|
|
419
|
-
function injectInteractionBlocker() {
|
|
420
|
-
const overlay = document.createElement('div');
|
|
421
|
-
overlay.id = 'cms-preview-blocker';
|
|
422
|
-
overlay.style.cssText =
|
|
423
|
-
'position:fixed;inset:0;z-index:9997;pointer-events:all;cursor:default;';
|
|
424
|
-
document.body.appendChild(overlay);
|
|
425
|
-
interactionBlockerOverlay = overlay;
|
|
426
|
-
document.addEventListener('click', blockInteraction, true);
|
|
427
|
-
document.addEventListener('submit', blockInteraction, true);
|
|
428
|
-
}
|
|
429
|
-
// ---------------------------------------------------------------------------
|
|
430
|
-
// Styles
|
|
431
|
-
// ---------------------------------------------------------------------------
|
|
432
|
-
function injectStyles() {
|
|
433
|
-
const custom = opts.highlightStyles ?? {};
|
|
434
|
-
const outline = custom.outline ?? '2px solid #3B82F6';
|
|
435
|
-
const outlineOffset = custom.outlineOffset ?? '3px';
|
|
436
|
-
const borderRadius = custom.borderRadius ?? '3px';
|
|
437
|
-
const backgroundColor = custom.backgroundColor ?? 'transparent';
|
|
438
|
-
const style = document.createElement('style');
|
|
439
|
-
style.textContent = `
|
|
440
|
-
.cms-preview-highlight {
|
|
441
|
-
outline: ${outline} !important;
|
|
442
|
-
outline-offset: ${outlineOffset} !important;
|
|
443
|
-
border-radius: ${borderRadius};
|
|
444
|
-
background-color: ${backgroundColor};
|
|
445
|
-
position: relative;
|
|
446
|
-
z-index: 9999;
|
|
447
|
-
transition: outline 0.15s ease;
|
|
448
|
-
}
|
|
449
|
-
`;
|
|
450
|
-
document.head.appendChild(style);
|
|
451
|
-
}
|
|
452
|
-
function waitForDomPaint() {
|
|
453
|
-
return new Promise(resolve => {
|
|
454
|
-
requestAnimationFrame(() => {
|
|
455
|
-
requestAnimationFrame(() => {
|
|
456
|
-
resolve();
|
|
457
|
-
});
|
|
458
|
-
});
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
//# sourceMappingURL=preview.js.map
|
package/dist/preview.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
|
package/dist/resolve-config.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { TranslationsConfig } from './load-config.js';
|
|
2
|
-
/**
|
|
3
|
-
* Runtime config passed to all CLI operations.
|
|
4
|
-
* Resolved from CLI args > env vars > config file (priority order).
|
|
5
|
-
*/
|
|
6
|
-
export interface Config {
|
|
7
|
-
projectId: string;
|
|
8
|
-
apiKey: string;
|
|
9
|
-
cmsUrl: string;
|
|
10
|
-
}
|
|
11
|
-
export declare function loadEnvLocal(root: string): Record<string, string>;
|
|
12
|
-
export declare function parseArgs(): Partial<Config>;
|
|
13
|
-
export declare function findProjectRoot(): string;
|
|
14
|
-
export declare function resolveConfig(cwd?: string, fileConfig?: TranslationsConfig): Config;
|
|
15
|
-
//# sourceMappingURL=resolve-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-config.d.ts","sourceRoot":"","sources":["../src/resolve-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,MAAM;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBjE;AAED,wBAAgB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAU3C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAaxC;AAED,wBAAgB,aAAa,CACzB,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,kBAAkB,GAChC,MAAM,CA4CR"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-config.js","sourceRoot":"","sources":["../src/resolve-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAaxB,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO;aAChB,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;aACb,IAAI,EAAE;aACN,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe;IAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5B,OAAO,OAAO,KAAK,GAAG,EAAE,CAAC;QACrB,IACI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACjD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACxC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAC3C,CAAC;YACC,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa,CACzB,GAAY,EACZ,UAA+B;IAE/B,MAAM,IAAI,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;IAEtC,mEAAmE;IACnE,mDAAmD;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAE5B,MAAM,SAAS,GACX,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,4BAA4B,CAAC;QACrC,MAAM,CAAC,4BAA4B,CAAC;QACpC,UAAU,EAAE,SAAS;QACrB,EAAE,CAAC;IAEP,MAAM,MAAM,GACR,OAAO,CAAC,MAAM;QACd,OAAO,CAAC,kBAAkB,CAAC;QAC3B,OAAO,CAAC,0BAA0B,CAAC;QACnC,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,0BAA0B,CAAC;QAClC,UAAU,EAAE,MAAM;QAClB,EAAE,CAAC;IAEP,MAAM,MAAM,GACR,OAAO,CAAC,MAAM;QACd,OAAO,CAAC,qBAAqB,CAAC;QAC9B,MAAM,CAAC,qBAAqB,CAAC;QAC7B,UAAU,EAAE,MAAM;QAClB,EAAE,CAAC;IAEP,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAE7D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC"}
|
package/dist/scaffold.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAqWA,MAAM,WAAW,eAAe;IAC5B,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CA8BlE"}
|
package/dist/scaffold.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CnB,CAAC;AAEF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ChB,CAAC;AAEF,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFjB,CAAC;AAEF,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GjB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DpB,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAkBjE,MAAM,UAAU,YAAY,CAAC,IAAqB;IAC9C,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAEpD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,KAAK,GAA4C;QACnD,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE;QAC5C,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE;QACtC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE;QACxC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE;QACxC,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE;QAC9C,EAAE,GAAG,EAAE,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,EAAE;QAC1D,EAAE,GAAG,EAAE,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,EAAE;KAC7D,CAAC;IAEF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,SAAS;QACb,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC"}
|
package/dist/scanner.d.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
export declare const DEFAULT_EXCLUDED_DIRS: Set<string>;
|
|
2
|
-
export declare const DEFAULT_SOURCE_EXTENSIONS: Set<string>;
|
|
3
|
-
export declare const DEFAULT_RESERVED_CSS_NAMESPACES: Set<string>;
|
|
4
|
-
/** Options that control the file-system scan behaviour. */
|
|
5
|
-
export interface ScanOptions {
|
|
6
|
-
/**
|
|
7
|
-
* Extra directories to exclude on top of the built-in defaults.
|
|
8
|
-
* @example ["e2e", "fixtures"]
|
|
9
|
-
*/
|
|
10
|
-
excludedDirs?: string[];
|
|
11
|
-
/**
|
|
12
|
-
* Override the full set of file extensions to scan.
|
|
13
|
-
* When omitted the defaults (.ts .tsx .js .jsx) are used.
|
|
14
|
-
*/
|
|
15
|
-
sourceExtensions?: string[];
|
|
16
|
-
/**
|
|
17
|
-
* Extra CSS/Tailwind namespace keywords that must never be treated as
|
|
18
|
-
* translation namespaces. Merged with the built-in reserved set.
|
|
19
|
-
*/
|
|
20
|
-
reservedCssNamespaces?: string[];
|
|
21
|
-
/**
|
|
22
|
-
* External preview routes from database or config (namespace:key → routes[])
|
|
23
|
-
* These are applied in Pass 3.
|
|
24
|
-
* Keys are route patterns, values are mock params for dynamic segments.
|
|
25
|
-
* @example
|
|
26
|
-
* {
|
|
27
|
-
* "/[locale]/blog/[slug]": { "slug": "first-post" },
|
|
28
|
-
* "/[locale]/products/[slug]": { "slug": "product-a" }
|
|
29
|
-
* }
|
|
30
|
-
*/
|
|
31
|
-
routeParams?: Record<string, Record<string, string>>;
|
|
32
|
-
/**
|
|
33
|
-
* TypeScript path mappings from tsconfig.json (for resolving aliased imports).
|
|
34
|
-
* @example { "@/*": ["./src/*"] }
|
|
35
|
-
*/
|
|
36
|
-
pathMappings?: Record<string, string[]>;
|
|
37
|
-
/**
|
|
38
|
-
* Project root directory (used for resolving path aliases).
|
|
39
|
-
* Defaults to the root directory passed to scanProject.
|
|
40
|
-
*/
|
|
41
|
-
projectRoot?: string;
|
|
42
|
-
}
|
|
43
|
-
/** A preview route — either a plain path string or an object with per-route params. */
|
|
44
|
-
export type PreviewRoute = string | {
|
|
45
|
-
route: string;
|
|
46
|
-
params?: Record<string, string>;
|
|
47
|
-
};
|
|
48
|
-
/** namespace → (key → previewRoutes[]) */
|
|
49
|
-
export type NamespaceMap = Record<string, Map<string, PreviewRoute[]>>;
|
|
50
|
-
/** Return the route string key used for deduplication. */
|
|
51
|
-
export declare function routeKey(r: PreviewRoute): string;
|
|
52
|
-
export declare function walkFiles(dir: string, excludedDirs: Set<string>, sourceExtensions: Set<string>): Generator<string>;
|
|
53
|
-
/**
|
|
54
|
-
* Returns true when a page file only calls redirect() without rendering any JSX.
|
|
55
|
-
* Such pages are skipped from the preview route list because they have no UI to preview.
|
|
56
|
-
*/
|
|
57
|
-
export declare function isRedirectOnlyPage(filePath: string): boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Maps a source file path to Next.js route string(s).
|
|
60
|
-
* - page.tsx → the route template it represents (e.g. /blog/[slug], /[locale]/about)
|
|
61
|
-
* - layout.tsx → the route template of its directory
|
|
62
|
-
* - Dynamic segments are kept as-is — resolved at preview time via project preview_params
|
|
63
|
-
* - Redirect-only pages (no JSX, just redirect()) → []
|
|
64
|
-
* - All other files (components, hooks, …) → []
|
|
65
|
-
*/
|
|
66
|
-
export declare function filePathToRoute(root: string, filePath: string): string[];
|
|
67
|
-
export declare function extractKeysFromFile(filePath: string, routes: string[], result: NamespaceMap, additionalReservedCssNamespaces?: string[]): void;
|
|
68
|
-
/**
|
|
69
|
-
* Scans the project for translation keys and optionally merges external preview routes.
|
|
70
|
-
*
|
|
71
|
-
* Pass 1: Scan all files, extracting keys and associating them with page/layout routes.
|
|
72
|
-
* Pass 2: For each page/layout, walk its import tree to assign keys in deeply-nested
|
|
73
|
-
* components to the correct preview route.
|
|
74
|
-
* Pass 3: Merge external preview routes from database or config.
|
|
75
|
-
*/
|
|
76
|
-
export declare function scanProject(root: string, opts?: ScanOptions): NamespaceMap;
|
|
77
|
-
//# sourceMappingURL=scanner.d.ts.map
|
package/dist/scanner.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,qBAAqB,aAWhC,CAAC;AAEH,eAAO,MAAM,yBAAyB,aAKpC,CAAC;AAEH,eAAO,MAAM,+BAA+B,aA2B1C,CAAC;AAMH,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,uFAAuF;AACvF,MAAM,MAAM,YAAY,GAClB,MAAM,GACN;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAEzD,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AAEvE,0DAA0D;AAC1D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAEhD;AAsGD,wBAAiB,SAAS,CACtB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,SAAS,CAAC,MAAM,CAAC,CAgBnB;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkB5D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBxE;AA6BD,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,YAAY,EACpB,+BAA+B,CAAC,EAAE,MAAM,EAAE,GAC3C,IAAI,CAiIN;AA6JD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,CAuH1E"}
|