@reventlessdev/reventless-aws 3.0.0-alpha.209 → 3.0.0-alpha.211
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 +16 -0
- package/package.json +8 -8
- package/src/Platform.res +348 -707
- package/src/Platform.res.mjs +271 -739
- package/src/adapter/QueryDb/PgQueryResolver_Builder.res +4 -47
- package/src/adapter/QueryDb/PgQueryResolver_Builder.res.mjs +1 -30
- package/src/adapter/QueryDb/QueryDbResolvers_AppSync.res +0 -11
- package/src/adapter/QueryDb/QueryDbResolvers_AppSync.res.mjs +0 -5
- package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res +6 -7
- package/src/components/Api/AppSync_Adapter.res +143 -101
- package/src/components/Api/AppSync_Adapter.res.mjs +60 -57
- package/src/components/Api/AppSync_MergedApi.res +218 -0
- package/src/components/Api/AppSync_MergedApi.res.mjs +122 -0
- package/src/components/Api/AppSync_SdlDecorate.res +49 -61
- package/src/components/Api/AppSync_SdlDecorate.res.mjs +38 -29
- package/src/components/Plugin.res.mjs +1 -2
- package/tests/AppSync_AdapterTest.res +184 -0
- package/tests/AppSync_AdapterTest.res.mjs +136 -0
- package/tests/AppSync_SdlDecorateTest.res +33 -86
- package/tests/AppSync_SdlDecorateTest.res.mjs +26 -71
- package/tests/MCP_LambdaTest.res +4 -6
- package/tests/MCP_LambdaTest.res.mjs +2 -2
- package/src/adapter/Api/ApiFragmentDeregistration.res +0 -138
- package/src/adapter/Api/ApiFragmentDeregistration.res.mjs +0 -108
- package/src/adapter/Api/ApiSchemaPush.res +0 -79
- package/src/adapter/Api/ApiSchemaPush.res.mjs +0 -64
- package/src/adapter/Api/Platform_ApiFragments_Lambda.res +0 -222
- package/src/adapter/Api/Platform_ApiFragments_Lambda.res.mjs +0 -202
- package/src/adapter/QueryDb/NodeResolver_AppSync.res +0 -71
- package/src/adapter/QueryDb/NodeResolver_AppSync.res.mjs +0 -44
- package/src/adapter/Runtime/ApiSchemaPush_Runtime.mjs +0 -204
- package/tests/ApiSchemaPushTest.res +0 -32
- package/tests/ApiSchemaPushTest.res.mjs +0 -20
package/src/Platform.res.mjs
CHANGED
|
@@ -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";
|
|
@@ -42,6 +38,7 @@ import * as PgProjectionFeed$ReventlessAws from "./adapter/Postgres/PgProjection
|
|
|
42
38
|
import * as Util_LocalConfig$ReventlessAws from "./util/Util_LocalConfig.res.mjs";
|
|
43
39
|
import * as IndexJs from "@pulumi/pulumi/runtime/index.js";
|
|
44
40
|
import * as AppSync_EventsApi$ReventlessAws from "./adapter/Api/AppSync_EventsApi.res.mjs";
|
|
41
|
+
import * as AppSync_MergedApi$ReventlessAws from "./components/Api/AppSync_MergedApi.res.mjs";
|
|
45
42
|
import * as GraphQL_Stitcher$ReventlessCore from "@reventlessdev/reventless-core/src/components/Api/GraphQL_Stitcher.res.mjs";
|
|
46
43
|
import * as NoEventMappings$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/NoEventMappings.res.mjs";
|
|
47
44
|
import * as Util_HostUiDomain$ReventlessAws from "./util/Util_HostUiDomain.res.mjs";
|
|
@@ -49,8 +46,8 @@ import * as DcbEventLogStorage$ReventlessAws from "./adapter/DcbEventLog/DcbEven
|
|
|
49
46
|
import * as ExtensionMapping$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/ExtensionMapping.res.mjs";
|
|
50
47
|
import * as PluginsProjection$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/lifecycle/PluginsProjection.res.mjs";
|
|
51
48
|
import * as StateTopic_AppSync$ReventlessAws from "./adapter/StateTopic/StateTopic_AppSync.res.mjs";
|
|
49
|
+
import * as AppSync_SdlDecorate$ReventlessAws from "./components/Api/AppSync_SdlDecorate.res.mjs";
|
|
52
50
|
import * as UiFragmentRegistry$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry.res.mjs";
|
|
53
|
-
import * as Util_AppSync_Caller$ReventlessAws from "./util/Util_AppSync_Caller.res.mjs";
|
|
54
51
|
import * as Util_ResourceNaming$ReventlessAws from "./util/Util_ResourceNaming.res.mjs";
|
|
55
52
|
import * as ClonerRunner_Fargate$ReventlessAws from "./plugin/cloner/ClonerRunner_Fargate.res.mjs";
|
|
56
53
|
import * as QueryEngine_DynamoDb$ReventlessAws from "./adapter/QueryEngine/QueryEngine_DynamoDb.res.mjs";
|
|
@@ -59,28 +56,21 @@ import * as PluginsReadModelSpec$ReventlessCore from "@reventlessdev/reventless-
|
|
|
59
56
|
import * as ExtensionPoint_Builder$ReventlessAws from "./components/ExtensionPoint_Builder.res.mjs";
|
|
60
57
|
import * as StateViewSlice_Builder$ReventlessAws from "./components/StateViewSlice_Builder.res.mjs";
|
|
61
58
|
import * as Task_Builder_PerBucket$ReventlessAws from "./components/Task_Builder_PerBucket.res.mjs";
|
|
62
|
-
import * as ApiFragmentsProjection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentsProjection.res.mjs";
|
|
63
59
|
import * as AutomationSlice_Builder$ReventlessAws from "./components/AutomationSlice_Builder.res.mjs";
|
|
64
60
|
import * as EventTopicPublisher_SNS$ReventlessAws from "./adapter/EventTopic/EventTopicPublisher_SNS.res.mjs";
|
|
65
61
|
import * as ExtensionPointMapping$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/ExtensionPointMapping.res.mjs";
|
|
66
62
|
import * as PgQueryResolver_Builder$ReventlessAws from "./adapter/QueryDb/PgQueryResolver_Builder.res.mjs";
|
|
67
63
|
import * as UiFragments_Projection$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateViewSlice/UiFragments_Projection.res.mjs";
|
|
68
64
|
import * as Aggregate_Builder_Single$ReventlessAws from "./components/Aggregate_Builder_Single.res.mjs";
|
|
69
|
-
import * as ApiFragmentRegistrySpec$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentRegistrySpec.res.mjs";
|
|
70
65
|
import * as ReadModel_Builder_Single$ReventlessAws from "./components/ReadModel_Builder_Single.res.mjs";
|
|
71
|
-
import * as SideEffectHandler_Single$ReventlessAws from "./components/SideEffectHandler_Single.res.mjs";
|
|
72
66
|
import * as StateChangeSlice_Builder$ReventlessAws from "./components/StateChangeSlice_Builder.res.mjs";
|
|
73
|
-
import * as ApiFragmentDeregistration$ReventlessAws from "./adapter/Api/ApiFragmentDeregistration.res.mjs";
|
|
74
67
|
import * as EventCollectorChannel_SQS$ReventlessAws from "./adapter/EventCollector/EventCollectorChannel_SQS.res.mjs";
|
|
75
68
|
import * as PgChangeFeedRelay_Builder$ReventlessAws from "./adapter/Postgres/PgChangeFeedRelay_Builder.res.mjs";
|
|
76
69
|
import * as RuntimeEnvironment_Lambda$ReventlessAws from "./adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs";
|
|
77
|
-
import * as ApiFragmentsReadModelSpec$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentsReadModelSpec.res.mjs";
|
|
78
70
|
import * as PluginExtensionPointSpec$ReventlessInfra from "@reventlessdev/reventless-infra/src/types/PluginExtensionPointSpec.res.mjs";
|
|
79
71
|
import * as Platform_UIFragments_Lambda$ReventlessAws from "./adapter/Api/Platform_UIFragments_Lambda.res.mjs";
|
|
80
|
-
import * as ApiFragmentRegistryBehavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/ApiFragmentRegistry/ApiFragmentRegistryBehavior.res.mjs";
|
|
81
72
|
import * as CommandTopicChannel_SQS_Sync$ReventlessAws from "./adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res.mjs";
|
|
82
73
|
import * as EventLogSubscription_AppSync$ReventlessAws from "./adapter/EventLogSubscription/EventLogSubscription_AppSync.res.mjs";
|
|
83
|
-
import * as Platform_ApiFragments_Lambda$ReventlessAws from "./adapter/Api/Platform_ApiFragments_Lambda.res.mjs";
|
|
84
74
|
import * as UiFragmentRegistry_Behavior$ReventlessCore from "@reventlessdev/reventless-core/src/admin/UiFragmentRegistry/StateChangeSlice/UiFragmentRegistry_Behavior.res.mjs";
|
|
85
75
|
import * as CommandTopicChannel_SQS_Async$ReventlessAws from "./adapter/CommandTopic/CommandTopicChannel_SQS_Async.res.mjs";
|
|
86
76
|
import * as Plugin_ExtensionPoint_Builder$ReventlessAws from "./plugin/stack/Plugin_ExtensionPoint_Builder.res.mjs";
|
|
@@ -96,13 +86,11 @@ import * as CommandGeneratorResolvers_AppSync$ReventlessAws from "./adapter/Comm
|
|
|
96
86
|
import * as EventTopicPublisher_DynamoDbStream$ReventlessAws from "./adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res.mjs";
|
|
97
87
|
import * as InboundTranslationResolvers_AppSync$ReventlessAws from "./adapter/CommandGenerator/InboundTranslationResolvers_AppSync.res.mjs";
|
|
98
88
|
import * as PluginExtensionPointRuntime_Builder$ReventlessAws from "./plugin/runtime/PluginExtensionPointRuntime_Builder.res.mjs";
|
|
99
|
-
import * as ReadModel_Builder_NoResolver_Stream$ReventlessAws from "./components/ReadModel_Builder_NoResolver_Stream.res.mjs";
|
|
100
89
|
import * as EventCollectorRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs";
|
|
101
90
|
import * as Platform_ComponentDefinitions_Lambda$ReventlessAws from "./adapter/Api/Platform_ComponentDefinitions_Lambda.res.mjs";
|
|
102
91
|
import * as StateViewSliceRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/StateViewSliceRuntime_Builder_Single.res.mjs";
|
|
103
92
|
import * as AggregateRuntime_Builder_Single_Async$ReventlessAws from "./adapter/Runtime/AggregateRuntime_Builder_Single_Async.res.mjs";
|
|
104
93
|
import * as AutomationSliceRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/AutomationSliceRuntime_Builder_Single.res.mjs";
|
|
105
|
-
import * as SideEffectHandlerRuntime_Builder_Single$ReventlessAws from "./adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res.mjs";
|
|
106
94
|
|
|
107
95
|
let log = Logger$ReventlessCore.fromEnv();
|
|
108
96
|
|
|
@@ -147,85 +135,44 @@ function MakeWithConfig(Config) {
|
|
|
147
135
|
});
|
|
148
136
|
QueryDbBackend$ReventlessAws.exempt(PluginsReadModelSpec$ReventlessCore.name);
|
|
149
137
|
QueryDbBackend$ReventlessAws.exempt(UiFragments$ReventlessCore.name);
|
|
150
|
-
QueryDbBackend$ReventlessAws.exempt(ApiFragmentsReadModelSpec$ReventlessCore.name);
|
|
151
138
|
});
|
|
152
139
|
let currentDeployTarget = {
|
|
153
140
|
contents: "Domain"
|
|
154
141
|
};
|
|
155
142
|
let platformStackRef = Stdlib_Option.map(new Pulumi.Config("platform").get("stack"), stack => new Pulumi.StackReference(stack));
|
|
156
|
-
let
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
REALTIME: ""
|
|
163
|
-
})
|
|
143
|
+
let domainBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
|
|
144
|
+
types: [],
|
|
145
|
+
mutations: [],
|
|
146
|
+
queries: [" Platform_ping: String"],
|
|
147
|
+
subscriptions: [],
|
|
148
|
+
subscriptionSources: []
|
|
164
149
|
});
|
|
165
|
-
let
|
|
166
|
-
let
|
|
167
|
-
return
|
|
168
|
-
arn: Pulumi.output(apiRoleArn),
|
|
169
|
-
name: Pulumi.output(roleName),
|
|
170
|
-
id: Pulumi.output(roleName)
|
|
171
|
-
};
|
|
150
|
+
let adminSourceSdl = () => {
|
|
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));
|
|
172
153
|
};
|
|
173
154
|
let match;
|
|
174
155
|
if (platformStackRef !== undefined) {
|
|
175
156
|
let stackRef = Primitive_option.valFromOption(platformStackRef);
|
|
176
157
|
let defaultOutput = stackRef.getOutput("default");
|
|
177
|
-
let
|
|
178
|
-
let
|
|
179
|
-
let
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
domainApiEndpointOutput,
|
|
158
|
+
let cognitoPoolIdOutput = stackRef.getOutput("cognitoUserPoolId");
|
|
159
|
+
let cognitoRegionOutput = stackRef.getOutput("cognitoRegion");
|
|
160
|
+
let userPoolConfig = Pulumi.all([
|
|
161
|
+
cognitoPoolIdOutput,
|
|
162
|
+
cognitoRegionOutput,
|
|
183
163
|
defaultOutput
|
|
184
164
|
]).apply(param => {
|
|
185
165
|
let $$default = param[2];
|
|
186
|
-
let directEndpoint = param[1];
|
|
187
|
-
let directId = param[0];
|
|
188
|
-
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);
|
|
189
|
-
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");
|
|
190
|
-
return makePhantomApi(apiId, apiEndpoint);
|
|
191
|
-
});
|
|
192
|
-
let phantomRole = Pulumi.all([
|
|
193
|
-
domainApiRoleArnOutput,
|
|
194
|
-
defaultOutput
|
|
195
|
-
]).apply(param => {
|
|
196
|
-
let direct = param[0];
|
|
197
|
-
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));
|
|
198
|
-
});
|
|
199
|
-
let platformApiIdOutput = stackRef.getOutput("platformApiId");
|
|
200
|
-
let platformApiEndpointOutput = stackRef.getOutput("platformApiEndpoint");
|
|
201
|
-
let platformApiRoleArnOutput = stackRef.getOutput("platformApiRoleArn");
|
|
202
|
-
let phantomPlatformApi = Pulumi.all([
|
|
203
|
-
platformApiIdOutput,
|
|
204
|
-
platformApiEndpointOutput,
|
|
205
|
-
defaultOutput
|
|
206
|
-
]).apply(param => {
|
|
207
|
-
let $$default = param[2];
|
|
208
|
-
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));
|
|
209
|
-
let platformApiId = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("platformApiId")), undefined);
|
|
210
|
-
let platformApiEndpoint = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[1], getFromDefault("platformApiEndpoint")), undefined);
|
|
211
|
-
return makePhantomApi(platformApiId, platformApiEndpoint);
|
|
212
|
-
});
|
|
213
|
-
let phantomPlatformRole = Pulumi.all([
|
|
214
|
-
platformApiRoleArnOutput,
|
|
215
|
-
defaultOutput
|
|
216
|
-
]).apply(param => {
|
|
217
|
-
let $$default = param[1];
|
|
218
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));
|
|
219
|
-
|
|
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
|
+
};
|
|
220
174
|
});
|
|
221
|
-
match =
|
|
222
|
-
phantomApi,
|
|
223
|
-
phantomRole,
|
|
224
|
-
phantomPlatformApi,
|
|
225
|
-
phantomPlatformRole
|
|
226
|
-
];
|
|
227
|
-
} else {
|
|
228
|
-
let match$1 = AppSync_Adapter$ReventlessAws.makeApiResource("DomainApi", {});
|
|
175
|
+
let match$1 = AppSync_Adapter$ReventlessAws.makePluginSourceApiResource("PluginSourceApi", userPoolConfig, {});
|
|
229
176
|
let role = match$1[1];
|
|
230
177
|
let api = match$1[0];
|
|
231
178
|
match = [
|
|
@@ -234,6 +181,17 @@ function MakeWithConfig(Config) {
|
|
|
234
181
|
api,
|
|
235
182
|
role
|
|
236
183
|
];
|
|
184
|
+
} else {
|
|
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, {});
|
|
187
|
+
let role$1 = match$2[1];
|
|
188
|
+
let api$1 = match$2[0];
|
|
189
|
+
match = [
|
|
190
|
+
api$1,
|
|
191
|
+
role$1,
|
|
192
|
+
api$1,
|
|
193
|
+
role$1
|
|
194
|
+
];
|
|
237
195
|
}
|
|
238
196
|
let domainApiRole = match[1];
|
|
239
197
|
let domainApi = match[0];
|
|
@@ -264,7 +222,7 @@ function MakeWithConfig(Config) {
|
|
|
264
222
|
http: dnsHttp
|
|
265
223
|
}));
|
|
266
224
|
let api_name = Pulumi.output("");
|
|
267
|
-
let api$
|
|
225
|
+
let api$2 = {
|
|
268
226
|
apiId: api_apiId,
|
|
269
227
|
apiArn: api_apiArn,
|
|
270
228
|
dns: api_dns,
|
|
@@ -272,7 +230,7 @@ function MakeWithConfig(Config) {
|
|
|
272
230
|
};
|
|
273
231
|
domainEventsApiOpt = {
|
|
274
232
|
name: "DomainEventsApi",
|
|
275
|
-
api: api$
|
|
233
|
+
api: api$2,
|
|
276
234
|
defaultNamespace: undefined
|
|
277
235
|
};
|
|
278
236
|
} else {
|
|
@@ -452,28 +410,6 @@ function MakeWithConfig(Config) {
|
|
|
452
410
|
project: UiFragments_Projection$ReventlessCore.project,
|
|
453
411
|
moduleUrl: UiFragments_Projection$ReventlessCore.moduleUrl
|
|
454
412
|
});
|
|
455
|
-
let emptyBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
|
|
456
|
-
types: [],
|
|
457
|
-
mutations: [],
|
|
458
|
-
queries: [],
|
|
459
|
-
subscriptions: [],
|
|
460
|
-
subscriptionSources: []
|
|
461
|
-
});
|
|
462
|
-
let Make$8 = FragmentConfig => {
|
|
463
|
-
let Builder = Api_Builder$ReventlessCore.Make({
|
|
464
|
-
makeApiResource: AppSync_Adapter$ReventlessAws.makeApiResource,
|
|
465
|
-
generateFragment: AppSync_Adapter$ReventlessAws.generateFragment,
|
|
466
|
-
updateSchema: AppSync_Adapter$ReventlessAws.updateSchema
|
|
467
|
-
});
|
|
468
|
-
let effectiveBaseFragment = Config.splitApi ? emptyBaseFragment : FragmentConfig.baseFragment;
|
|
469
|
-
let make = (name, opts) => Builder.make(name, effectiveBaseFragment, opts);
|
|
470
|
-
return {
|
|
471
|
-
make: make
|
|
472
|
-
};
|
|
473
|
-
};
|
|
474
|
-
let Api = {
|
|
475
|
-
Make: Make$8
|
|
476
|
-
};
|
|
477
413
|
let hooksApiRef = {
|
|
478
414
|
contents: undefined
|
|
479
415
|
};
|
|
@@ -483,6 +419,9 @@ function MakeWithConfig(Config) {
|
|
|
483
419
|
let hooksAdminApiRef = {
|
|
484
420
|
contents: undefined
|
|
485
421
|
};
|
|
422
|
+
let mergedSchemaPushedRef = {
|
|
423
|
+
contents: undefined
|
|
424
|
+
};
|
|
486
425
|
let resolveHookedApi = () => {
|
|
487
426
|
let match = hooksApiRef.contents;
|
|
488
427
|
if (match !== undefined) {
|
|
@@ -499,34 +438,6 @@ function MakeWithConfig(Config) {
|
|
|
499
438
|
return resolveHookedApi();
|
|
500
439
|
}
|
|
501
440
|
};
|
|
502
|
-
let deployWaiterDelay = ms => new Promise((resolve, param) => {
|
|
503
|
-
setTimeout(() => resolve(), ms);
|
|
504
|
-
});
|
|
505
|
-
let waitForApiFragmentPush = async (endpoint, region, pluginId, sinceAt) => {
|
|
506
|
-
let loop = async attempt => {
|
|
507
|
-
if (attempt >= 90) {
|
|
508
|
-
return Stdlib_JsError.throwWithMessage(`Timed out (>3min) waiting for the platform to push ` + pluginId + `'s API fragment — check the AdminEventCollector Lambda logs.`);
|
|
509
|
-
}
|
|
510
|
-
let data = await Util_AppSync_Caller$ReventlessAws.sendQuery(endpoint, region, "query { Platform_ApiFragments { pluginId pushStatus pushMessage pushedAt } }");
|
|
511
|
-
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);
|
|
512
|
-
if (row !== undefined) {
|
|
513
|
-
let field = k => Stdlib_Option.getOr(Stdlib_Option.flatMap(row[k], Stdlib_JSON.Decode.string), "");
|
|
514
|
-
let status = field("pushStatus");
|
|
515
|
-
let fresh = field("pushedAt") >= sinceAt;
|
|
516
|
-
if (fresh && status === "ok") {
|
|
517
|
-
return log.info("registerFragmentViaApi", undefined, pluginId + ` schema push confirmed ACTIVE`);
|
|
518
|
-
} else if (fresh && status === "error") {
|
|
519
|
-
return Stdlib_JsError.throwWithMessage(`Schema push failed for ` + pluginId + `: ` + field("pushMessage"));
|
|
520
|
-
} else {
|
|
521
|
-
await deployWaiterDelay(2000);
|
|
522
|
-
return await loop(attempt + 1 | 0);
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
await deployWaiterDelay(2000);
|
|
526
|
-
return await loop(attempt + 1 | 0);
|
|
527
|
-
};
|
|
528
|
-
return await loop(0);
|
|
529
|
-
};
|
|
530
441
|
let hooks_subscriptionInfraHook = Stdlib_Option.map(domainEventsApiOpt, eventsApi => (params => {
|
|
531
442
|
let allEventTopics = params.allEventTopics;
|
|
532
443
|
let allQueryDbs = params.allQueryDbs;
|
|
@@ -546,83 +457,22 @@ function MakeWithConfig(Config) {
|
|
|
546
457
|
StateTopic_AppSync$ReventlessAws.finish(eventsApi, {});
|
|
547
458
|
}));
|
|
548
459
|
let hooks_preResolversSchemaHook = (name, version, pluginFragment) => {
|
|
549
|
-
|
|
550
|
-
let
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
let at = new Date().toISOString();
|
|
564
|
-
let variables = {
|
|
565
|
-
id: "registry",
|
|
566
|
-
pluginId: name,
|
|
567
|
-
fragment: {
|
|
568
|
-
encoded: pluginFragment.encoded,
|
|
569
|
-
protocol: pluginFragment.protocol
|
|
570
|
-
},
|
|
571
|
-
apiTarget: Util_AppSync_Caller$ReventlessAws.graphqlEnum(apiTargetName),
|
|
572
|
-
at: at
|
|
573
|
-
};
|
|
574
|
-
log.info("registerFragmentViaApi", undefined, `Registering API fragment for ` + name + ` (` + apiTargetName + `) via ` + endpoint);
|
|
575
|
-
let result = await Util_AppSync_Caller$ReventlessAws.sendMutation(endpoint, region, "Platform_ApiFragmentRegistry_RegisterApiFragment", "{ __typename ... on CommandAccepted { eventCount } ... on CommandRejected { errorCode errorDetail } }", variables);
|
|
576
|
-
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);
|
|
577
|
-
if (outcome === undefined) {
|
|
578
|
-
return await waitForApiFragmentPush(endpoint, region, name, at);
|
|
579
|
-
}
|
|
580
|
-
let typename = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["__typename"], Stdlib_JSON.Decode.string), "");
|
|
581
|
-
switch (typename) {
|
|
582
|
-
case "CommandAccepted" :
|
|
583
|
-
let eventCount = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["eventCount"], Stdlib_JSON.Decode.float), 0.0);
|
|
584
|
-
if (eventCount > 0.0) {
|
|
585
|
-
return await waitForApiFragmentPush(endpoint, region, name, at);
|
|
586
|
-
} else {
|
|
587
|
-
return log.info("registerFragmentViaApi", undefined, name + ` fragment unchanged — no push needed`);
|
|
588
|
-
}
|
|
589
|
-
case "CommandRejected" :
|
|
590
|
-
let code = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["errorCode"], Stdlib_JSON.Decode.string), "unknown");
|
|
591
|
-
return Stdlib_JsError.throwWithMessage(`RegisterApiFragment rejected for ` + name + `: ` + code);
|
|
592
|
-
default:
|
|
593
|
-
return await waitForApiFragmentPush(endpoint, region, name, at);
|
|
594
|
-
}
|
|
595
|
-
};
|
|
596
|
-
return run();
|
|
597
|
-
});
|
|
598
|
-
};
|
|
599
|
-
let hooks_preAdminResolversSchemaHook = adminBarrier => {
|
|
600
|
-
let match = splitApiOutputsRef.contents;
|
|
601
|
-
let targetApiOpt = match !== undefined ? match.platformApi : (
|
|
602
|
-
Config.splitApi ? undefined : domainApi
|
|
603
|
-
);
|
|
604
|
-
if (targetApiOpt !== undefined) {
|
|
605
|
-
let adminBaseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(Config.cloner), "Admin", AdminApi$ReventlessCore.systemCallerFieldNames);
|
|
606
|
-
let sdl = AppSync_Adapter$ReventlessAws.stitchWithAwsDirectives(adminBaseFragment, []);
|
|
607
|
-
return Output$Pulumi.flatMap(Pulumi.all([
|
|
608
|
-
targetApiOpt,
|
|
609
|
-
adminBarrier
|
|
610
|
-
]), param => Output$Pulumi.flatMap(param[0].id, apiId => {
|
|
611
|
-
log.info("preAdminResolversSchemaHook", undefined, `Pushing admin schema to ` + apiId);
|
|
612
|
-
let client = AppSync_Adapter$ReventlessAws.getClient();
|
|
613
|
-
return AppSync_Adapter$ReventlessAws.startSchemaCreationRetrying(client, {
|
|
614
|
-
apiId: apiId,
|
|
615
|
-
definition: sdl
|
|
616
|
-
}).then(async () => {
|
|
617
|
-
log.info("preAdminResolversSchemaHook", undefined, "startSchemaCreation called, waiting for ACTIVE");
|
|
618
|
-
await AppSync_Adapter$ReventlessAws.waitForSchemaActive(client, apiId, undefined, undefined);
|
|
619
|
-
return log.info("preAdminResolversSchemaHook", undefined, "schema is ACTIVE");
|
|
620
|
-
});
|
|
621
|
-
}));
|
|
622
|
-
}
|
|
623
|
-
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)");
|
|
624
|
-
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;
|
|
625
474
|
};
|
|
475
|
+
let hooks_preAdminResolversSchemaHook = adminBarrier => adminBarrier;
|
|
626
476
|
let hooks_inboundAppSyncResolverHook = param => InboundTranslationResolvers_AppSync$ReventlessAws.make(resolveHookedApi(), param.runtime, param.fieldNames, param.opts);
|
|
627
477
|
let hooks_dcbAppSyncResolverHook = param => {
|
|
628
478
|
let onAdminApi = param.onAdminApi;
|
|
@@ -744,40 +594,6 @@ function MakeWithConfig(Config) {
|
|
|
744
594
|
authorization: PluginsReadModelSpec$ReventlessCore.authorization,
|
|
745
595
|
visibility: PluginsReadModelSpec$ReventlessCore.visibility
|
|
746
596
|
})(PluginReadModelMappings);
|
|
747
|
-
let ApiFragmentRegistryAggregate = Aggregate_Builder_Single$ReventlessAws.Make({
|
|
748
|
-
Id: Id$Reventless.$$String,
|
|
749
|
-
name: ApiFragmentRegistrySpec$ReventlessCore.name,
|
|
750
|
-
eventSchema: ApiFragmentRegistrySpec$ReventlessCore.eventSchema,
|
|
751
|
-
errorSchema: ApiFragmentRegistrySpec$ReventlessCore.errorSchema,
|
|
752
|
-
commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema,
|
|
753
|
-
moduleUrl: ApiFragmentRegistrySpec$ReventlessCore.moduleUrl,
|
|
754
|
-
commandAuthorization: ApiFragmentRegistrySpec$ReventlessCore.commandAuthorization
|
|
755
|
-
})({
|
|
756
|
-
initialState: ApiFragmentRegistryBehavior$ReventlessCore.initialState,
|
|
757
|
-
evolve: ApiFragmentRegistryBehavior$ReventlessCore.evolve,
|
|
758
|
-
decide: ApiFragmentRegistryBehavior$ReventlessCore.decide,
|
|
759
|
-
snapshot: undefined,
|
|
760
|
-
moduleUrl: ApiFragmentRegistryBehavior$ReventlessCore.moduleUrl
|
|
761
|
-
})(NoEventMappings$ReventlessInfra.Make({
|
|
762
|
-
name: ApiFragmentRegistrySpec$ReventlessCore.name,
|
|
763
|
-
Id: Id$Reventless.$$String,
|
|
764
|
-
commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema
|
|
765
|
-
}));
|
|
766
|
-
let ApiFragmentsReadModelMappings = {
|
|
767
|
-
moduleUrl: ApiFragmentsProjection$ReventlessCore.moduleUrl,
|
|
768
|
-
mappings: ApiFragmentsProjection$ReventlessCore.mappings
|
|
769
|
-
};
|
|
770
|
-
let ApiFragmentsReadModel = ReadModel_Builder_NoResolver_Stream$ReventlessAws.Make({
|
|
771
|
-
Id: Id$Reventless.$$String,
|
|
772
|
-
name: ApiFragmentsReadModelSpec$ReventlessCore.name,
|
|
773
|
-
moduleUrl: ApiFragmentsReadModelSpec$ReventlessCore.moduleUrl,
|
|
774
|
-
stateSchema: ApiFragmentsReadModelSpec$ReventlessCore.stateSchema,
|
|
775
|
-
config: ApiFragmentsReadModelSpec$ReventlessCore.config,
|
|
776
|
-
subIdConfig: undefined,
|
|
777
|
-
authorization: ApiFragmentsReadModelSpec$ReventlessCore.authorization,
|
|
778
|
-
visibility: ApiFragmentsReadModelSpec$ReventlessCore.visibility
|
|
779
|
-
})(ApiFragmentsReadModelMappings);
|
|
780
|
-
let AdminApiSchemaPushHandler = SideEffectHandler_Single$ReventlessAws.Make({});
|
|
781
597
|
let makeScheduler = () => {
|
|
782
598
|
let component = Scheduler$ReventlessAws.make(undefined);
|
|
783
599
|
let outputs = Component$ReventlessCore.outputs(component);
|
|
@@ -883,96 +699,43 @@ function MakeWithConfig(Config) {
|
|
|
883
699
|
};
|
|
884
700
|
let makePlatform = (version, plugins) => {
|
|
885
701
|
log.info("Platform", undefined, `v` + version);
|
|
702
|
+
return Pervasives.failwith("makePlatform is not supported on AWS — deploy the platform with deployPlatform and each plugin with deployPlugin (merged-API composition).");
|
|
703
|
+
};
|
|
704
|
+
let deployPlatform = (version, hostUiBundle) => {
|
|
705
|
+
log.info("Platform:deployPlatform", undefined, `v` + version);
|
|
886
706
|
let scheduler = makeScheduler();
|
|
887
707
|
hooks_scheduler.contents = scheduler;
|
|
888
708
|
hooksApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApi);
|
|
889
709
|
hooksApiRoleRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApiRole);
|
|
890
|
-
let match = Config.splitApi ? AppSync_Adapter$ReventlessAws.
|
|
710
|
+
let match = Config.splitApi ? AppSync_Adapter$ReventlessAws.makeSourceApiResource("PlatformApi", adminSourceSdl(), {}) : [
|
|
891
711
|
domainApi,
|
|
892
712
|
domainApiRole
|
|
893
713
|
];
|
|
894
714
|
let platformApiRole = match[1];
|
|
895
715
|
let platformApi = match[0];
|
|
896
|
-
|
|
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", {});
|
|
718
|
+
let mergedOutputs;
|
|
897
719
|
if (Config.splitApi) {
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
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)
|
|
901
728
|
};
|
|
902
|
-
let c = apiConfigRef.contents;
|
|
903
|
-
if (c !== undefined) {
|
|
904
|
-
apiConfigRef.contents = {
|
|
905
|
-
domainApi: c.domainApi,
|
|
906
|
-
domainApiRole: c.domainApiRole,
|
|
907
|
-
platformApi: platformApi,
|
|
908
|
-
platformApiRole: platformApiRole
|
|
909
|
-
};
|
|
910
|
-
}
|
|
911
|
-
}
|
|
912
|
-
let admin = Admin.construct(version, [], [
|
|
913
|
-
PluginAggregate,
|
|
914
|
-
ApiFragmentRegistryAggregate
|
|
915
|
-
], [
|
|
916
|
-
PluginReadModel,
|
|
917
|
-
ApiFragmentsReadModel
|
|
918
|
-
], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
|
|
919
|
-
let pluginRm = admin.readModelsOutputs["Plugins"];
|
|
920
|
-
if (pluginRm !== undefined) {
|
|
921
|
-
let r = pluginRm.queryDb.resources[0];
|
|
922
|
-
if (r !== undefined) {
|
|
923
|
-
Platform_ComponentDefinitions_Lambda$ReventlessAws.make(platformApi, r.name, {});
|
|
924
|
-
AggregateRuntime_Builder_Single$ReventlessAws.setPluginReadModelTable(r.name);
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
let rm = admin.stateViewSlicesOutputs["UiFragments"];
|
|
928
|
-
if (rm !== undefined) {
|
|
929
|
-
let r$1 = rm.queryDb.resources[0];
|
|
930
|
-
if (r$1 !== undefined) {
|
|
931
|
-
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
|
|
932
|
-
}
|
|
933
|
-
}
|
|
934
|
-
let rm$1 = admin.readModelsOutputs["ApiFragments"];
|
|
935
|
-
if (rm$1 !== undefined) {
|
|
936
|
-
let r$2 = rm$1.queryDb.resources[0];
|
|
937
|
-
if (r$2 !== undefined) {
|
|
938
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
let pluginComponents = plugins.map(plugin => plugin.make());
|
|
942
|
-
let pluginComponent = pluginComponents[0];
|
|
943
|
-
if (pluginComponent !== undefined) {
|
|
944
|
-
Plugin_Helpers$ReventlessCore.exportPluginOutputs(Component$ReventlessCore.outputs(Primitive_option.valFromOption(pluginComponent)));
|
|
945
|
-
}
|
|
946
|
-
provisionPgChangeFeedRelay();
|
|
947
|
-
let sel = QueryDbBackend$ReventlessAws.get();
|
|
948
|
-
if (sel !== undefined) {
|
|
949
|
-
PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}, undefined);
|
|
950
|
-
}
|
|
951
|
-
if (Config.splitApi) {
|
|
952
|
-
Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
|
|
953
|
-
Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
954
|
-
Pulumi$Pulumi.$$export("platformApiRoleArn", Output$Pulumi.flatMap(platformApiRole, role => role.arn));
|
|
955
729
|
} else {
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
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
|
+
};
|
|
959
738
|
}
|
|
960
|
-
Pulumi$Pulumi.$$export("domainApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
|
|
961
|
-
Pulumi$Pulumi.$$export("domainApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
962
|
-
Pulumi$Pulumi.$$export("domainApiRoleArn", Output$Pulumi.flatMap(domainApiRole, role => role.arn));
|
|
963
|
-
};
|
|
964
|
-
let deployPlatform = (version, hostUiBundle) => {
|
|
965
|
-
log.info("Platform:deployPlatform", undefined, `v` + version);
|
|
966
|
-
let scheduler = makeScheduler();
|
|
967
|
-
hooks_scheduler.contents = scheduler;
|
|
968
|
-
hooksApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApi);
|
|
969
|
-
hooksApiRoleRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApiRole);
|
|
970
|
-
let match = Config.splitApi ? AppSync_Adapter$ReventlessAws.makeApiResource("PlatformApi", {}) : [
|
|
971
|
-
domainApi,
|
|
972
|
-
domainApiRole
|
|
973
|
-
];
|
|
974
|
-
let platformApiRole = match[1];
|
|
975
|
-
let platformApi = match[0];
|
|
976
739
|
hooksAdminApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(platformApi);
|
|
977
740
|
if (Config.splitApi) {
|
|
978
741
|
splitApiOutputsRef.contents = {
|
|
@@ -994,62 +757,7 @@ function MakeWithConfig(Config) {
|
|
|
994
757
|
updateApiSchema: undefined,
|
|
995
758
|
manageSubscriptions: undefined
|
|
996
759
|
});
|
|
997
|
-
let admin = Admin.construct(version, [PluginExtensionPoint], [
|
|
998
|
-
PluginAggregate,
|
|
999
|
-
ApiFragmentRegistryAggregate
|
|
1000
|
-
], [
|
|
1001
|
-
PluginReadModel,
|
|
1002
|
-
ApiFragmentsReadModel
|
|
1003
|
-
], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
|
|
1004
|
-
let apiSchemaPushEventTopics = Aggregate$ReventlessCore.allEventTopics(admin.aggregatesOutputs);
|
|
1005
|
-
let apiSchemaPushCmdTopics = Aggregate$ReventlessCore.allCommandTopics(admin.aggregatesOutputs);
|
|
1006
|
-
let agg = admin.aggregatesOutputs[ApiFragmentRegistrySpec$ReventlessCore.name];
|
|
1007
|
-
let apiSchemaPushCmdTopicUrl = agg !== undefined ? Output$Pulumi.flatMap(agg.commandTopic, ct => {
|
|
1008
|
-
let r = ct.resources[0];
|
|
1009
|
-
if (r !== undefined) {
|
|
1010
|
-
return r.id;
|
|
1011
|
-
} else {
|
|
1012
|
-
return Pulumi.output("");
|
|
1013
|
-
}
|
|
1014
|
-
}) : Pulumi.output("");
|
|
1015
|
-
let apiSchemaPushEnv = Object.fromEntries([
|
|
1016
|
-
[
|
|
1017
|
-
"API_SCHEMA_PUSH_DOMAIN_API_ID",
|
|
1018
|
-
domainApiId
|
|
1019
|
-
],
|
|
1020
|
-
[
|
|
1021
|
-
"API_SCHEMA_PUSH_PLATFORM_API_ID",
|
|
1022
|
-
Output$Pulumi.flatMap(platformApi, api => api.id)
|
|
1023
|
-
],
|
|
1024
|
-
[
|
|
1025
|
-
"API_SCHEMA_PUSH_SPLIT_API",
|
|
1026
|
-
Pulumi.output(Config.splitApi ? "true" : "false")
|
|
1027
|
-
],
|
|
1028
|
-
[
|
|
1029
|
-
"API_SCHEMA_PUSH_CLONER",
|
|
1030
|
-
Pulumi.output(Config.cloner ? "true" : "false")
|
|
1031
|
-
],
|
|
1032
|
-
[
|
|
1033
|
-
"API_SCHEMA_PUSH_CMD_TOPIC_URL",
|
|
1034
|
-
apiSchemaPushCmdTopicUrl
|
|
1035
|
-
]
|
|
1036
|
-
]);
|
|
1037
|
-
let apiSchemaPushQueryEngine = QueryEngine_DynamoDb$ReventlessAws.make({});
|
|
1038
|
-
Pulumi.all([
|
|
1039
|
-
scheduler,
|
|
1040
|
-
apiSchemaPushQueryEngine
|
|
1041
|
-
]).apply(param => {
|
|
1042
|
-
AdminApiSchemaPushHandler.make("AdminApiSchemaPush", [{
|
|
1043
|
-
Source: {
|
|
1044
|
-
name: ApiSchemaPush$ReventlessAws.Source.name,
|
|
1045
|
-
Id: ApiSchemaPush$ReventlessAws.Source.Id,
|
|
1046
|
-
eventSchema: ApiSchemaPush$ReventlessAws.Source.eventSchema
|
|
1047
|
-
},
|
|
1048
|
-
moduleUrl: ApiSchemaPush$ReventlessAws.moduleUrl,
|
|
1049
|
-
execute: ApiSchemaPush$ReventlessAws.execute
|
|
1050
|
-
}], apiSchemaPushEventTopics, apiSchemaPushCmdTopics, [ApiFragmentRegistrySpec$ReventlessCore.name], param[1], param[0], Util_ResourceNaming$ReventlessAws.operations, undefined, undefined, apiSchemaPushEnv, {});
|
|
1051
|
-
apiSchemaPushCmdTopics.apply(param => SideEffectHandlerRuntime_Builder_Single$ReventlessAws.finish());
|
|
1052
|
-
});
|
|
760
|
+
let admin = Admin.construct(version, [PluginExtensionPoint], [PluginAggregate], [PluginReadModel], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
|
|
1053
761
|
let pluginRm = admin.readModelsOutputs["Plugins"];
|
|
1054
762
|
let pluginReadModelTableName;
|
|
1055
763
|
if (pluginRm !== undefined) {
|
|
@@ -1086,13 +794,6 @@ function MakeWithConfig(Config) {
|
|
|
1086
794
|
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
|
|
1087
795
|
}
|
|
1088
796
|
}
|
|
1089
|
-
let rm$1 = admin.readModelsOutputs["ApiFragments"];
|
|
1090
|
-
if (rm$1 !== undefined) {
|
|
1091
|
-
let r$2 = rm$1.queryDb.resources[0];
|
|
1092
|
-
if (r$2 !== undefined) {
|
|
1093
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
797
|
if (Config.splitApi) {
|
|
1097
798
|
Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
|
|
1098
799
|
Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
@@ -1105,6 +806,22 @@ function MakeWithConfig(Config) {
|
|
|
1105
806
|
Pulumi$Pulumi.$$export("domainApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
|
|
1106
807
|
Pulumi$Pulumi.$$export("domainApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
1107
808
|
Pulumi$Pulumi.$$export("domainApiRoleArn", Output$Pulumi.flatMap(domainApiRole, role => role.arn));
|
|
809
|
+
if (mergedOutputs !== undefined) {
|
|
810
|
+
let platformMerged$1 = mergedOutputs.platformMerged;
|
|
811
|
+
let domainMerged$1 = mergedOutputs.domainMerged;
|
|
812
|
+
let mergeGatedArn = (merged, gate) => Pulumi.all([
|
|
813
|
+
Output$Pulumi.flatMap(merged.api, api => api.arn),
|
|
814
|
+
gate
|
|
815
|
+
]).apply(param => param[0]);
|
|
816
|
+
let mergedEndpoint = merged => Output$Pulumi.flatMap(merged.api, api => api.uris.apply(uris => uris.GRAPHQL));
|
|
817
|
+
Pulumi$Pulumi.$$export("domainMergedApiArn", mergeGatedArn(domainMerged$1, mergedOutputs.domainMergeGate));
|
|
818
|
+
Pulumi$Pulumi.$$export("domainMergedApiId", Output$Pulumi.flatMap(domainMerged$1.api, api => api.id));
|
|
819
|
+
Pulumi$Pulumi.$$export("domainMergedApiEndpoint", mergedEndpoint(domainMerged$1));
|
|
820
|
+
Pulumi$Pulumi.$$export("platformMergedApiArn", mergeGatedArn(platformMerged$1, mergedOutputs.platformMergeGate));
|
|
821
|
+
Pulumi$Pulumi.$$export("platformMergedApiId", Output$Pulumi.flatMap(platformMerged$1.api, api => api.id));
|
|
822
|
+
Pulumi$Pulumi.$$export("platformMergedApiEndpoint", mergedEndpoint(platformMerged$1));
|
|
823
|
+
Pulumi$Pulumi.$$export("mergedApiPrimaryAuth", Pulumi.output(AppSync_MergedApi$ReventlessAws.primaryAuthMode));
|
|
824
|
+
}
|
|
1108
825
|
if (domainEventsApiOpt !== undefined) {
|
|
1109
826
|
Pulumi$Pulumi.$$export("eventsApiArn", domainEventsApiOpt.api.apiArn);
|
|
1110
827
|
Pulumi$Pulumi.$$export("eventsApiDns", domainEventsApiOpt.api.dns.apply(dns => Stdlib_Option.getOr(dns.http, "")));
|
|
@@ -1113,9 +830,11 @@ function MakeWithConfig(Config) {
|
|
|
1113
830
|
Pulumi$Pulumi.$$export("pluginRmTableName", pluginReadModelTableName);
|
|
1114
831
|
}
|
|
1115
832
|
Plugin_Helpers$ReventlessCore.exportPlatformOutputs(admin.extensionPointsOutputs, admin.aggregatesOutputs, admin.readModelsOutputs, admin.dcbEventLogOutputs, admin.stateChangeSlicesOutputs, admin.stateViewSlicesOutputs, admin.automationSlicesOutputs, admin.outboundTranslationSlicesOutputs, admin.inboundTranslationSlicesOutputs);
|
|
1116
|
-
let
|
|
833
|
+
let clientDomainApi = mergedOutputs !== undefined ? mergedOutputs.domainMerged.api : domainApi;
|
|
834
|
+
let clientPlatformApi = mergedOutputs !== undefined ? mergedOutputs.platformMerged.api : platformApi;
|
|
835
|
+
let resolvedDomainApiEndpoint = Output$Pulumi.flatMap(clientDomainApi, api => api.uris.apply(uris => uris.GRAPHQL));
|
|
1117
836
|
let resolvedDomainApiRoleArn = Output$Pulumi.flatMap(domainApiRole, role => role.arn);
|
|
1118
|
-
let resolvedPlatformApiEndpoint = Output$Pulumi.flatMap(
|
|
837
|
+
let resolvedPlatformApiEndpoint = Output$Pulumi.flatMap(clientPlatformApi, api => api.uris.apply(uris => uris.GRAPHQL));
|
|
1119
838
|
let resolvedPlatformApiRoleArn = Output$Pulumi.flatMap(platformApiRole, role => role.arn);
|
|
1120
839
|
let adminResourcesOutput = Pulumi.all(Object.values(admin.aggregatesOutputs).map(agg => Aggregate$ReventlessCore.toResolvedOutputs(agg).apply(r => [
|
|
1121
840
|
r.eventLog.resources,
|
|
@@ -1246,10 +965,51 @@ function MakeWithConfig(Config) {
|
|
|
1246
965
|
Pulumi$Pulumi.$$export("_interopMeta", Plugin_Helpers$ReventlessCore.getInteropMeta());
|
|
1247
966
|
let pluginOutputs = Component$ReventlessCore.outputs(pluginComponent);
|
|
1248
967
|
Plugin_Helpers$ReventlessCore.exportPluginOutputs(pluginOutputs);
|
|
968
|
+
if (platformStackRef !== undefined) {
|
|
969
|
+
let stackRef = Primitive_option.valFromOption(platformStackRef);
|
|
970
|
+
let defaultOutput = stackRef.getOutput("default");
|
|
971
|
+
let getMergedExport = key => {
|
|
972
|
+
let direct = stackRef.getOutput(key);
|
|
973
|
+
return Pulumi.all([
|
|
974
|
+
direct,
|
|
975
|
+
defaultOutput
|
|
976
|
+
]).apply(param => {
|
|
977
|
+
let direct = param[0];
|
|
978
|
+
if (direct !== undefined) {
|
|
979
|
+
return direct;
|
|
980
|
+
} else {
|
|
981
|
+
return Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap(param[1], d => Stdlib_JSON.Decode.object(d)), d => d[key]), v => Stdlib_JSON.Decode.string(v)), `Platform stack does not export '` + key + `' — deploy the platform with mergedApi=true first`);
|
|
982
|
+
}
|
|
983
|
+
});
|
|
984
|
+
};
|
|
985
|
+
let mergedApiArn;
|
|
986
|
+
mergedApiArn = apiTarget === "Domain" ? getMergedExport("domainMergedApiArn") : getMergedExport("platformMergedApiArn");
|
|
987
|
+
let checkedMergedApiArn = Pulumi.all([
|
|
988
|
+
mergedApiArn,
|
|
989
|
+
getMergedExport("mergedApiPrimaryAuth")
|
|
990
|
+
]).apply(param => {
|
|
991
|
+
AppSync_MergedApi$ReventlessAws.assertCompatiblePrimaryAuth(AppSync_MergedApi$ReventlessAws.authenticationTypeName(AppSync_Adapter$ReventlessAws.primaryAuthenticationType), param[1]);
|
|
992
|
+
return param[0];
|
|
993
|
+
});
|
|
994
|
+
let pushed = mergedSchemaPushedRef.contents;
|
|
995
|
+
let schemaPushed = pushed !== undefined ? pushed : Pulumi.output();
|
|
996
|
+
let arnAfterSchemaPush = Pulumi.all([
|
|
997
|
+
checkedMergedApiArn,
|
|
998
|
+
schemaPushed
|
|
999
|
+
]).apply(param => param[0]);
|
|
1000
|
+
let association = AppSync_MergedApi$ReventlessAws.associateSourceWithMergedArn("PluginSourceAssociation", arnAfterSchemaPush, domainApi, {});
|
|
1001
|
+
let mergeGate = AppSync_MergedApi$ReventlessAws.mergeStatusGateWith(checkedMergedApiArn, association);
|
|
1002
|
+
Pulumi$Pulumi.$$export("sourceApiAssociationId", Pulumi.all([
|
|
1003
|
+
association.associationId,
|
|
1004
|
+
mergeGate
|
|
1005
|
+
]).apply(param => param[0]));
|
|
1006
|
+
Pulumi$Pulumi.$$export("pluginSourceApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
|
|
1007
|
+
Pulumi$Pulumi.$$export("pluginSourceApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
1008
|
+
}
|
|
1249
1009
|
provisionPgChangeFeedRelay();
|
|
1250
1010
|
let sel = QueryDbBackend$ReventlessAws.get();
|
|
1251
1011
|
if (sel !== undefined) {
|
|
1252
|
-
PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}
|
|
1012
|
+
PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {});
|
|
1253
1013
|
}
|
|
1254
1014
|
let hbConfig = PluginRuntime_Builder$ReventlessAws.heartbeatConfigRef.contents;
|
|
1255
1015
|
let match = IndexJs.isDryRun();
|
|
@@ -1312,7 +1072,6 @@ function MakeWithConfig(Config) {
|
|
|
1312
1072
|
InboundTranslationSlice: {
|
|
1313
1073
|
Make: InboundTranslationSlice.Make
|
|
1314
1074
|
},
|
|
1315
|
-
Api: Api,
|
|
1316
1075
|
mcpSupported: false,
|
|
1317
1076
|
Plugin: Plugin,
|
|
1318
1077
|
makePlatform: makePlatform,
|
|
@@ -1348,85 +1107,44 @@ function Make($star) {
|
|
|
1348
1107
|
});
|
|
1349
1108
|
QueryDbBackend$ReventlessAws.exempt(PluginsReadModelSpec$ReventlessCore.name);
|
|
1350
1109
|
QueryDbBackend$ReventlessAws.exempt(UiFragments$ReventlessCore.name);
|
|
1351
|
-
QueryDbBackend$ReventlessAws.exempt(ApiFragmentsReadModelSpec$ReventlessCore.name);
|
|
1352
1110
|
});
|
|
1353
1111
|
let currentDeployTarget = {
|
|
1354
1112
|
contents: "Domain"
|
|
1355
1113
|
};
|
|
1356
1114
|
let platformStackRef = Stdlib_Option.map(new Pulumi.Config("platform").get("stack"), stack => new Pulumi.StackReference(stack));
|
|
1357
|
-
let
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
REALTIME: ""
|
|
1364
|
-
})
|
|
1115
|
+
let domainBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
|
|
1116
|
+
types: [],
|
|
1117
|
+
mutations: [],
|
|
1118
|
+
queries: [" Platform_ping: String"],
|
|
1119
|
+
subscriptions: [],
|
|
1120
|
+
subscriptionSources: []
|
|
1365
1121
|
});
|
|
1366
|
-
let
|
|
1367
|
-
let
|
|
1368
|
-
return
|
|
1369
|
-
arn: Pulumi.output(apiRoleArn),
|
|
1370
|
-
name: Pulumi.output(roleName),
|
|
1371
|
-
id: Pulumi.output(roleName)
|
|
1372
|
-
};
|
|
1122
|
+
let adminSourceSdl = () => {
|
|
1123
|
+
let baseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(false), "Admin", undefined);
|
|
1124
|
+
return AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(baseFragment));
|
|
1373
1125
|
};
|
|
1374
1126
|
let match;
|
|
1375
1127
|
if (platformStackRef !== undefined) {
|
|
1376
1128
|
let stackRef = Primitive_option.valFromOption(platformStackRef);
|
|
1377
1129
|
let defaultOutput = stackRef.getOutput("default");
|
|
1378
|
-
let
|
|
1379
|
-
let
|
|
1380
|
-
let
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
domainApiEndpointOutput,
|
|
1130
|
+
let cognitoPoolIdOutput = stackRef.getOutput("cognitoUserPoolId");
|
|
1131
|
+
let cognitoRegionOutput = stackRef.getOutput("cognitoRegion");
|
|
1132
|
+
let userPoolConfig = Pulumi.all([
|
|
1133
|
+
cognitoPoolIdOutput,
|
|
1134
|
+
cognitoRegionOutput,
|
|
1384
1135
|
defaultOutput
|
|
1385
1136
|
]).apply(param => {
|
|
1386
1137
|
let $$default = param[2];
|
|
1387
|
-
let directEndpoint = param[1];
|
|
1388
|
-
let directId = param[0];
|
|
1389
|
-
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);
|
|
1390
|
-
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");
|
|
1391
|
-
return makePhantomApi(apiId, apiEndpoint);
|
|
1392
|
-
});
|
|
1393
|
-
let phantomRole = Pulumi.all([
|
|
1394
|
-
domainApiRoleArnOutput,
|
|
1395
|
-
defaultOutput
|
|
1396
|
-
]).apply(param => {
|
|
1397
|
-
let direct = param[0];
|
|
1398
|
-
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));
|
|
1399
|
-
});
|
|
1400
|
-
let platformApiIdOutput = stackRef.getOutput("platformApiId");
|
|
1401
|
-
let platformApiEndpointOutput = stackRef.getOutput("platformApiEndpoint");
|
|
1402
|
-
let platformApiRoleArnOutput = stackRef.getOutput("platformApiRoleArn");
|
|
1403
|
-
let phantomPlatformApi = Pulumi.all([
|
|
1404
|
-
platformApiIdOutput,
|
|
1405
|
-
platformApiEndpointOutput,
|
|
1406
|
-
defaultOutput
|
|
1407
|
-
]).apply(param => {
|
|
1408
|
-
let $$default = param[2];
|
|
1409
|
-
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));
|
|
1410
|
-
let platformApiId = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("platformApiId")), undefined);
|
|
1411
|
-
let platformApiEndpoint = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[1], getFromDefault("platformApiEndpoint")), undefined);
|
|
1412
|
-
return makePhantomApi(platformApiId, platformApiEndpoint);
|
|
1413
|
-
});
|
|
1414
|
-
let phantomPlatformRole = Pulumi.all([
|
|
1415
|
-
platformApiRoleArnOutput,
|
|
1416
|
-
defaultOutput
|
|
1417
|
-
]).apply(param => {
|
|
1418
|
-
let $$default = param[1];
|
|
1419
1138
|
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));
|
|
1420
|
-
|
|
1139
|
+
let userPoolId = Stdlib_Option.getOrThrow(Stdlib_Option.orElse(param[0], getFromDefault("cognitoUserPoolId")), "Platform stack does not export 'cognitoUserPoolId' — redeploy the platform stack first");
|
|
1140
|
+
let awsRegion = Stdlib_Option.orElse(param[1], getFromDefault("cognitoRegion"));
|
|
1141
|
+
return {
|
|
1142
|
+
userPoolId: userPoolId,
|
|
1143
|
+
defaultAction: "ALLOW",
|
|
1144
|
+
awsRegion: awsRegion
|
|
1145
|
+
};
|
|
1421
1146
|
});
|
|
1422
|
-
match =
|
|
1423
|
-
phantomApi,
|
|
1424
|
-
phantomRole,
|
|
1425
|
-
phantomPlatformApi,
|
|
1426
|
-
phantomPlatformRole
|
|
1427
|
-
];
|
|
1428
|
-
} else {
|
|
1429
|
-
let match$1 = AppSync_Adapter$ReventlessAws.makeApiResource("DomainApi", {});
|
|
1147
|
+
let match$1 = AppSync_Adapter$ReventlessAws.makePluginSourceApiResource("PluginSourceApi", userPoolConfig, {});
|
|
1430
1148
|
let role = match$1[1];
|
|
1431
1149
|
let api = match$1[0];
|
|
1432
1150
|
match = [
|
|
@@ -1435,6 +1153,17 @@ function Make($star) {
|
|
|
1435
1153
|
api,
|
|
1436
1154
|
role
|
|
1437
1155
|
];
|
|
1156
|
+
} else {
|
|
1157
|
+
let schema = AppSync_SdlDecorate$ReventlessAws.stampCanonicalTypes(AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(domainBaseFragment));
|
|
1158
|
+
let match$2 = AppSync_Adapter$ReventlessAws.makeSourceApiResource("DomainApi", schema, {});
|
|
1159
|
+
let role$1 = match$2[1];
|
|
1160
|
+
let api$1 = match$2[0];
|
|
1161
|
+
match = [
|
|
1162
|
+
api$1,
|
|
1163
|
+
role$1,
|
|
1164
|
+
api$1,
|
|
1165
|
+
role$1
|
|
1166
|
+
];
|
|
1438
1167
|
}
|
|
1439
1168
|
let domainApiRole = match[1];
|
|
1440
1169
|
let domainApi = match[0];
|
|
@@ -1465,7 +1194,7 @@ function Make($star) {
|
|
|
1465
1194
|
http: dnsHttp
|
|
1466
1195
|
}));
|
|
1467
1196
|
let api_name = Pulumi.output("");
|
|
1468
|
-
let api$
|
|
1197
|
+
let api$2 = {
|
|
1469
1198
|
apiId: api_apiId,
|
|
1470
1199
|
apiArn: api_apiArn,
|
|
1471
1200
|
dns: api_dns,
|
|
@@ -1473,7 +1202,7 @@ function Make($star) {
|
|
|
1473
1202
|
};
|
|
1474
1203
|
domainEventsApiOpt = {
|
|
1475
1204
|
name: "DomainEventsApi",
|
|
1476
|
-
api: api$
|
|
1205
|
+
api: api$2,
|
|
1477
1206
|
defaultNamespace: undefined
|
|
1478
1207
|
};
|
|
1479
1208
|
} else {
|
|
@@ -1653,27 +1382,6 @@ function Make($star) {
|
|
|
1653
1382
|
project: UiFragments_Projection$ReventlessCore.project,
|
|
1654
1383
|
moduleUrl: UiFragments_Projection$ReventlessCore.moduleUrl
|
|
1655
1384
|
});
|
|
1656
|
-
let emptyBaseFragment = GraphQL_Stitcher$ReventlessCore.encode({
|
|
1657
|
-
types: [],
|
|
1658
|
-
mutations: [],
|
|
1659
|
-
queries: [],
|
|
1660
|
-
subscriptions: [],
|
|
1661
|
-
subscriptionSources: []
|
|
1662
|
-
});
|
|
1663
|
-
let Make$9 = FragmentConfig => {
|
|
1664
|
-
let Builder = Api_Builder$ReventlessCore.Make({
|
|
1665
|
-
makeApiResource: AppSync_Adapter$ReventlessAws.makeApiResource,
|
|
1666
|
-
generateFragment: AppSync_Adapter$ReventlessAws.generateFragment,
|
|
1667
|
-
updateSchema: AppSync_Adapter$ReventlessAws.updateSchema
|
|
1668
|
-
});
|
|
1669
|
-
let make = (name, opts) => Builder.make(name, emptyBaseFragment, opts);
|
|
1670
|
-
return {
|
|
1671
|
-
make: make
|
|
1672
|
-
};
|
|
1673
|
-
};
|
|
1674
|
-
let Api = {
|
|
1675
|
-
Make: Make$9
|
|
1676
|
-
};
|
|
1677
1385
|
let hooksApiRef = {
|
|
1678
1386
|
contents: undefined
|
|
1679
1387
|
};
|
|
@@ -1683,6 +1391,9 @@ function Make($star) {
|
|
|
1683
1391
|
let hooksAdminApiRef = {
|
|
1684
1392
|
contents: undefined
|
|
1685
1393
|
};
|
|
1394
|
+
let mergedSchemaPushedRef = {
|
|
1395
|
+
contents: undefined
|
|
1396
|
+
};
|
|
1686
1397
|
let resolveHookedApi = () => {
|
|
1687
1398
|
let match = hooksApiRef.contents;
|
|
1688
1399
|
if (match !== undefined) {
|
|
@@ -1699,34 +1410,6 @@ function Make($star) {
|
|
|
1699
1410
|
return resolveHookedApi();
|
|
1700
1411
|
}
|
|
1701
1412
|
};
|
|
1702
|
-
let deployWaiterDelay = ms => new Promise((resolve, param) => {
|
|
1703
|
-
setTimeout(() => resolve(), ms);
|
|
1704
|
-
});
|
|
1705
|
-
let waitForApiFragmentPush = async (endpoint, region, pluginId, sinceAt) => {
|
|
1706
|
-
let loop = async attempt => {
|
|
1707
|
-
if (attempt >= 90) {
|
|
1708
|
-
return Stdlib_JsError.throwWithMessage(`Timed out (>3min) waiting for the platform to push ` + pluginId + `'s API fragment — check the AdminEventCollector Lambda logs.`);
|
|
1709
|
-
}
|
|
1710
|
-
let data = await Util_AppSync_Caller$ReventlessAws.sendQuery(endpoint, region, "query { Platform_ApiFragments { pluginId pushStatus pushMessage pushedAt } }");
|
|
1711
|
-
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);
|
|
1712
|
-
if (row !== undefined) {
|
|
1713
|
-
let field = k => Stdlib_Option.getOr(Stdlib_Option.flatMap(row[k], Stdlib_JSON.Decode.string), "");
|
|
1714
|
-
let status = field("pushStatus");
|
|
1715
|
-
let fresh = field("pushedAt") >= sinceAt;
|
|
1716
|
-
if (fresh && status === "ok") {
|
|
1717
|
-
return log.info("registerFragmentViaApi", undefined, pluginId + ` schema push confirmed ACTIVE`);
|
|
1718
|
-
} else if (fresh && status === "error") {
|
|
1719
|
-
return Stdlib_JsError.throwWithMessage(`Schema push failed for ` + pluginId + `: ` + field("pushMessage"));
|
|
1720
|
-
} else {
|
|
1721
|
-
await deployWaiterDelay(2000);
|
|
1722
|
-
return await loop(attempt + 1 | 0);
|
|
1723
|
-
}
|
|
1724
|
-
}
|
|
1725
|
-
await deployWaiterDelay(2000);
|
|
1726
|
-
return await loop(attempt + 1 | 0);
|
|
1727
|
-
};
|
|
1728
|
-
return await loop(0);
|
|
1729
|
-
};
|
|
1730
1413
|
let hooks_subscriptionInfraHook = Stdlib_Option.map(domainEventsApiOpt, eventsApi => (params => {
|
|
1731
1414
|
let allEventTopics = params.allEventTopics;
|
|
1732
1415
|
let allQueryDbs = params.allQueryDbs;
|
|
@@ -1746,81 +1429,22 @@ function Make($star) {
|
|
|
1746
1429
|
StateTopic_AppSync$ReventlessAws.finish(eventsApi, {});
|
|
1747
1430
|
}));
|
|
1748
1431
|
let hooks_preResolversSchemaHook = (name, version, pluginFragment) => {
|
|
1749
|
-
|
|
1750
|
-
let
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
let at = new Date().toISOString();
|
|
1764
|
-
let variables = {
|
|
1765
|
-
id: "registry",
|
|
1766
|
-
pluginId: name,
|
|
1767
|
-
fragment: {
|
|
1768
|
-
encoded: pluginFragment.encoded,
|
|
1769
|
-
protocol: pluginFragment.protocol
|
|
1770
|
-
},
|
|
1771
|
-
apiTarget: Util_AppSync_Caller$ReventlessAws.graphqlEnum(apiTargetName),
|
|
1772
|
-
at: at
|
|
1773
|
-
};
|
|
1774
|
-
log.info("registerFragmentViaApi", undefined, `Registering API fragment for ` + name + ` (` + apiTargetName + `) via ` + endpoint);
|
|
1775
|
-
let result = await Util_AppSync_Caller$ReventlessAws.sendMutation(endpoint, region, "Platform_ApiFragmentRegistry_RegisterApiFragment", "{ __typename ... on CommandAccepted { eventCount } ... on CommandRejected { errorCode errorDetail } }", variables);
|
|
1776
|
-
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);
|
|
1777
|
-
if (outcome === undefined) {
|
|
1778
|
-
return await waitForApiFragmentPush(endpoint, region, name, at);
|
|
1779
|
-
}
|
|
1780
|
-
let typename = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["__typename"], Stdlib_JSON.Decode.string), "");
|
|
1781
|
-
switch (typename) {
|
|
1782
|
-
case "CommandAccepted" :
|
|
1783
|
-
let eventCount = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["eventCount"], Stdlib_JSON.Decode.float), 0.0);
|
|
1784
|
-
if (eventCount > 0.0) {
|
|
1785
|
-
return await waitForApiFragmentPush(endpoint, region, name, at);
|
|
1786
|
-
} else {
|
|
1787
|
-
return log.info("registerFragmentViaApi", undefined, name + ` fragment unchanged — no push needed`);
|
|
1788
|
-
}
|
|
1789
|
-
case "CommandRejected" :
|
|
1790
|
-
let code = Stdlib_Option.getOr(Stdlib_Option.flatMap(outcome["errorCode"], Stdlib_JSON.Decode.string), "unknown");
|
|
1791
|
-
return Stdlib_JsError.throwWithMessage(`RegisterApiFragment rejected for ` + name + `: ` + code);
|
|
1792
|
-
default:
|
|
1793
|
-
return await waitForApiFragmentPush(endpoint, region, name, at);
|
|
1794
|
-
}
|
|
1795
|
-
};
|
|
1796
|
-
return run();
|
|
1797
|
-
});
|
|
1798
|
-
};
|
|
1799
|
-
let hooks_preAdminResolversSchemaHook = adminBarrier => {
|
|
1800
|
-
let match = splitApiOutputsRef.contents;
|
|
1801
|
-
let targetApiOpt = match !== undefined ? match.platformApi : undefined;
|
|
1802
|
-
if (targetApiOpt !== undefined) {
|
|
1803
|
-
let adminBaseFragment = AppSync_Adapter$ReventlessAws.injectAwsAuthAll(AdminApi$ReventlessCore.baseFragment(false), "Admin", AdminApi$ReventlessCore.systemCallerFieldNames);
|
|
1804
|
-
let sdl = AppSync_Adapter$ReventlessAws.stitchWithAwsDirectives(adminBaseFragment, []);
|
|
1805
|
-
return Output$Pulumi.flatMap(Pulumi.all([
|
|
1806
|
-
targetApiOpt,
|
|
1807
|
-
adminBarrier
|
|
1808
|
-
]), param => Output$Pulumi.flatMap(param[0].id, apiId => {
|
|
1809
|
-
log.info("preAdminResolversSchemaHook", undefined, `Pushing admin schema to ` + apiId);
|
|
1810
|
-
let client = AppSync_Adapter$ReventlessAws.getClient();
|
|
1811
|
-
return AppSync_Adapter$ReventlessAws.startSchemaCreationRetrying(client, {
|
|
1812
|
-
apiId: apiId,
|
|
1813
|
-
definition: sdl
|
|
1814
|
-
}).then(async () => {
|
|
1815
|
-
log.info("preAdminResolversSchemaHook", undefined, "startSchemaCreation called, waiting for ACTIVE");
|
|
1816
|
-
await AppSync_Adapter$ReventlessAws.waitForSchemaActive(client, apiId, undefined, undefined);
|
|
1817
|
-
return log.info("preAdminResolversSchemaHook", undefined, "schema is ACTIVE");
|
|
1818
|
-
});
|
|
1819
|
-
}));
|
|
1820
|
-
}
|
|
1821
|
-
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)");
|
|
1822
|
-
return adminBarrier;
|
|
1432
|
+
let sdl = AppSync_Adapter$ReventlessAws.stitchStandaloneWithAwsDirectives(pluginFragment);
|
|
1433
|
+
let pushed = Output$Pulumi.flatMap(domainApi, api => Output$Pulumi.flatMap(api.id, apiId => {
|
|
1434
|
+
log.info("preResolversSchemaHook", undefined, `Pushing subgraph schema for ` + name + `@` + version + ` to source API ` + apiId);
|
|
1435
|
+
let client = AppSync_Adapter$ReventlessAws.getClient();
|
|
1436
|
+
return AppSync_Adapter$ReventlessAws.startSchemaCreationRetrying(client, {
|
|
1437
|
+
apiId: apiId,
|
|
1438
|
+
definition: sdl
|
|
1439
|
+
}).then(async () => {
|
|
1440
|
+
await AppSync_Adapter$ReventlessAws.waitForSchemaActive(client, apiId, undefined, undefined);
|
|
1441
|
+
return log.info("preResolversSchemaHook", undefined, "subgraph schema is ACTIVE");
|
|
1442
|
+
});
|
|
1443
|
+
}));
|
|
1444
|
+
mergedSchemaPushedRef.contents = pushed;
|
|
1445
|
+
return pushed;
|
|
1823
1446
|
};
|
|
1447
|
+
let hooks_preAdminResolversSchemaHook = adminBarrier => adminBarrier;
|
|
1824
1448
|
let hooks_inboundAppSyncResolverHook = param => InboundTranslationResolvers_AppSync$ReventlessAws.make(resolveHookedApi(), param.runtime, param.fieldNames, param.opts);
|
|
1825
1449
|
let hooks_dcbAppSyncResolverHook = param => {
|
|
1826
1450
|
let onAdminApi = param.onAdminApi;
|
|
@@ -1942,40 +1566,6 @@ function Make($star) {
|
|
|
1942
1566
|
authorization: PluginsReadModelSpec$ReventlessCore.authorization,
|
|
1943
1567
|
visibility: PluginsReadModelSpec$ReventlessCore.visibility
|
|
1944
1568
|
})(PluginReadModelMappings);
|
|
1945
|
-
let ApiFragmentRegistryAggregate = Aggregate_Builder_Single$ReventlessAws.Make({
|
|
1946
|
-
Id: Id$Reventless.$$String,
|
|
1947
|
-
name: ApiFragmentRegistrySpec$ReventlessCore.name,
|
|
1948
|
-
eventSchema: ApiFragmentRegistrySpec$ReventlessCore.eventSchema,
|
|
1949
|
-
errorSchema: ApiFragmentRegistrySpec$ReventlessCore.errorSchema,
|
|
1950
|
-
commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema,
|
|
1951
|
-
moduleUrl: ApiFragmentRegistrySpec$ReventlessCore.moduleUrl,
|
|
1952
|
-
commandAuthorization: ApiFragmentRegistrySpec$ReventlessCore.commandAuthorization
|
|
1953
|
-
})({
|
|
1954
|
-
initialState: ApiFragmentRegistryBehavior$ReventlessCore.initialState,
|
|
1955
|
-
evolve: ApiFragmentRegistryBehavior$ReventlessCore.evolve,
|
|
1956
|
-
decide: ApiFragmentRegistryBehavior$ReventlessCore.decide,
|
|
1957
|
-
snapshot: undefined,
|
|
1958
|
-
moduleUrl: ApiFragmentRegistryBehavior$ReventlessCore.moduleUrl
|
|
1959
|
-
})(NoEventMappings$ReventlessInfra.Make({
|
|
1960
|
-
name: ApiFragmentRegistrySpec$ReventlessCore.name,
|
|
1961
|
-
Id: Id$Reventless.$$String,
|
|
1962
|
-
commandSchema: ApiFragmentRegistrySpec$ReventlessCore.commandSchema
|
|
1963
|
-
}));
|
|
1964
|
-
let ApiFragmentsReadModelMappings = {
|
|
1965
|
-
moduleUrl: ApiFragmentsProjection$ReventlessCore.moduleUrl,
|
|
1966
|
-
mappings: ApiFragmentsProjection$ReventlessCore.mappings
|
|
1967
|
-
};
|
|
1968
|
-
let ApiFragmentsReadModel = ReadModel_Builder_NoResolver_Stream$ReventlessAws.Make({
|
|
1969
|
-
Id: Id$Reventless.$$String,
|
|
1970
|
-
name: ApiFragmentsReadModelSpec$ReventlessCore.name,
|
|
1971
|
-
moduleUrl: ApiFragmentsReadModelSpec$ReventlessCore.moduleUrl,
|
|
1972
|
-
stateSchema: ApiFragmentsReadModelSpec$ReventlessCore.stateSchema,
|
|
1973
|
-
config: ApiFragmentsReadModelSpec$ReventlessCore.config,
|
|
1974
|
-
subIdConfig: undefined,
|
|
1975
|
-
authorization: ApiFragmentsReadModelSpec$ReventlessCore.authorization,
|
|
1976
|
-
visibility: ApiFragmentsReadModelSpec$ReventlessCore.visibility
|
|
1977
|
-
})(ApiFragmentsReadModelMappings);
|
|
1978
|
-
let AdminApiSchemaPushHandler = SideEffectHandler_Single$ReventlessAws.Make({});
|
|
1979
1569
|
let makeScheduler = () => {
|
|
1980
1570
|
let component = Scheduler$ReventlessAws.make(undefined);
|
|
1981
1571
|
let outputs = Component$ReventlessCore.outputs(component);
|
|
@@ -2081,72 +1671,7 @@ function Make($star) {
|
|
|
2081
1671
|
};
|
|
2082
1672
|
let makePlatform = (version, plugins) => {
|
|
2083
1673
|
log.info("Platform", undefined, `v` + version);
|
|
2084
|
-
|
|
2085
|
-
hooks_scheduler.contents = scheduler;
|
|
2086
|
-
hooksApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApi);
|
|
2087
|
-
hooksApiRoleRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApiRole);
|
|
2088
|
-
let match = AppSync_Adapter$ReventlessAws.makeApiResource("PlatformApi", {});
|
|
2089
|
-
let platformApiRole = match[1];
|
|
2090
|
-
let platformApi = match[0];
|
|
2091
|
-
hooksAdminApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(platformApi);
|
|
2092
|
-
splitApiOutputsRef.contents = {
|
|
2093
|
-
platformApi: platformApi,
|
|
2094
|
-
platformApiRole: platformApiRole
|
|
2095
|
-
};
|
|
2096
|
-
let c = apiConfigRef.contents;
|
|
2097
|
-
if (c !== undefined) {
|
|
2098
|
-
apiConfigRef.contents = {
|
|
2099
|
-
domainApi: c.domainApi,
|
|
2100
|
-
domainApiRole: c.domainApiRole,
|
|
2101
|
-
platformApi: platformApi,
|
|
2102
|
-
platformApiRole: platformApiRole
|
|
2103
|
-
};
|
|
2104
|
-
}
|
|
2105
|
-
let admin = Admin.construct(version, [], [
|
|
2106
|
-
PluginAggregate,
|
|
2107
|
-
ApiFragmentRegistryAggregate
|
|
2108
|
-
], [
|
|
2109
|
-
PluginReadModel,
|
|
2110
|
-
ApiFragmentsReadModel
|
|
2111
|
-
], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
|
|
2112
|
-
let pluginRm = admin.readModelsOutputs["Plugins"];
|
|
2113
|
-
if (pluginRm !== undefined) {
|
|
2114
|
-
let r = pluginRm.queryDb.resources[0];
|
|
2115
|
-
if (r !== undefined) {
|
|
2116
|
-
Platform_ComponentDefinitions_Lambda$ReventlessAws.make(platformApi, r.name, {});
|
|
2117
|
-
AggregateRuntime_Builder_Single$ReventlessAws.setPluginReadModelTable(r.name);
|
|
2118
|
-
}
|
|
2119
|
-
}
|
|
2120
|
-
let rm = admin.stateViewSlicesOutputs["UiFragments"];
|
|
2121
|
-
if (rm !== undefined) {
|
|
2122
|
-
let r$1 = rm.queryDb.resources[0];
|
|
2123
|
-
if (r$1 !== undefined) {
|
|
2124
|
-
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
|
|
2125
|
-
}
|
|
2126
|
-
}
|
|
2127
|
-
let rm$1 = admin.readModelsOutputs["ApiFragments"];
|
|
2128
|
-
if (rm$1 !== undefined) {
|
|
2129
|
-
let r$2 = rm$1.queryDb.resources[0];
|
|
2130
|
-
if (r$2 !== undefined) {
|
|
2131
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
2132
|
-
}
|
|
2133
|
-
}
|
|
2134
|
-
let pluginComponents = plugins.map(plugin => plugin.make());
|
|
2135
|
-
let pluginComponent = pluginComponents[0];
|
|
2136
|
-
if (pluginComponent !== undefined) {
|
|
2137
|
-
Plugin_Helpers$ReventlessCore.exportPluginOutputs(Component$ReventlessCore.outputs(Primitive_option.valFromOption(pluginComponent)));
|
|
2138
|
-
}
|
|
2139
|
-
provisionPgChangeFeedRelay();
|
|
2140
|
-
let sel = QueryDbBackend$ReventlessAws.get();
|
|
2141
|
-
if (sel !== undefined) {
|
|
2142
|
-
PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}, undefined);
|
|
2143
|
-
}
|
|
2144
|
-
Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
|
|
2145
|
-
Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
2146
|
-
Pulumi$Pulumi.$$export("platformApiRoleArn", Output$Pulumi.flatMap(platformApiRole, role => role.arn));
|
|
2147
|
-
Pulumi$Pulumi.$$export("domainApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
|
|
2148
|
-
Pulumi$Pulumi.$$export("domainApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
2149
|
-
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).");
|
|
2150
1675
|
};
|
|
2151
1676
|
let deployPlatform = (version, hostUiBundle) => {
|
|
2152
1677
|
log.info("Platform:deployPlatform", undefined, `v` + version);
|
|
@@ -2154,9 +1679,20 @@ function Make($star) {
|
|
|
2154
1679
|
hooks_scheduler.contents = scheduler;
|
|
2155
1680
|
hooksApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApi);
|
|
2156
1681
|
hooksApiRoleRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(domainApiRole);
|
|
2157
|
-
let match = AppSync_Adapter$ReventlessAws.
|
|
1682
|
+
let match = AppSync_Adapter$ReventlessAws.makeSourceApiResource("PlatformApi", adminSourceSdl(), {});
|
|
2158
1683
|
let platformApiRole = match[1];
|
|
2159
1684
|
let platformApi = match[0];
|
|
1685
|
+
AppSync_MergedApi$ReventlessAws.assertCompatiblePrimaryAuth(AppSync_MergedApi$ReventlessAws.authenticationTypeName(AppSync_Adapter$ReventlessAws.primaryAuthenticationType), AppSync_MergedApi$ReventlessAws.primaryAuthMode);
|
|
1686
|
+
let domainMerged = AppSync_MergedApi$ReventlessAws.make("DomainMergedApi", {});
|
|
1687
|
+
let platformMerged = AppSync_MergedApi$ReventlessAws.make("PlatformMergedApi", {});
|
|
1688
|
+
let platformAssoc = AppSync_MergedApi$ReventlessAws.associateSource("PlatformAdminSourceAssociation", platformMerged, platformApi, {});
|
|
1689
|
+
let domainAssoc = AppSync_MergedApi$ReventlessAws.associateSource("DomainBaseSourceAssociation", domainMerged, domainApi, {});
|
|
1690
|
+
let mergedOutputs = {
|
|
1691
|
+
domainMerged: domainMerged,
|
|
1692
|
+
platformMerged: platformMerged,
|
|
1693
|
+
domainMergeGate: AppSync_MergedApi$ReventlessAws.mergeStatusGate(domainMerged, domainAssoc),
|
|
1694
|
+
platformMergeGate: AppSync_MergedApi$ReventlessAws.mergeStatusGate(platformMerged, platformAssoc)
|
|
1695
|
+
};
|
|
2160
1696
|
hooksAdminApiRef.contents = Platform_Casts$ReventlessAws.wrapHookedValue(platformApi);
|
|
2161
1697
|
splitApiOutputsRef.contents = {
|
|
2162
1698
|
platformApi: platformApi,
|
|
@@ -2176,62 +1712,7 @@ function Make($star) {
|
|
|
2176
1712
|
updateApiSchema: undefined,
|
|
2177
1713
|
manageSubscriptions: undefined
|
|
2178
1714
|
});
|
|
2179
|
-
let admin = Admin.construct(version, [PluginExtensionPoint], [
|
|
2180
|
-
PluginAggregate,
|
|
2181
|
-
ApiFragmentRegistryAggregate
|
|
2182
|
-
], [
|
|
2183
|
-
PluginReadModel,
|
|
2184
|
-
ApiFragmentsReadModel
|
|
2185
|
-
], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
|
|
2186
|
-
let apiSchemaPushEventTopics = Aggregate$ReventlessCore.allEventTopics(admin.aggregatesOutputs);
|
|
2187
|
-
let apiSchemaPushCmdTopics = Aggregate$ReventlessCore.allCommandTopics(admin.aggregatesOutputs);
|
|
2188
|
-
let agg = admin.aggregatesOutputs[ApiFragmentRegistrySpec$ReventlessCore.name];
|
|
2189
|
-
let apiSchemaPushCmdTopicUrl = agg !== undefined ? Output$Pulumi.flatMap(agg.commandTopic, ct => {
|
|
2190
|
-
let r = ct.resources[0];
|
|
2191
|
-
if (r !== undefined) {
|
|
2192
|
-
return r.id;
|
|
2193
|
-
} else {
|
|
2194
|
-
return Pulumi.output("");
|
|
2195
|
-
}
|
|
2196
|
-
}) : Pulumi.output("");
|
|
2197
|
-
let apiSchemaPushEnv = Object.fromEntries([
|
|
2198
|
-
[
|
|
2199
|
-
"API_SCHEMA_PUSH_DOMAIN_API_ID",
|
|
2200
|
-
domainApiId
|
|
2201
|
-
],
|
|
2202
|
-
[
|
|
2203
|
-
"API_SCHEMA_PUSH_PLATFORM_API_ID",
|
|
2204
|
-
Output$Pulumi.flatMap(platformApi, api => api.id)
|
|
2205
|
-
],
|
|
2206
|
-
[
|
|
2207
|
-
"API_SCHEMA_PUSH_SPLIT_API",
|
|
2208
|
-
Pulumi.output("true")
|
|
2209
|
-
],
|
|
2210
|
-
[
|
|
2211
|
-
"API_SCHEMA_PUSH_CLONER",
|
|
2212
|
-
Pulumi.output("false")
|
|
2213
|
-
],
|
|
2214
|
-
[
|
|
2215
|
-
"API_SCHEMA_PUSH_CMD_TOPIC_URL",
|
|
2216
|
-
apiSchemaPushCmdTopicUrl
|
|
2217
|
-
]
|
|
2218
|
-
]);
|
|
2219
|
-
let apiSchemaPushQueryEngine = QueryEngine_DynamoDb$ReventlessAws.make({});
|
|
2220
|
-
Pulumi.all([
|
|
2221
|
-
scheduler,
|
|
2222
|
-
apiSchemaPushQueryEngine
|
|
2223
|
-
]).apply(param => {
|
|
2224
|
-
AdminApiSchemaPushHandler.make("AdminApiSchemaPush", [{
|
|
2225
|
-
Source: {
|
|
2226
|
-
name: ApiSchemaPush$ReventlessAws.Source.name,
|
|
2227
|
-
Id: ApiSchemaPush$ReventlessAws.Source.Id,
|
|
2228
|
-
eventSchema: ApiSchemaPush$ReventlessAws.Source.eventSchema
|
|
2229
|
-
},
|
|
2230
|
-
moduleUrl: ApiSchemaPush$ReventlessAws.moduleUrl,
|
|
2231
|
-
execute: ApiSchemaPush$ReventlessAws.execute
|
|
2232
|
-
}], apiSchemaPushEventTopics, apiSchemaPushCmdTopics, [ApiFragmentRegistrySpec$ReventlessCore.name], param[1], param[0], Util_ResourceNaming$ReventlessAws.operations, undefined, undefined, apiSchemaPushEnv, {});
|
|
2233
|
-
apiSchemaPushCmdTopics.apply(param => SideEffectHandlerRuntime_Builder_Single$ReventlessAws.finish());
|
|
2234
|
-
});
|
|
1715
|
+
let admin = Admin.construct(version, [PluginExtensionPoint], [PluginAggregate], [PluginReadModel], scheduler, Util_ResourceNaming$ReventlessAws.operations, platformApi, platformApiRole, [UiFragmentRegistrySlice], [UiFragmentsViewSlice], [], [], []);
|
|
2235
1716
|
let pluginRm = admin.readModelsOutputs["Plugins"];
|
|
2236
1717
|
let pluginReadModelTableName;
|
|
2237
1718
|
if (pluginRm !== undefined) {
|
|
@@ -2268,19 +1749,28 @@ function Make($star) {
|
|
|
2268
1749
|
Platform_UIFragments_Lambda$ReventlessAws.make(platformApi, r$1.name, admin.adminSchemaPushed, {});
|
|
2269
1750
|
}
|
|
2270
1751
|
}
|
|
2271
|
-
let rm$1 = admin.readModelsOutputs["ApiFragments"];
|
|
2272
|
-
if (rm$1 !== undefined) {
|
|
2273
|
-
let r$2 = rm$1.queryDb.resources[0];
|
|
2274
|
-
if (r$2 !== undefined) {
|
|
2275
|
-
Platform_ApiFragments_Lambda$ReventlessAws.make(platformApi, r$2.name, admin.adminSchemaPushed, {});
|
|
2276
|
-
}
|
|
2277
|
-
}
|
|
2278
1752
|
Pulumi$Pulumi.$$export("platformApiId", Output$Pulumi.flatMap(platformApi, api => api.id));
|
|
2279
1753
|
Pulumi$Pulumi.$$export("platformApiEndpoint", Output$Pulumi.flatMap(platformApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
2280
1754
|
Pulumi$Pulumi.$$export("platformApiRoleArn", Output$Pulumi.flatMap(platformApiRole, role => role.arn));
|
|
2281
1755
|
Pulumi$Pulumi.$$export("domainApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
|
|
2282
1756
|
Pulumi$Pulumi.$$export("domainApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
2283
1757
|
Pulumi$Pulumi.$$export("domainApiRoleArn", Output$Pulumi.flatMap(domainApiRole, role => role.arn));
|
|
1758
|
+
if (mergedOutputs !== undefined) {
|
|
1759
|
+
let platformMerged$1 = mergedOutputs.platformMerged;
|
|
1760
|
+
let domainMerged$1 = mergedOutputs.domainMerged;
|
|
1761
|
+
let mergeGatedArn = (merged, gate) => Pulumi.all([
|
|
1762
|
+
Output$Pulumi.flatMap(merged.api, api => api.arn),
|
|
1763
|
+
gate
|
|
1764
|
+
]).apply(param => param[0]);
|
|
1765
|
+
let mergedEndpoint = merged => Output$Pulumi.flatMap(merged.api, api => api.uris.apply(uris => uris.GRAPHQL));
|
|
1766
|
+
Pulumi$Pulumi.$$export("domainMergedApiArn", mergeGatedArn(domainMerged$1, mergedOutputs.domainMergeGate));
|
|
1767
|
+
Pulumi$Pulumi.$$export("domainMergedApiId", Output$Pulumi.flatMap(domainMerged$1.api, api => api.id));
|
|
1768
|
+
Pulumi$Pulumi.$$export("domainMergedApiEndpoint", mergedEndpoint(domainMerged$1));
|
|
1769
|
+
Pulumi$Pulumi.$$export("platformMergedApiArn", mergeGatedArn(platformMerged$1, mergedOutputs.platformMergeGate));
|
|
1770
|
+
Pulumi$Pulumi.$$export("platformMergedApiId", Output$Pulumi.flatMap(platformMerged$1.api, api => api.id));
|
|
1771
|
+
Pulumi$Pulumi.$$export("platformMergedApiEndpoint", mergedEndpoint(platformMerged$1));
|
|
1772
|
+
Pulumi$Pulumi.$$export("mergedApiPrimaryAuth", Pulumi.output(AppSync_MergedApi$ReventlessAws.primaryAuthMode));
|
|
1773
|
+
}
|
|
2284
1774
|
if (domainEventsApiOpt !== undefined) {
|
|
2285
1775
|
Pulumi$Pulumi.$$export("eventsApiArn", domainEventsApiOpt.api.apiArn);
|
|
2286
1776
|
Pulumi$Pulumi.$$export("eventsApiDns", domainEventsApiOpt.api.dns.apply(dns => Stdlib_Option.getOr(dns.http, "")));
|
|
@@ -2289,9 +1779,11 @@ function Make($star) {
|
|
|
2289
1779
|
Pulumi$Pulumi.$$export("pluginRmTableName", pluginReadModelTableName);
|
|
2290
1780
|
}
|
|
2291
1781
|
Plugin_Helpers$ReventlessCore.exportPlatformOutputs(admin.extensionPointsOutputs, admin.aggregatesOutputs, admin.readModelsOutputs, admin.dcbEventLogOutputs, admin.stateChangeSlicesOutputs, admin.stateViewSlicesOutputs, admin.automationSlicesOutputs, admin.outboundTranslationSlicesOutputs, admin.inboundTranslationSlicesOutputs);
|
|
2292
|
-
let
|
|
1782
|
+
let clientDomainApi = mergedOutputs !== undefined ? mergedOutputs.domainMerged.api : domainApi;
|
|
1783
|
+
let clientPlatformApi = mergedOutputs !== undefined ? mergedOutputs.platformMerged.api : platformApi;
|
|
1784
|
+
let resolvedDomainApiEndpoint = Output$Pulumi.flatMap(clientDomainApi, api => api.uris.apply(uris => uris.GRAPHQL));
|
|
2293
1785
|
let resolvedDomainApiRoleArn = Output$Pulumi.flatMap(domainApiRole, role => role.arn);
|
|
2294
|
-
let resolvedPlatformApiEndpoint = Output$Pulumi.flatMap(
|
|
1786
|
+
let resolvedPlatformApiEndpoint = Output$Pulumi.flatMap(clientPlatformApi, api => api.uris.apply(uris => uris.GRAPHQL));
|
|
2295
1787
|
let resolvedPlatformApiRoleArn = Output$Pulumi.flatMap(platformApiRole, role => role.arn);
|
|
2296
1788
|
let adminResourcesOutput = Pulumi.all(Object.values(admin.aggregatesOutputs).map(agg => Aggregate$ReventlessCore.toResolvedOutputs(agg).apply(r => [
|
|
2297
1789
|
r.eventLog.resources,
|
|
@@ -2422,10 +1914,51 @@ function Make($star) {
|
|
|
2422
1914
|
Pulumi$Pulumi.$$export("_interopMeta", Plugin_Helpers$ReventlessCore.getInteropMeta());
|
|
2423
1915
|
let pluginOutputs = Component$ReventlessCore.outputs(pluginComponent);
|
|
2424
1916
|
Plugin_Helpers$ReventlessCore.exportPluginOutputs(pluginOutputs);
|
|
1917
|
+
if (platformStackRef !== undefined) {
|
|
1918
|
+
let stackRef = Primitive_option.valFromOption(platformStackRef);
|
|
1919
|
+
let defaultOutput = stackRef.getOutput("default");
|
|
1920
|
+
let getMergedExport = key => {
|
|
1921
|
+
let direct = stackRef.getOutput(key);
|
|
1922
|
+
return Pulumi.all([
|
|
1923
|
+
direct,
|
|
1924
|
+
defaultOutput
|
|
1925
|
+
]).apply(param => {
|
|
1926
|
+
let direct = param[0];
|
|
1927
|
+
if (direct !== undefined) {
|
|
1928
|
+
return direct;
|
|
1929
|
+
} else {
|
|
1930
|
+
return Stdlib_Option.getOrThrow(Stdlib_Option.flatMap(Stdlib_Option.flatMap(Stdlib_Option.flatMap(param[1], d => Stdlib_JSON.Decode.object(d)), d => d[key]), v => Stdlib_JSON.Decode.string(v)), `Platform stack does not export '` + key + `' — deploy the platform with mergedApi=true first`);
|
|
1931
|
+
}
|
|
1932
|
+
});
|
|
1933
|
+
};
|
|
1934
|
+
let mergedApiArn;
|
|
1935
|
+
mergedApiArn = apiTarget === "Domain" ? getMergedExport("domainMergedApiArn") : getMergedExport("platformMergedApiArn");
|
|
1936
|
+
let checkedMergedApiArn = Pulumi.all([
|
|
1937
|
+
mergedApiArn,
|
|
1938
|
+
getMergedExport("mergedApiPrimaryAuth")
|
|
1939
|
+
]).apply(param => {
|
|
1940
|
+
AppSync_MergedApi$ReventlessAws.assertCompatiblePrimaryAuth(AppSync_MergedApi$ReventlessAws.authenticationTypeName(AppSync_Adapter$ReventlessAws.primaryAuthenticationType), param[1]);
|
|
1941
|
+
return param[0];
|
|
1942
|
+
});
|
|
1943
|
+
let pushed = mergedSchemaPushedRef.contents;
|
|
1944
|
+
let schemaPushed = pushed !== undefined ? pushed : Pulumi.output();
|
|
1945
|
+
let arnAfterSchemaPush = Pulumi.all([
|
|
1946
|
+
checkedMergedApiArn,
|
|
1947
|
+
schemaPushed
|
|
1948
|
+
]).apply(param => param[0]);
|
|
1949
|
+
let association = AppSync_MergedApi$ReventlessAws.associateSourceWithMergedArn("PluginSourceAssociation", arnAfterSchemaPush, domainApi, {});
|
|
1950
|
+
let mergeGate = AppSync_MergedApi$ReventlessAws.mergeStatusGateWith(checkedMergedApiArn, association);
|
|
1951
|
+
Pulumi$Pulumi.$$export("sourceApiAssociationId", Pulumi.all([
|
|
1952
|
+
association.associationId,
|
|
1953
|
+
mergeGate
|
|
1954
|
+
]).apply(param => param[0]));
|
|
1955
|
+
Pulumi$Pulumi.$$export("pluginSourceApiId", Output$Pulumi.flatMap(domainApi, api => api.id));
|
|
1956
|
+
Pulumi$Pulumi.$$export("pluginSourceApiEndpoint", Output$Pulumi.flatMap(domainApi, api => api.uris.apply(uris => uris.GRAPHQL)));
|
|
1957
|
+
}
|
|
2425
1958
|
provisionPgChangeFeedRelay();
|
|
2426
1959
|
let sel = QueryDbBackend$ReventlessAws.get();
|
|
2427
1960
|
if (sel !== undefined) {
|
|
2428
|
-
PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {}
|
|
1961
|
+
PgQueryResolver_Builder$ReventlessAws.provision(domainApi, sel, {});
|
|
2429
1962
|
}
|
|
2430
1963
|
let hbConfig = PluginRuntime_Builder$ReventlessAws.heartbeatConfigRef.contents;
|
|
2431
1964
|
let match = IndexJs.isDryRun();
|
|
@@ -2493,7 +2026,6 @@ function Make($star) {
|
|
|
2493
2026
|
AutomationSlice: AutomationSlice,
|
|
2494
2027
|
OutboundTranslationSlice: OutboundTranslationSlice,
|
|
2495
2028
|
InboundTranslationSlice: InboundTranslationSlice$1,
|
|
2496
|
-
Api: Api,
|
|
2497
2029
|
mcpSupported: false,
|
|
2498
2030
|
Plugin: Plugin,
|
|
2499
2031
|
makePlatform: makePlatform,
|