@reventlessdev/reventless-aws 3.0.0-alpha.246 → 3.0.0-alpha.248
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/package.json +7 -7
- package/src/Platform.res +4 -1
- package/src/Platform.res.mjs +2 -2
- package/src/adapter/Api/Platform_ComponentDefinitions_Lambda.res.mjs +1 -1
- package/src/adapter/Api/Platform_UIFragments_Lambda.res.mjs +1 -1
- package/src/adapter/Counter/CounterHandler_DynamoDbStream.res.mjs +2 -2
- package/src/adapter/EventLogSubscription/EventLogSubscription_AppSync.res.mjs +1 -1
- package/src/adapter/Geocoder/Geocoder_AwsLocation.res.mjs +1 -1
- package/src/adapter/QueryDb/PgQueryResolver_Builder.res.mjs +1 -1
- package/src/adapter/Runtime/AggregateRuntime_Builder_Micro.res.mjs +4 -4
- package/src/adapter/Runtime/AggregateRuntime_Builder_Micro_Async.res.mjs +4 -4
- package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate.res.mjs +2 -2
- package/src/adapter/Runtime/AggregateRuntime_Builder_PerAggregate_Async.res.mjs +2 -2
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res.mjs +2 -2
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res.mjs +2 -2
- package/src/adapter/Runtime/AutomationSliceRuntime_Builder_Single.res.mjs +4 -4
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_PerEventCollector.res.mjs +2 -2
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs +2 -2
- package/src/adapter/Runtime/ExtensionPointRuntime_Builder_PerExtensionPoint.res.mjs +2 -2
- package/src/adapter/Runtime/SideEffectHandlerRuntime_Builder_Single.res.mjs +1 -1
- package/src/adapter/Runtime/StateChangeSliceRuntime_Builder_Single.res.mjs +6 -6
- package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res.mjs +6 -6
- package/src/adapter/Runtime/TaskRuntime_Builder_PerBucket.res.mjs +1 -1
- package/src/adapter/StateTopic/StateTopic_AppSync.res.mjs +1 -1
- package/src/adapter/Upload/Upload_Presign_S3.res +9 -1
- package/src/adapter/Upload/Upload_Presign_S3.res.mjs +5 -2
- package/src/plugin/runtime/PluginRuntime_Builder.res.mjs +3 -3
- package/src/util/Util_Bundle.res +33 -10
- package/src/util/Util_Bundle.res.mjs +20 -6
- package/tests/Util_BundleResolveTest.res +58 -0
- package/tests/Util_BundleResolveTest.res.mjs +54 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 3.0.0-alpha.248 (2026-07-30)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **aws:** name the presign CORS headers so authorized uploads pass preflight ([1034a4a](https://github.com/ReventlessDev/reventless-core/commit/1034a4ab82a5c3017daf5aaec0b789eb3dc2c0e1))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# 3.0.0-alpha.247 (2026-07-30)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **aws:** resolve the host-shell bundle from the project that pins it ([8e12fb7](https://github.com/ReventlessDev/reventless-core/commit/8e12fb762795184086080b131397a111a0e75f03))
|
|
18
|
+
|
|
19
|
+
|
|
6
20
|
# 3.0.0-alpha.246 (2026-07-30)
|
|
7
21
|
|
|
8
22
|
**Note:** Version bump only for package @reventlessdev/reventless-aws
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reventlessdev/reventless-aws",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.248",
|
|
4
4
|
"description": "AWS adapters for Reventless",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"dependencies": {
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
"sury": "11.0.0-alpha.4",
|
|
13
13
|
"uuid": "^13.0.0",
|
|
14
14
|
"@reventlessdev/rescript-aws-sdk": "2.2.0-alpha.25",
|
|
15
|
+
"@reventlessdev/rescript-jest": "1.0.0-alpha.9",
|
|
15
16
|
"@reventlessdev/rescript-effect": "0.1.0-alpha.31",
|
|
16
|
-
"@reventlessdev/rescript-pulumi-aws": "2.4.0-alpha.61",
|
|
17
17
|
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.17",
|
|
18
|
-
"@reventlessdev/rescript-
|
|
18
|
+
"@reventlessdev/rescript-pulumi-aws": "2.4.0-alpha.61",
|
|
19
19
|
"@reventlessdev/rescript-uuid": "1.1.0-alpha.17",
|
|
20
|
-
"@reventlessdev/reventless-
|
|
21
|
-
"@reventlessdev/reventless-
|
|
20
|
+
"@reventlessdev/reventless-core": "3.0.0-alpha.195",
|
|
21
|
+
"@reventlessdev/reventless-infra": "3.0.0-alpha.113",
|
|
22
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.88",
|
|
22
23
|
"@reventlessdev/reventless-interop": "3.0.0-alpha.29",
|
|
23
|
-
"@reventlessdev/reventless-
|
|
24
|
-
"@reventlessdev/reventless-spec": "3.0.0-alpha.87"
|
|
24
|
+
"@reventlessdev/reventless-postgres": "3.0.0-alpha.59"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"rescript": "12.3.0",
|
package/src/Platform.res
CHANGED
|
@@ -1773,7 +1773,10 @@ module MakeWithConfig = (
|
|
|
1773
1773
|
~pluginId="host-ui",
|
|
1774
1774
|
~bundleVersion=cfg.bundleVersion->Option.getOr(version),
|
|
1775
1775
|
~assetsDir=cfg.assetsDir->Option.getOr(
|
|
1776
|
-
Util_Bundle.resolvePackageRoot(
|
|
1776
|
+
Util_Bundle.resolvePackageRoot(
|
|
1777
|
+
~fromPulumiProject=true,
|
|
1778
|
+
"@reventlessdev/reventless-host-shell",
|
|
1779
|
+
) ++ "/dist",
|
|
1777
1780
|
),
|
|
1778
1781
|
~spaFallback=true,
|
|
1779
1782
|
~stableName=true,
|
package/src/Platform.res.mjs
CHANGED
|
@@ -1029,7 +1029,7 @@ function MakeWithConfig(Config) {
|
|
|
1029
1029
|
bucketRegionalDomainName: store.bucketRegionalDomainName
|
|
1030
1030
|
}] : []
|
|
1031
1031
|
).concat(declaredServedBuckets);
|
|
1032
|
-
let match$4 = Plugin_Stack$ReventlessAws.makeUiBundleDistribution("host-ui", Stdlib_Option.getOr(hostUiBundle.bundleVersion, version), Stdlib_Option.getOr(hostUiBundle.assetsDir, Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-host-shell") + "/dist"), true, undefined, true, [
|
|
1032
|
+
let match$4 = Plugin_Stack$ReventlessAws.makeUiBundleDistribution("host-ui", Stdlib_Option.getOr(hostUiBundle.bundleVersion, version), Stdlib_Option.getOr(hostUiBundle.assetsDir, Util_Bundle$ReventlessAws.resolvePackageRoot(true, "@reventlessdev/reventless-host-shell") + "/dist"), true, undefined, true, [
|
|
1033
1033
|
"config.json",
|
|
1034
1034
|
"ui-hints.json"
|
|
1035
1035
|
], customDomain, servedBuckets);
|
|
@@ -2184,7 +2184,7 @@ function Make($star) {
|
|
|
2184
2184
|
bucketRegionalDomainName: store.bucketRegionalDomainName
|
|
2185
2185
|
}] : []
|
|
2186
2186
|
).concat(declaredServedBuckets);
|
|
2187
|
-
let match$4 = Plugin_Stack$ReventlessAws.makeUiBundleDistribution("host-ui", Stdlib_Option.getOr(hostUiBundle.bundleVersion, version), Stdlib_Option.getOr(hostUiBundle.assetsDir, Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-host-shell") + "/dist"), true, undefined, true, [
|
|
2187
|
+
let match$4 = Plugin_Stack$ReventlessAws.makeUiBundleDistribution("host-ui", Stdlib_Option.getOr(hostUiBundle.bundleVersion, version), Stdlib_Option.getOr(hostUiBundle.assetsDir, Util_Bundle$ReventlessAws.resolvePackageRoot(true, "@reventlessdev/reventless-host-shell") + "/dist"), true, undefined, true, [
|
|
2188
2188
|
"config.json",
|
|
2189
2189
|
"ui-hints.json"
|
|
2190
2190
|
], customDomain, servedBuckets);
|
|
@@ -52,7 +52,7 @@ function make(api, pluginReadModelTableName, opts) {
|
|
|
52
52
|
let adminEntryJson = JSON.stringify(Platform_ComponentDefinitionsApi$ReventlessCore.encodePluginStructureEntry(Platform_Admin_Structure$ReventlessCore.pluginId, Platform_Admin_Structure$ReventlessCore.structure));
|
|
53
53
|
let packageDirs = Object.fromEntries([[
|
|
54
54
|
"@reventlessdev/reventless-aws",
|
|
55
|
-
Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws")
|
|
55
|
+
Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws")
|
|
56
56
|
]]);
|
|
57
57
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Api/Platform_ComponentDefinitions_Lambda_Ops.res.mjs", packageDirs, undefined);
|
|
58
58
|
let layers = Stdlib_Option.getOr(Stdlib_Option.map(Lambda$PulumiAws.reventlessLayerArn, arn => [arn]), []);
|
|
@@ -49,7 +49,7 @@ function make(api, uiFragmentRegistryTableName, schemaReady, opts) {
|
|
|
49
49
|
});
|
|
50
50
|
let packageDirs = Object.fromEntries([[
|
|
51
51
|
"@reventlessdev/reventless-aws",
|
|
52
|
-
Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws")
|
|
52
|
+
Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws")
|
|
53
53
|
]]);
|
|
54
54
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Api/Platform_UIFragments_Lambda_Ops.res.mjs", packageDirs, undefined);
|
|
55
55
|
let layers = Stdlib_Option.getOr(Stdlib_Option.map(Lambda$PulumiAws.reventlessLayerArn, arn => [arn]), []);
|
|
@@ -32,8 +32,8 @@ function make(name, referencesName, referencesDb, countsName, countsDb, param, s
|
|
|
32
32
|
let packageDirs = {};
|
|
33
33
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(specModulePath);
|
|
34
34
|
let mappingsPkg = Util_Bundle$ReventlessAws.extractPackageName(mappingsModulePath);
|
|
35
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
36
|
-
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(mappingsPkg);
|
|
35
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
36
|
+
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, mappingsPkg);
|
|
37
37
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/CounterEntryPoint.mjs", packageDirs, undefined);
|
|
38
38
|
let componentOpts_parent = opts.parent;
|
|
39
39
|
let componentOpts = {
|
|
@@ -87,7 +87,7 @@ function make(name, topicName, eventTopicOutputs, eventsApi, opts) {
|
|
|
87
87
|
let channelName = channelNameOf(topicName);
|
|
88
88
|
let packageDirs = Object.fromEntries([[
|
|
89
89
|
"@reventlessdev/reventless-aws",
|
|
90
|
-
Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws")
|
|
90
|
+
Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws")
|
|
91
91
|
]]);
|
|
92
92
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/EventLogSubscription/EventLogSubscription_AppSync_Ops.res.mjs", packageDirs, undefined);
|
|
93
93
|
let layers = Stdlib_Option.getOr(Stdlib_Option.map(Lambda$PulumiAws.reventlessLayerArn, arn => [arn]), []);
|
|
@@ -43,7 +43,7 @@ function make(placeIndexName, corsOriginsOpt, opts) {
|
|
|
43
43
|
});
|
|
44
44
|
let packageDirs = Object.fromEntries([[
|
|
45
45
|
"@reventlessdev/reventless-aws",
|
|
46
|
-
Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws")
|
|
46
|
+
Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws")
|
|
47
47
|
]]);
|
|
48
48
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Geocoder/Geocoder_AwsLocation_Ops.res.mjs", packageDirs, undefined);
|
|
49
49
|
let layers = Stdlib_Option.getOr(Stdlib_Option.map(Lambda$PulumiAws.reventlessLayerArn, arn => [arn]), []);
|
|
@@ -70,7 +70,7 @@ function provision(api, selection, opts) {
|
|
|
70
70
|
let packageDirs = {};
|
|
71
71
|
handlers.forEach(param => {
|
|
72
72
|
let pkg = Util_Bundle$ReventlessAws.extractPackageName(param[1]);
|
|
73
|
-
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(pkg);
|
|
73
|
+
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkg);
|
|
74
74
|
});
|
|
75
75
|
let handlerJsons = handlers.toSorted((param, param$1) => Primitive_string.compare(param[0].readModelName, param$1[0].readModelName)).map(param => {
|
|
76
76
|
let entry = param[0];
|
|
@@ -161,8 +161,8 @@ function finish() {
|
|
|
161
161
|
let packageDirs = {};
|
|
162
162
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
163
163
|
let behaviorPkg = Util_Bundle$ReventlessAws.extractPackageName(info.behaviorModulePath);
|
|
164
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
165
|
-
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(behaviorPkg);
|
|
164
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
165
|
+
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, behaviorPkg);
|
|
166
166
|
let specModule = Stdlib_Option.getOr(JSON.stringify(info.specModulePath), `""`);
|
|
167
167
|
let behaviorModule = Stdlib_Option.getOr(JSON.stringify(info.behaviorModulePath), `""`);
|
|
168
168
|
let pluginFragment = Util_LogAttribution$ReventlessAws.pluginFragment(`AggregateRuntime(` + spec.aggregateName + `)`);
|
|
@@ -207,8 +207,8 @@ function finish() {
|
|
|
207
207
|
let evtMapperPackageDirs = {};
|
|
208
208
|
let specPkg$1 = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
209
209
|
let mappingsPkg = Util_Bundle$ReventlessAws.extractPackageName(match$3);
|
|
210
|
-
evtMapperPackageDirs[specPkg$1] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg$1);
|
|
211
|
-
evtMapperPackageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(mappingsPkg);
|
|
210
|
+
evtMapperPackageDirs[specPkg$1] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg$1);
|
|
211
|
+
evtMapperPackageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, mappingsPkg);
|
|
212
212
|
let match$4 = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/EventMapperEntryPoint.mjs", evtMapperPackageDirs, undefined);
|
|
213
213
|
let evtMapperName = baseName + "EventMapper";
|
|
214
214
|
let evtMapperRuntime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(evtMapperName, "CommandHandler", "Aggregate", match$4.code, match$4.sourceCodeHash, evtMapperEnvVars, Math.max(spec.eventCollectorMemorySize, 2048), Math.max(spec.eventCollectorTimeout, 180), undefined, undefined, undefined, undefined, undefined, aggregateOpts);
|
|
@@ -161,8 +161,8 @@ function finish() {
|
|
|
161
161
|
let packageDirs = {};
|
|
162
162
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
163
163
|
let behaviorPkg = Util_Bundle$ReventlessAws.extractPackageName(info.behaviorModulePath);
|
|
164
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
165
|
-
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(behaviorPkg);
|
|
164
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
165
|
+
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, behaviorPkg);
|
|
166
166
|
let specModule = Stdlib_Option.getOr(JSON.stringify(info.specModulePath), `""`);
|
|
167
167
|
let behaviorModule = Stdlib_Option.getOr(JSON.stringify(info.behaviorModulePath), `""`);
|
|
168
168
|
let pluginFragment = Util_LogAttribution$ReventlessAws.pluginFragment(`AggregateRuntime(` + spec.aggregateName + `)`);
|
|
@@ -208,8 +208,8 @@ function finish() {
|
|
|
208
208
|
let evtMapperPackageDirs = {};
|
|
209
209
|
let specPkg$1 = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
210
210
|
let mappingsPkg = Util_Bundle$ReventlessAws.extractPackageName(match$3);
|
|
211
|
-
evtMapperPackageDirs[specPkg$1] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg$1);
|
|
212
|
-
evtMapperPackageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(mappingsPkg);
|
|
211
|
+
evtMapperPackageDirs[specPkg$1] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg$1);
|
|
212
|
+
evtMapperPackageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, mappingsPkg);
|
|
213
213
|
let match$4 = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/EventMapperEntryPoint.mjs", evtMapperPackageDirs, undefined);
|
|
214
214
|
let evtMapperName = baseName + "EventMapper";
|
|
215
215
|
let evtMapperRuntime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(evtMapperName, "CommandHandler", "Aggregate", match$4.code, match$4.sourceCodeHash, evtMapperEnvVars, Math.max(spec.eventCollectorMemorySize, 2048), Math.max(spec.eventCollectorTimeout, 180), undefined, undefined, undefined, undefined, undefined, aggregateOpts);
|
|
@@ -151,8 +151,8 @@ function finish() {
|
|
|
151
151
|
let packageDirs = {};
|
|
152
152
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
153
153
|
let behaviorPkg = Util_Bundle$ReventlessAws.extractPackageName(info.behaviorModulePath);
|
|
154
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
155
|
-
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(behaviorPkg);
|
|
154
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
155
|
+
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, behaviorPkg);
|
|
156
156
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/AggregateEntryPoint.mjs", packageDirs, undefined);
|
|
157
157
|
let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(lambdaName, "CommandHandler", "Aggregate", match.code, match.sourceCodeHash, envVars, spec.memorySize, spec.timeout, undefined, undefined, undefined, undefined, undefined, aggregateOpts);
|
|
158
158
|
spec.connects.forEach(connect => connect(runtime));
|
|
@@ -151,8 +151,8 @@ function finish() {
|
|
|
151
151
|
let packageDirs = {};
|
|
152
152
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
153
153
|
let behaviorPkg = Util_Bundle$ReventlessAws.extractPackageName(info.behaviorModulePath);
|
|
154
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
155
|
-
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(behaviorPkg);
|
|
154
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
155
|
+
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, behaviorPkg);
|
|
156
156
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/AggregateEntryPoint.mjs", packageDirs, undefined);
|
|
157
157
|
let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(name, "CommandHandler", "Aggregate", match.code, match.sourceCodeHash, envVars, spec.memorySize, spec.timeout, undefined, undefined, undefined, undefined, undefined, aggregateOpts);
|
|
158
158
|
spec.connects.forEach(connect => connect(runtime));
|
|
@@ -171,8 +171,8 @@ function finish() {
|
|
|
171
171
|
}
|
|
172
172
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
173
173
|
let behaviorPkg = Util_Bundle$ReventlessAws.extractPackageName(info.behaviorModulePath);
|
|
174
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
175
|
-
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(behaviorPkg);
|
|
174
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
175
|
+
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, behaviorPkg);
|
|
176
176
|
let specModule = Stdlib_Option.getOr(JSON.stringify(info.specModulePath), `""`);
|
|
177
177
|
let behaviorModule = Stdlib_Option.getOr(JSON.stringify(info.behaviorModulePath), `""`);
|
|
178
178
|
let pluginFragment = Util_LogAttribution$ReventlessAws.pluginFragment(`AggregateRuntime(` + spec.aggregateName + `)`);
|
|
@@ -163,8 +163,8 @@ function finish() {
|
|
|
163
163
|
}
|
|
164
164
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
165
165
|
let behaviorPkg = Util_Bundle$ReventlessAws.extractPackageName(info.behaviorModulePath);
|
|
166
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
167
|
-
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(behaviorPkg);
|
|
166
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
167
|
+
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, behaviorPkg);
|
|
168
168
|
let specModule = Stdlib_Option.getOr(JSON.stringify(info.specModulePath), `""`);
|
|
169
169
|
let behaviorModule = Stdlib_Option.getOr(JSON.stringify(info.behaviorModulePath), `""`);
|
|
170
170
|
let pluginFragment = Util_LogAttribution$ReventlessAws.pluginFragment(`AggregateRuntime(` + spec.aggregateName + `)`);
|
|
@@ -108,9 +108,9 @@ function finish() {
|
|
|
108
108
|
return log.warn("AutomationSliceRuntime_Builder_Single", undefined, `no bundled info registered for ` + spec.componentName);
|
|
109
109
|
}
|
|
110
110
|
let pkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
111
|
-
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(pkg);
|
|
111
|
+
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkg);
|
|
112
112
|
let bodyPkg = Util_Bundle$ReventlessAws.extractPackageName(info.bodyModulePath);
|
|
113
|
-
packageDirs[bodyPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(bodyPkg);
|
|
113
|
+
packageDirs[bodyPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, bodyPkg);
|
|
114
114
|
let specModule = Stdlib_Option.getOr(JSON.stringify(info.specModulePath), `""`);
|
|
115
115
|
let bodyModule = Stdlib_Option.getOr(JSON.stringify(info.bodyModulePath), `""`);
|
|
116
116
|
let callbackType = Stdlib_Option.getOr(JSON.stringify(info.callbackType), `""`);
|
|
@@ -170,9 +170,9 @@ function finishWithDcbEventLog(dcbEventLog) {
|
|
|
170
170
|
allQueryDbResources.push(r);
|
|
171
171
|
});
|
|
172
172
|
let pkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
173
|
-
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(pkg);
|
|
173
|
+
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkg);
|
|
174
174
|
let bodyPkg = Util_Bundle$ReventlessAws.extractPackageName(info.bodyModulePath);
|
|
175
|
-
packageDirs[bodyPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(bodyPkg);
|
|
175
|
+
packageDirs[bodyPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, bodyPkg);
|
|
176
176
|
let specModule = Stdlib_Option.getOr(JSON.stringify(info.specModulePath), `""`);
|
|
177
177
|
let bodyModule = Stdlib_Option.getOr(JSON.stringify(info.bodyModulePath), `""`);
|
|
178
178
|
let callbackType = Stdlib_Option.getOr(JSON.stringify(info.callbackType), `""`);
|
|
@@ -60,8 +60,8 @@ function forEventCollector(param, eventTopics, resources, memorySizeOpt, timeout
|
|
|
60
60
|
let packageDirs = {};
|
|
61
61
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
62
62
|
let mappingsPkg = Util_Bundle$ReventlessAws.extractPackageName(info.mappingsModulePath);
|
|
63
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
64
|
-
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(mappingsPkg);
|
|
63
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
64
|
+
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, mappingsPkg);
|
|
65
65
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/ReadModelEntryPoint.mjs", packageDirs, undefined);
|
|
66
66
|
let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(name, "EventCollector", "EventCollector", match.code, match.sourceCodeHash, envVars, memorySize, timeout, undefined, undefined, undefined, undefined, undefined, opts);
|
|
67
67
|
EventCollectorChannel_DynamoDbStream$ReventlessAws.connect(name, [{
|
|
@@ -118,8 +118,8 @@ function finish() {
|
|
|
118
118
|
}
|
|
119
119
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
120
120
|
let mappingsPkg = Util_Bundle$ReventlessAws.extractPackageName(info.mappingsModulePath);
|
|
121
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
122
|
-
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(mappingsPkg);
|
|
121
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
122
|
+
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, mappingsPkg);
|
|
123
123
|
let specModule = Stdlib_Option.getOr(JSON.stringify(info.specModulePath), `""`);
|
|
124
124
|
let mappingsModule = Stdlib_Option.getOr(JSON.stringify(info.mappingsModulePath), `""`);
|
|
125
125
|
let handlerPgFragment = info.pgBacked ? pgConnectionFragment : Pulumi.output("");
|
|
@@ -36,8 +36,8 @@ function forCommandTopic(param, connect, memorySizeOpt, timeoutOpt, specModuleUr
|
|
|
36
36
|
let packageDirs = {};
|
|
37
37
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(specModulePath);
|
|
38
38
|
let mappingsPkg = Util_Bundle$ReventlessAws.extractPackageName(mappingsModulePath);
|
|
39
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
40
|
-
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(mappingsPkg);
|
|
39
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
40
|
+
packageDirs[mappingsPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, mappingsPkg);
|
|
41
41
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/ExtensionPointEntryPoint.mjs", packageDirs, undefined);
|
|
42
42
|
return connect(RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(name, "CommandHandler", "ExtensionPoint", match.code, match.sourceCodeHash, envVars, memorySize, timeout, undefined, undefined, undefined, undefined, undefined, opts));
|
|
43
43
|
}
|
|
@@ -99,7 +99,7 @@ function finish() {
|
|
|
99
99
|
}
|
|
100
100
|
info.sideEffectModulePaths.forEach(modPath => {
|
|
101
101
|
let pkg = Util_Bundle$ReventlessAws.extractPackageName(modPath);
|
|
102
|
-
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(pkg);
|
|
102
|
+
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkg);
|
|
103
103
|
});
|
|
104
104
|
let modulesJson = info.sideEffectModulePaths.map(p => Stdlib_Option.getOr(JSON.stringify(p), `""`)).join(",");
|
|
105
105
|
let attribution = Util_LogAttribution$ReventlessAws.fragments(`SideEffectHandler(` + spec.componentName + `)`);
|
|
@@ -82,18 +82,18 @@ function forDcbCommandTopic(slicePaths, inboundSlicesOpt, dcbTableName, pluginNa
|
|
|
82
82
|
let packageDirs = {};
|
|
83
83
|
slicePaths.forEach(param => {
|
|
84
84
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(param[0]);
|
|
85
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
85
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
86
86
|
let behaviorPkg = Util_Bundle$ReventlessAws.extractPackageName(param[1]);
|
|
87
|
-
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(behaviorPkg);
|
|
87
|
+
packageDirs[behaviorPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, behaviorPkg);
|
|
88
88
|
});
|
|
89
89
|
inboundSlices.forEach(s => {
|
|
90
90
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(s.specPath);
|
|
91
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
91
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
92
92
|
let translationPkg = Util_Bundle$ReventlessAws.extractPackageName(s.translationPath);
|
|
93
|
-
packageDirs[translationPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(translationPkg);
|
|
93
|
+
packageDirs[translationPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, translationPkg);
|
|
94
94
|
});
|
|
95
|
-
packageDirs["@reventlessdev/reventless-aws"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws");
|
|
96
|
-
packageDirs["@reventlessdev/reventless-core"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-core");
|
|
95
|
+
packageDirs["@reventlessdev/reventless-aws"] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws");
|
|
96
|
+
packageDirs["@reventlessdev/reventless-core"] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-core");
|
|
97
97
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/DcbCommandTopicEntryPoint.mjs", packageDirs, undefined);
|
|
98
98
|
Stdlib_Option.forEach(cfg.sqsBatchSize, CommandTopicChannel_SQS$ReventlessAws.setBatchSize);
|
|
99
99
|
let vpcConfig = pgSelection !== undefined ? pgSelection.securityGroupId.apply(sgId => ({
|
|
@@ -151,8 +151,8 @@ function buildLambda(parent, handlerOutputs, packageDirs, channelSpecs, feedQueu
|
|
|
151
151
|
if (pgStreamConfig !== undefined) {
|
|
152
152
|
envVars["APPSYNC_ENDPOINT"] = pgStreamConfig.endpoint;
|
|
153
153
|
}
|
|
154
|
-
packageDirs["@reventlessdev/reventless-aws"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws");
|
|
155
|
-
packageDirs["@reventlessdev/reventless-core"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-core");
|
|
154
|
+
packageDirs["@reventlessdev/reventless-aws"] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws");
|
|
155
|
+
packageDirs["@reventlessdev/reventless-core"] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-core");
|
|
156
156
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/StateViewSliceEntryPoint.mjs", packageDirs, undefined);
|
|
157
157
|
let vpcConfig = qdbSelection !== undefined ? qdbSelection.securityGroupId.apply(sgId => ({
|
|
158
158
|
subnetIds: qdbSelection.subnetIds,
|
|
@@ -216,9 +216,9 @@ function finishWithDcbEventLog(dcbEventLog) {
|
|
|
216
216
|
allQueryDbResources.push(r);
|
|
217
217
|
});
|
|
218
218
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
219
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
219
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
220
220
|
let projectionPkg = Util_Bundle$ReventlessAws.extractPackageName(info.projectionModulePath);
|
|
221
|
-
packageDirs[projectionPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(projectionPkg);
|
|
221
|
+
packageDirs[projectionPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, projectionPkg);
|
|
222
222
|
let etResources = dcbOutputs.eventTopic.resources;
|
|
223
223
|
let resource = etResources[0];
|
|
224
224
|
let sourceUrn = resource !== undefined ? resource.urn : feedArnOutput;
|
|
@@ -274,9 +274,9 @@ function finish() {
|
|
|
274
274
|
return log.warn("StateViewSliceRuntime_Builder_Single", undefined, `no handler registered for ` + spec.componentName);
|
|
275
275
|
}
|
|
276
276
|
let specPkg = Util_Bundle$ReventlessAws.extractPackageName(info.specModulePath);
|
|
277
|
-
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(specPkg);
|
|
277
|
+
packageDirs[specPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, specPkg);
|
|
278
278
|
let projectionPkg = Util_Bundle$ReventlessAws.extractPackageName(info.projectionModulePath);
|
|
279
|
-
packageDirs[projectionPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(projectionPkg);
|
|
279
|
+
packageDirs[projectionPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, projectionPkg);
|
|
280
280
|
let handlerJson = Pulumi.all([
|
|
281
281
|
info.queryDbTableName,
|
|
282
282
|
spec.sourceUrns,
|
|
@@ -27,7 +27,7 @@ function forBucketCallback(param, connect, memorySizeOpt, timeoutOpt, name, call
|
|
|
27
27
|
envVars["HANDLER_CONFIG"] = handlerConfigJson;
|
|
28
28
|
let packageDirs = {};
|
|
29
29
|
let pkg = Util_Bundle$ReventlessAws.extractPackageName(callbackModulePath);
|
|
30
|
-
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(pkg);
|
|
30
|
+
packageDirs[pkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkg);
|
|
31
31
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/TaskBucketEntryPoint.mjs", packageDirs, undefined);
|
|
32
32
|
let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset(fullName, "Task", "Task", match.code, match.sourceCodeHash, envVars, memorySize, timeout, undefined, undefined, undefined, undefined, undefined, {
|
|
33
33
|
parent: resource
|
|
@@ -84,7 +84,7 @@ function finish(eventsApi, opts) {
|
|
|
84
84
|
});
|
|
85
85
|
let packageDirs = Object.fromEntries([[
|
|
86
86
|
"@reventlessdev/reventless-aws",
|
|
87
|
-
Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws")
|
|
87
|
+
Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws")
|
|
88
88
|
]]);
|
|
89
89
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/StateTopic/StateTopic_AppSync_Ops.res.mjs", packageDirs, undefined);
|
|
90
90
|
let layers = Stdlib_Option.getOr(Stdlib_Option.map(Lambda$PulumiAws.reventlessLayerArn, arn => [arn]), []);
|
|
@@ -171,7 +171,15 @@ let make = (
|
|
|
171
171
|
{
|
|
172
172
|
allowMethods: ["POST"]->Array.map(Pulumi.Input.make)->Pulumi.Input.make,
|
|
173
173
|
allowOrigins: corsOrigins->Array.map(Pulumi.Input.make)->Pulumi.Input.make,
|
|
174
|
-
|
|
174
|
+
// `content-type` and `authorization` named explicitly rather than `*`:
|
|
175
|
+
// `Access-Control-Allow-Headers: *` is a wildcard that, per the Fetch
|
|
176
|
+
// spec, does NOT cover `Authorization`. The presign POST carries a
|
|
177
|
+
// bearer token, so a wildcard fails its preflight and the browser
|
|
178
|
+
// rejects the request before it is sent — a silent break for every
|
|
179
|
+
// authenticated upload.
|
|
180
|
+
allowHeaders: ["content-type", "authorization"]
|
|
181
|
+
->Array.map(Pulumi.Input.make)
|
|
182
|
+
->Pulumi.Input.make,
|
|
175
183
|
}: FunctionUrl.cors
|
|
176
184
|
)->Pulumi.Input.make,
|
|
177
185
|
},
|
|
@@ -46,7 +46,7 @@ function make(bucketName, corsOriginsOpt, servedPrefixOpt, nameOpt, opts) {
|
|
|
46
46
|
});
|
|
47
47
|
let packageDirs = Object.fromEntries([[
|
|
48
48
|
"@reventlessdev/reventless-aws",
|
|
49
|
-
Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws")
|
|
49
|
+
Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws")
|
|
50
50
|
]]);
|
|
51
51
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Upload/Upload_Presign_S3_Ops.res.mjs", packageDirs, undefined);
|
|
52
52
|
let layers = Stdlib_Option.getOr(Stdlib_Option.map(Lambda$PulumiAws.reventlessLayerArn, arn => [arn]), []);
|
|
@@ -89,7 +89,10 @@ function make(bucketName, corsOriginsOpt, servedPrefixOpt, nameOpt, opts) {
|
|
|
89
89
|
authorizationType: "NONE",
|
|
90
90
|
functionName: lambda.name,
|
|
91
91
|
cors: {
|
|
92
|
-
allowHeaders: [
|
|
92
|
+
allowHeaders: [
|
|
93
|
+
"content-type",
|
|
94
|
+
"authorization"
|
|
95
|
+
].map(prim => prim),
|
|
93
96
|
allowMethods: ["POST"].map(prim => prim),
|
|
94
97
|
allowOrigins: corsOrigins.map(prim => prim)
|
|
95
98
|
}
|
|
@@ -309,7 +309,7 @@ function Make(EventCollectorChannel) {
|
|
|
309
309
|
let packageDirs = {};
|
|
310
310
|
let addPackageFor = spec => {
|
|
311
311
|
let pkgName = Util_Bundle$ReventlessAws.extractPackageName(spec);
|
|
312
|
-
packageDirs[pkgName] = Util_Bundle$ReventlessAws.resolvePackageRoot(pkgName);
|
|
312
|
+
packageDirs[pkgName] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkgName);
|
|
313
313
|
};
|
|
314
314
|
context.extensions.forEach(ext => {
|
|
315
315
|
[
|
|
@@ -331,8 +331,8 @@ function Make(EventCollectorChannel) {
|
|
|
331
331
|
ce.mappingsModule
|
|
332
332
|
].forEach(addPackageFor);
|
|
333
333
|
}
|
|
334
|
-
packageDirs["@reventlessdev/reventless-aws"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws");
|
|
335
|
-
packageDirs["@reventlessdev/reventless-core"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-core");
|
|
334
|
+
packageDirs["@reventlessdev/reventless-aws"] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-aws");
|
|
335
|
+
packageDirs["@reventlessdev/reventless-core"] = Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, "@reventlessdev/reventless-core");
|
|
336
336
|
let bundleOutput = Pulumi.all([
|
|
337
337
|
context.pluginDefinitionJson,
|
|
338
338
|
context.uiFragmentsJson
|
package/src/util/Util_Bundle.res
CHANGED
|
@@ -89,20 +89,43 @@ let extractPackageName = (specifier: string): string => {
|
|
|
89
89
|
/**
|
|
90
90
|
* Resolve the root directory of an npm package.
|
|
91
91
|
* Fast path: populated by getModuleSpecifier when it walks the package tree.
|
|
92
|
+
*
|
|
93
|
+
* Two rootings, because two different questions are being asked.
|
|
94
|
+
*
|
|
95
|
+
* The default resolves from this framework module. That is right for anything
|
|
96
|
+
* the framework itself depends on and then packages — a Lambda's runtime deps
|
|
97
|
+
* are reventless-aws's own, and the version reventless-aws was built against is
|
|
98
|
+
* the version that must ship.
|
|
99
|
+
*
|
|
100
|
+
* `~fromPulumiProject=true` resolves from the Pulumi project's directory
|
|
101
|
+
* instead (`pulumi up --cwd <project>` runs the program there), which is what a
|
|
102
|
+
* *deploy input* needs: an asset the project names in its own package.json and
|
|
103
|
+
* the framework merely uploads. The framework has no dependency on it, so a
|
|
104
|
+
* framework-rooted lookup skips the project's pin entirely and walks up to
|
|
105
|
+
* whatever the workspace hoisted — which is how a platform pinning
|
|
106
|
+
* host-shell 3.0.0-alpha.49 deployed 3.0.0-alpha.48 while four sibling examples
|
|
107
|
+
* pinned the older one. Node still walks up from the project, so a project that
|
|
108
|
+
* declares nothing keeps resolving exactly as before.
|
|
109
|
+
*
|
|
110
|
+
* The two are cached under separate keys: they are allowed to disagree, and
|
|
111
|
+
* that disagreement is the whole point.
|
|
92
112
|
*/
|
|
93
|
-
let resolvePackageRoot = (packageName: string): string => {
|
|
94
|
-
|
|
113
|
+
let resolvePackageRoot = (~fromPulumiProject: bool=false, packageName: string): string => {
|
|
114
|
+
let cacheKey = fromPulumiProject ? "pulumi-project:" ++ packageName : packageName
|
|
115
|
+
switch packageRootCache->Dict.get(cacheKey) {
|
|
95
116
|
| Some(cachedRoot) => cachedRoot
|
|
96
117
|
| None =>
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
118
|
+
let request = packageName ++ "/package.json"
|
|
119
|
+
let viaFramework = () => dirname(localRequire->requireResolve(request))
|
|
120
|
+
let viaPulumiProject = () => dirname(createRequire(cwd() ++ "/index.js")->requireResolve(request))
|
|
121
|
+
let (preferred, fallback) = fromPulumiProject
|
|
122
|
+
? (viaPulumiProject, viaFramework)
|
|
123
|
+
: (viaFramework, viaPulumiProject)
|
|
124
|
+
let root = try preferred() catch {
|
|
125
|
+
| _ => fallback()
|
|
105
126
|
}
|
|
127
|
+
packageRootCache->Dict.set(cacheKey, root)
|
|
128
|
+
root
|
|
106
129
|
}
|
|
107
130
|
}
|
|
108
131
|
|
|
@@ -61,17 +61,31 @@ function extractPackageName(specifier) {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
function resolvePackageRoot(packageName) {
|
|
65
|
-
let
|
|
64
|
+
function resolvePackageRoot(fromPulumiProjectOpt, packageName) {
|
|
65
|
+
let fromPulumiProject = fromPulumiProjectOpt !== undefined ? fromPulumiProjectOpt : false;
|
|
66
|
+
let cacheKey = fromPulumiProject ? "pulumi-project:" + packageName : packageName;
|
|
67
|
+
let cachedRoot = packageRootCache[cacheKey];
|
|
66
68
|
if (cachedRoot !== undefined) {
|
|
67
69
|
return cachedRoot;
|
|
68
70
|
}
|
|
71
|
+
let request = packageName + "/package.json";
|
|
72
|
+
let viaFramework = () => Path.dirname(localRequire.resolve(request));
|
|
73
|
+
let viaPulumiProject = () => Path.dirname(Module.createRequire(process.cwd() + "/index.js").resolve(request));
|
|
74
|
+
let match = fromPulumiProject ? [
|
|
75
|
+
viaPulumiProject,
|
|
76
|
+
viaFramework
|
|
77
|
+
] : [
|
|
78
|
+
viaFramework,
|
|
79
|
+
viaPulumiProject
|
|
80
|
+
];
|
|
81
|
+
let root;
|
|
69
82
|
try {
|
|
70
|
-
|
|
83
|
+
root = match[0]();
|
|
71
84
|
} catch (exn) {
|
|
72
|
-
|
|
73
|
-
return Path.dirname(cwdRequire.resolve(packageName + "/package.json"));
|
|
85
|
+
root = match[1]();
|
|
74
86
|
}
|
|
87
|
+
packageRootCache[cacheKey] = root;
|
|
88
|
+
return root;
|
|
75
89
|
}
|
|
76
90
|
|
|
77
91
|
function hashString(str) {
|
|
@@ -174,7 +188,7 @@ function buildCodeArchive(entryPointModule, packageDirs, extraStringAssetsOpt) {
|
|
|
174
188
|
let allPackageDirs;
|
|
175
189
|
if ("@reventlessdev/reventless-aws" in packageDirs && !("effect" in packageDirs)) {
|
|
176
190
|
let dirs = Object.assign({}, packageDirs);
|
|
177
|
-
dirs["effect"] = resolvePackageRoot("effect");
|
|
191
|
+
dirs["effect"] = resolvePackageRoot(undefined, "effect");
|
|
178
192
|
allPackageDirs = dirs;
|
|
179
193
|
} else {
|
|
180
194
|
allPackageDirs = packageDirs;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
open JestGlobals
|
|
2
|
+
|
|
3
|
+
@module("fs") external mkdtempSync: string => string = "mkdtempSync"
|
|
4
|
+
@module("fs") external mkdirSync: (string, {"recursive": bool}) => unit = "mkdirSync"
|
|
5
|
+
@module("fs") external writeFileSync: (string, string) => unit = "writeFileSync"
|
|
6
|
+
@module("fs") external rmSync: (string, {"recursive": bool, "force": bool}) => unit = "rmSync"
|
|
7
|
+
@module("fs") external realpathSync: string => string = "realpathSync"
|
|
8
|
+
@module("path") external join2: (string, string) => string = "join"
|
|
9
|
+
@module("os") external tmpdir: unit => string = "tmpdir"
|
|
10
|
+
@val @scope("process") external chdir: string => unit = "chdir"
|
|
11
|
+
@val @scope("process") external cwd: unit => string = "cwd"
|
|
12
|
+
|
|
13
|
+
// A Pulumi project that pins a package the framework does not depend on: the
|
|
14
|
+
// shape of a host-shell bundle, which is the platform's deploy input rather
|
|
15
|
+
// than one of reventless-aws's own dependencies. realpath because macOS hands
|
|
16
|
+
// out /var/... symlinks for tmpdir while require.resolve reports /private/var.
|
|
17
|
+
let makeProject = (pkgName: string): (string, string) => {
|
|
18
|
+
let project = realpathSync(mkdtempSync(join2(tmpdir(), "pulumi-project-")))
|
|
19
|
+
let pkgDir = join2(join2(project, "node_modules"), pkgName)
|
|
20
|
+
mkdirSync(pkgDir, {"recursive": true})
|
|
21
|
+
writeFileSync(join2(pkgDir, "package.json"), `{"name":"${pkgName}","version":"9.9.9"}`)
|
|
22
|
+
(project, pkgDir)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
describe("Util_Bundle.resolvePackageRoot", () => {
|
|
26
|
+
let pkgName = "pinned-by-the-project"
|
|
27
|
+
let (project, pkgDir) = makeProject(pkgName)
|
|
28
|
+
let originalCwd = cwd()
|
|
29
|
+
// The framework fast path: what getModuleSpecifier would have cached from
|
|
30
|
+
// walking reventless-aws's own tree.
|
|
31
|
+
let frameworkRoot = "/resolved/from/the/framework"
|
|
32
|
+
|
|
33
|
+
beforeAll(() => {
|
|
34
|
+
chdir(project)
|
|
35
|
+
Util_Bundle.packageRootCache->Dict.set(pkgName, frameworkRoot)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
afterAll(() => {
|
|
39
|
+
chdir(originalCwd)
|
|
40
|
+
rmSync(project, {"recursive": true, "force": true})
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
testSync("framework-rooted by default", () =>
|
|
44
|
+
expect(Util_Bundle.resolvePackageRoot(pkgName))->toBe(frameworkRoot)
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
// The regression: one cache key meant the framework's answer was handed back
|
|
48
|
+
// for both questions, so a platform pinning a newer host-shell deployed
|
|
49
|
+
// whatever the workspace had hoisted instead.
|
|
50
|
+
testSync("~fromPulumiProject reads the project's own node_modules", () =>
|
|
51
|
+
expect(Util_Bundle.resolvePackageRoot(~fromPulumiProject=true, pkgName))->toBe(pkgDir)
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
testSync("the two answers are cached apart, not overwritten", () => {
|
|
55
|
+
let _ = Util_Bundle.resolvePackageRoot(~fromPulumiProject=true, pkgName)
|
|
56
|
+
expect(Util_Bundle.resolvePackageRoot(pkgName))->toBe(frameworkRoot)
|
|
57
|
+
})
|
|
58
|
+
})
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
|
|
3
|
+
import * as Fs from "fs";
|
|
4
|
+
import * as Os from "os";
|
|
5
|
+
import * as Path from "path";
|
|
6
|
+
import * as Util_Bundle$ReventlessAws from "../src/util/Util_Bundle.res.mjs";
|
|
7
|
+
|
|
8
|
+
function makeProject(pkgName) {
|
|
9
|
+
let project = Fs.realpathSync(Fs.mkdtempSync(Path.join(Os.tmpdir(), "pulumi-project-")));
|
|
10
|
+
let pkgDir = Path.join(Path.join(project, "node_modules"), pkgName);
|
|
11
|
+
Fs.mkdirSync(pkgDir, {
|
|
12
|
+
recursive: true
|
|
13
|
+
});
|
|
14
|
+
Fs.writeFileSync(Path.join(pkgDir, "package.json"), `{"name":"` + pkgName + `","version":"9.9.9"}`);
|
|
15
|
+
return [
|
|
16
|
+
project,
|
|
17
|
+
pkgDir
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
globalThis.describe("Util_Bundle.resolvePackageRoot", () => {
|
|
22
|
+
let pkgName = "pinned-by-the-project";
|
|
23
|
+
let match = makeProject(pkgName);
|
|
24
|
+
let pkgDir = match[1];
|
|
25
|
+
let project = match[0];
|
|
26
|
+
let originalCwd = process.cwd();
|
|
27
|
+
let frameworkRoot = "/resolved/from/the/framework";
|
|
28
|
+
globalThis.beforeAll(() => {
|
|
29
|
+
process.chdir(project);
|
|
30
|
+
Util_Bundle$ReventlessAws.packageRootCache[pkgName] = frameworkRoot;
|
|
31
|
+
});
|
|
32
|
+
globalThis.afterAll(() => {
|
|
33
|
+
process.chdir(originalCwd);
|
|
34
|
+
Fs.rmSync(project, {
|
|
35
|
+
recursive: true,
|
|
36
|
+
force: true
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
globalThis.test("framework-rooted by default", () => {
|
|
40
|
+
globalThis.expect(Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkgName)).toBe(frameworkRoot);
|
|
41
|
+
});
|
|
42
|
+
globalThis.test("~fromPulumiProject reads the project's own node_modules", () => {
|
|
43
|
+
globalThis.expect(Util_Bundle$ReventlessAws.resolvePackageRoot(true, pkgName)).toBe(pkgDir);
|
|
44
|
+
});
|
|
45
|
+
globalThis.test("the two answers are cached apart, not overwritten", () => {
|
|
46
|
+
Util_Bundle$ReventlessAws.resolvePackageRoot(true, pkgName);
|
|
47
|
+
globalThis.expect(Util_Bundle$ReventlessAws.resolvePackageRoot(undefined, pkgName)).toBe(frameworkRoot);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
export {
|
|
52
|
+
makeProject,
|
|
53
|
+
}
|
|
54
|
+
/* Not a pure module */
|