@reventlessdev/reventless-aws 3.0.0-alpha.210 → 3.0.0-alpha.212

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 (39) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.json +6 -6
  3. package/src/Platform.res +116 -849
  4. package/src/Platform.res.mjs +75 -710
  5. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res +16 -3
  6. package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res.mjs +11 -1
  7. package/src/adapter/QueryDb/PgQueryResolver_Builder.res +4 -47
  8. package/src/adapter/QueryDb/PgQueryResolver_Builder.res.mjs +1 -30
  9. package/src/adapter/QueryDb/QueryDbResolvers_AppSync.res +0 -11
  10. package/src/adapter/QueryDb/QueryDbResolvers_AppSync.res.mjs +0 -5
  11. package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res +6 -7
  12. package/src/adapter/Runtime/StateViewSliceEntryPoint.mjs +4 -1
  13. package/src/components/Api/AppSync_Adapter.res +32 -105
  14. package/src/components/Api/AppSync_Adapter.res.mjs +12 -53
  15. package/src/components/Api/AppSync_MergedApi.res +1 -1
  16. package/src/components/Api/AppSync_SdlDecorate.res +6 -65
  17. package/src/components/Api/AppSync_SdlDecorate.res.mjs +1 -31
  18. package/src/components/Plugin.res.mjs +1 -2
  19. package/src/plugin/heartbeat/HeartbeatRunner_CloudWatchEvents.res +40 -35
  20. package/src/plugin/heartbeat/HeartbeatRunner_CloudWatchEvents.res.mjs +14 -15
  21. package/src/plugin/runtime/PluginRuntime_Builder.res +58 -69
  22. package/src/plugin/runtime/PluginRuntime_Builder.res.mjs +31 -29
  23. package/tests/AppSync_AdapterTest.res +23 -15
  24. package/tests/AppSync_AdapterTest.res.mjs +18 -16
  25. package/tests/AppSync_SdlDecorateTest.res +9 -89
  26. package/tests/AppSync_SdlDecorateTest.res.mjs +7 -72
  27. package/tests/MCP_LambdaTest.res +4 -6
  28. package/tests/MCP_LambdaTest.res.mjs +2 -2
  29. package/src/adapter/Api/ApiFragmentDeregistration.res +0 -138
  30. package/src/adapter/Api/ApiFragmentDeregistration.res.mjs +0 -108
  31. package/src/adapter/Api/ApiSchemaPush.res +0 -79
  32. package/src/adapter/Api/ApiSchemaPush.res.mjs +0 -64
  33. package/src/adapter/Api/Platform_ApiFragments_Lambda.res +0 -222
  34. package/src/adapter/Api/Platform_ApiFragments_Lambda.res.mjs +0 -202
  35. package/src/adapter/QueryDb/NodeResolver_AppSync.res +0 -71
  36. package/src/adapter/QueryDb/NodeResolver_AppSync.res.mjs +0 -44
  37. package/src/adapter/Runtime/ApiSchemaPush_Runtime.mjs +0 -204
  38. package/tests/ApiSchemaPushTest.res +0 -32
  39. package/tests/ApiSchemaPushTest.res.mjs +0 -20
@@ -11,8 +11,6 @@ import * as Output$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Output
11
11
  import * as Pulumi$Pulumi from "@reventlessdev/rescript-pulumi-pulumi/src/Pulumi.res.mjs";
12
12
  import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
13
13
  import * as Pulumi from "@pulumi/pulumi";
14
- import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
15
- import * as Primitive_object from "@rescript/runtime/lib/es6/Primitive_object.js";
16
14
  import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
17
15
  import * as Plugin$ReventlessAws from "./components/Plugin.res.mjs";
18
16
  import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
@@ -24,11 +22,9 @@ import * as Component$ReventlessCore from "@reventlessdev/reventless-core/src/co
24
22
  import * as DcbBackend$ReventlessAws from "./adapter/DcbEventLog/DcbBackend.res.mjs";
25
23
  import * as ReadModel$ReventlessCore from "@reventlessdev/reventless-core/src/components/ReadModel/ReadModel.res.mjs";
26
24
  import * as PluginSpec$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginSpec.res.mjs";
27
- import * as Api_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/Api/Api_Builder.res.mjs";
28
25
  import * as Plugin_Stack$ReventlessAws from "./plugin/stack/Plugin_Stack.res.mjs";
29
26
  import * as UiFragments$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateViewSlice/UiFragments.res.mjs";
30
27
  import * as Util_Pulumi$ReventlessCore from "@reventlessdev/reventless-core/src/util/Util_Pulumi.res.mjs";
31
- import * as ApiSchemaPush$ReventlessAws from "./adapter/Api/ApiSchemaPush.res.mjs";
32
28
  import * as Platform_Casts$ReventlessAws from "./Platform_Casts.res.mjs";
33
29
  import * as Platform_Stack$ReventlessAws from "./Platform_Stack.res.mjs";
34
30
  import * as QueryDbBackend$ReventlessAws from "./adapter/QueryDb/QueryDbBackend.res.mjs";
@@ -52,7 +48,6 @@ import * as PluginsProjection$ReventlessCore from "@reventlessdev/reventless-cor
52
48
  import * as StateTopic_AppSync$ReventlessAws from "./adapter/StateTopic/StateTopic_AppSync.res.mjs";
53
49
  import * as AppSync_SdlDecorate$ReventlessAws from "./components/Api/AppSync_SdlDecorate.res.mjs";
54
50
  import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry.res.mjs";
55
- import * as Util_AppSync_Caller$ReventlessAws from "./util/Util_AppSync_Caller.res.mjs";
56
51
  import * as Util_ResourceNaming$ReventlessAws from "./util/Util_ResourceNaming.res.mjs";
57
52
  import * as ClonerRunner_Fargate$ReventlessAws from "./plugin/cloner/ClonerRunner_Fargate.res.mjs";
58
53
  import * as QueryEngine_DynamoDb$ReventlessAws from "./adapter/QueryEngine/QueryEngine_DynamoDb.res.mjs";
@@ -61,28 +56,21 @@ import * as PluginsReadModelSpec$ReventlessCore from "@reventlessdev/reventless-
61
56
  import * as ExtensionPoint_Builder$ReventlessAws from "./components/ExtensionPoint_Builder.res.mjs";
62
57
  import * as StateViewSlice_Builder$ReventlessAws from "./components/StateViewSlice_Builder.res.mjs";
63
58
  import * as Task_Builder_PerBucket$ReventlessAws from "./components/Task_Builder_PerBucket.res.mjs";
64
- import * as ApiFragmentsProjection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentsProjection.res.mjs";
65
59
  import * as AutomationSlice_Builder$ReventlessAws from "./components/AutomationSlice_Builder.res.mjs";
66
60
  import * as EventTopicPublisher_SNS$ReventlessAws from "./adapter/EventTopic/EventTopicPublisher_SNS.res.mjs";
67
61
  import * as ExtensionPointMapping$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/ExtensionPointMapping.res.mjs";
68
62
  import * as PgQueryResolver_Builder$ReventlessAws from "./adapter/QueryDb/PgQueryResolver_Builder.res.mjs";
69
63
  import * as UiFragments_Projection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateViewSlice/UiFragments_Projection.res.mjs";
70
64
  import * as Aggregate_Builder_Single$ReventlessAws from "./components/Aggregate_Builder_Single.res.mjs";
71
- import * as ApiFragmentRegistrySpec$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentRegistrySpec.res.mjs";
72
65
  import * as ReadModel_Builder_Single$ReventlessAws from "./components/ReadModel_Builder_Single.res.mjs";
73
- import * as SideEffectHandler_Single$ReventlessAws from "./components/SideEffectHandler_Single.res.mjs";
74
66
  import * as StateChangeSlice_Builder$ReventlessAws from "./components/StateChangeSlice_Builder.res.mjs";
75
- import * as ApiFragmentDeregistration$ReventlessAws from "./adapter/Api/ApiFragmentDeregistration.res.mjs";
76
67
  import * as EventCollectorChannel_SQS$ReventlessAws from "./adapter/EventCollector/EventCollectorChannel_SQS.res.mjs";
77
68
  import * as PgChangeFeedRelay_Builder$ReventlessAws from "./adapter/Postgres/PgChangeFeedRelay_Builder.res.mjs";
78
69
  import * as RuntimeEnvironment_Lambda$ReventlessAws from "./adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs";
79
- import * as ApiFragmentsReadModelSpec$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentsReadModelSpec.res.mjs";
80
70
  import * as PluginExtensionPointSpec$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/PluginExtensionPointSpec.res.mjs";
81
71
  import * as Platform_UIFragments_Lambda$ReventlessAws from "./adapter/Api/Platform_UIFragments_Lambda.res.mjs";
82
- import * as ApiFragmentRegistryBehavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentRegistryBehavior.res.mjs";
83
72
  import * as CommandTopicChannel_SQS_Sync$ReventlessAws from "./adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res.mjs";
84
73
  import * as EventLogSubscription_AppSync$ReventlessAws from "./adapter/EventLogSubscription/EventLogSubscription_AppSync.res.mjs";
85
- import * as Platform_ApiFragments_Lambda$ReventlessAws from "./adapter/Api/Platform_ApiFragments_Lambda.res.mjs";
86
74
  import * as UiFragmentRegistry_Behavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry_Behavior.res.mjs";
87
75
  import * as CommandTopicChannel_SQS_Async$ReventlessAws from "./adapter/CommandTopic/CommandTopicChannel_SQS_Async.res.mjs";
88
76
  import * as Plugin_ExtensionPoint_Builder$ReventlessAws from "./plugin/stack/Plugin_ExtensionPoint_Builder.res.mjs";
@@ -98,13 +86,11 @@ import * as CommandGeneratorResolvers_AppSync$ReventlessAws from "./adapter/Comm
98
86
  import * as EventTopicPublisher_DynamoDbStream$ReventlessAws from "./adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res.mjs";
99
87
  import * as InboundTranslationResolvers_AppSync$ReventlessAws from "./adapter/CommandGenerator/InboundTranslationResolvers_AppSync.res.mjs";
100
88
  import * as PluginExtensionPointRuntime_Builder$ReventlessAws from "./plugin/runtime/PluginExtensionPointRuntime_Builder.res.mjs";
101
- import * as ReadModel_Builder_NoResolver_Stream$ReventlessAws from "./components/ReadModel_Builder_NoResolver_Stream.res.mjs";
102
89
  import * as EventCollectorRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs";
103
90
  import * as Platform_ComponentDefinitions_Lambda$ReventlessAws from "./adapter/Api/Platform_ComponentDefinitions_Lambda.res.mjs";
104
91
  import * as StateViewSliceRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/StateViewSliceRuntime_Builder_Single.res.mjs";
105
92
  import * as AggregateRuntime_Builder_Single_Async$ReventlessAws from "./adapter/Runtime/AggregateRuntime_Builder_Single_Async.res.mjs";
106
93
  import * as AutomationSliceRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/AutomationSliceRuntime_Builder_Single.res.mjs";
107
- import * as SideEffectHandlerRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res.mjs";
108
94
 
109
95
  let log = Logger$ReventlessCore.fromEnv();
110
96
 
@@ -149,132 +135,55 @@ function MakeWithConfig(Config) {
149
135
  });
150
136
  QueryDbBackend$ReventlessAws.exempt(PluginsReadModelSpec$ReventlessCore.name);
151
137
  QueryDbBackend$ReventlessAws.exempt(UiFragments$ReventlessCore.name);
152
- QueryDbBackend$ReventlessAws.exempt(ApiFragmentsReadModelSpec$ReventlessCore.name);
153
138
  });
154
- let mergedApiMode = Config.mergedApi;
155
139
  let currentDeployTarget = {
156
140
  contents: "Domain"
157
141
  };
158
142
  let platformStackRef = Stdlib_Option.map(new Pulumi.Config("platform").get("stack"), stack => new Pulumi.StackReference(stack));
159
- let makePhantomApi = (apiId, apiEndpoint) => ({
160
- id: Pulumi.output(apiId),
161
- arn: Pulumi.output(""),
162
- name: Pulumi.output(""),
163
- uris: Pulumi.output({
164
- GRAPHQL: apiEndpoint,
165
- REALTIME: ""
166
- })
167
- });
168
- let makePhantomRole = apiRoleArn => {
169
- let roleName = Stdlib_Option.getOr(apiRoleArn.split("/").at(-1), apiRoleArn);
170
- return {
171
- arn: Pulumi.output(apiRoleArn),
172
- name: Pulumi.output(roleName),
173
- id: Pulumi.output(roleName)
174
- };
175
- };
176
- let emptyBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
143
+ let domainBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
177
144
  types: [],
178
145
  mutations: [],
179
- queries: [],
146
+ queries: [" Platform_ping: String"],
180
147
  subscriptions: [],
181
148
  subscriptionSources: []
182
149
  });
183
150
  let adminSourceSdl = () => {
184
- let baseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(Config.cloner), "Admin", AdminApi$ReventlessCore.systemCallerFieldNames);
185
- return AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchWithAwsDirectives(baseFragment, []));
151
+ let baseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(Config.cloner), "Admin", undefined);
152
+ return AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(baseFragment));
186
153
  };
187
154
  let match;
188
155
  if (platformStackRef !== undefined) {
189
156
  let stackRef = Primitive_option.valFromOption(platformStackRef);
190
157
  let defaultOutput = stackRef.getOutput("default");
191
- let domainApiIdOutput = stackRef.getOutput("domainApiId");
192
- let domainApiEndpointOutput = stackRef.getOutput("domainApiEndpoint");
193
- let domainApiRoleArnOutput = stackRef.getOutput("domainApiRoleArn");
194
- let phantomApi = Pulumi.all([
195
- domainApiIdOutput,
196
- domainApiEndpointOutput,
197
- defaultOutput
198
- ]).apply(param => {
199
- let $$default = param[2];
200
- let directEndpoint = param[1];
201
- let directId = param[0];
202
- let apiId = directId !== undefined ? directId : Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d["domainApiId"]), v => Stdlib_JSON.Decode.string(v)), undefined);
203
- let apiEndpoint = directEndpoint !== undefined ? directEndpoint : Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d["domainApiEndpoint"]), v => Stdlib_JSON.Decode.string(v)), "Platform stack does not export 'domainApiEndpoint' — redeploy the platform stack first");
204
- return makePhantomApi(apiId, apiEndpoint);
205
- });
206
- let phantomRole = Pulumi.all([
207
- domainApiRoleArnOutput,
208
- defaultOutput
209
- ]).apply(param => {
210
- let direct = param[0];
211
- return makePhantomRole(direct !== undefined ? direct : Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap(param[1], d => Stdlib_JSON.Decode.object(d)), d => d["domainApiRoleArn"]), v => Stdlib_JSON.Decode.string(v)), undefined));
212
- });
213
- let platformApiIdOutput = stackRef.getOutput("platformApiId");
214
- let platformApiEndpointOutput = stackRef.getOutput("platformApiEndpoint");
215
- let platformApiRoleArnOutput = stackRef.getOutput("platformApiRoleArn");
216
- let phantomPlatformApi = Pulumi.all([
217
- platformApiIdOutput,
218
- platformApiEndpointOutput,
158
+ let cognitoPoolIdOutput = stackRef.getOutput("cognitoUserPoolId");
159
+ let cognitoRegionOutput = stackRef.getOutput("cognitoRegion");
160
+ let userPoolConfig = Pulumi.all([
161
+ cognitoPoolIdOutput,
162
+ cognitoRegionOutput,
219
163
  defaultOutput
220
164
  ]).apply(param => {
221
165
  let $$default = param[2];
222
166
  let getFromDefault = key => Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d[key]), v => Stdlib_JSON.Decode.string(v));
223
- let platformApiId = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("platformApiId")), undefined);
224
- let platformApiEndpoint = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[1], getFromDefault("platformApiEndpoint")), undefined);
225
- return makePhantomApi(platformApiId, platformApiEndpoint);
226
- });
227
- let phantomPlatformRole = Pulumi.all([
228
- platformApiRoleArnOutput,
229
- defaultOutput
230
- ]).apply(param => {
231
- let $$default = param[1];
232
- let getFromDefault = key => Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d[key]), v => Stdlib_JSON.Decode.string(v));
233
- return makePhantomRole(Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("platformApiRoleArn")), undefined));
167
+ let userPoolId = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("cognitoUserPoolId")), "Platform stack does not export 'cognitoUserPoolId' — redeploy the platform stack first");
168
+ let awsRegion = Stdlib_Option.orElse(param[1], getFromDefault("cognitoRegion"));
169
+ return {
170
+ userPoolId: userPoolId,
171
+ defaultAction: "ALLOW",
172
+ awsRegion: awsRegion
173
+ };
234
174
  });
235
- if (mergedApiMode) {
236
- let cognitoPoolIdOutput = stackRef.getOutput("cognitoUserPoolId");
237
- let cognitoRegionOutput = stackRef.getOutput("cognitoRegion");
238
- let userPoolConfig = Pulumi.all([
239
- cognitoPoolIdOutput,
240
- cognitoRegionOutput,
241
- defaultOutput
242
- ]).apply(param => {
243
- let $$default = param[2];
244
- let getFromDefault = key => Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d[key]), v => Stdlib_JSON.Decode.string(v));
245
- let userPoolId = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("cognitoUserPoolId")), "Platform stack does not export 'cognitoUserPoolId' — redeploy the platform stack first");
246
- let awsRegion = Stdlib_Option.orElse(param[1], getFromDefault("cognitoRegion"));
247
- return {
248
- userPoolId: userPoolId,
249
- defaultAction: "ALLOW",
250
- awsRegion: awsRegion
251
- };
252
- });
253
- let match$1 = AppSync_Adapter$ReventlessAws.makePluginSourceApiResource("PluginSourceApi", userPoolConfig, {});
254
- let role = match$1[1];
255
- let api = match$1[0];
256
- match = [
257
- api,
258
- role,
259
- api,
260
- role
261
- ];
262
- } else {
263
- match = [
264
- phantomApi,
265
- phantomRole,
266
- phantomPlatformApi,
267
- phantomPlatformRole
268
- ];
269
- }
175
+ let match$1 = AppSync_Adapter$ReventlessAws.makePluginSourceApiResource("PluginSourceApi", userPoolConfig, {});
176
+ let role = match$1[1];
177
+ let api = match$1[0];
178
+ match = [
179
+ api,
180
+ role,
181
+ api,
182
+ role
183
+ ];
270
184
  } else {
271
- let match$2;
272
- if (mergedApiMode) {
273
- let schema = Config.splitApi ? AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchWithAwsDirectives(emptyBaseFragment, [])) : adminSourceSdl();
274
- match$2 = AppSync_Adapter$ReventlessAws.makeSourceApiResource("DomainApi", schema, {});
275
- } else {
276
- match$2 = AppSync_Adapter$ReventlessAws.makeApiResource("DomainApi", {});
277
- }
185
+ let schema = Config.splitApi ? AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(domainBaseFragment)) : adminSourceSdl();
186
+ let match$2 = AppSync_Adapter$ReventlessAws.makeSourceApiResource("DomainApi", schema, {});
278
187
  let role$1 = match$2[1];
279
188
  let api$1 = match$2[0];
280
189
  match = [
@@ -501,21 +410,6 @@ function MakeWithConfig(Config) {
501
410
  project: UiFragments_Projection$ReventlessCore.project,
502
411
  moduleUrl: UiFragments_Projection$ReventlessCore.moduleUrl
503
412
  });
504
- let Make$8 = FragmentConfig => {
505
- let Builder = Api_Builder$ReventlessCore.Make({
506
- makeApiResource: AppSync_Adapter$ReventlessAws.makeApiResource,
507
- generateFragment: AppSync_Adapter$ReventlessAws.generateFragment,
508
- updateSchema: AppSync_Adapter$ReventlessAws.updateSchema
509
- });
510
- let effectiveBaseFragment = Config.splitApi ? emptyBaseFragment : FragmentConfig.baseFragment;
511
- let make = (name, opts) => Builder.make(name, effectiveBaseFragment, opts);
512
- return {
513
- make: make
514
- };
515
- };
516
- let Api = {
517
- Make: Make$8
518
- };
519
413
  let hooksApiRef = {
520
414
  contents: undefined
521
415
  };
@@ -544,34 +438,6 @@ function MakeWithConfig(Config) {
544
438
  return resolveHookedApi();
545
439
  }
546
440
  };
547
- let deployWaiterDelay = ms => new Promise((resolve, param) => {
548
- setTimeout(() => resolve(), ms);
549
- });
550
- let waitForApiFragmentPush = async (endpoint, region, pluginId, sinceAt) => {
551
- let loop = async attempt => {
552
- if (attempt >= 90) {
553
- return Stdlib_JsError.throwWithMessage(`Timed out (>3min) waiting for the platform to push ` + pluginId + `'s API fragment — check the AdminEventCollector Lambda logs.`);
554
- }
555
- let data = await Util_AppSync_Caller$ReventlessAws.sendQuery(endpoint, region, "query { Platform_ApiFragments { pluginId pushStatus pushMessage pushedAt } }");
556
- let row = Stdlib_Option.flatMap(Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap(data, Stdlib_JSON.Decode.object), d => d["Platform_ApiFragments"]), Stdlib_JSON.Decode.array), []).find(entry => Primitive_object.equal(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_JSON.Decode.object(entry), e => e["pluginId"]), Stdlib_JSON.Decode.string), pluginId)), Stdlib_JSON.Decode.object);
557
- if (row !== undefined) {
558
- let field = k => Stdlib_Option.getOr(Stdlib_Option.flatMap(row[k], Stdlib_JSON.Decode.string), "");
559
- let status = field("pushStatus");
560
- let fresh = field("pushedAt") >= sinceAt;
561
- if (fresh && status === "ok") {
562
- return log.info("registerFragmentViaApi", undefined, pluginId + ` schema push confirmed ACTIVE`);
563
- } else if (fresh && status === "error") {
564
- return Stdlib_JsError.throwWithMessage(`Schema push failed for ` + pluginId + `: ` + field("pushMessage"));
565
- } else {
566
- await deployWaiterDelay(2000);
567
- return await loop(attempt + 1 | 0);
568
- }
569
- }
570
- await deployWaiterDelay(2000);
571
- return await loop(attempt + 1 | 0);
572
- };
573
- return await loop(0);
574
- };
575
441
  let hooks_subscriptionInfraHook = Stdlib_Option.map(domainEventsApiOpt, eventsApi => (params => {
576
442
  let allEventTopics = params.allEventTopics;
577
443
  let allQueryDbs = params.allQueryDbs;
@@ -591,102 +457,22 @@ function MakeWithConfig(Config) {
591
457
  StateTopic_AppSync$ReventlessAws.finish(eventsApi, {});
592
458
  }));
593
459
  let hooks_preResolversSchemaHook = (name, version, pluginFragment) => {
594
- if (mergedApiMode) {
595
- let sdl = AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(pluginFragment);
596
- let pushed = Output$Pulumi.flatMap(domainApi, api => Output$Pulumi.flatMap(api.id, apiId => {
597
- log.info("preResolversSchemaHook", undefined, `Pushing subgraph schema for ` + name + `@` + version + ` to source API ` + apiId);
598
- let client = AppSync_Adapter$ReventlessAws.getClient();
599
- return AppSync_Adapter$ReventlessAws.startSchemaCreationRetrying(client, {
600
- apiId: apiId,
601
- definition: sdl
602
- }).then(async () => {
603
- await AppSync_Adapter$ReventlessAws.waitForSchemaActive(client, apiId, undefined, undefined);
604
- return log.info("preResolversSchemaHook", undefined, "subgraph schema is ACTIVE");
605
- });
606
- }));
607
- mergedSchemaPushedRef.contents = pushed;
608
- return pushed;
609
- }
610
- log.info("preResolversSchemaHook", undefined, `Pushing schema for plugin ` + name + `@` + version + ` to AppSync`);
611
- let capturedDeployTarget = currentDeployTarget.contents;
612
- if (platformStackRef === undefined) {
613
- return Pervasives.failwith("makePlatform(~plugins=[…]) is no longer supported on AWS — deploy the platform with deployPlatform and each plugin with deployPlugin (staged register + reactive push).");
614
- }
615
- let apiTargetName;
616
- apiTargetName = capturedDeployTarget === "Domain" ? "Domain" : "Platform";
617
- let match = apiConfigRef.contents;
618
- let platformApi = match !== undefined ? match.platformApi : domainApi;
619
- let region = Stdlib_Option.getOr(new Pulumi.Config("aws").get("region"), "unknown");
620
- let endpointOutput = Output$Pulumi.flatMap(platformApi, api => api.uris).apply(uris => uris.GRAPHQL);
621
- ApiFragmentDeregistration$ReventlessAws.make(name + `ApiFragmentRegistration`, name, endpointOutput, region, undefined);
622
- return Output$Pulumi.flatMap(endpointOutput, endpoint => {
623
- let run = async () => {
624
- let at = new Date().toISOString();
625
- let variables = {
626
- id: "registry",
627
- pluginId: name,
628
- fragment: {
629
- encoded: pluginFragment.encoded,
630
- protocol: pluginFragment.protocol
631
- },
632
- apiTarget: Util_AppSync_Caller$ReventlessAws.graphqlEnum(apiTargetName),
633
- at: at
634
- };
635
- log.info("registerFragmentViaApi", undefined, `Registering API fragment for ` + name + ` (` + apiTargetName + `) via ` + endpoint);
636
- let result = await Util_AppSync_Caller$ReventlessAws.sendMutation(endpoint, region, "Platform_ApiFragmentRegistry_RegisterApiFragment", "{ __typename ... on CommandAccepted { eventCount } ... on CommandRejected { errorCode errorDetail } }", variables);
637
- let outcome = Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap(result, Stdlib_JSON.Decode.object), d => d["Platform_ApiFragmentRegistry_RegisterApiFragment"]), Stdlib_JSON.Decode.object);
638
- if (outcome === undefined) {
639
- return await waitForApiFragmentPush(endpoint, region, name, at);
640
- }
641
- let typename = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["__typename"], Stdlib_JSON.Decode.string), "");
642
- switch (typename) {
643
- case "CommandAccepted" :
644
- let eventCount = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["eventCount"], Stdlib_JSON.Decode.float), 0.0);
645
- if (eventCount > 0.0) {
646
- return await waitForApiFragmentPush(endpoint, region, name, at);
647
- } else {
648
- return log.info("registerFragmentViaApi", undefined, name + ` fragment unchanged — no push needed`);
649
- }
650
- case "CommandRejected" :
651
- let code = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["errorCode"], Stdlib_JSON.Decode.string), "unknown");
652
- return Stdlib_JsError.throwWithMessage(`RegisterApiFragment rejected for ` + name + `: ` + code);
653
- default:
654
- return await waitForApiFragmentPush(endpoint, region, name, at);
655
- }
656
- };
657
- return run();
658
- });
659
- };
660
- let hooks_preAdminResolversSchemaHook = adminBarrier => {
661
- if (mergedApiMode) {
662
- return adminBarrier;
663
- }
664
- let match = splitApiOutputsRef.contents;
665
- let targetApiOpt = match !== undefined ? match.platformApi : (
666
- Config.splitApi ? undefined : domainApi
667
- );
668
- if (targetApiOpt !== undefined) {
669
- let adminBaseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(Config.cloner), "Admin", AdminApi$ReventlessCore.systemCallerFieldNames);
670
- let sdl = AppSync_Adapter$ReventlessAws.stitchWithAwsDirectives(adminBaseFragment, []);
671
- return Output$Pulumi.flatMap(Pulumi.all([
672
- targetApiOpt,
673
- adminBarrier
674
- ]), param => Output$Pulumi.flatMap(param[0].id, apiId => {
675
- log.info("preAdminResolversSchemaHook", undefined, `Pushing admin schema to ` + apiId);
676
- let client = AppSync_Adapter$ReventlessAws.getClient();
677
- return AppSync_Adapter$ReventlessAws.startSchemaCreationRetrying(client, {
678
- apiId: apiId,
679
- definition: sdl
680
- }).then(async () => {
681
- log.info("preAdminResolversSchemaHook", undefined, "startSchemaCreation called, waiting for ACTIVE");
682
- await AppSync_Adapter$ReventlessAws.waitForSchemaActive(client, apiId, undefined, undefined);
683
- return log.info("preAdminResolversSchemaHook", undefined, "schema is ACTIVE");
684
- });
685
- }));
686
- }
687
- log.error("preAdminResolversSchemaHook", undefined, "split mode but the PlatformApi is not available at hook time — SKIPPING the admin schema push to avoid clobbering the DomainApi (pushing admin-base here would wipe every plugin field)");
688
- return adminBarrier;
460
+ let sdl = AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(pluginFragment);
461
+ let pushed = Output$Pulumi.flatMap(domainApi, api => Output$Pulumi.flatMap(api.id, apiId => {
462
+ log.info("preResolversSchemaHook", undefined, `Pushing subgraph schema for ` + name + `@` + version + ` to source API ` + apiId);
463
+ let client = AppSync_Adapter$ReventlessAws.getClient();
464
+ return AppSync_Adapter$ReventlessAws.startSchemaCreationRetrying(client, {
465
+ apiId: apiId,
466
+ definition: sdl
467
+ }).then(async () => {
468
+ await AppSync_Adapter$ReventlessAws.waitForSchemaActive(client, apiId, undefined, undefined);
469
+ return log.info("preResolversSchemaHook", undefined, "subgraph schema is ACTIVE");
470
+ });
471
+ }));
472
+ mergedSchemaPushedRef.contents = pushed;
473
+ return pushed;
689
474
  };
475
+ let hooks_preAdminResolversSchemaHook = adminBarrier => adminBarrier;
690
476
  let hooks_inboundAppSyncResolverHook = param => InboundTranslationResolvers_AppSync$ReventlessAws.make(resolveHookedApi(), param.runtime, param.fieldNames, param.opts);
691
477
  let hooks_dcbAppSyncResolverHook = param => {
692
478
  let onAdminApi = param.onAdminApi;
@@ -808,40 +594,6 @@ function MakeWithConfig(Config) {
808
594
  authorization: PluginsReadModelSpec$ReventlessCore.authorization,
809
595
  visibility: PluginsReadModelSpec$ReventlessCore.visibility
810
596
  })(PluginReadModelMappings);
811
- let ApiFragmentRegistryAggregate = Aggregate_Builder_Single$ReventlessAws.Make({
812
- Id: Id$Reventless.$$String,
813
- name: ApiFragmentRegistrySpec$ReventlessCore.name,
814
- eventSchema: ApiFragmentRegistrySpec$ReventlessCore.eventSchema,
815
- errorSchema: ApiFragmentRegistrySpec$ReventlessCore.errorSchema,
816
- commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema,
817
- moduleUrl: ApiFragmentRegistrySpec$ReventlessCore.moduleUrl,
818
- commandAuthorization: ApiFragmentRegistrySpec$ReventlessCore.commandAuthorization
819
- })({
820
- initialState: ApiFragmentRegistryBehavior$ReventlessCore.initialState,
821
- evolve: ApiFragmentRegistryBehavior$ReventlessCore.evolve,
822
- decide: ApiFragmentRegistryBehavior$ReventlessCore.decide,
823
- snapshot: undefined,
824
- moduleUrl: ApiFragmentRegistryBehavior$ReventlessCore.moduleUrl
825
- })(NoEventMappings$ReventlessInfra.Make({
826
- name: ApiFragmentRegistrySpec$ReventlessCore.name,
827
- Id: Id$Reventless.$$String,
828
- commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema
829
- }));
830
- let ApiFragmentsReadModelMappings = {
831
- moduleUrl: ApiFragmentsProjection$ReventlessCore.moduleUrl,
832
- mappings: ApiFragmentsProjection$ReventlessCore.mappings
833
- };
834
- let ApiFragmentsReadModel = ReadModel_Builder_NoResolver_Stream$ReventlessAws.Make({
835
- Id: Id$Reventless.$$String,
836
- name: ApiFragmentsReadModelSpec$ReventlessCore.name,
837
- moduleUrl: ApiFragmentsReadModelSpec$ReventlessCore.moduleUrl,
838
- stateSchema: ApiFragmentsReadModelSpec$ReventlessCore.stateSchema,
839
- config: ApiFragmentsReadModelSpec$ReventlessCore.config,
840
- subIdConfig: undefined,
841
- authorization: ApiFragmentsReadModelSpec$ReventlessCore.authorization,
842
- visibility: ApiFragmentsReadModelSpec$ReventlessCore.visibility
843
- })(ApiFragmentsReadModelMappings);
844
- let AdminApiSchemaPushHandler = SideEffectHandler_Single$ReventlessAws.Make({});
845
597
  let makeScheduler = () => {
846
598
  let component = Scheduler$ReventlessAws.make(undefined);
847
599
  let outputs = Component$ReventlessCore.outputs(component);
@@ -947,86 +699,7 @@ function MakeWithConfig(Config) {
947
699
  };
948
700
  let makePlatform = (version, plugins) => {
949
701
  log.info("Platform", undefined, `v` + version);
950
- if (mergedApiMode) {
951
- Pervasives.failwith("mergedApi mode is supported with deployPlatform only — deploy the platform with deployPlatform and each plugin with deployPlugin.");
952
- }
953
- let scheduler = makeScheduler();
954
- hooks_scheduler.contents = scheduler;
955
- hooksApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApi);
956
- hooksApiRoleRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApiRole);
957
- let match = Config.splitApi ? AppSync_Adapter$ReventlessAws.makeApiResource("PlatformApi", {}) : [
958
- domainApi,
959
- domainApiRole
960
- ];
961
- let platformApiRole = match[1];
962
- let platformApi = match[0];
963
- hooksAdminApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(platformApi);
964
- if (Config.splitApi) {
965
- splitApiOutputsRef.contents = {
966
- platformApi: platformApi,
967
- platformApiRole: platformApiRole
968
- };
969
- let c = apiConfigRef.contents;
970
- if (c !== undefined) {
971
- apiConfigRef.contents = {
972
- domainApi: c.domainApi,
973
- domainApiRole: c.domainApiRole,
974
- platformApi: platformApi,
975
- platformApiRole: platformApiRole
976
- };
977
- }
978
- }
979
- let admin = Admin.construct(version, [], [
980
- PluginAggregate,
981
- ApiFragmentRegistryAggregate
982
- ], [
983
- PluginReadModel,
984
- ApiFragmentsReadModel
985
- ], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
986
- let pluginRm = admin.readModelsOutputs["Plugins"];
987
- if (pluginRm !== undefined) {
988
- let r = pluginRm.queryDb.resources[0];
989
- if (r !== undefined) {
990
- Platform_ComponentDefinitions_Lambda$ReventlessAws.make(platformApi, r.name, {});
991
- AggregateRuntime_Builder_Single$ReventlessAws.setPluginReadModelTable(r.name);
992
- }
993
- }
994
- let rm = admin.stateViewSlicesOutputs["UiFragments"];
995
- if (rm !== undefined) {
996
- let r$1 = rm.queryDb.resources[0];
997
- if (r$1 !== undefined) {
998
- Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
999
- }
1000
- }
1001
- let rm$1 = admin.readModelsOutputs["ApiFragments"];
1002
- if (rm$1 !== undefined) {
1003
- let r$2 = rm$1.queryDb.resources[0];
1004
- if (r$2 !== undefined) {
1005
- Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
1006
- }
1007
- }
1008
- let pluginComponents = plugins.map(plugin => plugin.make());
1009
- let pluginComponent = pluginComponents[0];
1010
- if (pluginComponent !== undefined) {
1011
- Plugin_Helpers$ReventlessCore.exportPluginOutputs(Component$ReventlessCore.outputs(Primitive_option.valFromOption(pluginComponent)));
1012
- }
1013
- provisionPgChangeFeedRelay();
1014
- let sel = QueryDbBackend$ReventlessAws.get();
1015
- if (sel !== undefined) {
1016
- PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}, undefined);
1017
- }
1018
- if (Config.splitApi) {
1019
- Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
1020
- Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
1021
- Pulumi$Pulumi.$$export("platformApiRoleArn", Output$Pulumi.flatMap(platformApiRole, role => role.arn));
1022
- } else {
1023
- Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
1024
- Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
1025
- Pulumi$Pulumi.$$export("platformApiRoleArn", Output$Pulumi.flatMap(domainApiRole, role => role.arn));
1026
- }
1027
- Pulumi$Pulumi.$$export("domainApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
1028
- Pulumi$Pulumi.$$export("domainApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
1029
- Pulumi$Pulumi.$$export("domainApiRoleArn", Output$Pulumi.flatMap(domainApiRole, role => role.arn));
702
+ return Pervasives.failwith("makePlatform is not supported on AWS — deploy the platform with deployPlatform and each plugin with deployPlugin (merged-API composition).");
1030
703
  };
1031
704
  let deployPlatform = (version, hostUiBundle) => {
1032
705
  log.info("Platform:deployPlatform", undefined, `v` + version);
@@ -1034,40 +707,34 @@ function MakeWithConfig(Config) {
1034
707
  hooks_scheduler.contents = scheduler;
1035
708
  hooksApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApi);
1036
709
  hooksApiRoleRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApiRole);
1037
- let match = Config.splitApi ? (
1038
- mergedApiMode ? AppSync_Adapter$ReventlessAws.makeSourceApiResource("PlatformApi", adminSourceSdl(), {}) : AppSync_Adapter$ReventlessAws.makeApiResource("PlatformApi", {})
1039
- ) : [
710
+ let match = Config.splitApi ? AppSync_Adapter$ReventlessAws.makeSourceApiResource("PlatformApi", adminSourceSdl(), {}) : [
1040
711
  domainApi,
1041
712
  domainApiRole
1042
713
  ];
1043
714
  let platformApiRole = match[1];
1044
715
  let platformApi = match[0];
716
+ AppSync_MergedApi$ReventlessAws.assertCompatiblePrimaryAuth(AppSync_MergedApi$ReventlessAws.authenticationTypeName(AppSync_Adapter$ReventlessAws.primaryAuthenticationType), AppSync_MergedApi$ReventlessAws.primaryAuthMode);
717
+ let domainMerged = AppSync_MergedApi$ReventlessAws.make("DomainMergedApi", {});
1045
718
  let mergedOutputs;
1046
- if (mergedApiMode) {
1047
- AppSync_MergedApi$ReventlessAws.assertCompatiblePrimaryAuth(AppSync_MergedApi$ReventlessAws.authenticationTypeName(AppSync_Adapter$ReventlessAws.primaryAuthenticationType), AppSync_MergedApi$ReventlessAws.primaryAuthMode);
1048
- let domainMerged = AppSync_MergedApi$ReventlessAws.make("DomainMergedApi", {});
1049
- if (Config.splitApi) {
1050
- let platformMerged = AppSync_MergedApi$ReventlessAws.make("PlatformMergedApi", {});
1051
- let platformAssoc = AppSync_MergedApi$ReventlessAws.associateSource("PlatformAdminSourceAssociation", platformMerged, platformApi, {});
1052
- let domainAssoc = AppSync_MergedApi$ReventlessAws.associateSource("DomainBaseSourceAssociation", domainMerged, domainApi, {});
1053
- mergedOutputs = {
1054
- domainMerged: domainMerged,
1055
- platformMerged: platformMerged,
1056
- domainMergeGate: AppSync_MergedApi$ReventlessAws.mergeStatusGate(domainMerged, domainAssoc),
1057
- platformMergeGate: AppSync_MergedApi$ReventlessAws.mergeStatusGate(platformMerged, platformAssoc)
1058
- };
1059
- } else {
1060
- let assoc = AppSync_MergedApi$ReventlessAws.associateSource("DomainAdminSourceAssociation", domainMerged, domainApi, {});
1061
- let gate = AppSync_MergedApi$ReventlessAws.mergeStatusGate(domainMerged, assoc);
1062
- mergedOutputs = {
1063
- domainMerged: domainMerged,
1064
- platformMerged: domainMerged,
1065
- domainMergeGate: gate,
1066
- platformMergeGate: gate
1067
- };
1068
- }
719
+ if (Config.splitApi) {
720
+ let platformMerged = AppSync_MergedApi$ReventlessAws.make("PlatformMergedApi", {});
721
+ let platformAssoc = AppSync_MergedApi$ReventlessAws.associateSource("PlatformAdminSourceAssociation", platformMerged, platformApi, {});
722
+ let domainAssoc = AppSync_MergedApi$ReventlessAws.associateSource("DomainBaseSourceAssociation", domainMerged, domainApi, {});
723
+ mergedOutputs = {
724
+ domainMerged: domainMerged,
725
+ platformMerged: platformMerged,
726
+ domainMergeGate: AppSync_MergedApi$ReventlessAws.mergeStatusGate(domainMerged, domainAssoc),
727
+ platformMergeGate: AppSync_MergedApi$ReventlessAws.mergeStatusGate(platformMerged, platformAssoc)
728
+ };
1069
729
  } else {
1070
- mergedOutputs = undefined;
730
+ let assoc = AppSync_MergedApi$ReventlessAws.associateSource("DomainAdminSourceAssociation", domainMerged, domainApi, {});
731
+ let gate = AppSync_MergedApi$ReventlessAws.mergeStatusGate(domainMerged, assoc);
732
+ mergedOutputs = {
733
+ domainMerged: domainMerged,
734
+ platformMerged: domainMerged,
735
+ domainMergeGate: gate,
736
+ platformMergeGate: gate
737
+ };
1071
738
  }
1072
739
  hooksAdminApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(platformApi);
1073
740
  if (Config.splitApi) {
@@ -1090,62 +757,7 @@ function MakeWithConfig(Config) {
1090
757
  updateApiSchema: undefined,
1091
758
  manageSubscriptions: undefined
1092
759
  });
1093
- let admin = Admin.construct(version, [PluginExtensionPoint], [
1094
- PluginAggregate,
1095
- ApiFragmentRegistryAggregate
1096
- ], [
1097
- PluginReadModel,
1098
- ApiFragmentsReadModel
1099
- ], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
1100
- let apiSchemaPushEventTopics = Aggregate$ReventlessCore.allEventTopics(admin.aggregatesOutputs);
1101
- let apiSchemaPushCmdTopics = Aggregate$ReventlessCore.allCommandTopics(admin.aggregatesOutputs);
1102
- let agg = admin.aggregatesOutputs[ApiFragmentRegistrySpec$ReventlessCore.name];
1103
- let apiSchemaPushCmdTopicUrl = agg !== undefined ? Output$Pulumi.flatMap(agg.commandTopic, ct => {
1104
- let r = ct.resources[0];
1105
- if (r !== undefined) {
1106
- return r.id;
1107
- } else {
1108
- return Pulumi.output("");
1109
- }
1110
- }) : Pulumi.output("");
1111
- let apiSchemaPushEnv = Object.fromEntries([
1112
- [
1113
- "API_SCHEMA_PUSH_DOMAIN_API_ID",
1114
- domainApiId
1115
- ],
1116
- [
1117
- "API_SCHEMA_PUSH_PLATFORM_API_ID",
1118
- Output$Pulumi.flatMap(platformApi, api => api.id)
1119
- ],
1120
- [
1121
- "API_SCHEMA_PUSH_SPLIT_API",
1122
- Pulumi.output(Config.splitApi ? "true" : "false")
1123
- ],
1124
- [
1125
- "API_SCHEMA_PUSH_CLONER",
1126
- Pulumi.output(Config.cloner ? "true" : "false")
1127
- ],
1128
- [
1129
- "API_SCHEMA_PUSH_CMD_TOPIC_URL",
1130
- apiSchemaPushCmdTopicUrl
1131
- ]
1132
- ]);
1133
- let apiSchemaPushQueryEngine = QueryEngine_DynamoDb$ReventlessAws.make({});
1134
- Pulumi.all([
1135
- scheduler,
1136
- apiSchemaPushQueryEngine
1137
- ]).apply(param => {
1138
- AdminApiSchemaPushHandler.make("AdminApiSchemaPush", [{
1139
- Source: {
1140
- name: ApiSchemaPush$ReventlessAws.Source.name,
1141
- Id: ApiSchemaPush$ReventlessAws.Source.Id,
1142
- eventSchema: ApiSchemaPush$ReventlessAws.Source.eventSchema
1143
- },
1144
- moduleUrl: ApiSchemaPush$ReventlessAws.moduleUrl,
1145
- execute: ApiSchemaPush$ReventlessAws.execute
1146
- }], apiSchemaPushEventTopics, apiSchemaPushCmdTopics, [ApiFragmentRegistrySpec$ReventlessCore.name], param[1], param[0], Util_ResourceNaming$ReventlessAws.operations, undefined, undefined, apiSchemaPushEnv, {});
1147
- apiSchemaPushCmdTopics.apply(param => SideEffectHandlerRuntime_Builder_Single$ReventlessAws.finish());
1148
- });
760
+ let admin = Admin.construct(version, [PluginExtensionPoint], [PluginAggregate], [PluginReadModel], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
1149
761
  let pluginRm = admin.readModelsOutputs["Plugins"];
1150
762
  let pluginReadModelTableName;
1151
763
  if (pluginRm !== undefined) {
@@ -1182,13 +794,6 @@ function MakeWithConfig(Config) {
1182
794
  Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
1183
795
  }
1184
796
  }
1185
- let rm$1 = admin.readModelsOutputs["ApiFragments"];
1186
- if (rm$1 !== undefined) {
1187
- let r$2 = rm$1.queryDb.resources[0];
1188
- if (r$2 !== undefined) {
1189
- Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
1190
- }
1191
- }
1192
797
  if (Config.splitApi) {
1193
798
  Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
1194
799
  Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
@@ -1360,7 +965,7 @@ function MakeWithConfig(Config) {
1360
965
  Pulumi$Pulumi.$$export("_interopMeta", Plugin_Helpers$ReventlessCore.getInteropMeta());
1361
966
  let pluginOutputs = Component$ReventlessCore.outputs(pluginComponent);
1362
967
  Plugin_Helpers$ReventlessCore.exportPluginOutputs(pluginOutputs);
1363
- if (mergedApiMode && platformStackRef !== undefined) {
968
+ if (platformStackRef !== undefined) {
1364
969
  let stackRef = Primitive_option.valFromOption(platformStackRef);
1365
970
  let defaultOutput = stackRef.getOutput("default");
1366
971
  let getMergedExport = key => {
@@ -1404,7 +1009,7 @@ function MakeWithConfig(Config) {
1404
1009
  provisionPgChangeFeedRelay();
1405
1010
  let sel = QueryDbBackend$ReventlessAws.get();
1406
1011
  if (sel !== undefined) {
1407
- PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}, false);
1012
+ PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {});
1408
1013
  }
1409
1014
  let hbConfig = PluginRuntime_Builder$ReventlessAws.heartbeatConfigRef.contents;
1410
1015
  let match = IndexJs.isDryRun();
@@ -1467,7 +1072,6 @@ function MakeWithConfig(Config) {
1467
1072
  InboundTranslationSlice: {
1468
1073
  Make: InboundTranslationSlice.Make
1469
1074
  },
1470
- Api: Api,
1471
1075
  mcpSupported: false,
1472
1076
  Plugin: Plugin,
1473
1077
  makePlatform: makePlatform,
@@ -1503,88 +1107,26 @@ function Make($star) {
1503
1107
  });
1504
1108
  QueryDbBackend$ReventlessAws.exempt(PluginsReadModelSpec$ReventlessCore.name);
1505
1109
  QueryDbBackend$ReventlessAws.exempt(UiFragments$ReventlessCore.name);
1506
- QueryDbBackend$ReventlessAws.exempt(ApiFragmentsReadModelSpec$ReventlessCore.name);
1507
1110
  });
1508
1111
  let currentDeployTarget = {
1509
1112
  contents: "Domain"
1510
1113
  };
1511
1114
  let platformStackRef = Stdlib_Option.map(new Pulumi.Config("platform").get("stack"), stack => new Pulumi.StackReference(stack));
1512
- let makePhantomApi = (apiId, apiEndpoint) => ({
1513
- id: Pulumi.output(apiId),
1514
- arn: Pulumi.output(""),
1515
- name: Pulumi.output(""),
1516
- uris: Pulumi.output({
1517
- GRAPHQL: apiEndpoint,
1518
- REALTIME: ""
1519
- })
1520
- });
1521
- let makePhantomRole = apiRoleArn => {
1522
- let roleName = Stdlib_Option.getOr(apiRoleArn.split("/").at(-1), apiRoleArn);
1523
- return {
1524
- arn: Pulumi.output(apiRoleArn),
1525
- name: Pulumi.output(roleName),
1526
- id: Pulumi.output(roleName)
1527
- };
1528
- };
1529
- let emptyBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
1115
+ let domainBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
1530
1116
  types: [],
1531
1117
  mutations: [],
1532
- queries: [],
1118
+ queries: [" Platform_ping: String"],
1533
1119
  subscriptions: [],
1534
1120
  subscriptionSources: []
1535
1121
  });
1536
1122
  let adminSourceSdl = () => {
1537
- let baseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(false), "Admin", AdminApi$ReventlessCore.systemCallerFieldNames);
1538
- return AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchWithAwsDirectives(baseFragment, []));
1123
+ let baseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(false), "Admin", undefined);
1124
+ return AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(baseFragment));
1539
1125
  };
1540
1126
  let match;
1541
1127
  if (platformStackRef !== undefined) {
1542
1128
  let stackRef = Primitive_option.valFromOption(platformStackRef);
1543
1129
  let defaultOutput = stackRef.getOutput("default");
1544
- let domainApiIdOutput = stackRef.getOutput("domainApiId");
1545
- let domainApiEndpointOutput = stackRef.getOutput("domainApiEndpoint");
1546
- let domainApiRoleArnOutput = stackRef.getOutput("domainApiRoleArn");
1547
- Pulumi.all([
1548
- domainApiIdOutput,
1549
- domainApiEndpointOutput,
1550
- defaultOutput
1551
- ]).apply(param => {
1552
- let $$default = param[2];
1553
- let directEndpoint = param[1];
1554
- let directId = param[0];
1555
- let apiId = directId !== undefined ? directId : Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d["domainApiId"]), v => Stdlib_JSON.Decode.string(v)), undefined);
1556
- let apiEndpoint = directEndpoint !== undefined ? directEndpoint : Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d["domainApiEndpoint"]), v => Stdlib_JSON.Decode.string(v)), "Platform stack does not export 'domainApiEndpoint' — redeploy the platform stack first");
1557
- return makePhantomApi(apiId, apiEndpoint);
1558
- });
1559
- Pulumi.all([
1560
- domainApiRoleArnOutput,
1561
- defaultOutput
1562
- ]).apply(param => {
1563
- let direct = param[0];
1564
- return makePhantomRole(direct !== undefined ? direct : Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap(param[1], d => Stdlib_JSON.Decode.object(d)), d => d["domainApiRoleArn"]), v => Stdlib_JSON.Decode.string(v)), undefined));
1565
- });
1566
- let platformApiIdOutput = stackRef.getOutput("platformApiId");
1567
- let platformApiEndpointOutput = stackRef.getOutput("platformApiEndpoint");
1568
- let platformApiRoleArnOutput = stackRef.getOutput("platformApiRoleArn");
1569
- Pulumi.all([
1570
- platformApiIdOutput,
1571
- platformApiEndpointOutput,
1572
- defaultOutput
1573
- ]).apply(param => {
1574
- let $$default = param[2];
1575
- let getFromDefault = key => Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d[key]), v => Stdlib_JSON.Decode.string(v));
1576
- let platformApiId = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("platformApiId")), undefined);
1577
- let platformApiEndpoint = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[1], getFromDefault("platformApiEndpoint")), undefined);
1578
- return makePhantomApi(platformApiId, platformApiEndpoint);
1579
- });
1580
- Pulumi.all([
1581
- platformApiRoleArnOutput,
1582
- defaultOutput
1583
- ]).apply(param => {
1584
- let $$default = param[1];
1585
- let getFromDefault = key => Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap($$default, d => Stdlib_JSON.Decode.object(d)), d => d[key]), v => Stdlib_JSON.Decode.string(v));
1586
- return makePhantomRole(Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("platformApiRoleArn")), undefined));
1587
- });
1588
1130
  let cognitoPoolIdOutput = stackRef.getOutput("cognitoUserPoolId");
1589
1131
  let cognitoRegionOutput = stackRef.getOutput("cognitoRegion");
1590
1132
  let userPoolConfig = Pulumi.all([
@@ -1612,7 +1154,7 @@ function Make($star) {
1612
1154
  role
1613
1155
  ];
1614
1156
  } else {
1615
- let schema = AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchWithAwsDirectives(emptyBaseFragment, []));
1157
+ let schema = AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(domainBaseFragment));
1616
1158
  let match$2 = AppSync_Adapter$ReventlessAws.makeSourceApiResource("DomainApi", schema, {});
1617
1159
  let role$1 = match$2[1];
1618
1160
  let api$1 = match$2[0];
@@ -1840,20 +1382,6 @@ function Make($star) {
1840
1382
  project: UiFragments_Projection$ReventlessCore.project,
1841
1383
  moduleUrl: UiFragments_Projection$ReventlessCore.moduleUrl
1842
1384
  });
1843
- let Make$9 = FragmentConfig => {
1844
- let Builder = Api_Builder$ReventlessCore.Make({
1845
- makeApiResource: AppSync_Adapter$ReventlessAws.makeApiResource,
1846
- generateFragment: AppSync_Adapter$ReventlessAws.generateFragment,
1847
- updateSchema: AppSync_Adapter$ReventlessAws.updateSchema
1848
- });
1849
- let make = (name, opts) => Builder.make(name, emptyBaseFragment, opts);
1850
- return {
1851
- make: make
1852
- };
1853
- };
1854
- let Api = {
1855
- Make: Make$9
1856
- };
1857
1385
  let hooksApiRef = {
1858
1386
  contents: undefined
1859
1387
  };
@@ -2038,40 +1566,6 @@ function Make($star) {
2038
1566
  authorization: PluginsReadModelSpec$ReventlessCore.authorization,
2039
1567
  visibility: PluginsReadModelSpec$ReventlessCore.visibility
2040
1568
  })(PluginReadModelMappings);
2041
- let ApiFragmentRegistryAggregate = Aggregate_Builder_Single$ReventlessAws.Make({
2042
- Id: Id$Reventless.$$String,
2043
- name: ApiFragmentRegistrySpec$ReventlessCore.name,
2044
- eventSchema: ApiFragmentRegistrySpec$ReventlessCore.eventSchema,
2045
- errorSchema: ApiFragmentRegistrySpec$ReventlessCore.errorSchema,
2046
- commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema,
2047
- moduleUrl: ApiFragmentRegistrySpec$ReventlessCore.moduleUrl,
2048
- commandAuthorization: ApiFragmentRegistrySpec$ReventlessCore.commandAuthorization
2049
- })({
2050
- initialState: ApiFragmentRegistryBehavior$ReventlessCore.initialState,
2051
- evolve: ApiFragmentRegistryBehavior$ReventlessCore.evolve,
2052
- decide: ApiFragmentRegistryBehavior$ReventlessCore.decide,
2053
- snapshot: undefined,
2054
- moduleUrl: ApiFragmentRegistryBehavior$ReventlessCore.moduleUrl
2055
- })(NoEventMappings$ReventlessInfra.Make({
2056
- name: ApiFragmentRegistrySpec$ReventlessCore.name,
2057
- Id: Id$Reventless.$$String,
2058
- commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema
2059
- }));
2060
- let ApiFragmentsReadModelMappings = {
2061
- moduleUrl: ApiFragmentsProjection$ReventlessCore.moduleUrl,
2062
- mappings: ApiFragmentsProjection$ReventlessCore.mappings
2063
- };
2064
- let ApiFragmentsReadModel = ReadModel_Builder_NoResolver_Stream$ReventlessAws.Make({
2065
- Id: Id$Reventless.$$String,
2066
- name: ApiFragmentsReadModelSpec$ReventlessCore.name,
2067
- moduleUrl: ApiFragmentsReadModelSpec$ReventlessCore.moduleUrl,
2068
- stateSchema: ApiFragmentsReadModelSpec$ReventlessCore.stateSchema,
2069
- config: ApiFragmentsReadModelSpec$ReventlessCore.config,
2070
- subIdConfig: undefined,
2071
- authorization: ApiFragmentsReadModelSpec$ReventlessCore.authorization,
2072
- visibility: ApiFragmentsReadModelSpec$ReventlessCore.visibility
2073
- })(ApiFragmentsReadModelMappings);
2074
- let AdminApiSchemaPushHandler = SideEffectHandler_Single$ReventlessAws.Make({});
2075
1569
  let makeScheduler = () => {
2076
1570
  let component = Scheduler$ReventlessAws.make(undefined);
2077
1571
  let outputs = Component$ReventlessCore.outputs(component);
@@ -2177,73 +1671,7 @@ function Make($star) {
2177
1671
  };
2178
1672
  let makePlatform = (version, plugins) => {
2179
1673
  log.info("Platform", undefined, `v` + version);
2180
- Pervasives.failwith("mergedApi mode is supported with deployPlatform only — deploy the platform with deployPlatform and each plugin with deployPlugin.");
2181
- let scheduler = makeScheduler();
2182
- hooks_scheduler.contents = scheduler;
2183
- hooksApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApi);
2184
- hooksApiRoleRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApiRole);
2185
- let match = AppSync_Adapter$ReventlessAws.makeApiResource("PlatformApi", {});
2186
- let platformApiRole = match[1];
2187
- let platformApi = match[0];
2188
- hooksAdminApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(platformApi);
2189
- splitApiOutputsRef.contents = {
2190
- platformApi: platformApi,
2191
- platformApiRole: platformApiRole
2192
- };
2193
- let c = apiConfigRef.contents;
2194
- if (c !== undefined) {
2195
- apiConfigRef.contents = {
2196
- domainApi: c.domainApi,
2197
- domainApiRole: c.domainApiRole,
2198
- platformApi: platformApi,
2199
- platformApiRole: platformApiRole
2200
- };
2201
- }
2202
- let admin = Admin.construct(version, [], [
2203
- PluginAggregate,
2204
- ApiFragmentRegistryAggregate
2205
- ], [
2206
- PluginReadModel,
2207
- ApiFragmentsReadModel
2208
- ], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
2209
- let pluginRm = admin.readModelsOutputs["Plugins"];
2210
- if (pluginRm !== undefined) {
2211
- let r = pluginRm.queryDb.resources[0];
2212
- if (r !== undefined) {
2213
- Platform_ComponentDefinitions_Lambda$ReventlessAws.make(platformApi, r.name, {});
2214
- AggregateRuntime_Builder_Single$ReventlessAws.setPluginReadModelTable(r.name);
2215
- }
2216
- }
2217
- let rm = admin.stateViewSlicesOutputs["UiFragments"];
2218
- if (rm !== undefined) {
2219
- let r$1 = rm.queryDb.resources[0];
2220
- if (r$1 !== undefined) {
2221
- Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
2222
- }
2223
- }
2224
- let rm$1 = admin.readModelsOutputs["ApiFragments"];
2225
- if (rm$1 !== undefined) {
2226
- let r$2 = rm$1.queryDb.resources[0];
2227
- if (r$2 !== undefined) {
2228
- Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
2229
- }
2230
- }
2231
- let pluginComponents = plugins.map(plugin => plugin.make());
2232
- let pluginComponent = pluginComponents[0];
2233
- if (pluginComponent !== undefined) {
2234
- Plugin_Helpers$ReventlessCore.exportPluginOutputs(Component$ReventlessCore.outputs(Primitive_option.valFromOption(pluginComponent)));
2235
- }
2236
- provisionPgChangeFeedRelay();
2237
- let sel = QueryDbBackend$ReventlessAws.get();
2238
- if (sel !== undefined) {
2239
- PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}, undefined);
2240
- }
2241
- Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
2242
- Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
2243
- Pulumi$Pulumi.$$export("platformApiRoleArn", Output$Pulumi.flatMap(platformApiRole, role => role.arn));
2244
- Pulumi$Pulumi.$$export("domainApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
2245
- Pulumi$Pulumi.$$export("domainApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
2246
- Pulumi$Pulumi.$$export("domainApiRoleArn", Output$Pulumi.flatMap(domainApiRole, role => role.arn));
1674
+ return Pervasives.failwith("makePlatform is not supported on AWS — deploy the platform with deployPlatform and each plugin with deployPlugin (merged-API composition).");
2247
1675
  };
2248
1676
  let deployPlatform = (version, hostUiBundle) => {
2249
1677
  log.info("Platform:deployPlatform", undefined, `v` + version);
@@ -2284,62 +1712,7 @@ function Make($star) {
2284
1712
  updateApiSchema: undefined,
2285
1713
  manageSubscriptions: undefined
2286
1714
  });
2287
- let admin = Admin.construct(version, [PluginExtensionPoint], [
2288
- PluginAggregate,
2289
- ApiFragmentRegistryAggregate
2290
- ], [
2291
- PluginReadModel,
2292
- ApiFragmentsReadModel
2293
- ], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
2294
- let apiSchemaPushEventTopics = Aggregate$ReventlessCore.allEventTopics(admin.aggregatesOutputs);
2295
- let apiSchemaPushCmdTopics = Aggregate$ReventlessCore.allCommandTopics(admin.aggregatesOutputs);
2296
- let agg = admin.aggregatesOutputs[ApiFragmentRegistrySpec$ReventlessCore.name];
2297
- let apiSchemaPushCmdTopicUrl = agg !== undefined ? Output$Pulumi.flatMap(agg.commandTopic, ct => {
2298
- let r = ct.resources[0];
2299
- if (r !== undefined) {
2300
- return r.id;
2301
- } else {
2302
- return Pulumi.output("");
2303
- }
2304
- }) : Pulumi.output("");
2305
- let apiSchemaPushEnv = Object.fromEntries([
2306
- [
2307
- "API_SCHEMA_PUSH_DOMAIN_API_ID",
2308
- domainApiId
2309
- ],
2310
- [
2311
- "API_SCHEMA_PUSH_PLATFORM_API_ID",
2312
- Output$Pulumi.flatMap(platformApi, api => api.id)
2313
- ],
2314
- [
2315
- "API_SCHEMA_PUSH_SPLIT_API",
2316
- Pulumi.output("true")
2317
- ],
2318
- [
2319
- "API_SCHEMA_PUSH_CLONER",
2320
- Pulumi.output("false")
2321
- ],
2322
- [
2323
- "API_SCHEMA_PUSH_CMD_TOPIC_URL",
2324
- apiSchemaPushCmdTopicUrl
2325
- ]
2326
- ]);
2327
- let apiSchemaPushQueryEngine = QueryEngine_DynamoDb$ReventlessAws.make({});
2328
- Pulumi.all([
2329
- scheduler,
2330
- apiSchemaPushQueryEngine
2331
- ]).apply(param => {
2332
- AdminApiSchemaPushHandler.make("AdminApiSchemaPush", [{
2333
- Source: {
2334
- name: ApiSchemaPush$ReventlessAws.Source.name,
2335
- Id: ApiSchemaPush$ReventlessAws.Source.Id,
2336
- eventSchema: ApiSchemaPush$ReventlessAws.Source.eventSchema
2337
- },
2338
- moduleUrl: ApiSchemaPush$ReventlessAws.moduleUrl,
2339
- execute: ApiSchemaPush$ReventlessAws.execute
2340
- }], apiSchemaPushEventTopics, apiSchemaPushCmdTopics, [ApiFragmentRegistrySpec$ReventlessCore.name], param[1], param[0], Util_ResourceNaming$ReventlessAws.operations, undefined, undefined, apiSchemaPushEnv, {});
2341
- apiSchemaPushCmdTopics.apply(param => SideEffectHandlerRuntime_Builder_Single$ReventlessAws.finish());
2342
- });
1715
+ let admin = Admin.construct(version, [PluginExtensionPoint], [PluginAggregate], [PluginReadModel], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
2343
1716
  let pluginRm = admin.readModelsOutputs["Plugins"];
2344
1717
  let pluginReadModelTableName;
2345
1718
  if (pluginRm !== undefined) {
@@ -2376,13 +1749,6 @@ function Make($star) {
2376
1749
  Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
2377
1750
  }
2378
1751
  }
2379
- let rm$1 = admin.readModelsOutputs["ApiFragments"];
2380
- if (rm$1 !== undefined) {
2381
- let r$2 = rm$1.queryDb.resources[0];
2382
- if (r$2 !== undefined) {
2383
- Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
2384
- }
2385
- }
2386
1752
  Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
2387
1753
  Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
2388
1754
  Pulumi$Pulumi.$$export("platformApiRoleArn", Output$Pulumi.flatMap(platformApiRole, role => role.arn));
@@ -2592,7 +1958,7 @@ function Make($star) {
2592
1958
  provisionPgChangeFeedRelay();
2593
1959
  let sel = QueryDbBackend$ReventlessAws.get();
2594
1960
  if (sel !== undefined) {
2595
- PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}, false);
1961
+ PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {});
2596
1962
  }
2597
1963
  let hbConfig = PluginRuntime_Builder$ReventlessAws.heartbeatConfigRef.contents;
2598
1964
  let match = IndexJs.isDryRun();
@@ -2660,7 +2026,6 @@ function Make($star) {
2660
2026
  AutomationSlice: AutomationSlice,
2661
2027
  OutboundTranslationSlice: OutboundTranslationSlice,
2662
2028
  InboundTranslationSlice: InboundTranslationSlice$1,
2663
- Api: Api,
2664
2029
  mcpSupported: false,
2665
2030
  Plugin: Plugin,
2666
2031
  makePlatform: makePlatform,