@reventlessdev/reventless-core 3.0.0-alpha.254 → 3.0.0-alpha.256
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/CHANGELOG.md +48 -0
- package/package.json +8 -8
- package/src/admin/Platform_ComponentDefinitionsApi.res +5 -1
- package/src/admin/Platform_ComponentDefinitionsApi.res.mjs +5 -1
- package/src/components/Api/GraphQL_FragmentGenerator.res +55 -14
- package/src/components/Api/GraphQL_FragmentGenerator.res.mjs +43 -12
- package/src/components/Api/SchemaType.res +1 -0
- package/src/components/Api/SchemaType.res.mjs +4 -0
- package/src/components/Api/SuryToJsonSchema.res +41 -0
- package/src/components/Api/SuryToJsonSchema.res.mjs +50 -17
- package/src/components/StateChangeSlice/StateChangeSlice_Callback.res +2 -2
- package/src/plugin/component/Plugin_Structure.res +13 -0
- package/src/plugin/component/Plugin_Structure.res.mjs +5 -1
- package/src/plugin/lifecycle/PluginsReadModelSpec.res +1 -1
- package/src/plugin/lifecycle/PluginsReadModelSpec.res.mjs +1 -1
- package/tests/admin/AdminApiSchemaDriftTest.res +1 -0
- package/tests/admin/AdminApiSchemaDriftTest.res.mjs +4 -1
- package/tests/admin/Platform_ComponentDefinitionsApiTest.res +2 -0
- package/tests/admin/Platform_ComponentDefinitionsApiTest.res.mjs +4 -2
- package/tests/admin/Platform_PluginStructuresApiTest.res +26 -0
- package/tests/admin/Platform_PluginStructuresApiTest.res.mjs +9 -0
- package/tests/api/GraphQL_FragmentGeneratorTest.res +47 -0
- package/tests/api/GraphQL_FragmentGeneratorTest.res.mjs +32 -0
- package/tests/api/SuryToJsonSchemaTest.res +157 -0
- package/tests/api/SuryToJsonSchemaTest.res.mjs +81 -0
- package/tests/fixtures/plugin-lifecycle/2026-07-22-versionconnected-no-requiredstores.json +1 -1
- package/tests/fixtures/plugin-lifecycle/2026-07-22-versionsuperseded-nested-definitions.json +1 -1
- package/tests/fixtures/plugin-lifecycle/2026-07-28-versionconnected-requiredstores-only.json +1 -1
- package/tests/fixtures/plugin-lifecycle/2026-07-30-versionconnected-declarations-without-annotation.json +1 -1
- package/tests/fixtures/plugin-lifecycle/2026-07-30-versiondisconnected-declarations-without-annotation.json +1 -1
- package/tests/fixtures/plugin-lifecycle/README.md +12 -0
- package/tests/logger/LogFormatTest.res +1 -1
- package/tests/logger/LogFormatTest.res.mjs +1 -1
- package/tests/plugin/PluginDefinitionRequiredScalarsTest.res +1 -1
- package/tests/plugin/PluginDefinitionScalars.res +13 -8
- package/tests/plugin/PluginDefinitionScalars.res.mjs +13 -5
- package/tests/plugin/PluginStructureTest.res +22 -0
- package/tests/plugin/PluginStructureTest.res.mjs +7 -0
- package/tests/plugin/StateViewSlice/PsAnnotatedView.res +13 -3
- package/tests/plugin/StateViewSlice/PsAnnotatedView.res.mjs +7 -3
- package/tests/plugin/pluginDefinitionRequiredScalars.txt +17 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"event":"VersionDisconnected","data":{"_0":{"dcbEventLog":{"name":"CatalogDcbEventLog","eventTopicArn":"arn:aws:dynamodb:eu-west-1:000000000000:table/CatalogDcbEventLog-925103d/stream/2026-07-14T08:45:33.852"},"extensions":[{"name":"Ordering.Orders.Catalog","extensionPointName":"Ordering.Orders","dcbSources":[]}],"extensionProtocols":[],"extensionPoints":[{"name":"Catalog.Products","commandTopic":"https://sqs.eu-west-1.amazonaws.com/000000000000/CatalogProductsExtPointCmdTopic-1dd983b","eventTopic":"arn:aws:sns:eu-west-1:000000000000:CatalogProductsExtPointEventTopic-5cb0b5e"}],"kind":"Domain","name":"Catalog","apiTarget":"Domain","id":"Catalog@1.0.0-alpha.167","version":"1.0.0-alpha.167","apiSchemaFragment":{"protocol":"graphql","encoded":"{\"types\":[\"type Catalog_Category implements Node {\\n id: ID!\\n categoryId: ID!\\n name: String!\\n archived: Boolean!\\n}\",\"type Catalog_CategoryEdge {\\n node: Catalog_Category!\\n cursor: String!\\n}\",\"type Catalog_CategoryConnection {\\n edges: [Catalog_CategoryEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_CategoryFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"type Catalog_ProductDemand implements Node {\\n id: ID!\\n productId: ID!\\n name: String!\\n categoryId: ID!\\n orderCount: Float!\\n}\",\"type Catalog_ProductDemandEdge {\\n node: Catalog_ProductDemand!\\n cursor: String!\\n}\",\"type Catalog_ProductDemandConnection {\\n edges: [Catalog_ProductDemandEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_ProductDemandFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"type Catalog_Product implements Node {\\n id: ID!\\n productId: ID!\\n name: String!\\n description: String!\\n price: Float!\\n imageUrl: String!\\n categoryId: ID!\\n}\",\"type Catalog_ProductEdge {\\n node: Catalog_Product!\\n cursor: String!\\n}\",\"type Catalog_ProductConnection {\\n edges: [Catalog_ProductEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_ProductFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"enum Catalog_ImportProductAuditStatus {\\n Success\\n Failure\\n}\",\"type Catalog_ImportProductAudit implements Node {\\n id: ID!\\n input: String!\\n status: Catalog_ImportProductAuditStatus!\\n targetIds: [ID!]\\n commandCount: Float\\n error: String\\n receivedAt: String!\\n}\",\"type Catalog_ImportProductAuditEdge {\\n node: Catalog_ImportProductAudit!\\n cursor: String!\\n}\",\"type Catalog_ImportProductAuditConnection {\\n edges: [Catalog_ImportProductAuditEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_ImportProductAuditFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"union CommandResult = CommandAccepted | CommandRejected | CommandPending\",\"type CommandAccepted {\\n msgId: ID!\\n entityId: ID\\n eventCount: Int!\\n}\",\"type CommandRejected {\\n msgId: ID!\\n errorCode: String!\\n errorDetail: String\\n}\",\"type CommandPending {\\n msgId: ID!\\n}\",\"type CatalogEventLogEvent {\\n position: String!\\n eventType: String!\\n payload: AWSJSON!\\n}\",\"type Catalog_CatalogEventRecord {\\n position: String!\\n eventType: String!\\n payload: AWSJSON!\\n tags: [EventTag!]!\\n meta: EventMeta!\\n recordedAt: String!\\n}\",\"type Catalog_CatalogEventRecordEdge {\\n node: Catalog_CatalogEventRecord!\\n cursor: String!\\n}\",\"type Catalog_CatalogEventRecordConnection {\\n edges: [Catalog_CatalogEventRecordEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_CatalogEventHistoryFilter {\\n entityId: ID\\n tagKey: String\\n tagValue: String\\n eventTypes: [String!]\\n user: String\\n timeFrom: String\\n timeTo: String\\n}\",\"type EventMeta {\\n service: String!\\n time: String!\\n user: String\\n msgId: String!\\n correlationId: String!\\n causationId: String\\n}\",\"type EventTag {\\n key: String!\\n value: String!\\n}\"],\"mutations\":[\" Catalog_AddCategory(categoryId: ID!, name: String!): CommandResult!\",\" Catalog_AddProduct(productId: ID!, name: String!, description: String!, price: Float!, imageUrl: String!, categoryId: ID!): CommandResult!\",\" Catalog_ArchiveCategory(categoryId: ID!): CommandResult!\\n @aws_auth(cognito_groups: [\\\"Admin\\\"])\",\" Catalog_ChangeProductDescription(productId: ID!, description: String!): CommandResult!\",\" Catalog_ChangeProductImage(productId: ID!, imageUrl: String!): CommandResult!\",\" Catalog_ChangeProductName(productId: ID!, name: String!): CommandResult!\",\" Catalog_ChangeProductPrice(productId: ID!, price: Float!): CommandResult!\",\" Catalog_RenameCategory(categoryId: ID!, name: String!): CommandResult!\",\" Catalog_ImportProduct(sku: String!, title: String!, desc: String!, unitPrice: Float!, currency: String!, category: String!): CommandResult!\"],\"queries\":[\" Catalog_Category(id: ID!): Catalog_Category\",\" Catalog_CategoriesByIds(ids: [String!]!): [Catalog_Category!]!\",\" Catalog_Categories(filter: Catalog_CategoryFilter, first: Int, after: String, last: Int, before: String): Catalog_CategoryConnection!\",\" Catalog_ProductDemand(id: ID!): Catalog_ProductDemand\",\" Catalog_ProductDemandsByIds(ids: [String!]!): [Catalog_ProductDemand!]!\",\" Catalog_ProductDemands(filter: Catalog_ProductDemandFilter, first: Int, after: String, last: Int, before: String): Catalog_ProductDemandConnection!\",\" Catalog_Product(id: ID!): Catalog_Product\",\" Catalog_ProductsByIds(ids: [String!]!): [Catalog_Product!]!\",\" Catalog_Products(filter: Catalog_ProductFilter, first: Int, after: String, last: Int, before: String): Catalog_ProductConnection!\",\" Catalog_ImportProductAudit(id: ID!): Catalog_ImportProductAudit\",\" Catalog_ImportProductAuditsByIds(ids: [String!]!): [Catalog_ImportProductAudit!]!\",\" Catalog_ImportProductAudits(filter: Catalog_ImportProductAuditFilter, first: Int, after: String, last: Int, before: String): Catalog_ImportProductAuditConnection!\",\" Catalog_CatalogEventHistory(filter: Catalog_CatalogEventHistoryFilter, first: Int, after: String, last: Int, before: String): Catalog_CatalogEventRecordConnection!\"],\"subscriptions\":[\" onCatalog_AddCategory(id: ID): CommandResult\",\" onCatalog_AddProduct(id: ID): CommandResult\",\" onCatalog_ArchiveCategory(id: ID): CommandResult\",\" onCatalog_ChangeProductDescription(id: ID): CommandResult\",\" onCatalog_ChangeProductImage(id: ID): CommandResult\",\" onCatalog_ChangeProductName(id: ID): CommandResult\",\" onCatalog_ChangeProductPrice(id: ID): CommandResult\",\" onCatalog_RenameCategory(id: ID): CommandResult\",\" onCatalog_ImportProduct(id: ID): CommandResult\",\" onCatalogEventLog_eventAppended: CatalogEventLogEvent\"],\"subscriptionSources\":[{\"field\":\"onCatalog_AddCategory\",\"mutations\":[\"Catalog_AddCategory\"]},{\"field\":\"onCatalog_AddProduct\",\"mutations\":[\"Catalog_AddProduct\"]},{\"field\":\"onCatalog_ArchiveCategory\",\"mutations\":[\"Catalog_ArchiveCategory\"]},{\"field\":\"onCatalog_ChangeProductDescription\",\"mutations\":[\"Catalog_ChangeProductDescription\"]},{\"field\":\"onCatalog_ChangeProductImage\",\"mutations\":[\"Catalog_ChangeProductImage\"]},{\"field\":\"onCatalog_ChangeProductName\",\"mutations\":[\"Catalog_ChangeProductName\"]},{\"field\":\"onCatalog_ChangeProductPrice\",\"mutations\":[\"Catalog_ChangeProductPrice\"]},{\"field\":\"onCatalog_RenameCategory\",\"mutations\":[\"Catalog_RenameCategory\"]},{\"field\":\"onCatalog_ImportProduct\",\"mutations\":[\"Catalog_ImportProduct\"]}]}"},"eventCollector":"arn:aws:sqs:eu-west-1:000000000000:CatalogPluginEventColl-fc85d05","structure":{"outboundTranslationSlices":[],"extensions":[{"name":"Ordering.Orders","delegateNames":["RecordProductDemand"],"eventTypes":["Ordering.Orders.ItemOrdered","Ordering.Orders.ItemOrderCancelled"],"commandTypes":[]}],"stateChangeSlices":[{"consistencyRead":null,"chapter":"Category","linkedViews":["Categories"],"producedEventTypes":["Catalog.CategoryAdded"],"name":"AddCategory","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"AddCategory\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","aggregateIdField":"categoryId","mutationField":"Catalog_AddCategory","references":[],"level":"Collection","targetState":null,"apiExposed":true,"name":"AddCategory","allowedStates":null}],"events":[{"name":"CategoryAdded","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"CategoryAdded\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","references":[]}],"consumedEventTypes":[]},{"consistencyRead":"Categories","chapter":"Product","linkedViews":["ProductDemand","Products"],"producedEventTypes":["Catalog.ProductAdded"],"name":"AddProduct","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"AddProduct\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"imageUrl\":{\"type\":\"string\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\",\"description\",\"price\",\"imageUrl\",\"categoryId\"]}","aggregateIdField":"productId","mutationField":"Catalog_AddProduct","references":[{"plugin":null,"entity":"Categories","fieldName":"categoryId"}],"level":"Collection","targetState":null,"apiExposed":true,"name":"AddProduct","allowedStates":null}],"events":[{"name":"ProductAdded","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductAdded\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"imageUrl\":{\"type\":\"string\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\",\"description\",\"price\",\"imageUrl\",\"categoryId\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.CategoryAdded","Catalog.CategoryArchived"]},{"consistencyRead":null,"chapter":"Category","linkedViews":["Categories"],"producedEventTypes":["Catalog.CategoryArchived"],"name":"ArchiveCategory","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ArchiveCategory\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\"]}","aggregateIdField":"categoryId","mutationField":"Catalog_ArchiveCategory","references":[],"level":"Instance","targetState":null,"apiExposed":true,"name":"ArchiveCategory","allowedStates":null}],"events":[{"name":"CategoryArchived","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"CategoryArchived\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\"]}","references":[]}],"consumedEventTypes":[]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductDescriptionChanged"],"name":"ChangeProductDescription","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductDescription\"},\"productId\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"description\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductDescription","references":[],"level":"Instance","targetState":null,"apiExposed":true,"name":"ChangeProductDescription","allowedStates":null}],"events":[{"name":"ProductDescriptionChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductDescriptionChanged\"},\"productId\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"description\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductDescriptionChanged"]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductImageChanged"],"name":"ChangeProductImage","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductImage\"},\"productId\":{\"type\":\"string\"},\"imageUrl\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"imageUrl\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductImage","references":[],"level":"Instance","targetState":null,"apiExposed":true,"name":"ChangeProductImage","allowedStates":null}],"events":[{"name":"ProductImageChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductImageChanged\"},\"productId\":{\"type\":\"string\"},\"imageUrl\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"imageUrl\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductImageChanged"]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductNameChanged"],"name":"ChangeProductName","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductName\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductName","references":[],"level":"Instance","targetState":null,"apiExposed":true,"name":"ChangeProductName","allowedStates":null}],"events":[{"name":"ProductNameChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductNameChanged\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductNameChanged"]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductPriceChanged"],"name":"ChangeProductPrice","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductPrice\"},\"productId\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"price\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductPrice","references":[],"level":"Instance","targetState":null,"apiExposed":true,"name":"ChangeProductPrice","allowedStates":null}],"events":[{"name":"ProductPriceChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductPriceChanged\"},\"productId\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"price\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductPriceChanged"]},{"consistencyRead":"ProductDemand","chapter":"ProductDemand","linkedViews":["ProductDemand"],"producedEventTypes":["Catalog.ProductDemandRecorded","Catalog.ProductDemandRevoked"],"name":"RecordProductDemand","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"RecordDemand\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","aggregateIdField":"productId","mutationField":"","references":[],"level":"Instance","targetState":null,"apiExposed":false,"name":"RecordDemand","allowedStates":null},{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"RevokeDemand\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","aggregateIdField":"productId","mutationField":"","references":[],"level":"Instance","targetState":null,"apiExposed":false,"name":"RevokeDemand","allowedStates":null}],"events":[{"name":"ProductDemandRecorded","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductDemandRecorded\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","references":[]},{"name":"ProductDemandRevoked","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductDemandRevoked\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductDemandRecorded","Catalog.ProductDemandRevoked"]},{"consistencyRead":"Categories","chapter":"Category","linkedViews":["Categories"],"producedEventTypes":["Catalog.CategoryRenamed"],"name":"RenameCategory","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"RenameCategory\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","aggregateIdField":"categoryId","mutationField":"Catalog_RenameCategory","references":[],"level":"Instance","targetState":null,"apiExposed":true,"name":"RenameCategory","allowedStates":null}],"events":[{"name":"CategoryRenamed","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"CategoryRenamed\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","references":[]}],"consumedEventTypes":["Catalog.CategoryAdded","Catalog.CategoryRenamed"]}],"extensionPoints":[{"name":"Catalog.Products","sourceEventTypes":["Catalog.ProductAdded","Catalog.ProductPriceChanged"],"delegateNames":["CatalogDcbEventLog"],"commandTypes":[]}],"readModels":[],"requiredStoreDeclarations":[{"field":"imageUrl","component":"AddProduct","store":"Catalog.productImages"},{"field":"imageUrl","component":"ChangeProductImage","store":"Catalog.productImages"},{"field":"imageUrl","component":"ImportProduct","store":"Catalog.productImages"},{"field":"imageUrl","component":"Products","store":"Catalog.productImages"}],"stateViewSlices":[{"schema":"{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"string\",\"format\":\"uuid\"},\"name\":{\"type\":\"string\"},\"archived\":{\"type\":\"boolean\"}},\"required\":[\"categoryId\",\"name\",\"archived\"]}","searchableFields":["name"],"chapter":"Category","linkedWriteSide":["AddCategory","ArchiveCategory","RenameCategory"],"labelFieldSource":"convention","statusField":null,"visibility":null,"queryField":"Catalog_Categories","name":"Categories","consumedEventTypes":["Catalog.CategoryAdded","Catalog.CategoryRenamed","Catalog.CategoryArchived"],"labelField":"name"},{"schema":"{\"type\":\"object\",\"properties\":{\"productId\":{\"type\":\"string\",\"format\":\"uuid\"},\"name\":{\"type\":\"string\"},\"categoryId\":{\"type\":\"string\",\"format\":\"uuid\"},\"orderCount\":{\"type\":\"number\"}},\"required\":[\"productId\",\"name\",\"categoryId\",\"orderCount\"]}","searchableFields":["name"],"chapter":"Product","linkedWriteSide":["AddProduct","RecordProductDemand"],"labelFieldSource":"convention","statusField":null,"visibility":null,"queryField":"Catalog_ProductDemands","name":"ProductDemand","consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductDemandRecorded","Catalog.ProductDemandRevoked"],"labelField":"name"},{"schema":"{\"type\":\"object\",\"properties\":{\"productId\":{\"type\":\"string\",\"format\":\"uuid\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"imageUrl\":{\"type\":\"string\",\"x-reventless-semantic\":\"storageRef\",\"x-reventless-semantic-source\":\"type\",\"x-reventless-semantic-target\":{\"store\":\"productImages\"}},\"categoryId\":{\"type\":\"string\",\"format\":\"uuid\"}},\"required\":[\"productId\",\"name\",\"description\",\"price\",\"imageUrl\",\"categoryId\"]}","searchableFields":["name"],"chapter":"Product","linkedWriteSide":["AddProduct","ChangeProductDescription","ChangeProductImage","ChangeProductName","ChangeProductPrice"],"labelFieldSource":"convention","statusField":null,"visibility":null,"queryField":"Catalog_Products","name":"Products","consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductNameChanged","Catalog.ProductDescriptionChanged","Catalog.ProductPriceChanged","Catalog.ProductImageChanged"],"labelField":"name"}],"aggregates":[],"inboundTranslationSlices":[{"name":"ImportProduct","chapter":"Product","targetName":"AddProduct","commandTypes":["Catalog.AddProduct"],"externalSystem":"SupplierFeed"}],"automationSlices":[],"requiredStores":["Catalog.productImages"]}}}}
|
|
1
|
+
{"event":"VersionDisconnected","data":{"_0":{"dcbEventLog":{"name":"CatalogDcbEventLog","eventTopicArn":"arn:aws:dynamodb:eu-west-1:000000000000:table/CatalogDcbEventLog-925103d/stream/2026-07-14T08:45:33.852"},"extensions":[{"name":"Ordering.Orders.Catalog","extensionPointName":"Ordering.Orders","dcbSources":[]}],"extensionProtocols":[],"extensionPoints":[{"name":"Catalog.Products","commandTopic":"https://sqs.eu-west-1.amazonaws.com/000000000000/CatalogProductsExtPointCmdTopic-1dd983b","eventTopic":"arn:aws:sns:eu-west-1:000000000000:CatalogProductsExtPointEventTopic-5cb0b5e"}],"kind":"Domain","name":"Catalog","apiTarget":"Domain","id":"Catalog@1.0.0-alpha.167","version":"1.0.0-alpha.167","apiSchemaFragment":{"protocol":"graphql","encoded":"{\"types\":[\"type Catalog_Category implements Node {\\n id: ID!\\n categoryId: ID!\\n name: String!\\n archived: Boolean!\\n}\",\"type Catalog_CategoryEdge {\\n node: Catalog_Category!\\n cursor: String!\\n}\",\"type Catalog_CategoryConnection {\\n edges: [Catalog_CategoryEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_CategoryFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"type Catalog_ProductDemand implements Node {\\n id: ID!\\n productId: ID!\\n name: String!\\n categoryId: ID!\\n orderCount: Float!\\n}\",\"type Catalog_ProductDemandEdge {\\n node: Catalog_ProductDemand!\\n cursor: String!\\n}\",\"type Catalog_ProductDemandConnection {\\n edges: [Catalog_ProductDemandEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_ProductDemandFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"type Catalog_Product implements Node {\\n id: ID!\\n productId: ID!\\n name: String!\\n description: String!\\n price: Float!\\n imageUrl: String!\\n categoryId: ID!\\n}\",\"type Catalog_ProductEdge {\\n node: Catalog_Product!\\n cursor: String!\\n}\",\"type Catalog_ProductConnection {\\n edges: [Catalog_ProductEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_ProductFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"enum Catalog_ImportProductAuditStatus {\\n Success\\n Failure\\n}\",\"type Catalog_ImportProductAudit implements Node {\\n id: ID!\\n input: String!\\n status: Catalog_ImportProductAuditStatus!\\n targetIds: [ID!]\\n commandCount: Float\\n error: String\\n receivedAt: String!\\n}\",\"type Catalog_ImportProductAuditEdge {\\n node: Catalog_ImportProductAudit!\\n cursor: String!\\n}\",\"type Catalog_ImportProductAuditConnection {\\n edges: [Catalog_ImportProductAuditEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_ImportProductAuditFilter {\\n search: String\\n searchPrefix: String\\n ids: [ID!]\\n}\",\"union CommandResult = CommandAccepted | CommandRejected | CommandPending\",\"type CommandAccepted {\\n msgId: ID!\\n entityId: ID\\n eventCount: Int!\\n}\",\"type CommandRejected {\\n msgId: ID!\\n errorCode: String!\\n errorDetail: String\\n}\",\"type CommandPending {\\n msgId: ID!\\n}\",\"type CatalogEventLogEvent {\\n position: String!\\n eventType: String!\\n payload: AWSJSON!\\n}\",\"type Catalog_CatalogEventRecord {\\n position: String!\\n eventType: String!\\n payload: AWSJSON!\\n tags: [EventTag!]!\\n meta: EventMeta!\\n recordedAt: String!\\n}\",\"type Catalog_CatalogEventRecordEdge {\\n node: Catalog_CatalogEventRecord!\\n cursor: String!\\n}\",\"type Catalog_CatalogEventRecordConnection {\\n edges: [Catalog_CatalogEventRecordEdge!]!\\n pageInfo: PageInfo!\\n}\",\"input Catalog_CatalogEventHistoryFilter {\\n entityId: ID\\n tagKey: String\\n tagValue: String\\n eventTypes: [String!]\\n user: String\\n timeFrom: String\\n timeTo: String\\n}\",\"type EventMeta {\\n service: String!\\n time: String!\\n user: String\\n msgId: String!\\n correlationId: String!\\n causationId: String\\n}\",\"type EventTag {\\n key: String!\\n value: String!\\n}\"],\"mutations\":[\" Catalog_AddCategory(categoryId: ID!, name: String!): CommandResult!\",\" Catalog_AddProduct(productId: ID!, name: String!, description: String!, price: Float!, imageUrl: String!, categoryId: ID!): CommandResult!\",\" Catalog_ArchiveCategory(categoryId: ID!): CommandResult!\\n @aws_auth(cognito_groups: [\\\"Admin\\\"])\",\" Catalog_ChangeProductDescription(productId: ID!, description: String!): CommandResult!\",\" Catalog_ChangeProductImage(productId: ID!, imageUrl: String!): CommandResult!\",\" Catalog_ChangeProductName(productId: ID!, name: String!): CommandResult!\",\" Catalog_ChangeProductPrice(productId: ID!, price: Float!): CommandResult!\",\" Catalog_RenameCategory(categoryId: ID!, name: String!): CommandResult!\",\" Catalog_ImportProduct(sku: String!, title: String!, desc: String!, unitPrice: Float!, currency: String!, category: String!): CommandResult!\"],\"queries\":[\" Catalog_Category(id: ID!): Catalog_Category\",\" Catalog_CategoriesByIds(ids: [String!]!): [Catalog_Category!]!\",\" Catalog_Categories(filter: Catalog_CategoryFilter, first: Int, after: String, last: Int, before: String): Catalog_CategoryConnection!\",\" Catalog_ProductDemand(id: ID!): Catalog_ProductDemand\",\" Catalog_ProductDemandsByIds(ids: [String!]!): [Catalog_ProductDemand!]!\",\" Catalog_ProductDemands(filter: Catalog_ProductDemandFilter, first: Int, after: String, last: Int, before: String): Catalog_ProductDemandConnection!\",\" Catalog_Product(id: ID!): Catalog_Product\",\" Catalog_ProductsByIds(ids: [String!]!): [Catalog_Product!]!\",\" Catalog_Products(filter: Catalog_ProductFilter, first: Int, after: String, last: Int, before: String): Catalog_ProductConnection!\",\" Catalog_ImportProductAudit(id: ID!): Catalog_ImportProductAudit\",\" Catalog_ImportProductAuditsByIds(ids: [String!]!): [Catalog_ImportProductAudit!]!\",\" Catalog_ImportProductAudits(filter: Catalog_ImportProductAuditFilter, first: Int, after: String, last: Int, before: String): Catalog_ImportProductAuditConnection!\",\" Catalog_CatalogEventHistory(filter: Catalog_CatalogEventHistoryFilter, first: Int, after: String, last: Int, before: String): Catalog_CatalogEventRecordConnection!\"],\"subscriptions\":[\" onCatalog_AddCategory(id: ID): CommandResult\",\" onCatalog_AddProduct(id: ID): CommandResult\",\" onCatalog_ArchiveCategory(id: ID): CommandResult\",\" onCatalog_ChangeProductDescription(id: ID): CommandResult\",\" onCatalog_ChangeProductImage(id: ID): CommandResult\",\" onCatalog_ChangeProductName(id: ID): CommandResult\",\" onCatalog_ChangeProductPrice(id: ID): CommandResult\",\" onCatalog_RenameCategory(id: ID): CommandResult\",\" onCatalog_ImportProduct(id: ID): CommandResult\",\" onCatalogEventLog_eventAppended: CatalogEventLogEvent\"],\"subscriptionSources\":[{\"field\":\"onCatalog_AddCategory\",\"mutations\":[\"Catalog_AddCategory\"]},{\"field\":\"onCatalog_AddProduct\",\"mutations\":[\"Catalog_AddProduct\"]},{\"field\":\"onCatalog_ArchiveCategory\",\"mutations\":[\"Catalog_ArchiveCategory\"]},{\"field\":\"onCatalog_ChangeProductDescription\",\"mutations\":[\"Catalog_ChangeProductDescription\"]},{\"field\":\"onCatalog_ChangeProductImage\",\"mutations\":[\"Catalog_ChangeProductImage\"]},{\"field\":\"onCatalog_ChangeProductName\",\"mutations\":[\"Catalog_ChangeProductName\"]},{\"field\":\"onCatalog_ChangeProductPrice\",\"mutations\":[\"Catalog_ChangeProductPrice\"]},{\"field\":\"onCatalog_RenameCategory\",\"mutations\":[\"Catalog_RenameCategory\"]},{\"field\":\"onCatalog_ImportProduct\",\"mutations\":[\"Catalog_ImportProduct\"]}]}"},"eventCollector":"arn:aws:sqs:eu-west-1:000000000000:CatalogPluginEventColl-fc85d05","structure":{"outboundTranslationSlices":[],"extensions":[{"name":"Ordering.Orders","delegateNames":["RecordProductDemand"],"eventTypes":["Ordering.Orders.ItemOrdered","Ordering.Orders.ItemOrderCancelled"],"commandTypes":[]}],"stateChangeSlices":[{"chapter":"Category","linkedViews":["Categories"],"producedEventTypes":["Catalog.CategoryAdded"],"name":"AddCategory","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"AddCategory\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","aggregateIdField":"categoryId","mutationField":"Catalog_AddCategory","references":[],"level":"Collection","apiExposed":true,"name":"AddCategory"}],"events":[{"name":"CategoryAdded","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"CategoryAdded\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","references":[]}],"consumedEventTypes":[]},{"consistencyRead":"Categories","chapter":"Product","linkedViews":["ProductDemand","Products"],"producedEventTypes":["Catalog.ProductAdded"],"name":"AddProduct","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"AddProduct\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"imageUrl\":{\"type\":\"string\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\",\"description\",\"price\",\"imageUrl\",\"categoryId\"]}","aggregateIdField":"productId","mutationField":"Catalog_AddProduct","references":[{"entity":"Categories","fieldName":"categoryId"}],"level":"Collection","apiExposed":true,"name":"AddProduct"}],"events":[{"name":"ProductAdded","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductAdded\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"imageUrl\":{\"type\":\"string\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\",\"description\",\"price\",\"imageUrl\",\"categoryId\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.CategoryAdded","Catalog.CategoryArchived"]},{"chapter":"Category","linkedViews":["Categories"],"producedEventTypes":["Catalog.CategoryArchived"],"name":"ArchiveCategory","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ArchiveCategory\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\"]}","aggregateIdField":"categoryId","mutationField":"Catalog_ArchiveCategory","references":[],"level":"Instance","apiExposed":true,"name":"ArchiveCategory"}],"events":[{"name":"CategoryArchived","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"CategoryArchived\"},\"categoryId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\"]}","references":[]}],"consumedEventTypes":[]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductDescriptionChanged"],"name":"ChangeProductDescription","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductDescription\"},\"productId\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"description\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductDescription","references":[],"level":"Instance","apiExposed":true,"name":"ChangeProductDescription"}],"events":[{"name":"ProductDescriptionChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductDescriptionChanged\"},\"productId\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"description\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductDescriptionChanged"]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductImageChanged"],"name":"ChangeProductImage","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductImage\"},\"productId\":{\"type\":\"string\"},\"imageUrl\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"imageUrl\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductImage","references":[],"level":"Instance","apiExposed":true,"name":"ChangeProductImage"}],"events":[{"name":"ProductImageChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductImageChanged\"},\"productId\":{\"type\":\"string\"},\"imageUrl\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"imageUrl\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductImageChanged"]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductNameChanged"],"name":"ChangeProductName","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductName\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductName","references":[],"level":"Instance","apiExposed":true,"name":"ChangeProductName"}],"events":[{"name":"ProductNameChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductNameChanged\"},\"productId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"name\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductNameChanged"]},{"consistencyRead":"Products","chapter":"Product","linkedViews":["Products"],"producedEventTypes":["Catalog.ProductPriceChanged"],"name":"ChangeProductPrice","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ChangeProductPrice\"},\"productId\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"price\"]}","aggregateIdField":"productId","mutationField":"Catalog_ChangeProductPrice","references":[],"level":"Instance","apiExposed":true,"name":"ChangeProductPrice"}],"events":[{"name":"ProductPriceChanged","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductPriceChanged\"},\"productId\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"price\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductPriceChanged"]},{"consistencyRead":"ProductDemand","chapter":"ProductDemand","linkedViews":["ProductDemand"],"producedEventTypes":["Catalog.ProductDemandRecorded","Catalog.ProductDemandRevoked"],"name":"RecordProductDemand","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"RecordDemand\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","aggregateIdField":"productId","mutationField":"","references":[],"level":"Instance","apiExposed":false,"name":"RecordDemand"},{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"RevokeDemand\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","aggregateIdField":"productId","mutationField":"","references":[],"level":"Instance","apiExposed":false,"name":"RevokeDemand"}],"events":[{"name":"ProductDemandRecorded","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductDemandRecorded\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","references":[]},{"name":"ProductDemandRevoked","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"ProductDemandRevoked\"},\"productId\":{\"type\":\"string\"},\"orderId\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"productId\",\"orderId\"]}","references":[]}],"consumedEventTypes":["Catalog.ProductDemandRecorded","Catalog.ProductDemandRevoked"]},{"consistencyRead":"Categories","chapter":"Category","linkedViews":["Categories"],"producedEventTypes":["Catalog.CategoryRenamed"],"name":"RenameCategory","commands":[{"schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"RenameCategory\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","aggregateIdField":"categoryId","mutationField":"Catalog_RenameCategory","references":[],"level":"Instance","apiExposed":true,"name":"RenameCategory"}],"events":[{"name":"CategoryRenamed","schema":"{\"type\":\"object\",\"properties\":{\"TAG\":{\"type\":\"string\",\"const\":\"CategoryRenamed\"},\"categoryId\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"additionalProperties\":true,\"required\":[\"TAG\",\"categoryId\",\"name\"]}","references":[]}],"consumedEventTypes":["Catalog.CategoryAdded","Catalog.CategoryRenamed"]}],"extensionPoints":[{"name":"Catalog.Products","sourceEventTypes":["Catalog.ProductAdded","Catalog.ProductPriceChanged"],"delegateNames":["CatalogDcbEventLog"],"commandTypes":[]}],"readModels":[],"requiredStoreDeclarations":[{"field":"imageUrl","component":"AddProduct","store":"Catalog.productImages"},{"field":"imageUrl","component":"ChangeProductImage","store":"Catalog.productImages"},{"field":"imageUrl","component":"ImportProduct","store":"Catalog.productImages"},{"field":"imageUrl","component":"Products","store":"Catalog.productImages"}],"stateViewSlices":[{"schema":"{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"string\",\"format\":\"uuid\"},\"name\":{\"type\":\"string\"},\"archived\":{\"type\":\"boolean\"}},\"required\":[\"categoryId\",\"name\",\"archived\"]}","searchableFields":["name"],"chapter":"Category","linkedWriteSide":["AddCategory","ArchiveCategory","RenameCategory"],"labelFieldSource":"convention","queryField":"Catalog_Categories","name":"Categories","consumedEventTypes":["Catalog.CategoryAdded","Catalog.CategoryRenamed","Catalog.CategoryArchived"],"labelField":"name"},{"schema":"{\"type\":\"object\",\"properties\":{\"productId\":{\"type\":\"string\",\"format\":\"uuid\"},\"name\":{\"type\":\"string\"},\"categoryId\":{\"type\":\"string\",\"format\":\"uuid\"},\"orderCount\":{\"type\":\"number\"}},\"required\":[\"productId\",\"name\",\"categoryId\",\"orderCount\"]}","searchableFields":["name"],"chapter":"Product","linkedWriteSide":["AddProduct","RecordProductDemand"],"labelFieldSource":"convention","queryField":"Catalog_ProductDemands","name":"ProductDemand","consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductDemandRecorded","Catalog.ProductDemandRevoked"],"labelField":"name"},{"schema":"{\"type\":\"object\",\"properties\":{\"productId\":{\"type\":\"string\",\"format\":\"uuid\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"imageUrl\":{\"type\":\"string\",\"x-reventless-semantic\":\"storageRef\",\"x-reventless-semantic-source\":\"type\",\"x-reventless-semantic-target\":{\"store\":\"productImages\"}},\"categoryId\":{\"type\":\"string\",\"format\":\"uuid\"}},\"required\":[\"productId\",\"name\",\"description\",\"price\",\"imageUrl\",\"categoryId\"]}","searchableFields":["name"],"chapter":"Product","linkedWriteSide":["AddProduct","ChangeProductDescription","ChangeProductImage","ChangeProductName","ChangeProductPrice"],"labelFieldSource":"convention","queryField":"Catalog_Products","name":"Products","consumedEventTypes":["Catalog.ProductAdded","Catalog.ProductNameChanged","Catalog.ProductDescriptionChanged","Catalog.ProductPriceChanged","Catalog.ProductImageChanged"],"labelField":"name"}],"aggregates":[],"inboundTranslationSlices":[{"name":"ImportProduct","chapter":"Product","targetName":"AddProduct","commandTypes":["Catalog.AddProduct"],"externalSystem":"SupplierFeed"}],"automationSlices":[],"requiredStores":["Catalog.productImages"]}}}}
|
|
@@ -34,3 +34,15 @@ Each file is the decode-relevant part of the stored row — `{event, data}` —
|
|
|
34
34
|
One transformation was applied at extraction: the AWS account id in embedded ARNs and queue URLs
|
|
35
35
|
was replaced with `000000000000`. The corpus asserts *shape*, and the shape of a string does not
|
|
36
36
|
depend on its contents.
|
|
37
|
+
|
|
38
|
+
A second was applied on 2026-09-04, when `pluginDefinition`'s optionals moved from `T | null` to
|
|
39
|
+
sury's default encoding, where an absent value is an omitted key. Null-valued keys were removed
|
|
40
|
+
from every entry — 18 to 36 per file — and nothing else was touched: the rewrite round-trips each
|
|
41
|
+
file through `JSON.parse`/`stringify` unchanged before it edits, and a key-by-key diff against the
|
|
42
|
+
previous revision reports null removals and no other difference. The two `Offload` fields keep
|
|
43
|
+
their nulls, their codec being unaffected.
|
|
44
|
+
|
|
45
|
+
This is the one edit the rule above permits, and only because it is not a regeneration: no fixture
|
|
46
|
+
was rebuilt from ReScript types, so every generation in the table is still the one it was captured
|
|
47
|
+
at, and each entry still pins exactly the absence it was kept for. What it stops pinning is the
|
|
48
|
+
encoding that was deleted — which no longer exists to be pinned.
|
|
@@ -95,7 +95,7 @@ describe("LogFormat", () => {
|
|
|
95
95
|
},
|
|
96
96
|
)
|
|
97
97
|
let expected1 = `1/2: \x1b[1mHeartbeat\x1b[0m(0): {"command":{"TAG":"Heartbeat","_0":"0.0.0"},"meta":${metaStr},"id":"0"}`
|
|
98
|
-
let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"
|
|
98
|
+
let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"structure":null,"kind":"Domain"}},"meta":${metaStr},"id":"1"}`
|
|
99
99
|
expect(commandJsonsToLogMessages(arr))->toEqual([expected1, expected2])
|
|
100
100
|
},
|
|
101
101
|
)
|
|
@@ -94,7 +94,7 @@ globalThis.describe("LogFormat", () => {
|
|
|
94
94
|
commandJson: Message$ReventlessCore.encode(command, PluginSpec$ReventlessCore.commandSchema)
|
|
95
95
|
}));
|
|
96
96
|
let expected1 = `1/2: \x1b[1mHeartbeat\x1b[0m(0): {"command":{"TAG":"Heartbeat","_0":"0.0.0"},"meta":` + metaStr + `,"id":"0"}`;
|
|
97
|
-
let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"
|
|
97
|
+
let expected2 = `2/2: \x1b[1mConnect\x1b[0m(1): {"command":{"TAG":"Connect","_0":{"id":"id","name":"testName","version":"testVersion","extensionPoints":[{"name":"testExtensionPoint","commandTopic":"testCommandTopic","eventTopic":"testEventTopic"}],"extensions":[{"name":"testExtension","extensionPointName":"testExtensionPoint","dcbSources":[]}],"eventCollector":"testEventCollector","extensionProtocols":[],"apiSchemaFragment":null,"structure":null,"kind":"Domain"}},"meta":` + metaStr + `,"id":"1"}`;
|
|
98
98
|
globalThis.expect(LogFormat$ReventlessCore.commandJsonsToLogMessages(arr)).toEqual([
|
|
99
99
|
expected1,
|
|
100
100
|
expected2
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// original two-day freeze go unnoticed, so the guard belongs here instead: in CI, at
|
|
9
9
|
// the moment the field is declared.
|
|
10
10
|
//
|
|
11
|
-
// Adding
|
|
11
|
+
// Adding an optional / array / enum / object field leaves this list untouched.
|
|
12
12
|
// Adding a bare required scalar changes it, and the diff is the conversation.
|
|
13
13
|
|
|
14
14
|
open JestGlobals
|
|
@@ -10,15 +10,16 @@
|
|
|
10
10
|
// A scalar is "bare required" when `Message.fillMissingDefaults` could not supply
|
|
11
11
|
// a value for it from the schema alone. Everything else it CAN supply is skipped:
|
|
12
12
|
//
|
|
13
|
-
//
|
|
13
|
+
// optional union → absent (the `option` shape the rule asks for —
|
|
14
|
+
// `T | undefined`, or legacy `T | null`)
|
|
14
15
|
// const / enum union → the literal
|
|
15
16
|
// array → []
|
|
16
17
|
// object → {} filled recursively
|
|
17
18
|
//
|
|
18
|
-
// A scalar arm of
|
|
19
|
-
// array arms are still descended,
|
|
20
|
-
// carry
|
|
21
|
-
// `requiredStoreDeclarations[].annotation`, a required string inside
|
|
19
|
+
// A scalar arm of an optional union is therefore not reported — but object and
|
|
20
|
+
// array arms are still descended, optional or not: when an old payload happens to
|
|
21
|
+
// carry an optional parent, a scalar added inside it still has to be invented.
|
|
22
|
+
// `requiredStoreDeclarations[].annotation`, a required string inside an optional
|
|
22
23
|
// array, is exactly that case and is how a plugin's registration once froze.
|
|
23
24
|
|
|
24
25
|
let scalarName = (schema: S.t<unknown>): option<string> =>
|
|
@@ -58,16 +59,20 @@ let collect = (root: S.t<'a>): array<string> => {
|
|
|
58
59
|
| Number({const: ?Some(_)})
|
|
59
60
|
| Boolean({const: ?Some(_)})
|
|
60
61
|
| BigInt({const: ?Some(_)})
|
|
62
|
+
| Undefined(_)
|
|
61
63
|
| Null(_) => true
|
|
62
64
|
| _ => false
|
|
63
65
|
}
|
|
64
66
|
)
|
|
65
67
|
if !isEnum {
|
|
66
|
-
|
|
68
|
+
// Either optional encoding: the healer leaves an absent `T | undefined`
|
|
69
|
+
// alone and writes `null` for a `T | null`, so neither invents a scalar.
|
|
70
|
+
let optional =
|
|
71
|
+
has.null->Option.getOr(false) || has.undefined->Option.getOr(false)
|
|
67
72
|
anyOf->Array.forEach(member =>
|
|
68
73
|
switch member {
|
|
69
|
-
| Null(_) => ()
|
|
70
|
-
| _ if
|
|
74
|
+
| Undefined(_) | Null(_) => ()
|
|
75
|
+
| _ if optional && isScalar(member) => ()
|
|
71
76
|
| _ => walk(member, path)
|
|
72
77
|
}
|
|
73
78
|
)
|
|
@@ -66,6 +66,7 @@ function collect(root) {
|
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
68
|
case "anyOf" :
|
|
69
|
+
let has = schema.has;
|
|
69
70
|
let anyOf = schema.anyOf;
|
|
70
71
|
let isEnum = anyOf.every(member => {
|
|
71
72
|
switch (member.type) {
|
|
@@ -75,6 +76,7 @@ function collect(root) {
|
|
|
75
76
|
case "boolean" :
|
|
76
77
|
return member.const !== undefined;
|
|
77
78
|
case "null" :
|
|
79
|
+
case "undefined" :
|
|
78
80
|
return true;
|
|
79
81
|
default:
|
|
80
82
|
return false;
|
|
@@ -83,12 +85,18 @@ function collect(root) {
|
|
|
83
85
|
if (isEnum) {
|
|
84
86
|
return;
|
|
85
87
|
}
|
|
86
|
-
let
|
|
88
|
+
let optional = Stdlib_Option.getOr(has.null, false) || Stdlib_Option.getOr(has.undefined, false);
|
|
87
89
|
anyOf.forEach(member => {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
switch (member.type) {
|
|
91
|
+
case "null" :
|
|
92
|
+
case "undefined" :
|
|
93
|
+
return;
|
|
94
|
+
default:
|
|
95
|
+
if (optional && Stdlib_Option.isSome(scalarName(member))) {
|
|
96
|
+
return;
|
|
97
|
+
} else {
|
|
98
|
+
return walk(member, path);
|
|
99
|
+
}
|
|
92
100
|
}
|
|
93
101
|
});
|
|
94
102
|
return;
|
|
@@ -1300,6 +1300,28 @@ describe("Plugin_Structure.make — Phase 2 graph fields", () => {
|
|
|
1300
1300
|
)->toBe(Some("currency"))
|
|
1301
1301
|
})
|
|
1302
1302
|
|
|
1303
|
+
testSync("@sensitive flows through the PPX to x-reventless-sensitive", () => {
|
|
1304
|
+
expect(
|
|
1305
|
+
annotatedSchema
|
|
1306
|
+
->getPropertyOf("contact")
|
|
1307
|
+
->Option.flatMap(s => getProperty(s, "x-reventless-sensitive"))
|
|
1308
|
+
->Option.flatMap(JSON.Decode.bool),
|
|
1309
|
+
)->toBe(Some(true))
|
|
1310
|
+
})
|
|
1311
|
+
|
|
1312
|
+
// The case the marker exists for. A renderer composes from an event payload,
|
|
1313
|
+
// and the annotation path `deriveObjectSchema` reads for state is
|
|
1314
|
+
// state-only — so a marker that lived there would be absent exactly where
|
|
1315
|
+
// the value is about to be interpolated into a message.
|
|
1316
|
+
testSync("@sensitive reaches an event variant's payload, not only state", () =>
|
|
1317
|
+
expect(
|
|
1318
|
+
Reventless.Sensitive.variantFieldNames(
|
|
1319
|
+
PsAnnotatedView.consumedEventSchema->S.castToUnknown,
|
|
1320
|
+
~variant="ItemRecorded",
|
|
1321
|
+
),
|
|
1322
|
+
)->toEqual(["contact"])
|
|
1323
|
+
)
|
|
1324
|
+
|
|
1303
1325
|
testSync("@metric flows through the PPX to x-reventless-metric {aggregate,label}", () => {
|
|
1304
1326
|
let metricObj =
|
|
1305
1327
|
annotatedSchema
|
|
@@ -11,6 +11,7 @@ import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/component
|
|
|
11
11
|
import * as DateTime$Reventless from "@reventlessdev/reventless-spec/src/types/DateTime.res.mjs";
|
|
12
12
|
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
13
13
|
import * as Reference$Reventless from "@reventlessdev/reventless-spec/src/components/Reference.res.mjs";
|
|
14
|
+
import * as Sensitive$Reventless from "@reventlessdev/reventless-spec/src/components/Sensitive.res.mjs";
|
|
14
15
|
import * as StorageRef$Reventless from "@reventlessdev/reventless-spec/src/semantic/StorageRef.res.mjs";
|
|
15
16
|
import * as Api_Naming$ReventlessCore from "../../src/components/Api/Api_Naming.res.mjs";
|
|
16
17
|
import * as PsShipOrder$ReventlessCore from "./StateChangeSlice/PsShipOrder.res.mjs";
|
|
@@ -1444,6 +1445,12 @@ globalThis.describe("Plugin_Structure.make — Phase 2 graph fields", () => {
|
|
|
1444
1445
|
globalThis.test("@semantic(\"currency\") flows through the PPX to x-reventless-semantic", () => {
|
|
1445
1446
|
globalThis.expect(Stdlib_Option.flatMap(Stdlib_Option.flatMap(getPropertyOf(annotatedSchema, "total"), s => getProperty(s, "x-reventless-semantic")), Stdlib_JSON.Decode.string)).toBe("currency");
|
|
1446
1447
|
});
|
|
1448
|
+
globalThis.test("@sensitive flows through the PPX to x-reventless-sensitive", () => {
|
|
1449
|
+
globalThis.expect(Stdlib_Option.flatMap(Stdlib_Option.flatMap(getPropertyOf(annotatedSchema, "contact"), s => getProperty(s, "x-reventless-sensitive")), Stdlib_JSON.Decode.bool)).toBe(true);
|
|
1450
|
+
});
|
|
1451
|
+
globalThis.test("@sensitive reaches an event variant's payload, not only state", () => {
|
|
1452
|
+
globalThis.expect(Sensitive$Reventless.variantFieldNames(PsAnnotatedView$ReventlessCore.consumedEventSchema, "ItemRecorded")).toEqual(["contact"]);
|
|
1453
|
+
});
|
|
1447
1454
|
globalThis.test("@metric flows through the PPX to x-reventless-metric {aggregate,label}", () => {
|
|
1448
1455
|
let metricObj = Stdlib_Option.flatMap(getPropertyOf(annotatedSchema, "total"), s => getProperty(s, "x-reventless-metric"));
|
|
1449
1456
|
globalThis.expect([
|
|
@@ -7,7 +7,16 @@
|
|
|
7
7
|
|
|
8
8
|
@schema
|
|
9
9
|
type consumedEvent =
|
|
10
|
-
| ItemRecorded({
|
|
10
|
+
| ItemRecorded({
|
|
11
|
+
itemId: string,
|
|
12
|
+
ownerId: string,
|
|
13
|
+
version: string,
|
|
14
|
+
name: string,
|
|
15
|
+
total: float,
|
|
16
|
+
// On the event, not just the state: a renderer composes from an event
|
|
17
|
+
// payload, so this is the case the marker has to reach.
|
|
18
|
+
@sensitive contact: string,
|
|
19
|
+
})
|
|
11
20
|
|
|
12
21
|
@live(false)
|
|
13
22
|
@schema
|
|
@@ -17,10 +26,11 @@ type state = {
|
|
|
17
26
|
@index("byOwner") ownerId: string,
|
|
18
27
|
name: string,
|
|
19
28
|
@semantic("currency") @metric({aggregate: "sum", label: "Revenue"}) total: float,
|
|
29
|
+
@sensitive contact: string,
|
|
20
30
|
}
|
|
21
31
|
|
|
22
32
|
let project = ({event}: Reventless.StateViewSlice.consumed<consumedEvent>) =>
|
|
23
33
|
switch event {
|
|
24
|
-
| ItemRecorded({itemId, ownerId, version, name, total}) =>
|
|
25
|
-
[Set(itemId, {itemId, ownerId, version, name, total})]
|
|
34
|
+
| ItemRecorded({itemId, ownerId, version, name, total, contact}) =>
|
|
35
|
+
[Set(itemId, {itemId, ownerId, version, name, total, contact})]
|
|
26
36
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import * as Sury from "sury";
|
|
4
4
|
import * as DcbTag$Reventless from "@reventlessdev/reventless-spec/src/components/DcbTag.res.mjs";
|
|
5
5
|
import * as ReadModel$Reventless from "@reventlessdev/reventless-spec/src/components/ReadModel.res.mjs";
|
|
6
|
+
import * as Sensitive$Reventless from "@reventlessdev/reventless-spec/src/components/Sensitive.res.mjs";
|
|
6
7
|
import * as StateAnnotations$Reventless from "@reventlessdev/reventless-spec/src/components/StateAnnotations.res.mjs";
|
|
7
8
|
|
|
8
9
|
let consumedEventSchema = Sury.$schema(s => ({
|
|
@@ -11,7 +12,8 @@ let consumedEventSchema = Sury.$schema(s => ({
|
|
|
11
12
|
ownerId: s.m(DcbTag$Reventless.string),
|
|
12
13
|
version: s.m(Sury.string),
|
|
13
14
|
name: s.m(Sury.string),
|
|
14
|
-
total: s.m(Sury.float)
|
|
15
|
+
total: s.m(Sury.float),
|
|
16
|
+
contact: s.m(Sensitive$Reventless.string)
|
|
15
17
|
}));
|
|
16
18
|
|
|
17
19
|
let stateSchema = Sury.$schema(s => ({
|
|
@@ -19,7 +21,8 @@ let stateSchema = Sury.$schema(s => ({
|
|
|
19
21
|
version: s.m(Sury.string),
|
|
20
22
|
ownerId: s.m(Sury.string),
|
|
21
23
|
name: s.m(Sury.string),
|
|
22
|
-
total: s.m(Sury.float)
|
|
24
|
+
total: s.m(Sury.float),
|
|
25
|
+
contact: s.m(Sensitive$Reventless.string)
|
|
23
26
|
}));
|
|
24
27
|
|
|
25
28
|
function project(param) {
|
|
@@ -33,7 +36,8 @@ function project(param) {
|
|
|
33
36
|
version: event.version,
|
|
34
37
|
ownerId: event.ownerId,
|
|
35
38
|
name: event.name,
|
|
36
|
-
total: event.total
|
|
39
|
+
total: event.total,
|
|
40
|
+
contact: event.contact
|
|
37
41
|
}
|
|
38
42
|
}];
|
|
39
43
|
}
|
|
@@ -6,20 +6,19 @@
|
|
|
6
6
|
# one means every message stored before it decodes with a value this framework invented
|
|
7
7
|
# (`""` / `0` / `false`), reported at runtime as a warning and nowhere else.
|
|
8
8
|
#
|
|
9
|
-
# So a diff here is a design decision, not a chore. If your new field can be absent,
|
|
10
|
-
# it
|
|
11
|
-
#
|
|
12
|
-
# value for it.
|
|
9
|
+
# So a diff here is a design decision, not a chore. If your new field can be absent, make
|
|
10
|
+
# it `option` and this list does not change. If it genuinely must be a required scalar, add
|
|
11
|
+
# the line and accept that older payloads carry a fabricated value for it.
|
|
13
12
|
#
|
|
14
13
|
# Regenerate ONLY after making that call — never to make a red build green.
|
|
15
14
|
# See docs/analysis/plugin-definition-schema-evolution-wedge.md.
|
|
16
15
|
#
|
|
17
|
-
#
|
|
18
|
-
# shape the rule asks for. A scalar nested inside
|
|
16
|
+
# An optional scalar is NOT listed: absent stays absent and decodes to `None`, which is the
|
|
17
|
+
# shape the rule asks for. A scalar nested inside an optional object or array IS listed —
|
|
19
18
|
# when an old payload carries the parent, the new field still has to be invented. That is
|
|
20
|
-
# how requiredStoreDeclarations[].annotation, a required string inside
|
|
19
|
+
# how requiredStoreDeclarations[].annotation, a required string inside an optional array,
|
|
21
20
|
# froze a plugin's registration for two days; it is absent from this list because it has
|
|
22
|
-
# since been made
|
|
21
|
+
# since been made optional.
|
|
23
22
|
#
|
|
24
23
|
# The `.$offload.*` lines are the reference arm of an `@offload` field. They are not new
|
|
25
24
|
# fields — they have been persisted since `@offload` existed. They appear here because the
|
|
@@ -94,6 +93,12 @@
|
|
|
94
93
|
.structure.inboundTranslationSlices[].name: string
|
|
95
94
|
.structure.inboundTranslationSlices[].targetName: string
|
|
96
95
|
.structure.outboundTranslationSlices[].consumedEventTypes[]: string
|
|
96
|
+
# `consumedSources` is itself optional and is NEW, so no persisted payload
|
|
97
|
+
# carries the array: a stored structure heals to `None` and this line is never
|
|
98
|
+
# reached — the same call `traitDeclarations` made below. Required inside it
|
|
99
|
+
# because a source name is a topic key the slice subscribes to, and a fabricated
|
|
100
|
+
# `""` would name a topic that does not exist rather than saying nothing.
|
|
101
|
+
.structure.outboundTranslationSlices[].consumedSources[]: string
|
|
97
102
|
.structure.outboundTranslationSlices[].inboundCommandTypes[]: string
|
|
98
103
|
.structure.outboundTranslationSlices[].name: string
|
|
99
104
|
.structure.readModels[].consumedEventTypes[]: string
|
|
@@ -105,15 +110,15 @@
|
|
|
105
110
|
.structure.readModels[].retiredValues[]: string
|
|
106
111
|
.structure.readModels[].schema: string
|
|
107
112
|
.structure.readModels[].searchableFields[]: string
|
|
108
|
-
# `requiredCapabilities` is itself
|
|
109
|
-
# carries the array: a stored structure heals to
|
|
113
|
+
# `requiredCapabilities` is itself optional and is NEW, so no persisted payload
|
|
114
|
+
# carries the array: a stored structure heals to `None` and these two are never reached.
|
|
110
115
|
# Required inside it because a declaration naming no capability, or no declaring
|
|
111
116
|
# component, is not a declaration — the same call `requiredStoreDeclarations` made for
|
|
112
117
|
# `store`/`component`/`field`.
|
|
113
118
|
.structure.requiredCapabilities[].capability: string
|
|
114
119
|
.structure.requiredCapabilities[].component: string
|
|
115
|
-
# `traitDeclarations` is itself
|
|
116
|
-
# carries the array: a stored structure heals to
|
|
120
|
+
# `traitDeclarations` is itself optional and is NEW, so no persisted payload
|
|
121
|
+
# carries the array: a stored structure heals to `None` and these four are never
|
|
117
122
|
# reached. Required inside it for the same reason the two above are — a graft
|
|
118
123
|
# naming no trait, no version, no posture or no component is not a record of a
|
|
119
124
|
# graft, and a fabricated `""` here would read as "grafted from nothing", which is
|