@praxisui/core 9.0.48 → 9.0.49
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 +8 -0
- package/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-core.mjs +13 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -212,6 +212,14 @@ those descriptors only in its render projection, so the authored and persisted
|
|
|
212
212
|
document keeps stable semantic keys. Plain strings remain untouched, and
|
|
213
213
|
framework chrome continues to come from each library's i18n catalog.
|
|
214
214
|
|
|
215
|
+
During generic document traversal, a record containing only `{ key }` remains
|
|
216
|
+
structural. A descriptor must also carry `text` or `params` to be localized.
|
|
217
|
+
This keeps contracts such as analytics mappings (`{ key: "status" }`) intact,
|
|
218
|
+
even if a page catalog happens to use the same key. Typed component metadata
|
|
219
|
+
may still resolve key-only `PraxisTextValue` values directly through
|
|
220
|
+
`PraxisI18nService`; the UI Composition Plan compiler also materializes
|
|
221
|
+
fallback `text` for page-owned key-only copy before persistence.
|
|
222
|
+
|
|
215
223
|
### Composition link delivery and failures
|
|
216
224
|
|
|
217
225
|
Composition links execute in their persisted array order inside one synchronous
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-08-
|
|
3
|
+
"generatedAt": "2026-08-31T13:56:05.891Z",
|
|
4
4
|
"packageName": "@praxisui/core",
|
|
5
|
-
"packageVersion": "9.0.
|
|
5
|
+
"packageVersion": "9.0.49",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 4,
|
|
@@ -20509,7 +20509,8 @@ function resolvePraxisI18nDocument(document, options) {
|
|
|
20509
20509
|
options.i18n.getFallbackLocale();
|
|
20510
20510
|
const ancestors = new Set();
|
|
20511
20511
|
const visit = (value) => {
|
|
20512
|
-
if (isPraxisI18nMessageDescriptor(value)
|
|
20512
|
+
if (isPraxisI18nMessageDescriptor(value) &&
|
|
20513
|
+
isExplicitDocumentMessageDescriptor(value)) {
|
|
20513
20514
|
return resolveDescriptor(value, locale, fallbackLocale, options);
|
|
20514
20515
|
}
|
|
20515
20516
|
if (Array.isArray(value)) {
|
|
@@ -20555,6 +20556,17 @@ function isPraxisI18nMessageDescriptor(value) {
|
|
|
20555
20556
|
(typeof text === 'string' && !!text)) &&
|
|
20556
20557
|
(params == null || isPlainRecord(params)));
|
|
20557
20558
|
}
|
|
20559
|
+
/**
|
|
20560
|
+
* Generic document traversal needs stronger evidence than the public
|
|
20561
|
+
* descriptor guard. Key-only records are common structural contracts (for
|
|
20562
|
+
* example analytics field mappings), so only descriptors with an explicit
|
|
20563
|
+
* text fallback or interpolation params are localized. Typed consumers can
|
|
20564
|
+
* continue to resolve key-only descriptors directly through PraxisI18nService.
|
|
20565
|
+
*/
|
|
20566
|
+
function isExplicitDocumentMessageDescriptor(descriptor) {
|
|
20567
|
+
return (Object.prototype.hasOwnProperty.call(descriptor, 'text') ||
|
|
20568
|
+
Object.prototype.hasOwnProperty.call(descriptor, 'params'));
|
|
20569
|
+
}
|
|
20558
20570
|
function resolveDescriptor(descriptor, locale, fallbackLocale, options) {
|
|
20559
20571
|
const key = descriptor.key?.trim();
|
|
20560
20572
|
if (!key) {
|
package/package.json
CHANGED