import { canonicalize } from "../../../contracts/query-keys.ts"; import { defineQueryInvalidationTopic } from "../../../contracts/query-invalidation.ts"; import { defineRestOperation } from "../../../contracts/api-operations.ts"; import { REFERENCE_RUNTIME_SCHEMA_CODECS } from "./reference-schemas.ts"; import { REFERENCE_BOUNDARY_MAPPERS } from "./reference-mapper.ts"; export const REFERENCE_FEATURE_ID = "reference-feature"; const REFERENCE_NAMESPACE = Object.freeze(["reference-resource", 1] as const); export const REFERENCE_RESOURCE_INVALIDATION_TOPIC = defineQueryInvalidationTopic("qinv.01k10f7m3w9p6r2c8v5n4x"); export const referenceQueryKeys = Object.freeze({ all: () => REFERENCE_NAMESPACE, list: (filters: Readonly = {}) => Object.freeze([...REFERENCE_NAMESPACE, "list", canonicalize(filters)]), detail: (resourceId: string) => Object.freeze([...REFERENCE_NAMESPACE, "detail", String(resourceId)]), }); export const REFERENCE_FEATURE_CONTRACT = Object.freeze({ featureId: REFERENCE_FEATURE_ID, runtimeSchemas: REFERENCE_RUNTIME_SCHEMA_CODECS, mappers: REFERENCE_BOUNDARY_MAPPERS, schemas: Object.freeze({ ReferenceResourceParams: Object.freeze({ schemaId: "ReferenceResourceParams", boundary: "route-params", owner: "feature-frontend-reference-feature-vertical-slice", runtime: "zod", schemaVersion: 1, direction: "REQUEST", unknownFieldPolicy: "REJECT_UNKNOWN", }), ReferenceResourceListQuery: Object.freeze({ schemaId: "ReferenceResourceListQuery", boundary: "route-search-api-request", owner: "feature-frontend-reference-feature-vertical-slice", runtime: "zod", schemaVersion: 1, direction: "REQUEST", unknownFieldPolicy: "REJECT_UNKNOWN", }), CreateReferenceResourceCommand: Object.freeze({ schemaId: "CreateReferenceResourceCommand", boundary: "api-request", owner: "feature-frontend-reference-feature-vertical-slice", runtime: "zod", schemaVersion: 1, direction: "REQUEST", unknownFieldPolicy: "REJECT_UNKNOWN", }), NoRequest: Object.freeze({ schemaId: "NoRequest", boundary: "api-request", owner: "feature-frontend-reference-feature-vertical-slice", runtime: "zod", schemaVersion: 1, direction: "REQUEST", unknownFieldPolicy: "REJECT_UNKNOWN", }), ReferenceResourceListPayload: Object.freeze({ schemaId: "ReferenceResourceListPayload", boundary: "api-response", owner: "feature-frontend-reference-feature-vertical-slice", runtime: "zod", schemaVersion: 1, direction: "RESPONSE", unknownFieldPolicy: "STRIP_UNKNOWN", }), ReferenceResourcePayload: Object.freeze({ schemaId: "ReferenceResourcePayload", boundary: "api-response", owner: "feature-frontend-reference-feature-vertical-slice", runtime: "zod", schemaVersion: 1, direction: "RESPONSE", unknownFieldPolicy: "STRIP_UNKNOWN", }), }), routes: Object.freeze({ REFERENCE_RESOURCE_LIST: Object.freeze({ routeId: "REFERENCE_RESOURCE_LIST", path: "/examples/reference-resources", paramsSchema: null, searchSchema: "ReferenceResourceListQuery", access: "integration-defined", loadingSurface: "reference-resource-list", errorSurface: "feature-boundary", chunkId: "route-reference-resources", title: "Reference feature", navigationLabel: "Reference feature", navigationOrder: 50, }), REFERENCE_RESOURCE_DETAIL: Object.freeze({ routeId: "REFERENCE_RESOURCE_DETAIL", path: "/examples/reference-resources/:resourceId", paramsSchema: "ReferenceResourceParams", searchSchema: null, access: "integration-defined", loadingSurface: "reference-resource-detail", errorSurface: "feature-boundary", chunkId: "route-reference-resource-detail", title: "Reference detail", navigationLabel: null, navigationOrder: null, }), REFERENCE_RESOURCE_FORM: Object.freeze({ routeId: "REFERENCE_RESOURCE_FORM", path: "/examples/reference-resources/new", paramsSchema: null, searchSchema: null, access: "integration-defined", loadingSurface: "reference-resource-form", errorSurface: "feature-boundary", chunkId: "route-reference-resource-form", title: "Reference form", navigationLabel: null, navigationOrder: null, }), REFERENCE_RESOURCE_STATUS: Object.freeze({ routeId: "REFERENCE_RESOURCE_STATUS", path: "/examples/reference-resources/status", paramsSchema: null, searchSchema: null, access: "integration-defined", loadingSurface: "reference-resource-status", errorSurface: "feature-boundary", chunkId: "route-reference-resource-status", title: "Reference status", navigationLabel: null, navigationOrder: null, }), }), routeRuntimeContracts: Object.freeze({ REFERENCE_RESOURCE_LIST: Object.freeze({ routeId: "REFERENCE_RESOURCE_LIST", moduleId: "reference-resource-page", paramsCodec: "none", searchCodec: "ReferenceResourceListQuery", }), REFERENCE_RESOURCE_DETAIL: Object.freeze({ routeId: "REFERENCE_RESOURCE_DETAIL", moduleId: "reference-resource-detail-page", paramsCodec: "ReferenceResourceParams", searchCodec: "none", }), REFERENCE_RESOURCE_FORM: Object.freeze({ routeId: "REFERENCE_RESOURCE_FORM", moduleId: "reference-resource-form-page", paramsCodec: "none", searchCodec: "none", }), REFERENCE_RESOURCE_STATUS: Object.freeze({ routeId: "REFERENCE_RESOURCE_STATUS", moduleId: "reference-resource-status-page", paramsCodec: "none", searchCodec: "none", }), }), apiOperations: Object.freeze({ LIST_REFERENCE_RESOURCES: defineRestOperation({ method: "GET", path: "/api/reference-resources", operationId: "LIST_REFERENCE_RESOURCES", auth: "external-session", timeoutMs: null, idempotency: "safe", retry: "runtime", requestSource: "search", requestSchema: "ReferenceResourceListQuery", responseSchema: "ReferenceResourceListPayload", owner: "feature-frontend-reference-feature-vertical-slice", contractVersion: 2, protocol: "REST", semantics: "QUERY", replayPolicy: "SAFE", idempotencyKeyPolicy: "NONE", mapperId: "ReferenceResourceListMapper", successStatuses: [200], responseMediaTypes: ["application/json"], maxResponseBytes: 262_144, providerId: "PRIMARY_API", authProfileId: "REFERENCE_EXTERNAL_BEARER", csrfProfileId: "NO_CSRF_BEARER", pathSchema: "NoRequest", pathParameterNames: [], maxEncodedSearchBytes: 4_096, }), CREATE_REFERENCE_RESOURCE: defineRestOperation({ method: "POST", path: "/api/reference-resources", operationId: "CREATE_REFERENCE_RESOURCE", auth: "external-session", timeoutMs: null, idempotency: "keyed", retry: "runtime", requestSource: "body", requestSchema: "CreateReferenceResourceCommand", responseSchema: "ReferenceResourcePayload", owner: "feature-frontend-reference-feature-vertical-slice", contractVersion: 2, protocol: "REST", semantics: "COMMAND", replayPolicy: "KEYED_COMMAND", idempotencyKeyPolicy: "REQUIRED", mapperId: "ReferenceResourceMapper", successStatuses: [200, 201], responseMediaTypes: ["application/json"], maxResponseBytes: 32_768, providerId: "PRIMARY_API", authProfileId: "REFERENCE_EXTERNAL_BEARER", csrfProfileId: "NO_CSRF_BEARER", pathSchema: "NoRequest", pathParameterNames: [], maxEncodedSearchBytes: 0, }), GET_REFERENCE_RESOURCE: defineRestOperation({ method: "GET", path: "/api/reference-resources/{resourceId}", operationId: "GET_REFERENCE_RESOURCE", auth: "external-session", timeoutMs: null, idempotency: "safe", retry: "runtime", requestSource: "none", requestSchema: "NoRequest", responseSchema: "ReferenceResourcePayload", owner: "feature-frontend-reference-feature-vertical-slice", contractVersion: 2, protocol: "REST", semantics: "QUERY", replayPolicy: "SAFE", idempotencyKeyPolicy: "NONE", mapperId: "ReferenceResourceMapper", successStatuses: [200], responseMediaTypes: ["application/json"], maxResponseBytes: 32_768, providerId: "PRIMARY_API", authProfileId: "REFERENCE_EXTERNAL_BEARER", csrfProfileId: "NO_CSRF_BEARER", pathSchema: "ReferenceResourceParams", pathParameterNames: ["resourceId"], maxEncodedSearchBytes: 0, }), }), queryRegistry: Object.freeze({ REFERENCE_RESOURCE: Object.freeze({ namespace: REFERENCE_NAMESPACE, serialization: "canonical-object-order", identity: "no-pii-token-or-raw-url", invalidation: "reference resource namespace after successful mutation", invalidationTopic: REFERENCE_RESOURCE_INVALIDATION_TOPIC, crossContext: "invalidate-only", version: 1, persistence: "disabled", }), }), } as const);