@praxisui/core 9.0.35 → 9.0.36
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 +28 -0
- package/ai/component-registry.json +26 -20
- package/fesm2022/praxisui-core.mjs +380 -23
- package/package.json +1 -1
- package/types/praxisui-core.d.ts +19 -4
|
@@ -23951,7 +23951,7 @@ function normalizeCompositionLink(link) {
|
|
|
23951
23951
|
if (condition !== undefined) {
|
|
23952
23952
|
normalized.condition = condition;
|
|
23953
23953
|
}
|
|
23954
|
-
const policy = normalizePolicy(link.policy);
|
|
23954
|
+
const policy = normalizePolicy(link.policy, link.id);
|
|
23955
23955
|
if (policy) {
|
|
23956
23956
|
normalized.policy = policy;
|
|
23957
23957
|
}
|
|
@@ -24135,15 +24135,27 @@ function normalizeCondition(condition) {
|
|
|
24135
24135
|
}
|
|
24136
24136
|
return clone$1(condition);
|
|
24137
24137
|
}
|
|
24138
|
-
function normalizePolicy(policy) {
|
|
24138
|
+
function normalizePolicy(policy, linkId) {
|
|
24139
24139
|
if (!policy) {
|
|
24140
24140
|
return undefined;
|
|
24141
24141
|
}
|
|
24142
|
+
const rawPolicy = policy;
|
|
24143
|
+
const delivery = rawPolicy['delivery'];
|
|
24144
|
+
const errorPolicy = rawPolicy['errorPolicy'];
|
|
24145
|
+
if (delivery !== undefined && delivery !== 'sync') {
|
|
24146
|
+
throw new Error(`Composition link '${linkId}' uses removed delivery '${String(delivery)}'. Use 'sync' or omit delivery.`);
|
|
24147
|
+
}
|
|
24148
|
+
if (errorPolicy !== undefined
|
|
24149
|
+
&& errorPolicy !== 'diagnostic'
|
|
24150
|
+
&& errorPolicy !== 'drop'
|
|
24151
|
+
&& errorPolicy !== 'halt-page') {
|
|
24152
|
+
throw new Error(`Composition link '${linkId}' uses unsupported errorPolicy '${String(errorPolicy)}'.`);
|
|
24153
|
+
}
|
|
24142
24154
|
const normalized = {
|
|
24143
24155
|
...(policy.debounceMs !== undefined ? { debounceMs: policy.debounceMs } : {}),
|
|
24144
24156
|
...(policy.distinct !== undefined ? { distinct: policy.distinct } : {}),
|
|
24145
24157
|
...(policy.distinctBy ? { distinctBy: policy.distinctBy } : {}),
|
|
24146
|
-
...(policy.delivery ? { delivery: policy.delivery } : {}),
|
|
24158
|
+
...(policy.delivery === 'sync' ? { delivery: policy.delivery } : {}),
|
|
24147
24159
|
...(policy.missingValuePolicy ? { missingValuePolicy: policy.missingValuePolicy } : {}),
|
|
24148
24160
|
...(policy.errorPolicy ? { errorPolicy: policy.errorPolicy } : {}),
|
|
24149
24161
|
};
|
|
@@ -34396,6 +34408,17 @@ class CompositionValidatorService {
|
|
|
34396
34408
|
this.nestedPortCatalog = nestedPortCatalog;
|
|
34397
34409
|
this.jsonLogic = jsonLogic;
|
|
34398
34410
|
}
|
|
34411
|
+
validatePage(page, context = {}) {
|
|
34412
|
+
const links = context.links ?? [];
|
|
34413
|
+
return [
|
|
34414
|
+
...this.validateRegisteredComponents(page, context.registry),
|
|
34415
|
+
...this.validateLinks(links, {
|
|
34416
|
+
...context,
|
|
34417
|
+
page,
|
|
34418
|
+
links,
|
|
34419
|
+
}),
|
|
34420
|
+
];
|
|
34421
|
+
}
|
|
34399
34422
|
validateLinks(links, context = {}) {
|
|
34400
34423
|
const linkDiagnostics = links.flatMap((link) => this.validateLink(link, {
|
|
34401
34424
|
...context,
|
|
@@ -34409,6 +34432,7 @@ class CompositionValidatorService {
|
|
|
34409
34432
|
validateLink(link, context = {}) {
|
|
34410
34433
|
const diagnostics = [];
|
|
34411
34434
|
this.validateEndpointDirections(link, diagnostics);
|
|
34435
|
+
this.validateRegisteredTopLevelPorts(link, diagnostics, context);
|
|
34412
34436
|
this.validateNestedComponentEndpoints(link, diagnostics);
|
|
34413
34437
|
this.validateNestedPortCatalog(link, diagnostics, context);
|
|
34414
34438
|
this.validateNestedWidgetEventCoexistence(link, diagnostics, context);
|
|
@@ -34420,6 +34444,114 @@ class CompositionValidatorService {
|
|
|
34420
34444
|
this.validateSemanticCompatibility(link, diagnostics);
|
|
34421
34445
|
return diagnostics;
|
|
34422
34446
|
}
|
|
34447
|
+
validateRegisteredComponents(page, registry) {
|
|
34448
|
+
if (!registry) {
|
|
34449
|
+
return [];
|
|
34450
|
+
}
|
|
34451
|
+
return (page.widgets || []).flatMap((widget) => {
|
|
34452
|
+
const componentId = widget.definition?.id?.trim();
|
|
34453
|
+
if (!componentId) {
|
|
34454
|
+
return [];
|
|
34455
|
+
}
|
|
34456
|
+
const metadata = registry.get(componentId);
|
|
34457
|
+
if (!metadata) {
|
|
34458
|
+
return [this.createPageDiagnostic(`widget:${widget.key}:SEMANTIC_COMPONENT_NOT_REGISTERED`, 'SEMANTIC_COMPONENT_NOT_REGISTERED', 'error', `O componente ${componentId} do widget ${widget.key} nao esta registrado no host-alvo.`, {
|
|
34459
|
+
kind: 'widget',
|
|
34460
|
+
widgetKey: widget.key,
|
|
34461
|
+
widgetType: componentId,
|
|
34462
|
+
path: `widgets.${widget.key}.definition.id`,
|
|
34463
|
+
}, { componentId })];
|
|
34464
|
+
}
|
|
34465
|
+
if (metadata.component == null) {
|
|
34466
|
+
return [this.createPageDiagnostic(`widget:${widget.key}:SEMANTIC_COMPONENT_NOT_MATERIALIZABLE`, 'SEMANTIC_COMPONENT_NOT_MATERIALIZABLE', 'error', `O componente ${componentId} esta no catalogo, mas nao possui tipo Angular materializavel no host-alvo.`, {
|
|
34467
|
+
kind: 'widget',
|
|
34468
|
+
widgetKey: widget.key,
|
|
34469
|
+
widgetType: componentId,
|
|
34470
|
+
path: `widgets.${widget.key}.definition.id`,
|
|
34471
|
+
}, { componentId })];
|
|
34472
|
+
}
|
|
34473
|
+
return [];
|
|
34474
|
+
});
|
|
34475
|
+
}
|
|
34476
|
+
validateRegisteredTopLevelPorts(link, diagnostics, context) {
|
|
34477
|
+
if (!context.page || !context.registry) {
|
|
34478
|
+
return;
|
|
34479
|
+
}
|
|
34480
|
+
const endpoints = [link.from, link.to].filter((endpoint) => endpoint.kind === 'component-port' && !endpoint.ref.nestedPath?.length);
|
|
34481
|
+
const resolvedPorts = new Map();
|
|
34482
|
+
for (const endpoint of endpoints) {
|
|
34483
|
+
const side = endpoint === link.from ? 'from' : 'to';
|
|
34484
|
+
const widget = (context.page.widgets || []).find((candidate) => candidate.key === endpoint.ref.widget);
|
|
34485
|
+
if (!widget) {
|
|
34486
|
+
diagnostics.push(this.createDiagnostic(link, 'SEMANTIC_ENDPOINT_WIDGET_MISSING', 'error', `O widget ${endpoint.ref.widget} referenciado pelo link ${link.id} nao existe.`, this.topLevelEndpointSubject(link, endpoint), { endpoint: side }));
|
|
34487
|
+
continue;
|
|
34488
|
+
}
|
|
34489
|
+
const componentId = widget.definition.id;
|
|
34490
|
+
if (endpoint.ref.componentType && endpoint.ref.componentType !== componentId) {
|
|
34491
|
+
diagnostics.push(this.createDiagnostic(link, 'SEMANTIC_ENDPOINT_COMPONENT_TYPE_MISMATCH', 'error', `O componentType do endpoint ${side} do link ${link.id} nao corresponde ao widget resolvido.`, this.topLevelEndpointSubject(link, endpoint), {
|
|
34492
|
+
endpoint: side,
|
|
34493
|
+
expectedComponentType: endpoint.ref.componentType,
|
|
34494
|
+
actualComponentType: componentId,
|
|
34495
|
+
}));
|
|
34496
|
+
}
|
|
34497
|
+
const metadata = context.registry.get(componentId);
|
|
34498
|
+
if (!metadata) {
|
|
34499
|
+
continue;
|
|
34500
|
+
}
|
|
34501
|
+
const matchingPorts = (metadata.ports || []).filter((port) => port.id === endpoint.ref.port);
|
|
34502
|
+
if (!matchingPorts.length) {
|
|
34503
|
+
diagnostics.push(this.createDiagnostic(link, 'SEMANTIC_PORT_NOT_REGISTERED', 'error', `A porta ${endpoint.ref.port} do componente ${componentId} nao esta registrada no host-alvo.`, this.topLevelEndpointSubject(link, endpoint), {
|
|
34504
|
+
endpoint: side,
|
|
34505
|
+
componentId,
|
|
34506
|
+
availablePorts: (metadata.ports || []).map((port) => port.id),
|
|
34507
|
+
}));
|
|
34508
|
+
continue;
|
|
34509
|
+
}
|
|
34510
|
+
const port = matchingPorts.find((candidate) => candidate.direction === endpoint.ref.direction);
|
|
34511
|
+
if (!port) {
|
|
34512
|
+
diagnostics.push(this.createDiagnostic(link, 'SEMANTIC_PORT_REGISTERED_DIRECTION_MISMATCH', 'error', `A porta ${endpoint.ref.port} do componente ${componentId} existe, mas com direcao diferente.`, this.topLevelEndpointSubject(link, endpoint), {
|
|
34513
|
+
endpoint: side,
|
|
34514
|
+
componentId,
|
|
34515
|
+
expectedDirection: endpoint.ref.direction,
|
|
34516
|
+
availableDirections: matchingPorts.map((candidate) => candidate.direction),
|
|
34517
|
+
}));
|
|
34518
|
+
continue;
|
|
34519
|
+
}
|
|
34520
|
+
resolvedPorts.set(side, port);
|
|
34521
|
+
}
|
|
34522
|
+
const sourcePort = resolvedPorts.get('from');
|
|
34523
|
+
const targetPort = resolvedPorts.get('to');
|
|
34524
|
+
if (sourcePort && targetPort) {
|
|
34525
|
+
this.validateRegisteredPortCompatibility(link, sourcePort, targetPort, diagnostics);
|
|
34526
|
+
}
|
|
34527
|
+
}
|
|
34528
|
+
validateRegisteredPortCompatibility(link, source, target, diagnostics) {
|
|
34529
|
+
const effectiveSourceKind = link.transform?.output?.semanticKind ?? source.semanticKind;
|
|
34530
|
+
const compatibility = target.compatibility;
|
|
34531
|
+
const knownSourceKind = effectiveSourceKind in COMPATIBLE_TARGET_KINDS;
|
|
34532
|
+
const genericallyIncompatible = knownSourceKind
|
|
34533
|
+
&& !COMPATIBLE_TARGET_KINDS[effectiveSourceKind]
|
|
34534
|
+
.includes(target.semanticKind);
|
|
34535
|
+
const rejectsKind = compatibility?.rejectsSemanticKinds?.includes(effectiveSourceKind);
|
|
34536
|
+
const rejectsCardinality = !!(source.cardinality
|
|
34537
|
+
&& compatibility?.acceptsCardinality?.length
|
|
34538
|
+
&& !compatibility.acceptsCardinality.includes(source.cardinality));
|
|
34539
|
+
const doesNotAcceptKind = !!(compatibility?.acceptsSemanticKinds?.length
|
|
34540
|
+
&& !compatibility.acceptsSemanticKinds.includes(effectiveSourceKind));
|
|
34541
|
+
if (!genericallyIncompatible && !rejectsKind && !rejectsCardinality && !doesNotAcceptKind) {
|
|
34542
|
+
return;
|
|
34543
|
+
}
|
|
34544
|
+
diagnostics.push(this.createDiagnostic(link, 'SEMANTIC_PORT_CONTRACT_INCOMPATIBLE', 'error', `As portas ${source.id} e ${target.id} do link ${link.id} nao sao semanticamente compativeis.`, {
|
|
34545
|
+
kind: 'link',
|
|
34546
|
+
linkId: link.id,
|
|
34547
|
+
}, {
|
|
34548
|
+
sourceSemanticKind: source.semanticKind,
|
|
34549
|
+
effectiveSourceKind,
|
|
34550
|
+
targetSemanticKind: target.semanticKind,
|
|
34551
|
+
sourceCardinality: source.cardinality,
|
|
34552
|
+
targetCompatibility: compatibility,
|
|
34553
|
+
}));
|
|
34554
|
+
}
|
|
34423
34555
|
validateEndpointDirections(link, diagnostics) {
|
|
34424
34556
|
if (link.from.kind === 'component-port' && link.from.ref.direction !== 'output') {
|
|
34425
34557
|
diagnostics.push(this.createDiagnostic(link, 'SEMANTIC_PORT_DIRECTION_INVALID_SOURCE', 'error', `A origem do link ${link.id} precisa apontar para uma porta de saida.`, {
|
|
@@ -34806,6 +34938,30 @@ class CompositionValidatorService {
|
|
|
34806
34938
|
createdAt: new Date().toISOString(),
|
|
34807
34939
|
};
|
|
34808
34940
|
}
|
|
34941
|
+
createPageDiagnostic(id, code, severity, message, subject, details) {
|
|
34942
|
+
return {
|
|
34943
|
+
id,
|
|
34944
|
+
code,
|
|
34945
|
+
severity,
|
|
34946
|
+
phase: 'semantic-validation',
|
|
34947
|
+
message,
|
|
34948
|
+
summary: message,
|
|
34949
|
+
subject,
|
|
34950
|
+
details,
|
|
34951
|
+
source: 'semantic-validator',
|
|
34952
|
+
blocking: true,
|
|
34953
|
+
createdAt: new Date().toISOString(),
|
|
34954
|
+
};
|
|
34955
|
+
}
|
|
34956
|
+
topLevelEndpointSubject(link, endpoint) {
|
|
34957
|
+
return {
|
|
34958
|
+
kind: 'port',
|
|
34959
|
+
widgetKey: endpoint.ref.widget,
|
|
34960
|
+
widgetType: endpoint.ref.componentType,
|
|
34961
|
+
portId: endpoint.ref.port,
|
|
34962
|
+
linkId: link.id,
|
|
34963
|
+
};
|
|
34964
|
+
}
|
|
34809
34965
|
formatNestedPath(nestedPath) {
|
|
34810
34966
|
return JSON.stringify(nestedPath);
|
|
34811
34967
|
}
|
|
@@ -35494,12 +35650,31 @@ class LinkExecutorService {
|
|
|
35494
35650
|
this.jsonLogic = jsonLogic;
|
|
35495
35651
|
}
|
|
35496
35652
|
executeLink(link, context) {
|
|
35497
|
-
const diagnostics = [];
|
|
35498
35653
|
const snapshot = this.cloneSnapshot(context.snapshot.state);
|
|
35654
|
+
const stateBeforeExecution = this.cloneSnapshot(snapshot);
|
|
35655
|
+
try {
|
|
35656
|
+
return this.executeLinkInternal(link, context, snapshot);
|
|
35657
|
+
}
|
|
35658
|
+
catch (error) {
|
|
35659
|
+
const diagnostic = this.createDiagnostic(link, 'RUNTIME_LINK_EXECUTION_FAILED', 'error', 'A execucao do link falhou antes de concluir a entrega.', {
|
|
35660
|
+
errorName: error instanceof Error ? error.name : 'UnknownError',
|
|
35661
|
+
});
|
|
35662
|
+
return this.applyErrorPolicy(link, {
|
|
35663
|
+
status: 'failed',
|
|
35664
|
+
value: undefined,
|
|
35665
|
+
diagnostics: [diagnostic],
|
|
35666
|
+
snapshot,
|
|
35667
|
+
skippedReason: 'runtime-exception',
|
|
35668
|
+
}, stateBeforeExecution);
|
|
35669
|
+
}
|
|
35670
|
+
}
|
|
35671
|
+
executeLinkInternal(link, context, snapshot) {
|
|
35672
|
+
const stateBeforeExecution = this.cloneSnapshot(snapshot);
|
|
35673
|
+
const diagnostics = [];
|
|
35499
35674
|
const now = context.now || new Date().toISOString();
|
|
35500
35675
|
const sourceValue = this.resolveSourceValue(link.from, context, snapshot);
|
|
35501
35676
|
if (!this.matchesCondition(link, sourceValue, context, snapshot, diagnostics)) {
|
|
35502
|
-
|
|
35677
|
+
const result = {
|
|
35503
35678
|
status: diagnostics.some((item) => item.severity === 'error' || item.severity === 'fatal')
|
|
35504
35679
|
? 'failed'
|
|
35505
35680
|
: 'skipped',
|
|
@@ -35508,19 +35683,22 @@ class LinkExecutorService {
|
|
|
35508
35683
|
snapshot,
|
|
35509
35684
|
skippedReason: diagnostics.length ? 'condition-error' : 'condition-not-matched',
|
|
35510
35685
|
};
|
|
35686
|
+
return diagnostics.length
|
|
35687
|
+
? this.applyErrorPolicy(link, result, stateBeforeExecution)
|
|
35688
|
+
: result;
|
|
35511
35689
|
}
|
|
35512
35690
|
const transformResult = link.transform
|
|
35513
35691
|
? this.transforms.executePipeline(link.transform, this.buildTransformContext(context, snapshot, sourceValue))
|
|
35514
35692
|
: { value: sourceValue, diagnostics: [], failed: false };
|
|
35515
35693
|
diagnostics.push(...transformResult.diagnostics);
|
|
35516
35694
|
if (transformResult.failed) {
|
|
35517
|
-
return {
|
|
35695
|
+
return this.applyErrorPolicy(link, {
|
|
35518
35696
|
status: 'failed',
|
|
35519
35697
|
value: transformResult.value,
|
|
35520
35698
|
diagnostics,
|
|
35521
35699
|
snapshot,
|
|
35522
35700
|
skippedReason: 'transform-failed',
|
|
35523
|
-
};
|
|
35701
|
+
}, stateBeforeExecution);
|
|
35524
35702
|
}
|
|
35525
35703
|
let value = transformResult.value;
|
|
35526
35704
|
const missingResolution = this.resolveMissingValuePolicy(link, value);
|
|
@@ -35546,7 +35724,7 @@ class LinkExecutorService {
|
|
|
35546
35724
|
}
|
|
35547
35725
|
const delivery = this.deliverValue(link, value, snapshot, diagnostics);
|
|
35548
35726
|
if (!delivery) {
|
|
35549
|
-
return {
|
|
35727
|
+
return this.applyErrorPolicy(link, {
|
|
35550
35728
|
status: diagnostics.some((item) => item.severity === 'error' || item.severity === 'fatal')
|
|
35551
35729
|
? 'failed'
|
|
35552
35730
|
: 'skipped',
|
|
@@ -35554,7 +35732,7 @@ class LinkExecutorService {
|
|
|
35554
35732
|
diagnostics,
|
|
35555
35733
|
snapshot,
|
|
35556
35734
|
skippedReason: 'delivery-blocked',
|
|
35557
|
-
};
|
|
35735
|
+
}, stateBeforeExecution);
|
|
35558
35736
|
}
|
|
35559
35737
|
return {
|
|
35560
35738
|
status: diagnostics.some((item) => item.severity === 'error' || item.severity === 'fatal')
|
|
@@ -35566,6 +35744,64 @@ class LinkExecutorService {
|
|
|
35566
35744
|
delivery,
|
|
35567
35745
|
};
|
|
35568
35746
|
}
|
|
35747
|
+
applyErrorPolicy(link, result, stateBeforeDelivery) {
|
|
35748
|
+
const errorPolicy = link.policy?.errorPolicy ?? 'diagnostic';
|
|
35749
|
+
const causeCodes = result.diagnostics.map((diagnostic) => diagnostic.code);
|
|
35750
|
+
const causeNames = Array.from(new Set(result.diagnostics
|
|
35751
|
+
.map((diagnostic) => diagnostic.details?.['errorName'])
|
|
35752
|
+
.filter((name) => typeof name === 'string' && name.length > 0)));
|
|
35753
|
+
if (result.status !== 'failed') {
|
|
35754
|
+
return result;
|
|
35755
|
+
}
|
|
35756
|
+
if (errorPolicy === 'drop') {
|
|
35757
|
+
return {
|
|
35758
|
+
status: 'skipped',
|
|
35759
|
+
value: result.value,
|
|
35760
|
+
diagnostics: [
|
|
35761
|
+
this.createDiagnostic(link, 'RUNTIME_LINK_ERROR_DROPPED', 'warning', 'A entrega com falha foi descartada pela politica do link.', {
|
|
35762
|
+
errorPolicy,
|
|
35763
|
+
causeCodes,
|
|
35764
|
+
...(causeNames.length ? { causeNames } : {}),
|
|
35765
|
+
failedPhase: result.skippedReason,
|
|
35766
|
+
}),
|
|
35767
|
+
],
|
|
35768
|
+
snapshot: this.cloneSnapshot(stateBeforeDelivery),
|
|
35769
|
+
skippedReason: 'error-policy-drop',
|
|
35770
|
+
};
|
|
35771
|
+
}
|
|
35772
|
+
if (errorPolicy === 'halt-page') {
|
|
35773
|
+
const haltDiagnostic = this.createDiagnostic(link, 'RUNTIME_LINK_ERROR_HALTED_PAGE', 'fatal', 'A falha interrompeu a pagina conforme a politica do link.', {
|
|
35774
|
+
errorPolicy,
|
|
35775
|
+
causeCodes,
|
|
35776
|
+
...(causeNames.length ? { causeNames } : {}),
|
|
35777
|
+
failedPhase: result.skippedReason,
|
|
35778
|
+
});
|
|
35779
|
+
return {
|
|
35780
|
+
...result,
|
|
35781
|
+
status: 'failed',
|
|
35782
|
+
diagnostics: [...this.annotateDiagnostics(result.diagnostics, errorPolicy), haltDiagnostic],
|
|
35783
|
+
snapshot: this.cloneSnapshot(stateBeforeDelivery),
|
|
35784
|
+
delivery: undefined,
|
|
35785
|
+
skippedReason: 'error-policy-halt-page',
|
|
35786
|
+
};
|
|
35787
|
+
}
|
|
35788
|
+
return {
|
|
35789
|
+
...result,
|
|
35790
|
+
diagnostics: this.annotateDiagnostics(result.diagnostics, errorPolicy),
|
|
35791
|
+
snapshot: this.cloneSnapshot(stateBeforeDelivery),
|
|
35792
|
+
delivery: undefined,
|
|
35793
|
+
skippedReason: result.skippedReason,
|
|
35794
|
+
};
|
|
35795
|
+
}
|
|
35796
|
+
annotateDiagnostics(diagnostics, errorPolicy) {
|
|
35797
|
+
return diagnostics.map((diagnostic) => ({
|
|
35798
|
+
...diagnostic,
|
|
35799
|
+
details: {
|
|
35800
|
+
...(diagnostic.details || {}),
|
|
35801
|
+
errorPolicy,
|
|
35802
|
+
},
|
|
35803
|
+
}));
|
|
35804
|
+
}
|
|
35569
35805
|
resolveSourceValue(endpoint, context, snapshot) {
|
|
35570
35806
|
if (endpoint.kind === 'state') {
|
|
35571
35807
|
return this.readStatePath(snapshot, endpoint.ref.path, endpoint.ref.layer);
|
|
@@ -35627,9 +35863,9 @@ class LinkExecutorService {
|
|
|
35627
35863
|
details['jsonLogicCode'] = error.code;
|
|
35628
35864
|
}
|
|
35629
35865
|
else if (error instanceof Error) {
|
|
35630
|
-
details['
|
|
35866
|
+
details['errorName'] = error.name;
|
|
35631
35867
|
}
|
|
35632
|
-
diagnostics.push(this.createDiagnostic(link, 'RUNTIME_LINK_CONDITION_INVALID', '
|
|
35868
|
+
diagnostics.push(this.createDiagnostic(link, 'RUNTIME_LINK_CONDITION_INVALID', 'error', 'A condicao Json Logic do link falhou em runtime e foi tratada como falsa.', details));
|
|
35633
35869
|
return false;
|
|
35634
35870
|
}
|
|
35635
35871
|
}
|
|
@@ -35956,6 +36192,7 @@ class CompositionRuntimeEngine {
|
|
|
35956
36192
|
pathAccessor = new ConnectionManagerService();
|
|
35957
36193
|
nestedWidgetAccessor = new NestedWidgetConfigAccessor();
|
|
35958
36194
|
definition = null;
|
|
36195
|
+
haltedByLinkId = null;
|
|
35959
36196
|
now;
|
|
35960
36197
|
constructor(options = {}) {
|
|
35961
36198
|
this.now = options.now ?? (() => new Date().toISOString());
|
|
@@ -35966,6 +36203,7 @@ class CompositionRuntimeEngine {
|
|
|
35966
36203
|
this.compositionValidator = options.compositionValidator ?? new CompositionValidatorService();
|
|
35967
36204
|
}
|
|
35968
36205
|
bootstrap(definition) {
|
|
36206
|
+
this.haltedByLinkId = null;
|
|
35969
36207
|
this.definition = definition;
|
|
35970
36208
|
const generatedAt = this.now();
|
|
35971
36209
|
const stateSnapshot = this.materializeDerivedState(definition.state.primaryValues, definition);
|
|
@@ -36025,7 +36263,16 @@ class CompositionRuntimeEngine {
|
|
|
36025
36263
|
const matchedLinks = this.definition.links.filter((link) => matchesEndpoint(link.from, event.source));
|
|
36026
36264
|
const matchedLinkIds = matchedLinks.map((link) => link.id);
|
|
36027
36265
|
let workingState = cloneStateSnapshot(this.store.getSnapshot().state);
|
|
36028
|
-
const
|
|
36266
|
+
const persistentBootstrapDiagnostics = this.store.getSnapshot().diagnostics.filter((diagnostic) => isBlockingDiagnostic(diagnostic)
|
|
36267
|
+
&& (diagnostic.phase === 'semantic-validation'
|
|
36268
|
+
|| diagnostic.phase === 'runtime-bootstrap'));
|
|
36269
|
+
const runtimeDiagnostics = [
|
|
36270
|
+
...persistentBootstrapDiagnostics,
|
|
36271
|
+
...this.createNestedWidgetEventBridgeDiagnostics(event, matchedLinks, occurredAt),
|
|
36272
|
+
];
|
|
36273
|
+
if (this.haltedByLinkId && matchedLinks.length === 0) {
|
|
36274
|
+
runtimeDiagnostics.push(this.createPageHaltedDiagnostic(undefined, occurredAt));
|
|
36275
|
+
}
|
|
36029
36276
|
const blockedFeedbackDiagnostics = this.createFeedbackCycleBlockedDiagnostics(matchedLinks, occurredAt);
|
|
36030
36277
|
runtimeDiagnostics.push(...blockedFeedbackDiagnostics.values());
|
|
36031
36278
|
const linkResults = new Map();
|
|
@@ -36065,6 +36312,40 @@ class CompositionRuntimeEngine {
|
|
|
36065
36312
|
...endpointTraceDetails('target', link.to),
|
|
36066
36313
|
},
|
|
36067
36314
|
}));
|
|
36315
|
+
if (this.haltedByLinkId) {
|
|
36316
|
+
const haltedDiagnostic = this.createPageHaltedDiagnostic(link, occurredAt);
|
|
36317
|
+
const result = {
|
|
36318
|
+
status: 'skipped',
|
|
36319
|
+
value: event.payload,
|
|
36320
|
+
diagnostics: [haltedDiagnostic],
|
|
36321
|
+
snapshot: cloneStateSnapshot(workingState),
|
|
36322
|
+
skippedReason: 'page-halted',
|
|
36323
|
+
};
|
|
36324
|
+
runtimeDiagnostics.push(haltedDiagnostic);
|
|
36325
|
+
linkResults.set(link.id, result);
|
|
36326
|
+
trace.push(this.traceService.createEntry(event.eventId, sequence++, {
|
|
36327
|
+
timestamp: occurredAt,
|
|
36328
|
+
phase: 'delivery-skipped',
|
|
36329
|
+
linkId: link.id,
|
|
36330
|
+
subject: {
|
|
36331
|
+
kind: 'link',
|
|
36332
|
+
linkId: link.id,
|
|
36333
|
+
label: link.metadata?.label,
|
|
36334
|
+
},
|
|
36335
|
+
inputSnapshot: stateBefore,
|
|
36336
|
+
outputSnapshot: workingState,
|
|
36337
|
+
details: {
|
|
36338
|
+
status: 'skipped',
|
|
36339
|
+
skippedReason: 'page-halted',
|
|
36340
|
+
haltedByLinkId: this.haltedByLinkId,
|
|
36341
|
+
...endpointTraceDetails('source', link.from),
|
|
36342
|
+
...endpointTraceDetails('target', link.to),
|
|
36343
|
+
},
|
|
36344
|
+
diagnostics: [haltedDiagnostic.code],
|
|
36345
|
+
}));
|
|
36346
|
+
sequence = this.appendDiagnosticTraceEntries(trace, emittedDiagnosticIds, event.eventId, sequence, [haltedDiagnostic], link.id);
|
|
36347
|
+
continue;
|
|
36348
|
+
}
|
|
36068
36349
|
if (blockedFeedbackDiagnostic) {
|
|
36069
36350
|
trace.push(this.traceService.createEntry(event.eventId, sequence++, {
|
|
36070
36351
|
timestamp: occurredAt,
|
|
@@ -36120,6 +36401,9 @@ class CompositionRuntimeEngine {
|
|
|
36120
36401
|
workingState = cloneStateSnapshot(result.snapshot);
|
|
36121
36402
|
runtimeDiagnostics.push(...result.diagnostics);
|
|
36122
36403
|
linkResults.set(link.id, result);
|
|
36404
|
+
if (link.policy?.errorPolicy === 'halt-page' && result.status === 'failed') {
|
|
36405
|
+
this.haltedByLinkId = link.id;
|
|
36406
|
+
}
|
|
36123
36407
|
if (link.transform) {
|
|
36124
36408
|
trace.push(this.traceService.createEntry(event.eventId, sequence++, {
|
|
36125
36409
|
timestamp: occurredAt,
|
|
@@ -36184,22 +36468,28 @@ class CompositionRuntimeEngine {
|
|
|
36184
36468
|
sequence = this.appendDiagnosticTraceEntries(trace, emittedDiagnosticIds, event.eventId, sequence, materializedState.diagnostics.filter((item) => !runtimeDiagnostics.some((runtimeItem) => runtimeItem.id === item.id)));
|
|
36185
36469
|
const snapshot = this.store.applyCycle({
|
|
36186
36470
|
generatedAt: occurredAt,
|
|
36187
|
-
status:
|
|
36188
|
-
? '
|
|
36189
|
-
:
|
|
36471
|
+
status: this.haltedByLinkId
|
|
36472
|
+
? 'failed'
|
|
36473
|
+
: diagnostics.some(isBlockingDiagnostic)
|
|
36474
|
+
? 'degraded'
|
|
36475
|
+
: 'ready',
|
|
36190
36476
|
stateSnapshot: materializedState,
|
|
36191
36477
|
linkPatches: matchedLinks.map((link) => ({
|
|
36192
36478
|
linkId: link.id,
|
|
36193
36479
|
status: blockedFeedbackDiagnostics.has(link.id)
|
|
36194
36480
|
? 'skipped'
|
|
36195
36481
|
: linkResults.get(link.id)?.status,
|
|
36196
|
-
lastEventAt: linkResults.has(link.id) || blockedFeedbackDiagnostics.has(link.id)
|
|
36197
|
-
? occurredAt
|
|
36198
|
-
: undefined,
|
|
36199
36482
|
lastDispatchTraceId: linkResults.has(link.id) || blockedFeedbackDiagnostics.has(link.id)
|
|
36200
36483
|
? event.eventId
|
|
36201
36484
|
: undefined,
|
|
36202
|
-
|
|
36485
|
+
lastEventAt: linkResults.has(link.id) || blockedFeedbackDiagnostics.has(link.id)
|
|
36486
|
+
? occurredAt
|
|
36487
|
+
: undefined,
|
|
36488
|
+
...(!discardsDeliveryTelemetry(linkResults.get(link.id))
|
|
36489
|
+
? {
|
|
36490
|
+
lastDeliveredValuePreview: linkResults.get(link.id)?.value,
|
|
36491
|
+
}
|
|
36492
|
+
: {}),
|
|
36203
36493
|
diagnostics: blockedFeedbackDiagnostics.has(link.id)
|
|
36204
36494
|
? [blockedFeedbackDiagnostics.get(link.id)]
|
|
36205
36495
|
: linkResults.get(link.id)?.diagnostics,
|
|
@@ -36309,6 +36599,9 @@ class CompositionRuntimeEngine {
|
|
|
36309
36599
|
workingState = cloneStateSnapshot(result.snapshot);
|
|
36310
36600
|
linkResults.set(link.id, result);
|
|
36311
36601
|
diagnostics.push(...result.diagnostics);
|
|
36602
|
+
if (link.policy?.errorPolicy === 'halt-page' && result.status === 'failed') {
|
|
36603
|
+
this.haltedByLinkId = link.id;
|
|
36604
|
+
}
|
|
36312
36605
|
trace.push(this.traceService.createEntry('bootstrap', sequence++, {
|
|
36313
36606
|
timestamp: occurredAt,
|
|
36314
36607
|
phase: 'source-resolved',
|
|
@@ -36367,22 +36660,35 @@ class CompositionRuntimeEngine {
|
|
|
36367
36660
|
diagnostics: result.diagnostics.map((item) => item.code),
|
|
36368
36661
|
}));
|
|
36369
36662
|
sequence = this.appendDiagnosticTraceEntries(trace, emittedDiagnosticIds, 'bootstrap', sequence, result.diagnostics, link.id);
|
|
36663
|
+
if (this.haltedByLinkId) {
|
|
36664
|
+
break;
|
|
36665
|
+
}
|
|
36370
36666
|
}
|
|
36371
36667
|
const dedupedDiagnostics = uniqueDiagnosticsById(diagnostics);
|
|
36372
36668
|
return this.store.applyCycle({
|
|
36373
36669
|
generatedAt: occurredAt,
|
|
36374
|
-
status:
|
|
36670
|
+
status: this.haltedByLinkId
|
|
36671
|
+
? 'failed'
|
|
36672
|
+
: dedupedDiagnostics.some(isBlockingDiagnostic)
|
|
36673
|
+
? 'degraded'
|
|
36674
|
+
: 'ready',
|
|
36375
36675
|
stateSnapshot: {
|
|
36376
36676
|
...workingState,
|
|
36377
36677
|
changedPaths: [],
|
|
36378
36678
|
diagnostics: cloneDiagnostics(snapshot.state.diagnostics),
|
|
36379
36679
|
},
|
|
36380
|
-
linkPatches: hydrationLinks
|
|
36680
|
+
linkPatches: hydrationLinks
|
|
36681
|
+
.filter((link) => linkResults.has(link.id))
|
|
36682
|
+
.map((link) => ({
|
|
36381
36683
|
linkId: link.id,
|
|
36382
36684
|
status: linkResults.get(link.id)?.status ?? 'idle',
|
|
36383
36685
|
lastEventAt: occurredAt,
|
|
36384
36686
|
lastDispatchTraceId: 'bootstrap',
|
|
36385
|
-
|
|
36687
|
+
...(!discardsDeliveryTelemetry(linkResults.get(link.id))
|
|
36688
|
+
? {
|
|
36689
|
+
lastDeliveredValuePreview: linkResults.get(link.id)?.value,
|
|
36690
|
+
}
|
|
36691
|
+
: {}),
|
|
36386
36692
|
diagnostics: linkResults.get(link.id)?.diagnostics,
|
|
36387
36693
|
})),
|
|
36388
36694
|
diagnostics: dedupedDiagnostics,
|
|
@@ -36563,6 +36869,42 @@ class CompositionRuntimeEngine {
|
|
|
36563
36869
|
}
|
|
36564
36870
|
return blocked;
|
|
36565
36871
|
}
|
|
36872
|
+
createPageHaltedDiagnostic(link, occurredAt) {
|
|
36873
|
+
const linkId = link?.id;
|
|
36874
|
+
return {
|
|
36875
|
+
id: `${linkId || 'runtime'}:RUNTIME_PAGE_HALTED:${this.haltedByLinkId}`,
|
|
36876
|
+
code: 'RUNTIME_PAGE_HALTED',
|
|
36877
|
+
severity: 'fatal',
|
|
36878
|
+
phase: 'runtime-dispatch',
|
|
36879
|
+
message: 'A pagina permanece interrompida por uma falha de composicao. Um novo bootstrap e necessario.',
|
|
36880
|
+
summary: 'Dispatch bloqueado porque a pagina esta interrompida.',
|
|
36881
|
+
subject: link
|
|
36882
|
+
? {
|
|
36883
|
+
kind: 'link',
|
|
36884
|
+
linkId,
|
|
36885
|
+
label: link.metadata?.label,
|
|
36886
|
+
}
|
|
36887
|
+
: {
|
|
36888
|
+
kind: 'runtime-snapshot',
|
|
36889
|
+
label: 'page-halted',
|
|
36890
|
+
},
|
|
36891
|
+
related: this.haltedByLinkId
|
|
36892
|
+
? [{ kind: 'link', linkId: this.haltedByLinkId }]
|
|
36893
|
+
: undefined,
|
|
36894
|
+
details: {
|
|
36895
|
+
haltedByLinkId: this.haltedByLinkId,
|
|
36896
|
+
},
|
|
36897
|
+
source: 'runtime-engine',
|
|
36898
|
+
blocking: true,
|
|
36899
|
+
transient: true,
|
|
36900
|
+
createdAt: occurredAt,
|
|
36901
|
+
};
|
|
36902
|
+
}
|
|
36903
|
+
}
|
|
36904
|
+
function discardsDeliveryTelemetry(result) {
|
|
36905
|
+
return result?.skippedReason === 'error-policy-drop'
|
|
36906
|
+
|| result?.skippedReason === 'error-policy-halt-page'
|
|
36907
|
+
|| result?.skippedReason === 'page-halted';
|
|
36566
36908
|
}
|
|
36567
36909
|
function isComponentPortEndpoint(endpoint) {
|
|
36568
36910
|
return endpoint.kind === 'component-port';
|
|
@@ -37373,6 +37715,7 @@ class WidgetPageCompositionFactory {
|
|
|
37373
37715
|
const condition = rawLink['condition'];
|
|
37374
37716
|
const conditions = rawLink['conditions'];
|
|
37375
37717
|
const meta = rawLink['meta'];
|
|
37718
|
+
const policy = rawLink['policy'];
|
|
37376
37719
|
if (typeof condition === 'string') {
|
|
37377
37720
|
throw new Error(`WidgetPageCompositionFactory no longer accepts string condition in composition.links for '${id}'. Use canonical Json Logic in condition.`);
|
|
37378
37721
|
}
|
|
@@ -37390,6 +37733,20 @@ class WidgetPageCompositionFactory {
|
|
|
37390
37733
|
if (condition && !this.isJsonLogicLike(condition)) {
|
|
37391
37734
|
throw new Error(`WidgetPageCompositionFactory requires composition.links[].condition to be a canonical Json Logic expression for '${id}'.`);
|
|
37392
37735
|
}
|
|
37736
|
+
if (policy && typeof policy === 'object' && !Array.isArray(policy)) {
|
|
37737
|
+
const rawPolicy = policy;
|
|
37738
|
+
const delivery = rawPolicy['delivery'];
|
|
37739
|
+
const errorPolicy = rawPolicy['errorPolicy'];
|
|
37740
|
+
if (delivery !== undefined && delivery !== 'sync') {
|
|
37741
|
+
throw new Error(`WidgetPageCompositionFactory no longer accepts non-executable delivery '${String(delivery)}' for '${id}'. Composition dispatch is synchronously ordered; use delivery 'sync' or omit it.`);
|
|
37742
|
+
}
|
|
37743
|
+
if (errorPolicy !== undefined
|
|
37744
|
+
&& errorPolicy !== 'diagnostic'
|
|
37745
|
+
&& errorPolicy !== 'drop'
|
|
37746
|
+
&& errorPolicy !== 'halt-page') {
|
|
37747
|
+
throw new Error(`WidgetPageCompositionFactory requires a supported errorPolicy for '${id}': diagnostic, drop, or halt-page.`);
|
|
37748
|
+
}
|
|
37749
|
+
}
|
|
37393
37750
|
}
|
|
37394
37751
|
}
|
|
37395
37752
|
isJsonLogicLike(condition) {
|
|
@@ -44702,4 +45059,4 @@ function provideHookWhitelist(allowed) {
|
|
|
44702
45059
|
* Generated bundle index. Do not edit.
|
|
44703
45060
|
*/
|
|
44704
45061
|
|
|
44705
|
-
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, AnalyticsPresentationResolver, AnalyticsSchemaContractService, AnalyticsStatsRequestBuilderService, ApiConfigStorage, ApiEndpoint, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, BUILTIN_SHELL_PRESETS, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ComponentRuntimeProfileService, CompositionRuntimeFacade, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_TABLE_CONFIG, DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK, DOMAIN_CATALOG_CONTEXT_HINT_SCHEMA_VERSION, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DomainCatalogService, DomainKnowledgeService, DomainRuleService, DynamicFormService, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, EnterpriseRuntimeContextService, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_SURFACE_SERVICE, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NestedPortCatalogService, NestedWidgetConfigAccessor, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_ACTION_CONTROL_DEFAULTS, PRAXIS_ACTION_CONTROL_VARS, PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, PRAXIS_COLLECTION_EXPORT_PROVIDER, PRAXIS_COLLECTION_SEARCH_DEFAULTS, PRAXIS_COLLECTION_SEARCH_VARS, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_EXPORT_SECURITY_POLICY, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_OPTIONS, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_READY, PRAXIS_EXPORT_FORMULA_PREFIXES, PRAXIS_EXPORT_SECURITY_POLICY, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_JSON_LOGIC_OPERATORS, PRAXIS_LAYER_SCALE_DEFAULTS, PRAXIS_LAYER_SCALE_VARS, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_QUERY_FILTER_EXPRESSION_SCHEMA_VERSION, PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA, PRAXIS_RELATED_RESOURCE_OUTLET_PORTS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_THEME_SURFACE_DEFAULTS, PRAXIS_THEME_SURFACE_VARS, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SURFACE_DRAWER_BRIDGE, SURFACE_DRAWER_CONTENT_DATA, SURFACE_DRAWER_REF, SURFACE_NAVIGATION_I18N_CONFIG, SURFACE_NAVIGATION_I18N_NAMESPACE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetPageStateRuntimeService, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, assertPraxisCollectionExportArtifact, assertPraxisRuntimeComponentObservationSerializable, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildPraxisActionControlCss, buildPraxisCollectionSearchCss, buildPraxisEffectDistinctKey, buildPraxisLayerScaleCss, buildPraxisThemeSurfaceCss, buildSchemaId, buildSchemaIdStorageKeySegment, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getPraxisTableCellVisualizationConstraint, getPraxisTableCellVisualizationGuidance, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isDomainRuleSnapshotProblemResponse, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, materializeFormLayoutFromMetadata, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldAccessMetadata, normalizeFieldConstraints, normalizeFieldPresentation, normalizeFormConfig, normalizeFormLayoutItems, normalizeFormMetadata, normalizeGlobalActionRef$1 as normalizeGlobalActionRef, normalizeLayoutPolicy, normalizeLookupFilterRequest, normalizePath, normalizePraxisDataQueryContext, normalizePraxisEffectPolicy, normalizePraxisPresentationVisualization, normalizePraxisQueryFilterExpression, normalizePraxisQueryFilterNode, normalizeReactiveDeterminations, normalizeResourceAvailabilityReasonCode, normalizeResourceIdentityContract, normalizeStart, normalizeSurfaceOperationContext, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, projectGroupedCommandPartialRows, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisCollectionExportProvider, providePraxisDynamicPageMetadata, providePraxisEnterpriseRuntimeContext, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpCollectionExportProvider, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisIconDefaults, providePraxisJsonLogicOperator, providePraxisJsonLogicOperatorOverride, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRelatedResourceOutletMetadata, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsImplicitValuePresentation, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateSurfaceNavigationRejected, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|
|
45062
|
+
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, AnalyticsPresentationResolver, AnalyticsSchemaContractService, AnalyticsStatsRequestBuilderService, ApiConfigStorage, ApiEndpoint, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, BUILTIN_SHELL_PRESETS, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, ComponentRuntimeProfileService, CompositionRuntimeFacade, CompositionValidatorService, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_TABLE_CONFIG, DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK, DOMAIN_CATALOG_CONTEXT_HINT_SCHEMA_VERSION, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DomainCatalogService, DomainKnowledgeService, DomainRuleService, DynamicFormService, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, EnterpriseRuntimeContextService, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_SURFACE_SERVICE, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NestedPortCatalogService, NestedWidgetConfigAccessor, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_ACTION_CONTROL_DEFAULTS, PRAXIS_ACTION_CONTROL_VARS, PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, PRAXIS_COLLECTION_EXPORT_PROVIDER, PRAXIS_COLLECTION_SEARCH_DEFAULTS, PRAXIS_COLLECTION_SEARCH_VARS, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_EXPORT_SECURITY_POLICY, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_OPTIONS, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_READY, PRAXIS_EXPORT_FORMULA_PREFIXES, PRAXIS_EXPORT_SECURITY_POLICY, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_JSON_LOGIC_OPERATORS, PRAXIS_LAYER_SCALE_DEFAULTS, PRAXIS_LAYER_SCALE_VARS, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_QUERY_FILTER_EXPRESSION_SCHEMA_VERSION, PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA, PRAXIS_RELATED_RESOURCE_OUTLET_PORTS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_THEME_SURFACE_DEFAULTS, PRAXIS_THEME_SURFACE_VARS, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SURFACE_DRAWER_BRIDGE, SURFACE_DRAWER_CONTENT_DATA, SURFACE_DRAWER_REF, SURFACE_NAVIGATION_I18N_CONFIG, SURFACE_NAVIGATION_I18N_NAMESPACE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetPageStateRuntimeService, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, assertPraxisCollectionExportArtifact, assertPraxisRuntimeComponentObservationSerializable, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildPraxisActionControlCss, buildPraxisCollectionSearchCss, buildPraxisEffectDistinctKey, buildPraxisLayerScaleCss, buildPraxisThemeSurfaceCss, buildSchemaId, buildSchemaIdStorageKeySegment, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getPraxisTableCellVisualizationConstraint, getPraxisTableCellVisualizationGuidance, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isDomainRuleSnapshotProblemResponse, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, materializeFormLayoutFromMetadata, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldAccessMetadata, normalizeFieldConstraints, normalizeFieldPresentation, normalizeFormConfig, normalizeFormLayoutItems, normalizeFormMetadata, normalizeGlobalActionRef$1 as normalizeGlobalActionRef, normalizeLayoutPolicy, normalizeLookupFilterRequest, normalizePath, normalizePraxisDataQueryContext, normalizePraxisEffectPolicy, normalizePraxisPresentationVisualization, normalizePraxisQueryFilterExpression, normalizePraxisQueryFilterNode, normalizeReactiveDeterminations, normalizeResourceAvailabilityReasonCode, normalizeResourceIdentityContract, normalizeStart, normalizeSurfaceOperationContext, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, projectGroupedCommandPartialRows, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisCollectionExportProvider, providePraxisDynamicPageMetadata, providePraxisEnterpriseRuntimeContext, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpCollectionExportProvider, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisIconDefaults, providePraxisJsonLogicOperator, providePraxisJsonLogicOperatorOverride, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRelatedResourceOutletMetadata, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsImplicitValuePresentation, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateSurfaceNavigationRejected, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|