Skip to content

Commit

Permalink
cf functions: make handler async
Browse files Browse the repository at this point in the history
  • Loading branch information
fwang committed Sep 20, 2024
1 parent 9b44be0 commit 2703951
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 48 deletions.
82 changes: 42 additions & 40 deletions platform/src/components/aws/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ interface BaseRouteArgs {
* header. The given code will be injected at the end of this function.
*
* ```js
* function handler(event) {
* async function handler(event) {
* // Default behavior code
*
* // User injected code
Expand Down Expand Up @@ -244,7 +244,7 @@ interface BaseRouteArgs {
* the provided code.
*
* ```js
* function handler(event) {
* async function handler(event) {
* // User injected code
*
* return event.response;
Expand Down Expand Up @@ -611,7 +611,7 @@ export class Router extends Component implements Link.Linkable {
{
runtime: "cloudfront-js-2.0",
code: [
`function handler(event) {`,
`async function handler(event) {`,
` event.request.headers["x-forwarded-host"] = event.request.headers.host;`,
` return event.request;`,
`}`,
Expand All @@ -626,15 +626,15 @@ export class Router extends Component implements Link.Linkable {
path: string,
config:
| {
injection: string;
kvStores?: string[];
}
injection: string;
kvStores?: string[];
}
| undefined,
rewrite:
| {
regex: string;
to: string;
}
regex: string;
to: string;
}
| undefined,
injectHostHeader: boolean,
) {
Expand All @@ -644,17 +644,19 @@ export class Router extends Component implements Link.Linkable {
runtime: "cloudfront-js-2.0",
keyValueStoreAssociations: config?.kvStores ?? [],
code: `
function handler(event) {
${injectHostHeader
? `event.request.headers["x-forwarded-host"] = event.request.headers.host;`
: ""
}
${rewrite
? `
async function handler(event) {
${
injectHostHeader
? `event.request.headers["x-forwarded-host"] = event.request.headers.host;`
: ""
}
${
rewrite
? `
const re = new RegExp("${rewrite.regex}");
event.request.uri = event.request.uri.replace(re, "${rewrite.to}");`
: ""
}
: ""
}
${config?.injection ?? ""}
return event.request;
}`,
Expand All @@ -676,7 +678,7 @@ event.request.uri = event.request.uri.replace(re, "${rewrite.to}");`
runtime: "cloudfront-js-2.0",
keyValueStoreAssociations: config!.kvStores ?? [],
code: `
function handler(event) {
async function handler(event) {
${config.injection ?? ""}
return event.response;
}`,
Expand Down Expand Up @@ -833,30 +835,30 @@ function handler(event) {
functionAssociations: [
...("url" in route || route.edge?.viewerRequest || route.rewrite
? [
{
eventType: "viewer-request",
functionArn:
route.edge?.viewerRequest || route.rewrite
? createCfRequestFunction(
path,
route.edge?.viewerRequest,
route.rewrite,
"url" in route,
).arn
: createCfRequestDefaultFunction().arn,
},
]
{
eventType: "viewer-request",
functionArn:
route.edge?.viewerRequest || route.rewrite
? createCfRequestFunction(
path,
route.edge?.viewerRequest,
route.rewrite,
"url" in route,
).arn
: createCfRequestDefaultFunction().arn,
},
]
: []),
...(route.edge?.viewerResponse
? [
{
eventType: "viewer-response",
functionArn: createCfResponseFunction(
path,
route.edge.viewerResponse,
).arn,
},
]
{
eventType: "viewer-response",
functionArn: createCfResponseFunction(
path,
route.edge.viewerResponse,
).arn,
},
]
: []),
],
...("url" in route ? urlDefaultConfig : bucketDefaultConfig),
Expand Down
6 changes: 3 additions & 3 deletions platform/src/components/aws/ssr-site.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ export interface SsrSiteArgs extends BaseSsrSiteArgs {
* header. The given code will be injected at the end of this function.
*
* ```js
* function handler(event) {
* async function handler(event) {
* // Default behavior code
*
* // User injected code
Expand Down Expand Up @@ -272,7 +272,7 @@ export interface SsrSiteArgs extends BaseSsrSiteArgs {
* the provided code.
*
* ```js
* function handler(event) {
* async function handler(event) {
* // User injected code
*
* return event.response;
Expand Down Expand Up @@ -915,7 +915,7 @@ export function createServersAndDistribution(
runtime: "cloudfront-js-2.0",
keyValueStoreAssociations: config.apply((v) => v?.kvStores ?? []),
code: interpolate`
function handler(event) {
async function handler(event) {
${injections.join("\n")}
${config.apply((v) => v?.injection ?? "")}
return event.request;
Expand Down
8 changes: 4 additions & 4 deletions platform/src/components/aws/static-site.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export interface StaticSiteArgs extends BaseStaticSiteArgs {
* The given code will be injected at the end of the function.
*
* ```js
* function handler(event) {
* async function handler(event) {
* // Default behavior code
*
* // User injected code
Expand Down Expand Up @@ -147,7 +147,7 @@ export interface StaticSiteArgs extends BaseStaticSiteArgs {
* the provided code.
*
* ```js
* function handler(event) {
* async function handler(event) {
* // User injected code
*
* return event.response;
Expand Down Expand Up @@ -876,7 +876,7 @@ export class StaticSite extends Component implements Link.Linkable {
),
code: output(args.edge).apply(
(edge) => `
function handler(event) {
async function handler(event) {
if (event.request.uri.endsWith('/')) {
event.request.uri += 'index.html';
} else if (!event.request.uri.includes('.')) {
Expand All @@ -898,7 +898,7 @@ function handler(event) {
),
code: output(args.edge).apply(
(edge) => `
function handler(event) {
async function handler(event) {
${edge?.viewerResponse?.injection ?? ""}
return event.response;
}
Expand Down
2 changes: 1 addition & 1 deletion www/sst.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export default $config({
const cfFunction = new aws.cloudfront.Function("AstroRedirect", {
runtime: "cloudfront-js-2.0",
code: [
`function handler(event) {`,
`async function handler(event) {`,
` const request = event.request;`,
// ie. request.uri is /examples/foo
` return {`,
Expand Down

0 comments on commit 2703951

Please sign in to comment.