536 lines
15 KiB
JSON
536 lines
15 KiB
JSON
{
|
|
"schemaVersion": 2,
|
|
"sourceDirectories": [
|
|
"src/application",
|
|
"src/presentation",
|
|
"src/domain"
|
|
],
|
|
"registries": [
|
|
{
|
|
"registryId": "FE-REG-ROUTE",
|
|
"path": "src/features/installed-feature-contracts.ts",
|
|
"exportName": "ROUTE_REGISTRY",
|
|
"owner": "feature-frontend-routing-release-recovery-runtime",
|
|
"keyField": "routeId",
|
|
"requiredFields": [
|
|
"routeId",
|
|
"path",
|
|
"layoutGroup",
|
|
"paramsSchema",
|
|
"searchSchema",
|
|
"access",
|
|
"loadingSurface",
|
|
"errorSurface",
|
|
"chunkId",
|
|
"title",
|
|
"navigationLabel",
|
|
"navigationOrder"
|
|
],
|
|
"fieldTypes": {
|
|
"routeId": "string",
|
|
"path": "string",
|
|
"layoutGroup": "string",
|
|
"paramsSchema": "string|null",
|
|
"searchSchema": "string|null",
|
|
"access": "string",
|
|
"loadingSurface": "string",
|
|
"errorSurface": "string",
|
|
"chunkId": "string",
|
|
"title": "string",
|
|
"navigationLabel": "string|null",
|
|
"navigationOrder": "integer|null"
|
|
},
|
|
"uniqueFields": ["routeId", "path", "chunkId"],
|
|
"allowedValues": {
|
|
"access": ["public", "session-required"],
|
|
"layoutGroup": ["PUBLIC", "STUDIO"],
|
|
"paramsSchema": [
|
|
null,
|
|
"NotFoundSplat",
|
|
"ReferenceResourceParams",
|
|
"TechLogExploreKindParams",
|
|
"TechLogSlugParams",
|
|
"TechLogVersionParams",
|
|
"TechLogDocumentIdParams",
|
|
"TechLogPublicationEventIdParams",
|
|
"TechLogStudioSplat"
|
|
],
|
|
"searchSchema": [
|
|
null,
|
|
"ReferenceResourceListQuery",
|
|
"TechLogHomeSearch",
|
|
"TechLogExploreSearch",
|
|
"TechLogExploreKindSearch",
|
|
"TechLogSearchQuery",
|
|
"TechLogCaseStateSearch"
|
|
],
|
|
"loadingSurface": [
|
|
"app-shell",
|
|
"example-page",
|
|
"reference-resource-list",
|
|
"reference-resource-detail",
|
|
"reference-resource-form",
|
|
"reference-resource-status",
|
|
"none"
|
|
],
|
|
"errorSurface": [
|
|
"route-boundary",
|
|
"feature-boundary",
|
|
"not-found"
|
|
]
|
|
},
|
|
"references": [
|
|
{
|
|
"field": "routeId",
|
|
"registryId": "FE-REG-ROUTE-RUNTIME",
|
|
"targetField": "routeId"
|
|
},
|
|
{
|
|
"field": "paramsSchema",
|
|
"registryId": "FE-REG-SCHEMA",
|
|
"targetField": "schemaId"
|
|
},
|
|
{
|
|
"field": "searchSchema",
|
|
"registryId": "FE-REG-SCHEMA",
|
|
"targetField": "schemaId"
|
|
}
|
|
],
|
|
"consumers": [
|
|
{
|
|
"path": "src/presentation/routes/app-router.tsx",
|
|
"token": "ROUTE_REGISTRY"
|
|
}
|
|
],
|
|
"breakingFields": [
|
|
"routeId",
|
|
"path",
|
|
"layoutGroup",
|
|
"paramsSchema",
|
|
"searchSchema",
|
|
"access",
|
|
"chunkId"
|
|
]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-ROUTE-RUNTIME",
|
|
"path": "src/features/installed-feature-contracts.ts",
|
|
"exportName": "ROUTE_RUNTIME_CONTRACT",
|
|
"owner": "feature-frontend-routing-release-recovery-runtime",
|
|
"keyField": "routeId",
|
|
"requiredFields": [
|
|
"routeId",
|
|
"moduleId",
|
|
"paramsCodec",
|
|
"searchCodec"
|
|
],
|
|
"fieldTypes": {
|
|
"routeId": "string",
|
|
"moduleId": "string",
|
|
"paramsCodec": "string",
|
|
"searchCodec": "string"
|
|
},
|
|
"uniqueFields": ["routeId", "moduleId"],
|
|
"references": [
|
|
{
|
|
"field": "routeId",
|
|
"registryId": "FE-REG-ROUTE",
|
|
"targetField": "routeId"
|
|
},
|
|
{
|
|
"field": "paramsCodec",
|
|
"registryId": "FE-REG-SCHEMA",
|
|
"targetField": "schemaId"
|
|
},
|
|
{
|
|
"field": "searchCodec",
|
|
"registryId": "FE-REG-SCHEMA",
|
|
"targetField": "schemaId"
|
|
}
|
|
],
|
|
"consumers": [
|
|
{
|
|
"path": "src/presentation/routes/route-codecs.ts",
|
|
"token": "ROUTE_RUNTIME_CONTRACT"
|
|
}
|
|
],
|
|
"breakingFields": [
|
|
"routeId",
|
|
"moduleId",
|
|
"paramsCodec",
|
|
"searchCodec"
|
|
]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-API",
|
|
"path": "src/features/installed-feature-contracts.ts",
|
|
"exportName": "API_OPERATIONS",
|
|
"owner": "feature-frontend-api-client-response-envelope-contract",
|
|
"keyField": "operationId",
|
|
"requiredFields": [
|
|
"method",
|
|
"path",
|
|
"operationId",
|
|
"auth",
|
|
"timeoutMs",
|
|
"idempotency",
|
|
"retry",
|
|
"requestSource",
|
|
"requestSchema",
|
|
"responseSchema",
|
|
"owner"
|
|
],
|
|
"fieldTypes": {
|
|
"method": "string",
|
|
"path": "string",
|
|
"operationId": "string",
|
|
"auth": "string",
|
|
"timeoutMs": "integer|null",
|
|
"idempotency": "string",
|
|
"retry": "string",
|
|
"requestSource": "string",
|
|
"requestSchema": "string",
|
|
"responseSchema": "string",
|
|
"owner": "string"
|
|
},
|
|
"uniqueFields": ["operationId"],
|
|
"allowedValues": {
|
|
"method": ["GET", "POST", "PUT", "PATCH", "DELETE"],
|
|
"auth": ["none", "external-session"],
|
|
"idempotency": ["safe", "keyed", "none"],
|
|
"retry": ["runtime", "never"],
|
|
"requestSource": ["none", "search", "body"]
|
|
},
|
|
"references": [
|
|
{
|
|
"field": "requestSchema",
|
|
"registryId": "FE-REG-SCHEMA",
|
|
"targetField": "schemaId"
|
|
},
|
|
{
|
|
"field": "responseSchema",
|
|
"registryId": "FE-REG-SCHEMA",
|
|
"targetField": "schemaId"
|
|
}
|
|
],
|
|
"consumerIdentityField": "operationId",
|
|
"consumerDirectories": [
|
|
"src/features/reference-feature/adapters",
|
|
"src/features/reference-feature/application"
|
|
],
|
|
"breakingFields": [
|
|
"method",
|
|
"path",
|
|
"operationId",
|
|
"auth",
|
|
"idempotency",
|
|
"requestSource",
|
|
"requestSchema",
|
|
"responseSchema"
|
|
]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-SCHEMA",
|
|
"path": "src/features/installed-feature-contracts.ts",
|
|
"exportName": "SCHEMA_REGISTRY",
|
|
"owner": "feature-frontend-contract-schema-registry",
|
|
"keyField": "schemaId",
|
|
"requiredFields": ["schemaId", "boundary", "owner", "runtime"],
|
|
"fieldTypes": {
|
|
"schemaId": "string",
|
|
"boundary": "string",
|
|
"owner": "string",
|
|
"runtime": "string"
|
|
},
|
|
"uniqueFields": ["schemaId"],
|
|
"allowedValues": {
|
|
"boundary": [
|
|
"route-params",
|
|
"route-search",
|
|
"route-search-api-request",
|
|
"api-request",
|
|
"api-response"
|
|
],
|
|
"runtime": ["zod"]
|
|
},
|
|
"consumerIdentityField": "schemaId",
|
|
"consumerDirectories": [
|
|
"src/presentation/routes",
|
|
"src/features/reference-feature/presentation",
|
|
"src/features/reference-feature/contracts"
|
|
],
|
|
"breakingFields": ["schemaId", "boundary", "runtime"]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-ENV",
|
|
"path": "src/contracts/env.ts",
|
|
"exportName": "ENV_REGISTRY",
|
|
"owner": "feature-frontend-env-runtime-config-contract",
|
|
"requiredFields": ["phase", "classification", "required", "defaultValue"],
|
|
"fieldTypes": {
|
|
"phase": "string",
|
|
"classification": "string",
|
|
"required": "boolean",
|
|
"defaultValue": "string|integer|boolean|null"
|
|
},
|
|
"allowedValues": {
|
|
"phase": ["build", "runtime"],
|
|
"classification": [
|
|
"public",
|
|
"public-sensitive",
|
|
"public-metadata",
|
|
"compile-time"
|
|
]
|
|
},
|
|
"consumers": [
|
|
{
|
|
"path": "src/bootstrap/runtime-config-schema.ts",
|
|
"token": "APP_ENV"
|
|
},
|
|
{
|
|
"path": "src/contracts/env.ts",
|
|
"token": "getBuildConfig"
|
|
}
|
|
],
|
|
"breakingFields": ["phase", "classification", "required"]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-STORAGE",
|
|
"path": "src/contracts/storage-keys.ts",
|
|
"exportName": "STORAGE_REGISTRY",
|
|
"owner": "feature-frontend-storage-registry-contract",
|
|
"keyField": "logicalName",
|
|
"requiredFields": [
|
|
"logicalName",
|
|
"physicalKey",
|
|
"backend",
|
|
"classification",
|
|
"schemaVersion",
|
|
"valueCodec",
|
|
"ttl",
|
|
"migration",
|
|
"quotaFallback"
|
|
],
|
|
"fieldTypes": {
|
|
"logicalName": "string",
|
|
"physicalKey": "string",
|
|
"backend": "string",
|
|
"classification": "string",
|
|
"schemaVersion": "integer",
|
|
"valueCodec": "string",
|
|
"ttl": "integer|string|null",
|
|
"migration": "string",
|
|
"quotaFallback": "string"
|
|
},
|
|
"uniqueFields": ["logicalName", "physicalKey"],
|
|
"allowedValues": {
|
|
"backend": [
|
|
"memory",
|
|
"sessionStorage",
|
|
"localStorage",
|
|
"disabled",
|
|
"forbidden"
|
|
],
|
|
"classification": [
|
|
"public-preference",
|
|
"opaque-cache",
|
|
"sensitive-forbidden"
|
|
],
|
|
"valueCodec": [
|
|
"color-scheme-v1",
|
|
"opaque-string-v1",
|
|
"none"
|
|
],
|
|
"migration": ["discard"],
|
|
"quotaFallback": ["memory", "no-persist", "feature-disable"]
|
|
},
|
|
"consumerIdentityField": "logicalName",
|
|
"consumerDirectories": ["src", "tests"],
|
|
"orphanExemptRows": ["QUERY_PERSISTENCE", "AUTH_TOKEN"],
|
|
"breakingFields": [
|
|
"logicalName",
|
|
"physicalKey",
|
|
"backend",
|
|
"classification",
|
|
"schemaVersion",
|
|
"valueCodec",
|
|
"migration"
|
|
]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-ERROR",
|
|
"path": "src/contracts/errors.ts",
|
|
"exportName": "ERROR_REGISTRY",
|
|
"owner": "feature-frontend-error-classification-boundary-contract",
|
|
"keyField": "kind",
|
|
"requiredFields": [
|
|
"kind",
|
|
"defaultRetryable",
|
|
"severity",
|
|
"userMessageKey",
|
|
"action",
|
|
"telemetryEvent",
|
|
"redaction"
|
|
],
|
|
"fieldTypes": {
|
|
"kind": "string",
|
|
"defaultRetryable": "boolean",
|
|
"severity": "string",
|
|
"userMessageKey": "string",
|
|
"action": "string",
|
|
"telemetryEvent": "string",
|
|
"redaction": "array"
|
|
},
|
|
"uniqueFields": ["kind"],
|
|
"allowedValues": {
|
|
"severity": ["info", "warning", "error"],
|
|
"action": [
|
|
"retry",
|
|
"reauth",
|
|
"navigate",
|
|
"reload-once",
|
|
"contact-support",
|
|
"none"
|
|
]
|
|
},
|
|
"consumers": [
|
|
{
|
|
"path": "src/adapters/http/client.ts",
|
|
"token": "failure("
|
|
}
|
|
],
|
|
"breakingFields": ["kind", "userMessageKey", "action", "telemetryEvent"]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-QUERY-INVALIDATION",
|
|
"path": "src/features/installed-feature-contracts.ts",
|
|
"exportName": "INVALIDATION_REGISTRY",
|
|
"rowsPath": "edges",
|
|
"rowKeyFields": [
|
|
"topicId",
|
|
"namespace.namespaceId",
|
|
"namespace.namespaceVersion"
|
|
],
|
|
"owner": "feature-frontend-server-state-caching-contract",
|
|
"requiredFields": [
|
|
"topicId",
|
|
"namespace.namespaceId",
|
|
"namespace.namespaceVersion"
|
|
],
|
|
"fieldTypes": {
|
|
"topicId": "string",
|
|
"namespace.namespaceId": "string",
|
|
"namespace.namespaceVersion": "integer"
|
|
},
|
|
"uniqueFieldSets": [
|
|
[
|
|
"topicId",
|
|
"namespace.namespaceId",
|
|
"namespace.namespaceVersion"
|
|
]
|
|
],
|
|
"snapshotProjection": {
|
|
"singletonRowKey": "invalidation-graph",
|
|
"canonicalArrayKeyFields": {
|
|
"topics": ["$value"],
|
|
"namespaces": ["namespaceId", "namespaceVersion"],
|
|
"edges": [
|
|
"topicId",
|
|
"namespace.namespaceId",
|
|
"namespace.namespaceVersion"
|
|
]
|
|
}
|
|
},
|
|
"consumers": [
|
|
{
|
|
"path": "src/bootstrap/runtime-adapters.ts",
|
|
"token": "indexInvalidationRegistry(INVALIDATION_REGISTRY)"
|
|
}
|
|
],
|
|
"breakingFields": ["topics", "namespaces", "edges"]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-QUERY-INVALIDATION-TOPIC-VERSION",
|
|
"path": "src/features/installed-feature-contracts.ts",
|
|
"exportName": "INVALIDATION_TOPIC_VERSIONS",
|
|
"rowKeyFields": ["topicId"],
|
|
"owner": "feature-frontend-server-state-caching-contract",
|
|
"requiredFields": ["topicId", "topicVersion"],
|
|
"fieldTypes": {
|
|
"topicId": "string",
|
|
"topicVersion": "integer"
|
|
},
|
|
"uniqueFields": ["topicId"],
|
|
"consumers": [
|
|
{
|
|
"path": "src/bootstrap/runtime-adapters.ts",
|
|
"token": "indexInvalidationTopicVersions("
|
|
}
|
|
],
|
|
"breakingFields": ["topicId", "topicVersion"]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-TELEMETRY",
|
|
"path": "src/contracts/telemetry.ts",
|
|
"exportName": "TELEMETRY_REGISTRY",
|
|
"owner": "feature-frontend-diagnostics-telemetry-runtime",
|
|
"keyField": "eventName",
|
|
"requiredFields": [
|
|
"eventName",
|
|
"trigger",
|
|
"requiredAttributes",
|
|
"optionalAttributes",
|
|
"forbiddenAttributes",
|
|
"sampling",
|
|
"delivery"
|
|
],
|
|
"fieldTypes": {
|
|
"eventName": "string",
|
|
"trigger": "string",
|
|
"requiredAttributes": "array",
|
|
"optionalAttributes": "array",
|
|
"forbiddenAttributes": "array",
|
|
"sampling": "string",
|
|
"delivery": "string"
|
|
},
|
|
"uniqueFields": ["eventName"],
|
|
"allowedValues": {
|
|
"delivery": ["best-effort"]
|
|
},
|
|
"consumers": [
|
|
{
|
|
"path": "scripts/check-diagnostics.ts",
|
|
"token": "TELEMETRY_REGISTRY"
|
|
}
|
|
],
|
|
"breakingFields": [
|
|
"eventName",
|
|
"requiredAttributes",
|
|
"forbiddenAttributes",
|
|
"delivery"
|
|
]
|
|
},
|
|
{
|
|
"registryId": "FE-REG-RELEASE",
|
|
"path": "src/contracts/release-tokens.ts",
|
|
"exportName": "RELEASE_TOKEN_REGISTRY",
|
|
"owner": "feature-frontend-release-cache-rollback-contract",
|
|
"keyField": "token",
|
|
"requiredFields": ["token", "source", "compatibilityRole"],
|
|
"fieldTypes": {
|
|
"token": "string",
|
|
"source": "string",
|
|
"compatibilityRole": "string"
|
|
},
|
|
"uniqueFields": ["token"],
|
|
"consumers": [
|
|
{
|
|
"path": "src/bootstrap/load-release-manifest.ts",
|
|
"token": "assetManifestHash"
|
|
}
|
|
],
|
|
"breakingFields": ["token", "source", "compatibilityRole"]
|
|
}
|
|
]
|
|
}
|