@ruvyxa/adapter-aws 1.1.0 → 1.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA+B,MAAM,cAAc,CAAA;AAWxE,KAAK,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAA;AAEhE,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,4EAA4E;AAC5E,wBAAgB,GAAG,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAoH5D;eAec,GAAG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAA+B,MAAM,cAAc,CAAA;AAaxE,KAAK,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAA;AAEhE,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,4EAA4E;AAC5E,wBAAgB,GAAG,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAoJ5D;eAec,GAAG"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { readFileSync } from 'node:fs';
2
- import { CLIENT_BUNDLE_PREFIX, clientBuildOutput, IMMUTABLE_CACHE_CONTROL, PUBLIC_ASSET_CACHE_CONTROL, runtimeBuildPolicy, standaloneServerSource, validateBuildContext, } from '@ruvyxa/core';
2
+ import { CLIENT_BUNDLE_PREFIX, clientBuildOutput, DEFAULT_SECURITY_HEADERS, IMMUTABLE_CACHE_CONTROL, nonPublishableStrategies, PUBLIC_ASSET_CACHE_CONTROL, runtimeBuildPolicy, standaloneServerSource, validateBuildContext, } from '@ruvyxa/core';
3
3
  /** Create an AWS Amplify Hosting static-plus-compute adapter for Ruvyxa. */
4
4
  export function aws(options = {}) {
5
5
  const runtime = options.runtime ?? 'nodejs24.x';
@@ -30,6 +30,21 @@ export function aws(options = {}) {
30
30
  computeResources: [{ name: 'default', runtime, entrypoint: 'server.js' }],
31
31
  framework: { name: 'ruvyxa', version: frameworkVersion },
32
32
  }, null, 2);
33
+ // Amplify Hosting's custom-header file.
34
+ //
35
+ // The deploy manifest's route targets carry `cacheControl` and nothing
36
+ // else, so it has no place to put the security defaults — and a `Static`
37
+ // target is answered by the CDN, which never invokes the compute
38
+ // resource where the standalone server sets them. That left a deployed
39
+ // pre-rendered page without a single one of them while the identical page
40
+ // from `ruvyxa start` carried all seven. `customHttp.yml` is the
41
+ // mechanism Amplify documents for this, read from the app root.
42
+ const customHttp = 'customHeaders:\n' +
43
+ ` - pattern: '**'\n` +
44
+ ' headers:\n' +
45
+ Object.entries(DEFAULT_SECURITY_HEADERS)
46
+ .map(([key, value]) => ` - key: '${key}'\n value: '${value}'\n`)
47
+ .join('');
33
48
  const serverSource = standaloneServerSource({
34
49
  isrCache: 'tmp',
35
50
  runtimePolicy: runtimeBuildPolicy(ctx),
@@ -43,7 +58,7 @@ export function aws(options = {}) {
43
58
  path: '.amplify-hosting/static',
44
59
  scope: 'project',
45
60
  optional: true,
46
- excludeStrategies: ['isr', 'ppr'],
61
+ excludeStrategies: nonPublishableStrategies(),
47
62
  },
48
63
  {
49
64
  kind: 'function',
@@ -63,6 +78,16 @@ export function aws(options = {}) {
63
78
  scope: 'project',
64
79
  contents: manifest + '\n',
65
80
  },
81
+ {
82
+ kind: 'file',
83
+ path: 'customHttp.yml',
84
+ scope: 'project',
85
+ // Amplify reads one `customHttp.yml` per app and a project may
86
+ // already have written its own rules into it. Overwriting that
87
+ // every build would trade one silent header loss for another.
88
+ skipIfExists: true,
89
+ contents: customHttp,
90
+ },
66
91
  ];
67
92
  return {
68
93
  name: 'aws',
@@ -78,7 +103,7 @@ export function aws(options = {}) {
78
103
  kind: 'static-site',
79
104
  path: `${deployRoot}/static`,
80
105
  optional: true,
81
- excludeStrategies: ['isr', 'ppr'],
106
+ excludeStrategies: nonPublishableStrategies(),
82
107
  },
83
108
  {
84
109
  kind: 'function',
@@ -95,6 +120,11 @@ export function aws(options = {}) {
95
120
  path: `${deployRoot}/deploy-manifest.json`,
96
121
  contents: manifest + '\n',
97
122
  },
123
+ {
124
+ kind: 'file',
125
+ path: 'deploy/aws/customHttp.yml',
126
+ contents: customHttp,
127
+ },
98
128
  {
99
129
  kind: 'file',
100
130
  path: 'deploy/aws/README.md',
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ruvyxa/adapter-aws",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Deploy full-stack Ruvyxa applications to AWS Amplify Hosting with native static and Node compute deployment output.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -59,7 +59,7 @@
59
59
  }
60
60
  },
61
61
  "dependencies": {
62
- "@ruvyxa/core": "^1.1.0"
62
+ "@ruvyxa/core": "^1.1.2"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@types/node": "24.13.3"
package/src/index.ts CHANGED
@@ -4,7 +4,9 @@ import type { Adapter, AdapterOutput, BuildContext } from '@ruvyxa/core'
4
4
  import {
5
5
  CLIENT_BUNDLE_PREFIX,
6
6
  clientBuildOutput,
7
+ DEFAULT_SECURITY_HEADERS,
7
8
  IMMUTABLE_CACHE_CONTROL,
9
+ nonPublishableStrategies,
8
10
  PUBLIC_ASSET_CACHE_CONTROL,
9
11
  runtimeBuildPolicy,
10
12
  standaloneServerSource,
@@ -60,6 +62,23 @@ export function aws(options: AwsAdapterOptions = {}): Adapter {
60
62
  null,
61
63
  2,
62
64
  )
65
+ // Amplify Hosting's custom-header file.
66
+ //
67
+ // The deploy manifest's route targets carry `cacheControl` and nothing
68
+ // else, so it has no place to put the security defaults — and a `Static`
69
+ // target is answered by the CDN, which never invokes the compute
70
+ // resource where the standalone server sets them. That left a deployed
71
+ // pre-rendered page without a single one of them while the identical page
72
+ // from `ruvyxa start` carried all seven. `customHttp.yml` is the
73
+ // mechanism Amplify documents for this, read from the app root.
74
+ const customHttp =
75
+ 'customHeaders:\n' +
76
+ ` - pattern: '**'\n` +
77
+ ' headers:\n' +
78
+ Object.entries(DEFAULT_SECURITY_HEADERS)
79
+ .map(([key, value]) => ` - key: '${key}'\n value: '${value}'\n`)
80
+ .join('')
81
+
63
82
  const serverSource = standaloneServerSource({
64
83
  isrCache: 'tmp',
65
84
  runtimePolicy: runtimeBuildPolicy(ctx),
@@ -75,7 +94,7 @@ export function aws(options: AwsAdapterOptions = {}): Adapter {
75
94
  path: '.amplify-hosting/static',
76
95
  scope: 'project',
77
96
  optional: true,
78
- excludeStrategies: ['isr', 'ppr'],
97
+ excludeStrategies: nonPublishableStrategies(),
79
98
  },
80
99
  {
81
100
  kind: 'function',
@@ -95,6 +114,16 @@ export function aws(options: AwsAdapterOptions = {}): Adapter {
95
114
  scope: 'project',
96
115
  contents: manifest + '\n',
97
116
  },
117
+ {
118
+ kind: 'file',
119
+ path: 'customHttp.yml',
120
+ scope: 'project',
121
+ // Amplify reads one `customHttp.yml` per app and a project may
122
+ // already have written its own rules into it. Overwriting that
123
+ // every build would trade one silent header loss for another.
124
+ skipIfExists: true,
125
+ contents: customHttp,
126
+ },
98
127
  ]
99
128
 
100
129
  return {
@@ -111,7 +140,7 @@ export function aws(options: AwsAdapterOptions = {}): Adapter {
111
140
  kind: 'static-site',
112
141
  path: `${deployRoot}/static`,
113
142
  optional: true,
114
- excludeStrategies: ['isr', 'ppr'],
143
+ excludeStrategies: nonPublishableStrategies(),
115
144
  },
116
145
  {
117
146
  kind: 'function',
@@ -128,6 +157,11 @@ export function aws(options: AwsAdapterOptions = {}): Adapter {
128
157
  path: `${deployRoot}/deploy-manifest.json`,
129
158
  contents: manifest + '\n',
130
159
  },
160
+ {
161
+ kind: 'file',
162
+ path: 'deploy/aws/customHttp.yml',
163
+ contents: customHttp,
164
+ },
131
165
  {
132
166
  kind: 'file',
133
167
  path: 'deploy/aws/README.md',