@reventlessdev/reventless-core 3.0.0-alpha.140 → 3.0.0-alpha.142

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 CHANGED
@@ -3,6 +3,21 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 3.0.0-alpha.142 (2026-07-05)
7
+
8
+ **Note:** Version bump only for package @reventlessdev/reventless-core
9
+
10
+
11
+
12
+
13
+
14
+ # 3.0.0-alpha.141 (2026-07-05)
15
+
16
+ ### Features
17
+
18
+ * @[@reventless](https://github.com/reventless).systemCallable slice opt-in for deploy-time system callers ([c5ed537](https://github.com/ReventlessDev/reventless-core/commit/c5ed537309f8e4b7d4a4d4af1ed1ec83d060aea3))
19
+
20
+
6
21
  # 3.0.0-alpha.140 (2026-07-05)
7
22
 
8
23
  **Note:** Version bump only for package @reventlessdev/reventless-core
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-core",
3
- "version": "3.0.0-alpha.140",
3
+ "version": "3.0.0-alpha.142",
4
4
  "description": "Core package for Reventless framework",
5
5
  "license": "Apache-2.0",
6
6
  "jest": {
@@ -29,21 +29,21 @@
29
29
  "sury": "11.0.0-alpha.4",
30
30
  "uuid": "^13.0.0",
31
31
  "@reventlessdev/rescript-effect": "0.1.0-alpha.24",
32
- "@reventlessdev/rescript-hash-object": "1.2.0-alpha.10",
33
32
  "@reventlessdev/rescript-fast-csv": "1.2.0-alpha.11",
33
+ "@reventlessdev/rescript-hash-object": "1.2.0-alpha.10",
34
34
  "@reventlessdev/rescript-jest": "1.0.0-alpha.5",
35
35
  "@reventlessdev/rescript-node-streams": "1.1.0-alpha.10",
36
36
  "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.14",
37
37
  "@reventlessdev/rescript-ssh2": "1.1.0-alpha.11",
38
- "@reventlessdev/reventless-infra": "3.0.0-alpha.86",
39
- "@reventlessdev/reventless-spec": "3.0.0-alpha.64",
40
38
  "@reventlessdev/rescript-uuid": "1.1.0-alpha.13",
41
- "@reventlessdev/reventless-interop": "3.0.0-alpha.23"
39
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.88",
40
+ "@reventlessdev/reventless-interop": "3.0.0-alpha.23",
41
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.66"
42
42
  },
43
43
  "devDependencies": {
44
44
  "rescript": "^12.3.0",
45
45
  "sury-ppx": "11.0.0-alpha.2",
46
- "@reventlessdev/reventless-ppx": "1.0.0-alpha.50"
46
+ "@reventlessdev/reventless-ppx": "1.0.0-alpha.51"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "rescript": "^12.3.0"
@@ -71,7 +71,7 @@ function Make(RuntimeEnvironment) {
71
71
  let aggregatesWithoutEventMappers = Builder_Helpers$ReventlessCore.createAggregatesWithoutEventMappers(aggregates, api, opts);
72
72
  let aggregateEventTopics = Aggregate$ReventlessCore.allEventTopics(aggregatesWithoutEventMappers);
73
73
  Plugin_Helpers$ReventlessCore.registerAdminAggregateMutations(aggregates, Config.hooks);
74
- let dcbResult = DcbBuilder.construct(name, name, undefined, undefined, aggregateEventTopics, stateChangeSlices, stateViewSlices, automationSlices, outboundTranslationSlices, inboundTranslationSlices, undefined, opts);
74
+ let dcbResult = DcbBuilder.construct(name, name, undefined, undefined, aggregateEventTopics, stateChangeSlices, stateViewSlices, automationSlices, outboundTranslationSlices, inboundTranslationSlices, undefined, undefined, opts);
75
75
  let adminMutationEntries = AdminApi$ReventlessCore.mutationEntries(Config.cloner);
76
76
  let allMutationEntries = adminMutationEntries.concat(dcbResult.mutationEntries);
77
77
  let allQueryEntries = AdminApi$ReventlessCore.queryEntries.concat(dcbResult.queryEntries);
@@ -76,6 +76,10 @@ module Make = (
76
76
  ~automationSlices: array<module(AutomationSlice.T)>,
77
77
  ~outboundTranslationSlices: array<module(OutboundTranslationSlice.T)>,
78
78
  ~inboundTranslationSlices: array<module(InboundTranslationSlice.T)>,
79
+ // Spec names of slices whose GraphQL fields a deploy-time system caller
80
+ // (machine credentials — IAM/SigV4 on AWS) must invoke — sets
81
+ // `systemCallable` on the matching mutation / state-view query schema entries.
82
+ ~systemCallableComponents: array<string>=[],
79
83
  ~pluginStructure: option<Reventless.Plugin.pluginStructure>=?,
80
84
  ~opts: Pulumi.ComponentResource.options,
81
85
  ): dcbResult => {
@@ -818,6 +822,7 @@ module Make = (
818
822
  ReventlessInfra.Api.fieldNames: [fieldName],
819
823
  commandSchema,
820
824
  fieldPermissions,
825
+ systemCallable: systemCallableComponents->Array.includes(S.Spec.name),
821
826
  linkedViews: ?sliceDef->Option.map(d => d.linkedViews),
822
827
  consistencyRead: ?sliceDef->Option.flatMap(d => d.consistencyRead),
823
828
  })
@@ -858,6 +863,7 @@ module Make = (
858
863
  stateSchema: V.Spec.stateSchema->Reventless.DcbTag.toUnknownSchema,
859
864
  authorization: None,
860
865
  permission: V.Spec.authorization,
866
+ systemCallable: systemCallableComponents->Array.includes(V.Spec.name),
861
867
  includeIdParam: qn.includeIdParam,
862
868
  connectionSpec: true,
863
869
  subIdField: ?subIdField,
@@ -78,10 +78,11 @@ let emptyResult = {
78
78
 
79
79
  function Make(DcbEventLogStorage) {
80
80
  return DcbEventTopicPublisher => (DcbCommandTopicChannel => (DcbCommandTopicChannelAsync => (RuntimeBuilder => (HooksConfig => {
81
- let construct = (name, childName, environmentOpt, platformNameOpt, aggregateEventTopicsOpt, stateChangeSlices, stateViewSlices, automationSlices, outboundTranslationSlices, inboundTranslationSlices, pluginStructure, opts) => {
81
+ let construct = (name, childName, environmentOpt, platformNameOpt, aggregateEventTopicsOpt, stateChangeSlices, stateViewSlices, automationSlices, outboundTranslationSlices, inboundTranslationSlices, systemCallableComponentsOpt, pluginStructure, opts) => {
82
82
  let environment = environmentOpt !== undefined ? environmentOpt : "";
83
83
  let platformName = platformNameOpt !== undefined ? platformNameOpt : "";
84
84
  let aggregateEventTopics = aggregateEventTopicsOpt !== undefined ? aggregateEventTopicsOpt : ({});
85
+ let systemCallableComponents = systemCallableComponentsOpt !== undefined ? systemCallableComponentsOpt : [];
85
86
  let hasDcb = stateChangeSlices.length !== 0;
86
87
  if (!hasDcb) {
87
88
  return emptyResult;
@@ -466,6 +467,7 @@ function Make(DcbEventLogStorage) {
466
467
  fieldNames: [fieldName],
467
468
  commandSchema: commandSchema,
468
469
  fieldPermissions: fieldPermissions,
470
+ systemCallable: systemCallableComponents.includes(S.Spec.name),
469
471
  linkedViews: Stdlib_Option.map(sliceDef, d => d.linkedViews),
470
472
  consistencyRead: Stdlib_Option.flatMap(sliceDef, d => d.consistencyRead)
471
473
  };
@@ -495,6 +497,7 @@ function Make(DcbEventLogStorage) {
495
497
  stateSchema: V.Spec.stateSchema,
496
498
  authorization: undefined,
497
499
  permission: V.Spec.authorization,
500
+ systemCallable: systemCallableComponents.includes(V.Spec.name),
498
501
  includeIdParam: qn.includeIdParam,
499
502
  connectionSpec: true,
500
503
  subIdField: subIdField,
@@ -23,6 +23,7 @@ module type T = {
23
23
  ~automationSlices: array<module(ReventlessInfra.AutomationSlice.T)>=?,
24
24
  ~outboundTranslationSlices: array<module(ReventlessInfra.OutboundTranslationSlice.T)>=?,
25
25
  ~inboundTranslationSlices: array<module(ReventlessInfra.InboundTranslationSlice.T)>=?,
26
+ ~systemCallableComponents: array<string>=?,
26
27
  ~uiFragments: Reventless.Plugin.uiFragmentManifest=?,
27
28
  ~pluginStructure: Reventless.Plugin.pluginStructure=?,
28
29
  ~opts: Pulumi.ComponentResource.options=?,
@@ -55,6 +55,7 @@ module Make = (
55
55
  ~automationSlices: array<module(ReventlessInfra.AutomationSlice.T)>,
56
56
  ~outboundTranslationSlices: array<module(ReventlessInfra.OutboundTranslationSlice.T)>,
57
57
  ~inboundTranslationSlices: array<module(ReventlessInfra.InboundTranslationSlice.T)>,
58
+ ~systemCallableComponents: array<string>,
58
59
  ~uiFragments: option<Reventless.Plugin.uiFragmentManifest>,
59
60
  ~pluginStructure: option<Reventless.Plugin.pluginStructure>,
60
61
  self,
@@ -155,6 +156,7 @@ module Make = (
155
156
  ~automationSlices,
156
157
  ~outboundTranslationSlices,
157
158
  ~inboundTranslationSlices,
159
+ ~systemCallableComponents,
158
160
  ~pluginStructure?,
159
161
  ~opts,
160
162
  )
@@ -985,6 +987,7 @@ module Make = (
985
987
  ~automationSlices=[],
986
988
  ~outboundTranslationSlices=[],
987
989
  ~inboundTranslationSlices=[],
990
+ ~systemCallableComponents=[],
988
991
  ~uiFragments: option<Reventless.Plugin.uiFragmentManifest>=?,
989
992
  ~pluginStructure: option<Reventless.Plugin.pluginStructure>=?,
990
993
  ~opts=?,
@@ -1007,6 +1010,7 @@ module Make = (
1007
1010
  ~automationSlices,
1008
1011
  ~outboundTranslationSlices,
1009
1012
  ~inboundTranslationSlices,
1013
+ ~systemCallableComponents,
1010
1014
  ~uiFragments,
1011
1015
  ~pluginStructure,
1012
1016
  ...
@@ -101,7 +101,7 @@ function Make(Spec) {
101
101
  let extensionPoints = extensionPointsOpt !== undefined ? extensionPointsOpt : [];
102
102
  return Plugin_Structure$ReventlessCore.make(name, aggregates, readModels, stateViewSlices, stateChangeSlices, automationSlices, outboundTranslationSlices, inboundTranslationSlices, extensions, extensionPoints);
103
103
  };
104
- let make = (name, heartbeatInterval, extensionPointsOpt, extensionsOpt, aggregatesOpt, readModelsOpt, tasksOpt, stateChangeSlicesOpt, stateViewSlicesOpt, automationSlicesOpt, outboundTranslationSlicesOpt, inboundTranslationSlicesOpt, uiFragments, pluginStructure, opts) => {
104
+ let make = (name, heartbeatInterval, extensionPointsOpt, extensionsOpt, aggregatesOpt, readModelsOpt, tasksOpt, stateChangeSlicesOpt, stateViewSlicesOpt, automationSlicesOpt, outboundTranslationSlicesOpt, inboundTranslationSlicesOpt, systemCallableComponentsOpt, uiFragments, pluginStructure, opts) => {
105
105
  let extensionPoints = extensionPointsOpt !== undefined ? extensionPointsOpt : [];
106
106
  let extensions = extensionsOpt !== undefined ? extensionsOpt : [];
107
107
  let aggregates = aggregatesOpt !== undefined ? aggregatesOpt : [];
@@ -112,6 +112,7 @@ function Make(Spec) {
112
112
  let automationSlices = automationSlicesOpt !== undefined ? automationSlicesOpt : [];
113
113
  let outboundTranslationSlices = outboundTranslationSlicesOpt !== undefined ? outboundTranslationSlicesOpt : [];
114
114
  let inboundTranslationSlices = inboundTranslationSlicesOpt !== undefined ? inboundTranslationSlicesOpt : [];
115
+ let systemCallableComponents = systemCallableComponentsOpt !== undefined ? systemCallableComponentsOpt : [];
115
116
  PluginRuntimeBuilder.registerPluginName(name);
116
117
  let version = PackageVersion$Reventless.fromCaller();
117
118
  return Component$ReventlessCore.make(ComponentType$ReventlessCore.toString(Plugin$ReventlessCore.componentType), name, (extra, extra$1) => {
@@ -144,7 +145,7 @@ function Make(Spec) {
144
145
  let DcbBuilder = Dcb_Builder$ReventlessCore.Make(DcbEventLogStorage)(DcbEventTopicPublisher)(DcbCommandTopicChannel)(DcbCommandTopicChannelAsync)(PluginRuntimeBuilder)({
145
146
  hooks: Spec.hooks
146
147
  });
147
- let dcbResult = DcbBuilder.construct(extra$1, childName, Spec.environment, Spec.platformName, aggregateEventTopics, stateChangeSlices, stateViewSlices, automationSlices, outboundTranslationSlices, inboundTranslationSlices, pluginStructure, opts);
148
+ let dcbResult = DcbBuilder.construct(extra$1, childName, Spec.environment, Spec.platformName, aggregateEventTopics, stateChangeSlices, stateViewSlices, automationSlices, outboundTranslationSlices, inboundTranslationSlices, systemCallableComponents, pluginStructure, opts);
148
149
  let mutationEntriesFromAggregates = aggregates.flatMap(M => {
149
150
  let commandSchema = M.Spec.commandSchema;
150
151
  if (ApiNoApiHelpers$ReventlessCore.isNoApi(commandSchema)) {