149 lines
5.1 KiB
JavaScript
149 lines
5.1 KiB
JavaScript
import { canonicalize } from "../../../contracts/query-keys.js";
|
|
|
|
export const REFERENCE_FEATURE_ID = "reference-feature";
|
|
const REFERENCE_NAMESPACE = Object.freeze(["reference-resource", 1]);
|
|
|
|
export const referenceQueryKeys = Object.freeze({
|
|
all: () => REFERENCE_NAMESPACE,
|
|
list: (filters = {}) =>
|
|
Object.freeze([...REFERENCE_NAMESPACE, "list", canonicalize(filters)]),
|
|
/** @param {string} resourceId */
|
|
detail: (resourceId) =>
|
|
Object.freeze([...REFERENCE_NAMESPACE, "detail", String(resourceId)]),
|
|
});
|
|
|
|
export const REFERENCE_FEATURE_CONTRACT = Object.freeze({
|
|
featureId: REFERENCE_FEATURE_ID,
|
|
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: Object.freeze({
|
|
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",
|
|
}),
|
|
CREATE_REFERENCE_RESOURCE: Object.freeze({
|
|
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",
|
|
}),
|
|
GET_REFERENCE_RESOURCE: Object.freeze({
|
|
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-form-page-platform",
|
|
}),
|
|
}),
|
|
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",
|
|
version: 1,
|
|
persistence: "disabled",
|
|
}),
|
|
}),
|
|
});
|