@reventlessdev/reventless-aws 3.0.0-alpha.198 → 3.0.0-alpha.200
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 +14 -0
- package/package.json +6 -6
- package/src/Platform.res +19 -3
- package/src/Platform.res.mjs +28 -20
- package/src/adapter/Api/Platform_ApiFragments_Lambda.res +19 -9
- package/src/adapter/Api/Platform_ApiFragments_Lambda.res.mjs +2 -2
- package/src/adapter/Api/Platform_UIFragments_Lambda.res +19 -9
- package/src/adapter/Api/Platform_UIFragments_Lambda.res.mjs +2 -2
- package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res +16 -7
- package/src/adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res.mjs +5 -2
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.200 (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.199 (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.198 (2026-07-12)
|
|
7
21
|
|
|
8
22
|
### Features
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reventlessdev/reventless-aws",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.200",
|
|
4
4
|
"description": "AWS adapters for Reventless",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"dependencies": {
|
|
@@ -9,16 +9,16 @@
|
|
|
9
9
|
"sury": "11.0.0-alpha.4",
|
|
10
10
|
"uuid": "^13.0.0",
|
|
11
11
|
"@reventlessdev/rescript-aws-sdk": "2.2.0-alpha.21",
|
|
12
|
+
"@reventlessdev/rescript-effect": "0.1.0-alpha.27",
|
|
12
13
|
"@reventlessdev/rescript-pulumi-aws": "2.4.0-alpha.50",
|
|
13
|
-
"@reventlessdev/rescript-jest": "1.0.0-alpha.7",
|
|
14
14
|
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.15",
|
|
15
|
-
"@reventlessdev/rescript-
|
|
16
|
-
"@reventlessdev/reventless-core": "3.0.0-alpha.157",
|
|
15
|
+
"@reventlessdev/rescript-jest": "1.0.0-alpha.7",
|
|
17
16
|
"@reventlessdev/rescript-uuid": "1.1.0-alpha.15",
|
|
17
|
+
"@reventlessdev/reventless-core": "3.0.0-alpha.159",
|
|
18
18
|
"@reventlessdev/reventless-infra": "3.0.0-alpha.98",
|
|
19
|
-
"@reventlessdev/reventless-postgres": "3.0.0-alpha.21",
|
|
20
19
|
"@reventlessdev/reventless-interop": "3.0.0-alpha.26",
|
|
21
|
-
"@reventlessdev/reventless-spec": "3.0.0-alpha.76"
|
|
20
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.76",
|
|
21
|
+
"@reventlessdev/reventless-postgres": "3.0.0-alpha.23"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"rescript": "^12.3.0",
|
package/src/Platform.res
CHANGED
|
@@ -862,6 +862,7 @@ module MakeWithConfig = (
|
|
|
862
862
|
~runtime=runtimeTyped,
|
|
863
863
|
~fieldNames,
|
|
864
864
|
~tags,
|
|
865
|
+
~onAdminApi,
|
|
865
866
|
~opts,
|
|
866
867
|
)
|
|
867
868
|
},
|
|
@@ -1691,6 +1692,7 @@ module MakeWithConfig = (
|
|
|
1691
1692
|
Platform_UIFragments_Lambda.make(
|
|
1692
1693
|
~api=platformApi,
|
|
1693
1694
|
~uiFragmentRegistryTableName=r.name,
|
|
1695
|
+
~schemaReady=admin.adminSchemaPushed,
|
|
1694
1696
|
~opts={},
|
|
1695
1697
|
)
|
|
1696
1698
|
| None => ()
|
|
@@ -1709,6 +1711,7 @@ module MakeWithConfig = (
|
|
|
1709
1711
|
Platform_ApiFragments_Lambda.make(
|
|
1710
1712
|
~api=platformApi,
|
|
1711
1713
|
~apiFragmentRegistryTableName=r.name,
|
|
1714
|
+
~schemaReady=admin.adminSchemaPushed,
|
|
1712
1715
|
~opts={},
|
|
1713
1716
|
)
|
|
1714
1717
|
| None => ()
|
|
@@ -1979,10 +1982,21 @@ module MakeWithConfig = (
|
|
|
1979
1982
|
// table it re-folds from; the admin DCB command-topic FIFO URL it dispatches
|
|
1980
1983
|
// RecordApiFragmentPush to (captured during Admin.construct); and the mode flag.
|
|
1981
1984
|
~platformApiId=platformApi->Pulumi.Output.flatMap(api => api.id),
|
|
1982
|
-
|
|
1985
|
+
// NB: must NOT be `->Option.map(r => r.name)`. `apiFragmentRegistryTableName`
|
|
1986
|
+
// is `option<Pulumi.Output.t<string>>` (the forbidden pattern, CLAUDE.md code
|
|
1987
|
+
// smells). The generic `Option.map` body runs `Primitive_option.some(r.name)`,
|
|
1988
|
+
// and because a Pulumi Output lifts arbitrary property access, `some` inspects
|
|
1989
|
+
// `.BS_PRIVATE_NESTED_SOME_NONE`, mis-reads the Output as a nested option, and
|
|
1990
|
+
// stores the sentinel `{BS_PRIVATE_NESTED_SOME_NONE: 0}` instead of the Output —
|
|
1991
|
+
// so the consumer's `tableOutput->Pulumi.Output.apply` crashes with
|
|
1992
|
+
// "apply is not a function". A `Some(r.name)` LITERAL compiles unboxed (bare
|
|
1993
|
+
// r.name), preserving the Output — the same dodge `pluginReadModelTableName` uses.
|
|
1994
|
+
~apiFragmentRegistryTableName=?switch admin.stateViewSlicesOutputs
|
|
1983
1995
|
->Dict.get("ApiFragments")
|
|
1984
|
-
->Option.flatMap(rm => rm.queryDb.resources->Array.get(0))
|
|
1985
|
-
|
|
1996
|
+
->Option.flatMap(rm => rm.queryDb.resources->Array.get(0)) {
|
|
1997
|
+
| Some(r) => Some(r.name)
|
|
1998
|
+
| None => None
|
|
1999
|
+
},
|
|
1986
2000
|
~adminDcbCmdTopicUrl=?AutomationSliceRuntime_Builder_Single.getDcbQueueUrl(),
|
|
1987
2001
|
~splitApi=Config.splitApi,
|
|
1988
2002
|
(),
|
|
@@ -2014,6 +2028,7 @@ module MakeWithConfig = (
|
|
|
2014
2028
|
Platform_UIFragments_Lambda.make(
|
|
2015
2029
|
~api=platformApi,
|
|
2016
2030
|
~uiFragmentRegistryTableName=r.name,
|
|
2031
|
+
~schemaReady=admin.adminSchemaPushed,
|
|
2017
2032
|
~opts={},
|
|
2018
2033
|
)
|
|
2019
2034
|
| None => ()
|
|
@@ -2032,6 +2047,7 @@ module MakeWithConfig = (
|
|
|
2032
2047
|
Platform_ApiFragments_Lambda.make(
|
|
2033
2048
|
~api=platformApi,
|
|
2034
2049
|
~apiFragmentRegistryTableName=r.name,
|
|
2050
|
+
~schemaReady=admin.adminSchemaPushed,
|
|
2035
2051
|
~opts={},
|
|
2036
2052
|
)
|
|
2037
2053
|
| None => ()
|
package/src/Platform.res.mjs
CHANGED
|
@@ -867,7 +867,10 @@ function MakeWithConfig(Config) {
|
|
|
867
867
|
return adminBarrier;
|
|
868
868
|
};
|
|
869
869
|
let hooks_inboundAppSyncResolverHook = param => InboundTranslationResolvers_AppSync$ReventlessAws.make(resolveHookedApi(), param.runtime, param.fieldNames, param.opts);
|
|
870
|
-
let hooks_dcbAppSyncResolverHook = param =>
|
|
870
|
+
let hooks_dcbAppSyncResolverHook = param => {
|
|
871
|
+
let onAdminApi = param.onAdminApi;
|
|
872
|
+
CommandGeneratorResolvers_AppSync$ReventlessAws.makeDcb(onAdminApi ? resolveAdminHookedApi() : resolveHookedApi(), param.runtime, param.fieldNames, param.tags, onAdminApi, param.opts);
|
|
873
|
+
};
|
|
871
874
|
let hooks_onDcbEventLogCreated = dcbEventLogUnknown => {
|
|
872
875
|
if (DcbBackend$ReventlessAws.isPostgres()) {
|
|
873
876
|
return;
|
|
@@ -1134,14 +1137,14 @@ function MakeWithConfig(Config) {
|
|
|
1134
1137
|
if (rm !== undefined) {
|
|
1135
1138
|
let r$1 = rm.queryDb.resources[0];
|
|
1136
1139
|
if (r$1 !== undefined) {
|
|
1137
|
-
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, {});
|
|
1140
|
+
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
|
|
1138
1141
|
}
|
|
1139
1142
|
}
|
|
1140
1143
|
let rm$1 = admin.stateViewSlicesOutputs["ApiFragments"];
|
|
1141
1144
|
if (rm$1 !== undefined) {
|
|
1142
1145
|
let r$2 = rm$1.queryDb.resources[0];
|
|
1143
1146
|
if (r$2 !== undefined) {
|
|
1144
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, {});
|
|
1147
|
+
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
1145
1148
|
}
|
|
1146
1149
|
}
|
|
1147
1150
|
let pluginComponents = plugins.map(plugin => plugin.make());
|
|
@@ -1265,23 +1268,24 @@ function MakeWithConfig(Config) {
|
|
|
1265
1268
|
return Pulumi.output("NOT_AVAILABLE");
|
|
1266
1269
|
}
|
|
1267
1270
|
});
|
|
1268
|
-
|
|
1271
|
+
let r$1 = Stdlib_Option.flatMap(admin.stateViewSlicesOutputs["ApiFragments"], rm => rm.queryDb.resources[0]);
|
|
1272
|
+
PluginRuntime_Builder$ReventlessAws.registerConfig(pluginEpEventTopicArn, pluginReadModelTableName, pluginSchemaPersistenceTable.name, hooks_schedulerRoleUrn.contents, undefined, undefined, domainApiId, Config.cloner, Output$Pulumi.flatMap(platformApi, api => api.id), r$1 !== undefined ? r$1.name : undefined, AutomationSliceRuntime_Builder_Single$ReventlessAws.getDcbQueueUrl(), Config.splitApi, undefined);
|
|
1269
1273
|
if (pluginReadModelTableName !== undefined) {
|
|
1270
1274
|
AggregateRuntime_Builder_Single$ReventlessAws.setPluginReadModelTable(pluginReadModelTableName);
|
|
1271
1275
|
Platform_ComponentDefinitions_Lambda$ReventlessAws.make(platformApi, pluginReadModelTableName, {});
|
|
1272
1276
|
}
|
|
1273
1277
|
let rm = admin.stateViewSlicesOutputs["UiFragments"];
|
|
1274
1278
|
if (rm !== undefined) {
|
|
1275
|
-
let r$
|
|
1276
|
-
if (r$
|
|
1277
|
-
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$
|
|
1279
|
+
let r$2 = rm.queryDb.resources[0];
|
|
1280
|
+
if (r$2 !== undefined) {
|
|
1281
|
+
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
1278
1282
|
}
|
|
1279
1283
|
}
|
|
1280
1284
|
let rm$1 = admin.stateViewSlicesOutputs["ApiFragments"];
|
|
1281
1285
|
if (rm$1 !== undefined) {
|
|
1282
|
-
let r$
|
|
1283
|
-
if (r$
|
|
1284
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$
|
|
1286
|
+
let r$3 = rm$1.queryDb.resources[0];
|
|
1287
|
+
if (r$3 !== undefined) {
|
|
1288
|
+
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$3.name, admin.adminSchemaPushed, {});
|
|
1285
1289
|
}
|
|
1286
1290
|
}
|
|
1287
1291
|
if (Config.splitApi) {
|
|
@@ -2248,7 +2252,10 @@ function Make($star) {
|
|
|
2248
2252
|
return adminBarrier;
|
|
2249
2253
|
};
|
|
2250
2254
|
let hooks_inboundAppSyncResolverHook = param => InboundTranslationResolvers_AppSync$ReventlessAws.make(resolveHookedApi(), param.runtime, param.fieldNames, param.opts);
|
|
2251
|
-
let hooks_dcbAppSyncResolverHook = param =>
|
|
2255
|
+
let hooks_dcbAppSyncResolverHook = param => {
|
|
2256
|
+
let onAdminApi = param.onAdminApi;
|
|
2257
|
+
CommandGeneratorResolvers_AppSync$ReventlessAws.makeDcb(onAdminApi ? resolveAdminHookedApi() : resolveHookedApi(), param.runtime, param.fieldNames, param.tags, onAdminApi, param.opts);
|
|
2258
|
+
};
|
|
2252
2259
|
let hooks_onDcbEventLogCreated = dcbEventLogUnknown => {
|
|
2253
2260
|
if (DcbBackend$ReventlessAws.isPostgres()) {
|
|
2254
2261
|
return;
|
|
@@ -2510,14 +2517,14 @@ function Make($star) {
|
|
|
2510
2517
|
if (rm !== undefined) {
|
|
2511
2518
|
let r$1 = rm.queryDb.resources[0];
|
|
2512
2519
|
if (r$1 !== undefined) {
|
|
2513
|
-
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, {});
|
|
2520
|
+
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
|
|
2514
2521
|
}
|
|
2515
2522
|
}
|
|
2516
2523
|
let rm$1 = admin.stateViewSlicesOutputs["ApiFragments"];
|
|
2517
2524
|
if (rm$1 !== undefined) {
|
|
2518
2525
|
let r$2 = rm$1.queryDb.resources[0];
|
|
2519
2526
|
if (r$2 !== undefined) {
|
|
2520
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, {});
|
|
2527
|
+
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
2521
2528
|
}
|
|
2522
2529
|
}
|
|
2523
2530
|
let pluginComponents = plugins.map(plugin => plugin.make());
|
|
@@ -2629,23 +2636,24 @@ function Make($star) {
|
|
|
2629
2636
|
return Pulumi.output("NOT_AVAILABLE");
|
|
2630
2637
|
}
|
|
2631
2638
|
});
|
|
2632
|
-
|
|
2639
|
+
let r$1 = Stdlib_Option.flatMap(admin.stateViewSlicesOutputs["ApiFragments"], rm => rm.queryDb.resources[0]);
|
|
2640
|
+
PluginRuntime_Builder$ReventlessAws.registerConfig(pluginEpEventTopicArn, pluginReadModelTableName, pluginSchemaPersistenceTable.name, hooks_schedulerRoleUrn.contents, undefined, undefined, domainApiId, false, Output$Pulumi.flatMap(platformApi, api => api.id), r$1 !== undefined ? r$1.name : undefined, AutomationSliceRuntime_Builder_Single$ReventlessAws.getDcbQueueUrl(), true, undefined);
|
|
2633
2641
|
if (pluginReadModelTableName !== undefined) {
|
|
2634
2642
|
AggregateRuntime_Builder_Single$ReventlessAws.setPluginReadModelTable(pluginReadModelTableName);
|
|
2635
2643
|
Platform_ComponentDefinitions_Lambda$ReventlessAws.make(platformApi, pluginReadModelTableName, {});
|
|
2636
2644
|
}
|
|
2637
2645
|
let rm = admin.stateViewSlicesOutputs["UiFragments"];
|
|
2638
2646
|
if (rm !== undefined) {
|
|
2639
|
-
let r$
|
|
2640
|
-
if (r$
|
|
2641
|
-
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$
|
|
2647
|
+
let r$2 = rm.queryDb.resources[0];
|
|
2648
|
+
if (r$2 !== undefined) {
|
|
2649
|
+
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
2642
2650
|
}
|
|
2643
2651
|
}
|
|
2644
2652
|
let rm$1 = admin.stateViewSlicesOutputs["ApiFragments"];
|
|
2645
2653
|
if (rm$1 !== undefined) {
|
|
2646
|
-
let r$
|
|
2647
|
-
if (r$
|
|
2648
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$
|
|
2654
|
+
let r$3 = rm$1.queryDb.resources[0];
|
|
2655
|
+
if (r$3 !== undefined) {
|
|
2656
|
+
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$3.name, admin.adminSchemaPushed, {});
|
|
2649
2657
|
}
|
|
2650
2658
|
}
|
|
2651
2659
|
Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
|
|
@@ -67,6 +67,10 @@ export function response(ctx) {
|
|
|
67
67
|
let make = (
|
|
68
68
|
~api: Pulumi.Output.t<AppSync.GraphQLApi.t>,
|
|
69
69
|
~apiFragmentRegistryTableName: Pulumi.Output.t<string>,
|
|
70
|
+
// Resolves when the admin-base schema push has completed and the API is ACTIVE
|
|
71
|
+
// (Platform_Admin.adminSchemaPushed). CreateResolver is gated on it so it never
|
|
72
|
+
// races StartSchemaCreation on this first-ever-deployed field.
|
|
73
|
+
~schemaReady: Pulumi.Output.t<unit>,
|
|
70
74
|
~opts: Pulumi.ComponentResource.options,
|
|
71
75
|
) => {
|
|
72
76
|
let opts = opts->ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions
|
|
@@ -200,13 +204,19 @@ let make = (
|
|
|
200
204
|
~opts=Some(opts),
|
|
201
205
|
)
|
|
202
206
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
207
|
+
// Create the resolver only after the admin schema push is ACTIVE — otherwise
|
|
208
|
+
// CreateResolver races StartSchemaCreation and fails with "No field named
|
|
209
|
+
// Platform_ApiFragments found on type Query" the first time this field ships.
|
|
210
|
+
let _resolver =
|
|
211
|
+
schemaReady->Pulumi.Output.apply(() =>
|
|
212
|
+
AppSync_Resolver_Native.makeUnitJsResolver(
|
|
213
|
+
~name=name ++ "Resolver",
|
|
214
|
+
~api,
|
|
215
|
+
~dataSourceName=dataSource.name->Pulumi.Output.asInput,
|
|
216
|
+
~type_="Query"->Pulumi.Input.make,
|
|
217
|
+
~field="Platform_ApiFragments"->Pulumi.Input.make,
|
|
218
|
+
~code=resolverCode,
|
|
219
|
+
~opts,
|
|
220
|
+
)
|
|
221
|
+
)
|
|
212
222
|
}
|
|
@@ -68,7 +68,7 @@ export function response(ctx) {
|
|
|
68
68
|
}
|
|
69
69
|
`;
|
|
70
70
|
|
|
71
|
-
function make(api, apiFragmentRegistryTableName, opts) {
|
|
71
|
+
function make(api, apiFragmentRegistryTableName, schemaReady, opts) {
|
|
72
72
|
let opts$1 = Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts);
|
|
73
73
|
let name = "PlatformApiFragments";
|
|
74
74
|
let lambdaRole = IAM$PulumiAws.Role.makeWithDefaultPolicy(name + "Lambda", Pulumi.output(AWS$ReventlessAws.Lambda.principal), opts$1);
|
|
@@ -191,7 +191,7 @@ export async function handler() {
|
|
|
191
191
|
},
|
|
192
192
|
serviceRoleArn: dataSourceRole.arn
|
|
193
193
|
}, opts$1);
|
|
194
|
-
AppSync_Resolver_Native$ReventlessAws.makeUnitJsResolver(name + "Resolver", api, dataSource.name, "Query", "Platform_ApiFragments", resolverCode, opts$1);
|
|
194
|
+
schemaReady.apply(() => AppSync_Resolver_Native$ReventlessAws.makeUnitJsResolver(name + "Resolver", api, dataSource.name, "Query", "Platform_ApiFragments", resolverCode, opts$1));
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
export {
|
|
@@ -90,6 +90,11 @@ export function response(ctx) {
|
|
|
90
90
|
let make = (
|
|
91
91
|
~api: Pulumi.Output.t<AppSync.GraphQLApi.t>,
|
|
92
92
|
~uiFragmentRegistryTableName: Pulumi.Output.t<string>,
|
|
93
|
+
// Resolves when the admin-base schema push has completed and the API is ACTIVE
|
|
94
|
+
// (Platform_Admin.adminSchemaPushed). CreateResolver is gated on it so it never
|
|
95
|
+
// races StartSchemaCreation — the same first-deploy race that clobbered
|
|
96
|
+
// Platform_ApiFragments; harmless here today only because the field predates it.
|
|
97
|
+
~schemaReady: Pulumi.Output.t<unit>,
|
|
93
98
|
~opts: Pulumi.ComponentResource.options,
|
|
94
99
|
) => {
|
|
95
100
|
let opts = opts->ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions
|
|
@@ -223,13 +228,18 @@ let make = (
|
|
|
223
228
|
~opts=Some(opts),
|
|
224
229
|
)
|
|
225
230
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
231
|
+
// Create the resolver only after the admin schema push is ACTIVE — otherwise
|
|
232
|
+
// CreateResolver races StartSchemaCreation the first time this field ships.
|
|
233
|
+
let _resolver =
|
|
234
|
+
schemaReady->Pulumi.Output.apply(() =>
|
|
235
|
+
AppSync_Resolver_Native.makeUnitJsResolver(
|
|
236
|
+
~name=name ++ "Resolver",
|
|
237
|
+
~api,
|
|
238
|
+
~dataSourceName=dataSource.name->Pulumi.Output.asInput,
|
|
239
|
+
~type_="Query"->Pulumi.Input.make,
|
|
240
|
+
~field="Platform_UIFragments"->Pulumi.Input.make,
|
|
241
|
+
~code=resolverCode,
|
|
242
|
+
~opts,
|
|
243
|
+
)
|
|
244
|
+
)
|
|
235
245
|
}
|
|
@@ -94,7 +94,7 @@ export function response(ctx) {
|
|
|
94
94
|
}
|
|
95
95
|
`;
|
|
96
96
|
|
|
97
|
-
function make(api, uiFragmentRegistryTableName, opts) {
|
|
97
|
+
function make(api, uiFragmentRegistryTableName, schemaReady, opts) {
|
|
98
98
|
let opts$1 = Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts);
|
|
99
99
|
let name = "PlatformUIFragments";
|
|
100
100
|
let lambdaRole = IAM$PulumiAws.Role.makeWithDefaultPolicy(name + "Lambda", Pulumi.output(AWS$ReventlessAws.Lambda.principal), opts$1);
|
|
@@ -243,7 +243,7 @@ export async function handler() {
|
|
|
243
243
|
},
|
|
244
244
|
serviceRoleArn: dataSourceRole.arn
|
|
245
245
|
}, opts$1);
|
|
246
|
-
AppSync_Resolver_Native$ReventlessAws.makeUnitJsResolver(name + "Resolver", api, dataSource.name, "Query", "Platform_UIFragments", resolverCode, opts$1);
|
|
246
|
+
schemaReady.apply(() => AppSync_Resolver_Native$ReventlessAws.makeUnitJsResolver(name + "Resolver", api, dataSource.name, "Query", "Platform_UIFragments", resolverCode, opts$1));
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
export {
|
|
@@ -174,6 +174,12 @@ let makeDcb = (
|
|
|
174
174
|
~runtime: ReventlessCore.Runtime.environment<runtimeParts>,
|
|
175
175
|
~fieldNames: array<string>,
|
|
176
176
|
~tags: array<string>,
|
|
177
|
+
// Admin (onAdminApi) DCB slices expose ONLY their mutation fields (declared in the
|
|
178
|
+
// static AdminApi.baseFragment). The static base does NOT declare their `on<Field>`
|
|
179
|
+
// subscription counterparts, so creating Source-C subscription resolvers would fail
|
|
180
|
+
// with CreateResolver NotFound. Suppress subscriptions for admin; plugins keep them
|
|
181
|
+
// (their generated fragment declares the matching subscription fields).
|
|
182
|
+
~onAdminApi: bool=false,
|
|
177
183
|
~opts: Pulumi.ComponentResource.options,
|
|
178
184
|
) => {
|
|
179
185
|
let opts = opts->ReventlessCore.Util.Pulumi.ComponentResourceOptions.toCustomResourceOptions
|
|
@@ -242,11 +248,14 @@ let makeDcb = (
|
|
|
242
248
|
)
|
|
243
249
|
})
|
|
244
250
|
|
|
245
|
-
// Source C: create Subscription.onX resolver for each DCB mutation field
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
251
|
+
// Source C: create Subscription.onX resolver for each DCB mutation field — skipped
|
|
252
|
+
// for admin slices, whose static base declares no such subscription fields.
|
|
253
|
+
if !onAdminApi {
|
|
254
|
+
CommandSubscriptionResolvers_AppSync.make(
|
|
255
|
+
~api,
|
|
256
|
+
~mutationFields=fieldNames,
|
|
257
|
+
~dataSourceName=dataSource.name->Pulumi.Output.asInput,
|
|
258
|
+
~opts,
|
|
259
|
+
)
|
|
260
|
+
}
|
|
252
261
|
}
|
|
@@ -85,7 +85,8 @@ function make(name, api, fields, param, runtime, resources, opts) {
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
function makeDcb(api, runtime, fieldNames, tags, opts) {
|
|
88
|
+
function makeDcb(api, runtime, fieldNames, tags, onAdminApiOpt, opts) {
|
|
89
|
+
let onAdminApi = onAdminApiOpt !== undefined ? onAdminApiOpt : false;
|
|
89
90
|
let opts$1 = Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts);
|
|
90
91
|
let lambda = runtime.parts.lambda;
|
|
91
92
|
let dataSourceRole = IAM$PulumiAws.Role.makeWithDefaultPolicy("DcbMutationDS", Pulumi.output(AWS$ReventlessAws.AppSync.principal), opts$1);
|
|
@@ -115,7 +116,9 @@ function makeDcb(api, runtime, fieldNames, tags, opts) {
|
|
|
115
116
|
let fieldName = param[0];
|
|
116
117
|
AppSync_Resolver_Retrying$ReventlessAws.makeUnitJsResolver(Stdlib_String.capitalize(fieldName), api, dataSource.name, "Mutation", fieldName, AppSync_Resolver_Functions$PulumiAws.invokeDcbMutation(param[1]), opts$1);
|
|
117
118
|
});
|
|
118
|
-
|
|
119
|
+
if (!onAdminApi) {
|
|
120
|
+
return CommandSubscriptionResolvers_AppSync$ReventlessAws.make(api, fieldNames, dataSource.name, opts$1);
|
|
121
|
+
}
|
|
119
122
|
}
|
|
120
123
|
|
|
121
124
|
export {
|