@reventlessdev/reventless-core 3.0.0-alpha.157 → 3.0.0-alpha.159

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,20 @@
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.159 (2026-07-12)
7
+
8
+ ### Bug Fixes
9
+
10
+ * **admin:** fix admin-DCB-on-AWS deploy — Output-in-option corruption + orphan resolvers ([edde07d](https://github.com/ReventlessDev/reventless-core/commit/edde07d1d7a89a47a7496d46fbf83fbadffa74a9))
11
+
12
+
13
+ # 3.0.0-alpha.158 (2026-07-12)
14
+
15
+ ### Bug Fixes
16
+
17
+ * **deploy:** gate admin status-query resolvers on the schema push ([2634694](https://github.com/ReventlessDev/reventless-core/commit/2634694b3a122bc1db44d129769f5442e124d9b7))
18
+
19
+
6
20
  # 3.0.0-alpha.157 (2026-07-12)
7
21
 
8
22
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-core",
3
- "version": "3.0.0-alpha.157",
3
+ "version": "3.0.0-alpha.159",
4
4
  "description": "Core package for Reventless framework",
5
5
  "license": "Apache-2.0",
6
6
  "jest": {
@@ -28,17 +28,17 @@
28
28
  "dependencies": {
29
29
  "sury": "11.0.0-alpha.4",
30
30
  "uuid": "^13.0.0",
31
- "@reventlessdev/rescript-effect": "0.1.0-alpha.27",
32
- "@reventlessdev/rescript-jest": "1.0.0-alpha.7",
33
31
  "@reventlessdev/rescript-hash-object": "1.2.0-alpha.11",
34
- "@reventlessdev/rescript-fast-csv": "1.2.0-alpha.12",
32
+ "@reventlessdev/rescript-jest": "1.0.0-alpha.7",
35
33
  "@reventlessdev/rescript-node-streams": "1.1.0-alpha.11",
34
+ "@reventlessdev/rescript-fast-csv": "1.2.0-alpha.12",
35
+ "@reventlessdev/rescript-effect": "0.1.0-alpha.27",
36
36
  "@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.15",
37
37
  "@reventlessdev/rescript-ssh2": "1.1.0-alpha.12",
38
- "@reventlessdev/reventless-infra": "3.0.0-alpha.98",
39
38
  "@reventlessdev/rescript-uuid": "1.1.0-alpha.15",
40
- "@reventlessdev/reventless-interop": "3.0.0-alpha.26",
41
- "@reventlessdev/reventless-spec": "3.0.0-alpha.76"
39
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.98",
40
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.76",
41
+ "@reventlessdev/reventless-interop": "3.0.0-alpha.26"
42
42
  },
43
43
  "devDependencies": {
44
44
  "rescript": "^12.3.0",
@@ -19,6 +19,14 @@ type outputs = {
19
19
  automationSlicesOutputs: dict<AutomationSlice.outputs>,
20
20
  outboundTranslationSlicesOutputs: dict<OutboundTranslationSlice.outputs>,
21
21
  inboundTranslationSlicesOutputs: dict<InboundTranslationSlice.outputs>,
22
+ // Resolves once the admin-base schema push (preAdminResolversSchemaHook) has
23
+ // completed and the AppSync API is ACTIVE — an already-resolved Output when no
24
+ // hook is supplied (in-memory). Platform.res gates the Lambda-backed admin
25
+ // status-query resolvers (Platform_UIFragments / Platform_ApiFragments), which
26
+ // are mounted outside construct, on this so their CreateResolver calls don't
27
+ // race StartSchemaCreation on a first-ever-deployed field (the 2026-07-12
28
+ // Platform_ApiFragments "No field named ... on type Query" clobber).
29
+ adminSchemaPushed: Pulumi.Output.t<unit>,
22
30
  }
23
31
 
24
32
  module Make = (
@@ -269,9 +277,22 @@ module Make = (
269
277
  // Merge DCB StateViewSlice / InboundTranslation QueryDbs into allQueryDbs so the
270
278
  // resolver-makers wired below also cover admin DCB slice fields (mirrors the
271
279
  // plugin-side merge at Plugin_Builder.res).
272
- dcbResult.stateViewSlicesOutputs
273
- ->Dict.toArray
274
- ->Array.forEach(((k, v)) => allQueryDbs->Dict.set(k, v.queryDb))
280
+ //
281
+ // BUT skip the StateViewSlice merge on a static-schema-push platform (AWS, where
282
+ // preAdminResolversSchemaHook is Some): there the pushed schema is the static
283
+ // AdminApi.baseFragment, which does NOT declare the auto `<prefix>_<Slice>` query
284
+ // fields — so creating their resolvers would fail CreateResolver with
285
+ // "No field named Admin_<Slice> on type Query". The admin StateView slices are
286
+ // internal registries whose real query surface is served by dedicated Lambda
287
+ // resolvers (Platform_UIFragments / Platform_ApiFragments), so no auto query
288
+ // resolver is wanted on AWS anyway. On the local platform (hook = None) the schema
289
+ // is built FROM these registrations, so they stay coupled and must be merged.
290
+ let staticSchemaPush = Config.hooks.preAdminResolversSchemaHook->Option.isSome
291
+ if !staticSchemaPush {
292
+ dcbResult.stateViewSlicesOutputs
293
+ ->Dict.toArray
294
+ ->Array.forEach(((k, v)) => allQueryDbs->Dict.set(k, v.queryDb))
295
+ }
275
296
  dcbResult.inboundTranslationSlicesOutputs
276
297
  ->Dict.toArray
277
298
  ->Array.forEach(((k, v)) => allQueryDbs->Dict.set(k, v.queryDb))
@@ -434,6 +455,7 @@ module Make = (
434
455
  automationSlicesOutputs: dcbResult.automationSlicesOutputs,
435
456
  outboundTranslationSlicesOutputs: dcbResult.outboundTranslationSlicesOutputs,
436
457
  inboundTranslationSlicesOutputs: dcbResult.inboundTranslationSlicesOutputs,
458
+ adminSchemaPushed,
437
459
  }
438
460
  }
439
461
  }
@@ -131,9 +131,12 @@ function Make(RuntimeEnvironment) {
131
131
  });
132
132
  let readModelsOutputs = Builder_Helpers$ReventlessCore.createReadModels(readModels, api, apiRole, aggregateEventTopics, opts);
133
133
  let allQueryDbs = ReadModel$ReventlessCore.allQueryDbs(readModelsOutputs);
134
- Object.entries(dcbResult.stateViewSlicesOutputs).forEach(param => {
135
- allQueryDbs[param[0]] = param[1].queryDb;
136
- });
134
+ let staticSchemaPush = Stdlib_Option.isSome(Config.hooks.preAdminResolversSchemaHook);
135
+ if (!staticSchemaPush) {
136
+ Object.entries(dcbResult.stateViewSlicesOutputs).forEach(param => {
137
+ allQueryDbs[param[0]] = param[1].queryDb;
138
+ });
139
+ }
137
140
  Object.entries(dcbResult.inboundTranslationSlicesOutputs).forEach(param => {
138
141
  allQueryDbs[param[0]] = param[1].queryDb;
139
142
  });
@@ -235,7 +238,8 @@ function Make(RuntimeEnvironment) {
235
238
  stateViewSlicesOutputs: dcbResult.stateViewSlicesOutputs,
236
239
  automationSlicesOutputs: dcbResult.automationSlicesOutputs,
237
240
  outboundTranslationSlicesOutputs: dcbResult.outboundTranslationSlicesOutputs,
238
- inboundTranslationSlicesOutputs: dcbResult.inboundTranslationSlicesOutputs
241
+ inboundTranslationSlicesOutputs: dcbResult.inboundTranslationSlicesOutputs,
242
+ adminSchemaPushed: adminSchemaPushed
239
243
  };
240
244
  };
241
245
  return {