@reventlessdev/reventless-core 3.0.0-alpha.197 → 3.0.0-alpha.199

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.
Files changed (25) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/package.json +7 -7
  3. package/src/admin/Platform_AdminApi.res +23 -0
  4. package/src/admin/Platform_AdminApi.res.mjs +12 -0
  5. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res +12 -8
  6. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Builder.res.mjs +7 -8
  7. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Callback.res +27 -0
  8. package/src/components/InboundTranslationSlice/InboundTranslationSlice_Callback.res.mjs +13 -0
  9. package/src/plugin/component/Plugin_Structure.res +8 -5
  10. package/tests/fixtures/plugin-lifecycle/2026-07-22-versionconnected-no-requiredstores.json +1 -0
  11. package/tests/fixtures/plugin-lifecycle/2026-07-22-versionsuperseded-nested-definitions.json +1 -0
  12. package/tests/fixtures/plugin-lifecycle/2026-07-28-versionconnected-requiredstores-only.json +1 -0
  13. package/tests/fixtures/plugin-lifecycle/2026-07-30-versionconnected-declarations-without-annotation.json +1 -0
  14. package/tests/fixtures/plugin-lifecycle/2026-07-30-versiondisconnected-declarations-without-annotation.json +1 -0
  15. package/tests/fixtures/plugin-lifecycle/README.md +36 -0
  16. package/tests/plugin/PluginDefinitionRequiredScalarsTest.res +42 -0
  17. package/tests/plugin/PluginDefinitionRequiredScalarsTest.res.mjs +45 -0
  18. package/tests/plugin/PluginDefinitionScalars.res +78 -0
  19. package/tests/plugin/PluginDefinitionScalars.res.mjs +110 -0
  20. package/tests/plugin/PluginLifecycleCorpus.res +42 -0
  21. package/tests/plugin/PluginLifecycleCorpus.res.mjs +39 -0
  22. package/tests/plugin/PluginLifecycleCorpusTest.res +50 -0
  23. package/tests/plugin/PluginLifecycleCorpusTest.res.mjs +42 -0
  24. package/tests/plugin/PluginStructureTest.res +3 -3
  25. package/tests/plugin/pluginDefinitionRequiredScalars.txt +103 -0
@@ -718,13 +718,13 @@ describe("Plugin_Structure.make — Phase 2 graph fields", () => {
718
718
  store: "TestPlugin.documents",
719
719
  component: "AttachInvoice",
720
720
  field: "documentUrl",
721
- annotation: "documents",
721
+ annotation: Some("documents"),
722
722
  },
723
723
  {
724
724
  store: "branding.logos",
725
725
  component: "AttachInvoice",
726
726
  field: "logoUrl",
727
- annotation: "branding.logos",
727
+ annotation: Some("branding.logos"),
728
728
  },
729
729
  ]
730
730
  expect(withStores.requiredStoreDeclarations)->toEqual(Some(expected))
@@ -815,7 +815,7 @@ describe("Plugin_Structure.make — Phase 2 graph fields", () => {
815
815
  store: "TestPlugin.avatars",
816
816
  component: "UploadAvatar",
817
817
  field: "avatarUrl",
818
- annotation: "avatars",
818
+ annotation: Some("avatars"),
819
819
  },
820
820
  ]
821
821
  expect(withOptional.requiredStoreDeclarations)->toEqual(Some(expected))
@@ -0,0 +1,103 @@
1
+ # Every bare required scalar reachable from `pluginDefinition`, sorted.
2
+ #
3
+ # This file is a tripwire, not an inventory to keep tidy. Everything reachable from
4
+ # `pluginDefinition` is persisted in the Plugin lifecycle aggregate's event log, and a
5
+ # scalar is the one shape `Message.fillMissingDefaults` cannot derive a value for: adding
6
+ # one means every message stored before it decodes with a value this framework invented
7
+ # (`""` / `0` / `false`), reported at runtime as a warning and nowhere else.
8
+ #
9
+ # So a diff here is a design decision, not a chore. If your new field can be absent, give
10
+ # it the `js_nullable` (`T | null`) shape and this list does not change. If it genuinely
11
+ # must be a required scalar, add the line and accept that older payloads carry a fabricated
12
+ # value for it.
13
+ #
14
+ # Regenerate ONLY after making that call — never to make a red build green.
15
+ # See docs/analysis/plugin-definition-schema-evolution-wedge.md.
16
+ #
17
+ # A `js_nullable` (`T | null`) scalar is NOT listed: absent heals to null, which is the
18
+ # shape the rule asks for. A scalar nested inside a nullable object or array IS listed —
19
+ # 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 a nullable array,
21
+ # froze a plugin's registration for two days; it is absent from this list because it has
22
+ # since been made `js_nullable`.
23
+ .apiSchemaFragment.encoded: string
24
+ .apiSchemaFragment.protocol: string
25
+ .dcbEventLog.eventTopicArn: string
26
+ .dcbEventLog.name: string
27
+ .eventCollector: string
28
+ .extensionPoints[].commandTopic: string
29
+ .extensionPoints[].eventTopic: string
30
+ .extensionPoints[].name: string
31
+ .extensionProtocols[].commandVersion: string
32
+ .extensionProtocols[].eventVersion: string
33
+ .extensionProtocols[].extensionPointName: string
34
+ .extensions[].dcbSources[]: string
35
+ .extensions[].extensionPointName: string
36
+ .extensions[].name: string
37
+ .id: string
38
+ .name: string
39
+ .structure.aggregates[].commands[].allowedStates[]: string
40
+ .structure.aggregates[].commands[].mutationField: string
41
+ .structure.aggregates[].commands[].name: string
42
+ .structure.aggregates[].commands[].references[].entity: string
43
+ .structure.aggregates[].commands[].references[].fieldName: string
44
+ .structure.aggregates[].commands[].schema: string
45
+ .structure.aggregates[].consumedEventTypes[]: string
46
+ .structure.aggregates[].events[].name: string
47
+ .structure.aggregates[].events[].references[].entity: string
48
+ .structure.aggregates[].events[].references[].fieldName: string
49
+ .structure.aggregates[].events[].schema: string
50
+ .structure.aggregates[].linkedViews[]: string
51
+ .structure.aggregates[].name: string
52
+ .structure.aggregates[].producedEventTypes[]: string
53
+ .structure.automationSlices[].consumedEventTypes[]: string
54
+ .structure.automationSlices[].name: string
55
+ .structure.automationSlices[].producedCommandTypes[]: string
56
+ .structure.automationSlices[].targetName: string
57
+ .structure.extensionPoints[].commandTypes[]: string
58
+ .structure.extensionPoints[].delegateNames[]: string
59
+ .structure.extensionPoints[].name: string
60
+ .structure.extensionPoints[].sourceEventTypes[]: string
61
+ .structure.extensions[].commandTypes[]: string
62
+ .structure.extensions[].delegateNames[]: string
63
+ .structure.extensions[].eventTypes[]: string
64
+ .structure.extensions[].name: string
65
+ .structure.inboundTranslationSlices[].commandTypes[]: string
66
+ .structure.inboundTranslationSlices[].name: string
67
+ .structure.inboundTranslationSlices[].targetName: string
68
+ .structure.outboundTranslationSlices[].consumedEventTypes[]: string
69
+ .structure.outboundTranslationSlices[].inboundCommandTypes[]: string
70
+ .structure.outboundTranslationSlices[].name: string
71
+ .structure.readModels[].consumedEventTypes[]: string
72
+ .structure.readModels[].labelField: string
73
+ .structure.readModels[].linkedWriteSide[]: string
74
+ .structure.readModels[].name: string
75
+ .structure.readModels[].queryField: string
76
+ .structure.readModels[].schema: string
77
+ .structure.readModels[].searchableFields[]: string
78
+ .structure.requiredStoreDeclarations[].component: string
79
+ .structure.requiredStoreDeclarations[].field: string
80
+ .structure.requiredStoreDeclarations[].store: string
81
+ .structure.requiredStores[]: string
82
+ .structure.stateChangeSlices[].commands[].allowedStates[]: string
83
+ .structure.stateChangeSlices[].commands[].mutationField: string
84
+ .structure.stateChangeSlices[].commands[].name: string
85
+ .structure.stateChangeSlices[].commands[].references[].entity: string
86
+ .structure.stateChangeSlices[].commands[].references[].fieldName: string
87
+ .structure.stateChangeSlices[].commands[].schema: string
88
+ .structure.stateChangeSlices[].consumedEventTypes[]: string
89
+ .structure.stateChangeSlices[].events[].name: string
90
+ .structure.stateChangeSlices[].events[].references[].entity: string
91
+ .structure.stateChangeSlices[].events[].references[].fieldName: string
92
+ .structure.stateChangeSlices[].events[].schema: string
93
+ .structure.stateChangeSlices[].linkedViews[]: string
94
+ .structure.stateChangeSlices[].name: string
95
+ .structure.stateChangeSlices[].producedEventTypes[]: string
96
+ .structure.stateViewSlices[].consumedEventTypes[]: string
97
+ .structure.stateViewSlices[].labelField: string
98
+ .structure.stateViewSlices[].linkedWriteSide[]: string
99
+ .structure.stateViewSlices[].name: string
100
+ .structure.stateViewSlices[].queryField: string
101
+ .structure.stateViewSlices[].schema: string
102
+ .structure.stateViewSlices[].searchableFields[]: string
103
+ .version: string