@uniformdev/canvas 19.14.1-alpha.11 → 19.14.1
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/index.d.ts +10 -1
- package/dist/index.esm.js +160 -0
- package/dist/index.js +163 -0
- package/dist/index.mjs +160 -0
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
@@ -7337,6 +7337,15 @@ declare function getComponentJsonPointer(ancestorsAndSelf: Array<ComponentLocati
|
|
7337
7337
|
withSlots?: boolean | undefined;
|
7338
7338
|
}): string;
|
7339
7339
|
|
7340
|
+
/** Writes colorized logs about composition fetch warnings or errors to the console */
|
7341
|
+
declare function logCompositionIssues(prefix: string, issues: CompositionIssue[], colour?: 'red' | 'green' | 'yellow' | 'white'): void;
|
7342
|
+
|
7343
|
+
/** Writes colorized logs about a composition API fetch to the console */
|
7344
|
+
declare function logCompositionResponse(compositionApiResponse: CompositionResolvedGetResponse, duration?: number): void;
|
7345
|
+
|
7346
|
+
/** Writes colorized logs about a route API response to the console */
|
7347
|
+
declare function logRouteResponse(response: RouteGetResponse, duration?: number): void;
|
7348
|
+
|
7340
7349
|
interface ContextualEditingWindowData {
|
7341
7350
|
framework?: ReadyMessage['framework'];
|
7342
7351
|
version?: ReadyMessage['version'];
|
@@ -7752,4 +7761,4 @@ declare function mapSlotToTestVariations(slot: ComponentInstance[] | undefined):
|
|
7752
7761
|
|
7753
7762
|
declare const CanvasClientError: typeof ApiClientError;
|
7754
7763
|
|
7755
|
-
export { AddComponentMessage, BatchEnhancer, BatchEntry, BatchInvalidationPayload, BindVariablesOptions, BindVariablesResult, BindVariablesToObjectOptions, CANVAS_DRAFT_STATE, CANVAS_ENRICHMENT_TAG_PARAM, CANVAS_INTENT_TAG_PARAM, CANVAS_LOCALE_TAG_PARAM, CANVAS_LOCALIZATION_SLOT, CANVAS_LOCALIZATION_TYPE, CANVAS_PERSONALIZATION_PARAM, CANVAS_PERSONALIZE_SLOT, CANVAS_PERSONALIZE_TYPE, CANVAS_PUBLISHED_STATE, CANVAS_TEST_SLOT, CANVAS_TEST_TYPE, CANVAS_TEST_VARIANT_PARAM, CanvasClient, CanvasClientError, CanvasDefinitions, Channel, ChannelMessage, ChannelSubscription, ChildEnhancerBuilder, ComponentDefinition, ComponentDefinitionDeleteParameters, ComponentDefinitionGetParameters, ComponentDefinitionGetResponse, ComponentDefinitionParameter, ComponentDefinitionPermission, ComponentDefinitionPutParameters, ComponentDefinitionSlot, ComponentDefinitionSlugSettings, ComponentDefinitionVariant, ComponentEnhancer, ComponentEnhancerFunction, ComponentEnhancerOptions, ComponentInstance, ComponentLocationReference, ComponentOverridability, ComponentOverride, ComponentOverrides, ComponentParameter, ComponentParameterContextualEditing, ComponentParameterEnhancer, ComponentParameterEnhancerFunction, ComponentParameterEnhancerOptions, CompositionDataDiagnostic, CompositionDeleteParameters, CompositionDiagnostics, CompositionGetByIdParameters, CompositionGetByNodeIdParameters, CompositionGetByNodePathParameters, CompositionGetBySlugParameters, CompositionGetListResponse, CompositionGetOrderBy, CompositionGetParameters, CompositionGetResponse, CompositionGetValidResponses, CompositionIssue, CompositionPatternIssue, CompositionPutParameters, CompositionRelationshipsClientOptions, CompositionRelationshipsDDefinitionGetResponse, CompositionRelationshipsDefinitionApi, CompositionRelationshipsDefinitionGetParameters, CompositionResolvedGetResponse, CompositionUIStatus, DataElementBindingIssue, DataElementConnectionDefinition, DataResolutionConfigIssue, DataResolutionOption, DataResolutionOptionNegative, DataResolutionOptionPositive, DataResolutionParameters, DataResourceDefinition, DataResourceDefinitions, DataResourceInputIssue, DataResourceIssue, DataResourceVariables, DataSource, DataSourceClient, DataSourceDeleteParameters, DataSourceGetParameters, DataSourceGetResponse, DataSourcePutParameters, DataSourcesGetParameters, DataSourcesGetResponse, DataType, DataTypeClient, DataTypeDeleteParameters, DataTypeGetParameters, DataTypeGetResponse, DataTypePutParameters, DataVariableDefinition, DismissPlaceholderMessage, EDGE_CACHE_DISABLED, EDGE_DEFAULT_CACHE_TTL, EDGE_DEFAULT_L2_CACHE_TTL_IN_HOURS, EDGE_MAX_CACHE_TTL, EDGE_MAX_L2_CACHE_TTL_IN_HOURS, EDGE_MIN_CACHE_TTL, EDGE_MIN_L2_CACHE_TTL_IN_HOURS, EMPTY_COMPOSITION, EnhancerBuilder, EnhancerContext, EnhancerError, EventNames, IN_CONTEXT_EDITOR_COMPONENT_END_ROLE, IN_CONTEXT_EDITOR_COMPONENT_START_ROLE, IN_CONTEXT_EDITOR_EMBED_SCRIPT_ID, IN_CONTEXT_EDITOR_QUERY_STRING_PARAM, IS_RENDERED_BY_UNIFORM_ATTRIBUTE, InvalidationPayload, InvalidationResult, LimitPolicy, LinkComponentParameterValue, LinkParamConfiguration, LinkParamValue, LinkParameterType, LinkTypeConfiguration, MessageHandler, MoveComponentMessage, NonProjectMapLinkParamValue, OverrideIssue, OverrideOptions, PLACEHOLDER_ID, PreviewEventBus, PreviewPanelSettings, ProjectMapLinkComponentParameterValue, ProjectMapLinkParamValue, ReadyMessage, ReportRenderedCompositionsMessage, ResolvedRouteGetResponse, RichTextBuiltInElement, RichTextBuiltInFormat, RichTextParamConfiguration, RichTextParamValue, RootComponentInstance, RouteDynamicInputs, RouteGetParameters, RouteGetResponse, RouteGetResponseComposition, RouteGetResponseEdgehancedComposition, RouteGetResponseNotFound, RouteGetResponseRedirect, SelectComponentMessage, SpecificProjectMap, SubscribeToCompositionOptions, TriggerCompositionActionMessage, UncachedCanvasClient, UniqueBatchEntries, UnsubscribeCallback, UpdateComponentParameterMessage, UpdateCompositionInternalMessage, UpdateCompositionMessage, UpdatePreviewSettingsMessage, UsageTrackingApi, UsageTrackingGetParameters, UsageTrackingGetResponse, UsageTrackingPostParameters, UsageTrackingPostResponse, WalkComponentTreeActions, bindVariables, bindVariablesToObject, compose, createBatchEnhancer, createCanvasChannel, createEventBus, createLimitPolicy, createUniformApiEnhancer, enhance, extractLocales, generateHash, getChannelName, getComponentJsonPointer, getComponentPath, isAddComponentMessage, isDismissPlaceholderMessage, isMovingComponentMessage, isReadyMessage, isReportRenderedCompositionsMessage, isSelectComponentMessage, isSystemComponentDefinition, isTriggerCompositionActionMessage, isUpdateComponentParameterMessage, isUpdateCompositionInternalMessage, isUpdateCompositionMessage, isUpdatePreviewSettingsMessage, localize, mapSlotToPersonalizedVariations, mapSlotToTestVariations, nullLimitPolicy, subscribeToComposition, unstable_CompositionRelationshipClient, unstable_RouteClient, walkComponentTree };
|
7764
|
+
export { AddComponentMessage, BatchEnhancer, BatchEntry, BatchInvalidationPayload, BindVariablesOptions, BindVariablesResult, BindVariablesToObjectOptions, CANVAS_DRAFT_STATE, CANVAS_ENRICHMENT_TAG_PARAM, CANVAS_INTENT_TAG_PARAM, CANVAS_LOCALE_TAG_PARAM, CANVAS_LOCALIZATION_SLOT, CANVAS_LOCALIZATION_TYPE, CANVAS_PERSONALIZATION_PARAM, CANVAS_PERSONALIZE_SLOT, CANVAS_PERSONALIZE_TYPE, CANVAS_PUBLISHED_STATE, CANVAS_TEST_SLOT, CANVAS_TEST_TYPE, CANVAS_TEST_VARIANT_PARAM, CanvasClient, CanvasClientError, CanvasDefinitions, Channel, ChannelMessage, ChannelSubscription, ChildEnhancerBuilder, ComponentDefinition, ComponentDefinitionDeleteParameters, ComponentDefinitionGetParameters, ComponentDefinitionGetResponse, ComponentDefinitionParameter, ComponentDefinitionPermission, ComponentDefinitionPutParameters, ComponentDefinitionSlot, ComponentDefinitionSlugSettings, ComponentDefinitionVariant, ComponentEnhancer, ComponentEnhancerFunction, ComponentEnhancerOptions, ComponentInstance, ComponentLocationReference, ComponentOverridability, ComponentOverride, ComponentOverrides, ComponentParameter, ComponentParameterContextualEditing, ComponentParameterEnhancer, ComponentParameterEnhancerFunction, ComponentParameterEnhancerOptions, CompositionDataDiagnostic, CompositionDeleteParameters, CompositionDiagnostics, CompositionGetByIdParameters, CompositionGetByNodeIdParameters, CompositionGetByNodePathParameters, CompositionGetBySlugParameters, CompositionGetListResponse, CompositionGetOrderBy, CompositionGetParameters, CompositionGetResponse, CompositionGetValidResponses, CompositionIssue, CompositionPatternIssue, CompositionPutParameters, CompositionRelationshipsClientOptions, CompositionRelationshipsDDefinitionGetResponse, CompositionRelationshipsDefinitionApi, CompositionRelationshipsDefinitionGetParameters, CompositionResolvedGetResponse, CompositionUIStatus, DataElementBindingIssue, DataElementConnectionDefinition, DataResolutionConfigIssue, DataResolutionOption, DataResolutionOptionNegative, DataResolutionOptionPositive, DataResolutionParameters, DataResourceDefinition, DataResourceDefinitions, DataResourceInputIssue, DataResourceIssue, DataResourceVariables, DataSource, DataSourceClient, DataSourceDeleteParameters, DataSourceGetParameters, DataSourceGetResponse, DataSourcePutParameters, DataSourcesGetParameters, DataSourcesGetResponse, DataType, DataTypeClient, DataTypeDeleteParameters, DataTypeGetParameters, DataTypeGetResponse, DataTypePutParameters, DataVariableDefinition, DismissPlaceholderMessage, EDGE_CACHE_DISABLED, EDGE_DEFAULT_CACHE_TTL, EDGE_DEFAULT_L2_CACHE_TTL_IN_HOURS, EDGE_MAX_CACHE_TTL, EDGE_MAX_L2_CACHE_TTL_IN_HOURS, EDGE_MIN_CACHE_TTL, EDGE_MIN_L2_CACHE_TTL_IN_HOURS, EMPTY_COMPOSITION, EnhancerBuilder, EnhancerContext, EnhancerError, EventNames, IN_CONTEXT_EDITOR_COMPONENT_END_ROLE, IN_CONTEXT_EDITOR_COMPONENT_START_ROLE, IN_CONTEXT_EDITOR_EMBED_SCRIPT_ID, IN_CONTEXT_EDITOR_QUERY_STRING_PARAM, IS_RENDERED_BY_UNIFORM_ATTRIBUTE, InvalidationPayload, InvalidationResult, LimitPolicy, LinkComponentParameterValue, LinkParamConfiguration, LinkParamValue, LinkParameterType, LinkTypeConfiguration, MessageHandler, MoveComponentMessage, NonProjectMapLinkParamValue, OverrideIssue, OverrideOptions, PLACEHOLDER_ID, PreviewEventBus, PreviewPanelSettings, ProjectMapLinkComponentParameterValue, ProjectMapLinkParamValue, ReadyMessage, ReportRenderedCompositionsMessage, ResolvedRouteGetResponse, RichTextBuiltInElement, RichTextBuiltInFormat, RichTextParamConfiguration, RichTextParamValue, RootComponentInstance, RouteDynamicInputs, RouteGetParameters, RouteGetResponse, RouteGetResponseComposition, RouteGetResponseEdgehancedComposition, RouteGetResponseNotFound, RouteGetResponseRedirect, SelectComponentMessage, SpecificProjectMap, SubscribeToCompositionOptions, TriggerCompositionActionMessage, UncachedCanvasClient, UniqueBatchEntries, UnsubscribeCallback, UpdateComponentParameterMessage, UpdateCompositionInternalMessage, UpdateCompositionMessage, UpdatePreviewSettingsMessage, UsageTrackingApi, UsageTrackingGetParameters, UsageTrackingGetResponse, UsageTrackingPostParameters, UsageTrackingPostResponse, WalkComponentTreeActions, bindVariables, bindVariablesToObject, compose, createBatchEnhancer, createCanvasChannel, createEventBus, createLimitPolicy, createUniformApiEnhancer, enhance, extractLocales, generateHash, getChannelName, getComponentJsonPointer, getComponentPath, isAddComponentMessage, isDismissPlaceholderMessage, isMovingComponentMessage, isReadyMessage, isReportRenderedCompositionsMessage, isSelectComponentMessage, isSystemComponentDefinition, isTriggerCompositionActionMessage, isUpdateComponentParameterMessage, isUpdateCompositionInternalMessage, isUpdateCompositionMessage, isUpdatePreviewSettingsMessage, localize, logCompositionIssues, logCompositionResponse, logRouteResponse, mapSlotToPersonalizedVariations, mapSlotToTestVariations, nullLimitPolicy, subscribeToComposition, unstable_CompositionRelationshipClient, unstable_RouteClient, walkComponentTree };
|
package/dist/index.esm.js
CHANGED
@@ -1264,6 +1264,163 @@ var UniqueBatchEntries = class {
|
|
1264
1264
|
}
|
1265
1265
|
};
|
1266
1266
|
|
1267
|
+
// src/logging/logCompositionIssues.ts
|
1268
|
+
import ansicolors from "ansi-colors";
|
1269
|
+
var { gray, green, italic, red, white, yellow } = ansicolors;
|
1270
|
+
function logCompositionIssues(prefix, issues, colour = "red") {
|
1271
|
+
const reversedIssues = [...issues].reverse();
|
1272
|
+
const colours = { red, green, yellow, white };
|
1273
|
+
console.error(
|
1274
|
+
`${colours[colour](prefix)}
|
1275
|
+
${reversedIssues.map(
|
1276
|
+
(issue) => `${colours[colour](">")} ${italic(gray(indent(issue.type.toUpperCase(), 7)))} ${renderIssue(issue)}`
|
1277
|
+
).join("\n")}`
|
1278
|
+
);
|
1279
|
+
}
|
1280
|
+
function renderIssue(issue) {
|
1281
|
+
var _a;
|
1282
|
+
let path;
|
1283
|
+
let type;
|
1284
|
+
let message = issue.message;
|
1285
|
+
let detail;
|
1286
|
+
if (issue.type !== "config") {
|
1287
|
+
path = issue.componentPath;
|
1288
|
+
type = issue.componentType;
|
1289
|
+
message = issue.message;
|
1290
|
+
}
|
1291
|
+
if (issue.type === "binding") {
|
1292
|
+
detail = `Binding expression: ${(_a = issue.expression) == null ? void 0 : _a.pointer}`;
|
1293
|
+
} else if (issue.type === "data") {
|
1294
|
+
detail = `Data resource name: ${issue.dataName}, data type: ${issue.dataType}`;
|
1295
|
+
}
|
1296
|
+
if (issue.type === "input") {
|
1297
|
+
detail = issue.inputName;
|
1298
|
+
}
|
1299
|
+
let result = `${white(blockify(message))}`;
|
1300
|
+
if (detail) {
|
1301
|
+
result += `
|
1302
|
+
${indent(" ", 10)}${gray(`${detail}`)}`;
|
1303
|
+
}
|
1304
|
+
if (path && type) {
|
1305
|
+
result += `
|
1306
|
+
${indent(" ", 10)}${gray(`Occurred on component ${type} at slot path ${path}`)}`;
|
1307
|
+
}
|
1308
|
+
return result;
|
1309
|
+
}
|
1310
|
+
function indent(str, len) {
|
1311
|
+
const indent2 = len != null ? len : 10;
|
1312
|
+
return str.padStart(indent2);
|
1313
|
+
}
|
1314
|
+
function blockify(str, len) {
|
1315
|
+
const indentSize = len != null ? len : 10;
|
1316
|
+
return str.split("\n").map((line, index) => index === 0 ? line : `${indent(" ", indentSize)}${line}`).join("\n");
|
1317
|
+
}
|
1318
|
+
|
1319
|
+
// src/logging/logCompositionResponse.ts
|
1320
|
+
import ansicolors2 from "ansi-colors";
|
1321
|
+
var { white: white2 } = ansicolors2;
|
1322
|
+
function logCompositionResponse(compositionApiResponse, duration) {
|
1323
|
+
var _a, _b;
|
1324
|
+
const resErrors = (_a = compositionApiResponse.errors) != null ? _a : [];
|
1325
|
+
const resWarnings = (_b = compositionApiResponse.warnings) != null ? _b : [];
|
1326
|
+
if (resErrors.length > 0) {
|
1327
|
+
logCompositionIssues(
|
1328
|
+
`Composition data error${resErrors.length === 1 ? "" : "s"}; some content may be missing`,
|
1329
|
+
resErrors,
|
1330
|
+
"red"
|
1331
|
+
);
|
1332
|
+
}
|
1333
|
+
if (resWarnings.length > 0) {
|
1334
|
+
logCompositionIssues(
|
1335
|
+
`Composition data warning${resWarnings.length === 1 ? "" : "s"}; some content may be missing`,
|
1336
|
+
resWarnings,
|
1337
|
+
"yellow"
|
1338
|
+
);
|
1339
|
+
}
|
1340
|
+
if (compositionApiResponse.diagnostics) {
|
1341
|
+
console.log(`
|
1342
|
+
Diagnostics`);
|
1343
|
+
const { compositionFetch, data } = compositionApiResponse.diagnostics;
|
1344
|
+
const table = {
|
1345
|
+
[`${white2("Composition")}`]: {
|
1346
|
+
"Duration (ms)": resolveDiagnosticsDuration(compositionFetch),
|
1347
|
+
"Edge Cached": compositionFetch == null ? void 0 : compositionFetch.cacheHit
|
1348
|
+
}
|
1349
|
+
};
|
1350
|
+
if (data) {
|
1351
|
+
data.forEach((d) => {
|
1352
|
+
table[d.dataName] = {
|
1353
|
+
"Duration (ms)": resolveDiagnosticsDuration(d.performance),
|
1354
|
+
"Edge Cached": d.performance.cacheHit,
|
1355
|
+
"Retry Count": d.performance.retryCount
|
1356
|
+
};
|
1357
|
+
});
|
1358
|
+
}
|
1359
|
+
table["Total Response"] = {
|
1360
|
+
"Duration (ms)": duration != null ? duration : "no data"
|
1361
|
+
};
|
1362
|
+
console.table(table);
|
1363
|
+
}
|
1364
|
+
}
|
1365
|
+
function resolveDiagnosticsDuration(data) {
|
1366
|
+
var _a, _b;
|
1367
|
+
if (!data) {
|
1368
|
+
return "no data";
|
1369
|
+
}
|
1370
|
+
return (_b = (_a = data.duration) != null ? _a : data.total) != null ? _b : "no data";
|
1371
|
+
}
|
1372
|
+
|
1373
|
+
// src/logging/logCompositionRouteResponse.ts
|
1374
|
+
import ansicolors3 from "ansi-colors";
|
1375
|
+
var { gray: gray2, green: green2, red: red2, yellow: yellow2 } = ansicolors3;
|
1376
|
+
function logRouteCompositionResponse(matched, duration) {
|
1377
|
+
var _a, _b;
|
1378
|
+
const resErrors = (_a = matched.compositionApiResponse.errors) != null ? _a : [];
|
1379
|
+
const resWarnings = (_b = matched.compositionApiResponse.warnings) != null ? _b : [];
|
1380
|
+
const colour = resErrors.length > 0 ? red2 : resWarnings.length > 0 ? yellow2 : green2;
|
1381
|
+
console.log(`${colour("Matched")} ${matched.type} ${matched.matchedRoute} (${duration}ms)`);
|
1382
|
+
if (matched.dynamicInputs) {
|
1383
|
+
const entries = Object.entries(matched.dynamicInputs);
|
1384
|
+
if (entries.length > 0) {
|
1385
|
+
console.log(
|
1386
|
+
` ${gray2("Matched dynamic inputs:\n ")}`,
|
1387
|
+
entries.map(([k, v]) => `${k}: ${v}`).join("\n ")
|
1388
|
+
);
|
1389
|
+
}
|
1390
|
+
}
|
1391
|
+
logCompositionResponse(matched.compositionApiResponse, duration);
|
1392
|
+
}
|
1393
|
+
|
1394
|
+
// src/logging/logNotFoundRouteResponse.ts
|
1395
|
+
import ansicolors4 from "ansi-colors";
|
1396
|
+
var { yellow: yellow3 } = ansicolors4;
|
1397
|
+
function logNotFoundRouteResponse(_matched, duration) {
|
1398
|
+
console.log(`${yellow3("Not found")} no project map or redirect path match (${duration}ms)`);
|
1399
|
+
}
|
1400
|
+
|
1401
|
+
// src/logging/logRedirectRouteResponse.ts
|
1402
|
+
import ansicolors5 from "ansi-colors";
|
1403
|
+
var { green: green3 } = ansicolors5;
|
1404
|
+
function logRedirectRouteResponse(matched, duration) {
|
1405
|
+
console.log(
|
1406
|
+
`${green3("Matched")} ${matched.type} ${matched.matchedRoute} (${duration}ms)
|
1407
|
+
Target: ${matched.redirect.targetUrl}`
|
1408
|
+
);
|
1409
|
+
}
|
1410
|
+
|
1411
|
+
// src/logging/logRouteResponse.ts
|
1412
|
+
function logRouteResponse(response, duration) {
|
1413
|
+
if (response.type === "redirect") {
|
1414
|
+
logRedirectRouteResponse(response, duration);
|
1415
|
+
return;
|
1416
|
+
}
|
1417
|
+
if (response.type === "notFound") {
|
1418
|
+
logNotFoundRouteResponse(response, duration);
|
1419
|
+
return;
|
1420
|
+
}
|
1421
|
+
logRouteCompositionResponse(response, duration);
|
1422
|
+
}
|
1423
|
+
|
1267
1424
|
// src/utils/hash.ts
|
1268
1425
|
var generateHash = ({
|
1269
1426
|
composition,
|
@@ -1767,6 +1924,9 @@ export {
|
|
1767
1924
|
isUpdateCompositionMessage,
|
1768
1925
|
isUpdatePreviewSettingsMessage,
|
1769
1926
|
localize,
|
1927
|
+
logCompositionIssues,
|
1928
|
+
logCompositionResponse,
|
1929
|
+
logRouteResponse,
|
1770
1930
|
mapSlotToPersonalizedVariations,
|
1771
1931
|
mapSlotToTestVariations,
|
1772
1932
|
nullLimitPolicy,
|
package/dist/index.js
CHANGED
@@ -338,6 +338,9 @@ __export(src_exports, {
|
|
338
338
|
isUpdateCompositionMessage: () => isUpdateCompositionMessage,
|
339
339
|
isUpdatePreviewSettingsMessage: () => isUpdatePreviewSettingsMessage,
|
340
340
|
localize: () => localize,
|
341
|
+
logCompositionIssues: () => logCompositionIssues,
|
342
|
+
logCompositionResponse: () => logCompositionResponse,
|
343
|
+
logRouteResponse: () => logRouteResponse,
|
341
344
|
mapSlotToPersonalizedVariations: () => mapSlotToPersonalizedVariations,
|
342
345
|
mapSlotToTestVariations: () => mapSlotToTestVariations,
|
343
346
|
nullLimitPolicy: () => nullLimitPolicy,
|
@@ -1347,6 +1350,163 @@ var UniqueBatchEntries = class {
|
|
1347
1350
|
}
|
1348
1351
|
};
|
1349
1352
|
|
1353
|
+
// src/logging/logCompositionIssues.ts
|
1354
|
+
var import_ansi_colors = __toESM(require("ansi-colors"));
|
1355
|
+
var { gray, green, italic, red, white, yellow } = import_ansi_colors.default;
|
1356
|
+
function logCompositionIssues(prefix, issues, colour = "red") {
|
1357
|
+
const reversedIssues = [...issues].reverse();
|
1358
|
+
const colours = { red, green, yellow, white };
|
1359
|
+
console.error(
|
1360
|
+
`${colours[colour](prefix)}
|
1361
|
+
${reversedIssues.map(
|
1362
|
+
(issue) => `${colours[colour](">")} ${italic(gray(indent(issue.type.toUpperCase(), 7)))} ${renderIssue(issue)}`
|
1363
|
+
).join("\n")}`
|
1364
|
+
);
|
1365
|
+
}
|
1366
|
+
function renderIssue(issue) {
|
1367
|
+
var _a;
|
1368
|
+
let path;
|
1369
|
+
let type;
|
1370
|
+
let message = issue.message;
|
1371
|
+
let detail;
|
1372
|
+
if (issue.type !== "config") {
|
1373
|
+
path = issue.componentPath;
|
1374
|
+
type = issue.componentType;
|
1375
|
+
message = issue.message;
|
1376
|
+
}
|
1377
|
+
if (issue.type === "binding") {
|
1378
|
+
detail = `Binding expression: ${(_a = issue.expression) == null ? void 0 : _a.pointer}`;
|
1379
|
+
} else if (issue.type === "data") {
|
1380
|
+
detail = `Data resource name: ${issue.dataName}, data type: ${issue.dataType}`;
|
1381
|
+
}
|
1382
|
+
if (issue.type === "input") {
|
1383
|
+
detail = issue.inputName;
|
1384
|
+
}
|
1385
|
+
let result = `${white(blockify(message))}`;
|
1386
|
+
if (detail) {
|
1387
|
+
result += `
|
1388
|
+
${indent(" ", 10)}${gray(`${detail}`)}`;
|
1389
|
+
}
|
1390
|
+
if (path && type) {
|
1391
|
+
result += `
|
1392
|
+
${indent(" ", 10)}${gray(`Occurred on component ${type} at slot path ${path}`)}`;
|
1393
|
+
}
|
1394
|
+
return result;
|
1395
|
+
}
|
1396
|
+
function indent(str, len) {
|
1397
|
+
const indent2 = len != null ? len : 10;
|
1398
|
+
return str.padStart(indent2);
|
1399
|
+
}
|
1400
|
+
function blockify(str, len) {
|
1401
|
+
const indentSize = len != null ? len : 10;
|
1402
|
+
return str.split("\n").map((line, index) => index === 0 ? line : `${indent(" ", indentSize)}${line}`).join("\n");
|
1403
|
+
}
|
1404
|
+
|
1405
|
+
// src/logging/logCompositionResponse.ts
|
1406
|
+
var import_ansi_colors2 = __toESM(require("ansi-colors"));
|
1407
|
+
var { white: white2 } = import_ansi_colors2.default;
|
1408
|
+
function logCompositionResponse(compositionApiResponse, duration) {
|
1409
|
+
var _a, _b;
|
1410
|
+
const resErrors = (_a = compositionApiResponse.errors) != null ? _a : [];
|
1411
|
+
const resWarnings = (_b = compositionApiResponse.warnings) != null ? _b : [];
|
1412
|
+
if (resErrors.length > 0) {
|
1413
|
+
logCompositionIssues(
|
1414
|
+
`Composition data error${resErrors.length === 1 ? "" : "s"}; some content may be missing`,
|
1415
|
+
resErrors,
|
1416
|
+
"red"
|
1417
|
+
);
|
1418
|
+
}
|
1419
|
+
if (resWarnings.length > 0) {
|
1420
|
+
logCompositionIssues(
|
1421
|
+
`Composition data warning${resWarnings.length === 1 ? "" : "s"}; some content may be missing`,
|
1422
|
+
resWarnings,
|
1423
|
+
"yellow"
|
1424
|
+
);
|
1425
|
+
}
|
1426
|
+
if (compositionApiResponse.diagnostics) {
|
1427
|
+
console.log(`
|
1428
|
+
Diagnostics`);
|
1429
|
+
const { compositionFetch, data } = compositionApiResponse.diagnostics;
|
1430
|
+
const table = {
|
1431
|
+
[`${white2("Composition")}`]: {
|
1432
|
+
"Duration (ms)": resolveDiagnosticsDuration(compositionFetch),
|
1433
|
+
"Edge Cached": compositionFetch == null ? void 0 : compositionFetch.cacheHit
|
1434
|
+
}
|
1435
|
+
};
|
1436
|
+
if (data) {
|
1437
|
+
data.forEach((d) => {
|
1438
|
+
table[d.dataName] = {
|
1439
|
+
"Duration (ms)": resolveDiagnosticsDuration(d.performance),
|
1440
|
+
"Edge Cached": d.performance.cacheHit,
|
1441
|
+
"Retry Count": d.performance.retryCount
|
1442
|
+
};
|
1443
|
+
});
|
1444
|
+
}
|
1445
|
+
table["Total Response"] = {
|
1446
|
+
"Duration (ms)": duration != null ? duration : "no data"
|
1447
|
+
};
|
1448
|
+
console.table(table);
|
1449
|
+
}
|
1450
|
+
}
|
1451
|
+
function resolveDiagnosticsDuration(data) {
|
1452
|
+
var _a, _b;
|
1453
|
+
if (!data) {
|
1454
|
+
return "no data";
|
1455
|
+
}
|
1456
|
+
return (_b = (_a = data.duration) != null ? _a : data.total) != null ? _b : "no data";
|
1457
|
+
}
|
1458
|
+
|
1459
|
+
// src/logging/logCompositionRouteResponse.ts
|
1460
|
+
var import_ansi_colors3 = __toESM(require("ansi-colors"));
|
1461
|
+
var { gray: gray2, green: green2, red: red2, yellow: yellow2 } = import_ansi_colors3.default;
|
1462
|
+
function logRouteCompositionResponse(matched, duration) {
|
1463
|
+
var _a, _b;
|
1464
|
+
const resErrors = (_a = matched.compositionApiResponse.errors) != null ? _a : [];
|
1465
|
+
const resWarnings = (_b = matched.compositionApiResponse.warnings) != null ? _b : [];
|
1466
|
+
const colour = resErrors.length > 0 ? red2 : resWarnings.length > 0 ? yellow2 : green2;
|
1467
|
+
console.log(`${colour("Matched")} ${matched.type} ${matched.matchedRoute} (${duration}ms)`);
|
1468
|
+
if (matched.dynamicInputs) {
|
1469
|
+
const entries = Object.entries(matched.dynamicInputs);
|
1470
|
+
if (entries.length > 0) {
|
1471
|
+
console.log(
|
1472
|
+
` ${gray2("Matched dynamic inputs:\n ")}`,
|
1473
|
+
entries.map(([k, v]) => `${k}: ${v}`).join("\n ")
|
1474
|
+
);
|
1475
|
+
}
|
1476
|
+
}
|
1477
|
+
logCompositionResponse(matched.compositionApiResponse, duration);
|
1478
|
+
}
|
1479
|
+
|
1480
|
+
// src/logging/logNotFoundRouteResponse.ts
|
1481
|
+
var import_ansi_colors4 = __toESM(require("ansi-colors"));
|
1482
|
+
var { yellow: yellow3 } = import_ansi_colors4.default;
|
1483
|
+
function logNotFoundRouteResponse(_matched, duration) {
|
1484
|
+
console.log(`${yellow3("Not found")} no project map or redirect path match (${duration}ms)`);
|
1485
|
+
}
|
1486
|
+
|
1487
|
+
// src/logging/logRedirectRouteResponse.ts
|
1488
|
+
var import_ansi_colors5 = __toESM(require("ansi-colors"));
|
1489
|
+
var { green: green3 } = import_ansi_colors5.default;
|
1490
|
+
function logRedirectRouteResponse(matched, duration) {
|
1491
|
+
console.log(
|
1492
|
+
`${green3("Matched")} ${matched.type} ${matched.matchedRoute} (${duration}ms)
|
1493
|
+
Target: ${matched.redirect.targetUrl}`
|
1494
|
+
);
|
1495
|
+
}
|
1496
|
+
|
1497
|
+
// src/logging/logRouteResponse.ts
|
1498
|
+
function logRouteResponse(response, duration) {
|
1499
|
+
if (response.type === "redirect") {
|
1500
|
+
logRedirectRouteResponse(response, duration);
|
1501
|
+
return;
|
1502
|
+
}
|
1503
|
+
if (response.type === "notFound") {
|
1504
|
+
logNotFoundRouteResponse(response, duration);
|
1505
|
+
return;
|
1506
|
+
}
|
1507
|
+
logRouteCompositionResponse(response, duration);
|
1508
|
+
}
|
1509
|
+
|
1350
1510
|
// src/utils/hash.ts
|
1351
1511
|
var generateHash = ({
|
1352
1512
|
composition,
|
@@ -1851,6 +2011,9 @@ var CanvasClientError = import_api6.ApiClientError;
|
|
1851
2011
|
isUpdateCompositionMessage,
|
1852
2012
|
isUpdatePreviewSettingsMessage,
|
1853
2013
|
localize,
|
2014
|
+
logCompositionIssues,
|
2015
|
+
logCompositionResponse,
|
2016
|
+
logRouteResponse,
|
1854
2017
|
mapSlotToPersonalizedVariations,
|
1855
2018
|
mapSlotToTestVariations,
|
1856
2019
|
nullLimitPolicy,
|
package/dist/index.mjs
CHANGED
@@ -1264,6 +1264,163 @@ var UniqueBatchEntries = class {
|
|
1264
1264
|
}
|
1265
1265
|
};
|
1266
1266
|
|
1267
|
+
// src/logging/logCompositionIssues.ts
|
1268
|
+
import ansicolors from "ansi-colors";
|
1269
|
+
var { gray, green, italic, red, white, yellow } = ansicolors;
|
1270
|
+
function logCompositionIssues(prefix, issues, colour = "red") {
|
1271
|
+
const reversedIssues = [...issues].reverse();
|
1272
|
+
const colours = { red, green, yellow, white };
|
1273
|
+
console.error(
|
1274
|
+
`${colours[colour](prefix)}
|
1275
|
+
${reversedIssues.map(
|
1276
|
+
(issue) => `${colours[colour](">")} ${italic(gray(indent(issue.type.toUpperCase(), 7)))} ${renderIssue(issue)}`
|
1277
|
+
).join("\n")}`
|
1278
|
+
);
|
1279
|
+
}
|
1280
|
+
function renderIssue(issue) {
|
1281
|
+
var _a;
|
1282
|
+
let path;
|
1283
|
+
let type;
|
1284
|
+
let message = issue.message;
|
1285
|
+
let detail;
|
1286
|
+
if (issue.type !== "config") {
|
1287
|
+
path = issue.componentPath;
|
1288
|
+
type = issue.componentType;
|
1289
|
+
message = issue.message;
|
1290
|
+
}
|
1291
|
+
if (issue.type === "binding") {
|
1292
|
+
detail = `Binding expression: ${(_a = issue.expression) == null ? void 0 : _a.pointer}`;
|
1293
|
+
} else if (issue.type === "data") {
|
1294
|
+
detail = `Data resource name: ${issue.dataName}, data type: ${issue.dataType}`;
|
1295
|
+
}
|
1296
|
+
if (issue.type === "input") {
|
1297
|
+
detail = issue.inputName;
|
1298
|
+
}
|
1299
|
+
let result = `${white(blockify(message))}`;
|
1300
|
+
if (detail) {
|
1301
|
+
result += `
|
1302
|
+
${indent(" ", 10)}${gray(`${detail}`)}`;
|
1303
|
+
}
|
1304
|
+
if (path && type) {
|
1305
|
+
result += `
|
1306
|
+
${indent(" ", 10)}${gray(`Occurred on component ${type} at slot path ${path}`)}`;
|
1307
|
+
}
|
1308
|
+
return result;
|
1309
|
+
}
|
1310
|
+
function indent(str, len) {
|
1311
|
+
const indent2 = len != null ? len : 10;
|
1312
|
+
return str.padStart(indent2);
|
1313
|
+
}
|
1314
|
+
function blockify(str, len) {
|
1315
|
+
const indentSize = len != null ? len : 10;
|
1316
|
+
return str.split("\n").map((line, index) => index === 0 ? line : `${indent(" ", indentSize)}${line}`).join("\n");
|
1317
|
+
}
|
1318
|
+
|
1319
|
+
// src/logging/logCompositionResponse.ts
|
1320
|
+
import ansicolors2 from "ansi-colors";
|
1321
|
+
var { white: white2 } = ansicolors2;
|
1322
|
+
function logCompositionResponse(compositionApiResponse, duration) {
|
1323
|
+
var _a, _b;
|
1324
|
+
const resErrors = (_a = compositionApiResponse.errors) != null ? _a : [];
|
1325
|
+
const resWarnings = (_b = compositionApiResponse.warnings) != null ? _b : [];
|
1326
|
+
if (resErrors.length > 0) {
|
1327
|
+
logCompositionIssues(
|
1328
|
+
`Composition data error${resErrors.length === 1 ? "" : "s"}; some content may be missing`,
|
1329
|
+
resErrors,
|
1330
|
+
"red"
|
1331
|
+
);
|
1332
|
+
}
|
1333
|
+
if (resWarnings.length > 0) {
|
1334
|
+
logCompositionIssues(
|
1335
|
+
`Composition data warning${resWarnings.length === 1 ? "" : "s"}; some content may be missing`,
|
1336
|
+
resWarnings,
|
1337
|
+
"yellow"
|
1338
|
+
);
|
1339
|
+
}
|
1340
|
+
if (compositionApiResponse.diagnostics) {
|
1341
|
+
console.log(`
|
1342
|
+
Diagnostics`);
|
1343
|
+
const { compositionFetch, data } = compositionApiResponse.diagnostics;
|
1344
|
+
const table = {
|
1345
|
+
[`${white2("Composition")}`]: {
|
1346
|
+
"Duration (ms)": resolveDiagnosticsDuration(compositionFetch),
|
1347
|
+
"Edge Cached": compositionFetch == null ? void 0 : compositionFetch.cacheHit
|
1348
|
+
}
|
1349
|
+
};
|
1350
|
+
if (data) {
|
1351
|
+
data.forEach((d) => {
|
1352
|
+
table[d.dataName] = {
|
1353
|
+
"Duration (ms)": resolveDiagnosticsDuration(d.performance),
|
1354
|
+
"Edge Cached": d.performance.cacheHit,
|
1355
|
+
"Retry Count": d.performance.retryCount
|
1356
|
+
};
|
1357
|
+
});
|
1358
|
+
}
|
1359
|
+
table["Total Response"] = {
|
1360
|
+
"Duration (ms)": duration != null ? duration : "no data"
|
1361
|
+
};
|
1362
|
+
console.table(table);
|
1363
|
+
}
|
1364
|
+
}
|
1365
|
+
function resolveDiagnosticsDuration(data) {
|
1366
|
+
var _a, _b;
|
1367
|
+
if (!data) {
|
1368
|
+
return "no data";
|
1369
|
+
}
|
1370
|
+
return (_b = (_a = data.duration) != null ? _a : data.total) != null ? _b : "no data";
|
1371
|
+
}
|
1372
|
+
|
1373
|
+
// src/logging/logCompositionRouteResponse.ts
|
1374
|
+
import ansicolors3 from "ansi-colors";
|
1375
|
+
var { gray: gray2, green: green2, red: red2, yellow: yellow2 } = ansicolors3;
|
1376
|
+
function logRouteCompositionResponse(matched, duration) {
|
1377
|
+
var _a, _b;
|
1378
|
+
const resErrors = (_a = matched.compositionApiResponse.errors) != null ? _a : [];
|
1379
|
+
const resWarnings = (_b = matched.compositionApiResponse.warnings) != null ? _b : [];
|
1380
|
+
const colour = resErrors.length > 0 ? red2 : resWarnings.length > 0 ? yellow2 : green2;
|
1381
|
+
console.log(`${colour("Matched")} ${matched.type} ${matched.matchedRoute} (${duration}ms)`);
|
1382
|
+
if (matched.dynamicInputs) {
|
1383
|
+
const entries = Object.entries(matched.dynamicInputs);
|
1384
|
+
if (entries.length > 0) {
|
1385
|
+
console.log(
|
1386
|
+
` ${gray2("Matched dynamic inputs:\n ")}`,
|
1387
|
+
entries.map(([k, v]) => `${k}: ${v}`).join("\n ")
|
1388
|
+
);
|
1389
|
+
}
|
1390
|
+
}
|
1391
|
+
logCompositionResponse(matched.compositionApiResponse, duration);
|
1392
|
+
}
|
1393
|
+
|
1394
|
+
// src/logging/logNotFoundRouteResponse.ts
|
1395
|
+
import ansicolors4 from "ansi-colors";
|
1396
|
+
var { yellow: yellow3 } = ansicolors4;
|
1397
|
+
function logNotFoundRouteResponse(_matched, duration) {
|
1398
|
+
console.log(`${yellow3("Not found")} no project map or redirect path match (${duration}ms)`);
|
1399
|
+
}
|
1400
|
+
|
1401
|
+
// src/logging/logRedirectRouteResponse.ts
|
1402
|
+
import ansicolors5 from "ansi-colors";
|
1403
|
+
var { green: green3 } = ansicolors5;
|
1404
|
+
function logRedirectRouteResponse(matched, duration) {
|
1405
|
+
console.log(
|
1406
|
+
`${green3("Matched")} ${matched.type} ${matched.matchedRoute} (${duration}ms)
|
1407
|
+
Target: ${matched.redirect.targetUrl}`
|
1408
|
+
);
|
1409
|
+
}
|
1410
|
+
|
1411
|
+
// src/logging/logRouteResponse.ts
|
1412
|
+
function logRouteResponse(response, duration) {
|
1413
|
+
if (response.type === "redirect") {
|
1414
|
+
logRedirectRouteResponse(response, duration);
|
1415
|
+
return;
|
1416
|
+
}
|
1417
|
+
if (response.type === "notFound") {
|
1418
|
+
logNotFoundRouteResponse(response, duration);
|
1419
|
+
return;
|
1420
|
+
}
|
1421
|
+
logRouteCompositionResponse(response, duration);
|
1422
|
+
}
|
1423
|
+
|
1267
1424
|
// src/utils/hash.ts
|
1268
1425
|
var generateHash = ({
|
1269
1426
|
composition,
|
@@ -1767,6 +1924,9 @@ export {
|
|
1767
1924
|
isUpdateCompositionMessage,
|
1768
1925
|
isUpdatePreviewSettingsMessage,
|
1769
1926
|
localize,
|
1927
|
+
logCompositionIssues,
|
1928
|
+
logCompositionResponse,
|
1929
|
+
logRouteResponse,
|
1770
1930
|
mapSlotToPersonalizedVariations,
|
1771
1931
|
mapSlotToTestVariations,
|
1772
1932
|
nullLimitPolicy,
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@uniformdev/canvas",
|
3
|
-
"version": "19.14.1
|
3
|
+
"version": "19.14.1",
|
4
4
|
"description": "Common functionality and types for Uniform Canvas",
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
6
6
|
"main": "./dist/index.js",
|
@@ -38,8 +38,8 @@
|
|
38
38
|
"pusher-js": "8.0.1"
|
39
39
|
},
|
40
40
|
"dependencies": {
|
41
|
-
"@uniformdev/context": "19.14.1
|
42
|
-
"
|
41
|
+
"@uniformdev/context": "19.14.1",
|
42
|
+
"ansi-colors": "^4.1.3",
|
43
43
|
"immer": "9.0.21"
|
44
44
|
},
|
45
45
|
"files": [
|
@@ -48,5 +48,5 @@
|
|
48
48
|
"publishConfig": {
|
49
49
|
"access": "public"
|
50
50
|
},
|
51
|
-
"gitHead": "
|
51
|
+
"gitHead": "edd5e3bb74b148c5b947109a794a3bab42384cb7"
|
52
52
|
}
|