Skip to content

Commit c7a5e0e

Browse files
committed
Add appConfig
1 parent c327682 commit c7a5e0e

File tree

5 files changed

+28
-11
lines changed

5 files changed

+28
-11
lines changed

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,21 @@ with custom values to setup a completely independent project:
7777
--name "/app/aws-lambda-edge/certificateId" \
7878
--value "<certificate-identifier>"
7979
```
80-
3. Create the parameter for the test asset domain with
80+
3. Create the parameters for the test stage with
8181
```
8282
aws ssm put-parameter --type "String" \
8383
--name "/app/aws-lambda-edge/test/assetDomain" \
8484
--value "test-assets.aws-lambda-edge.immutableweb.app"
85-
```
86-
4. Create the parameter for the test app version with
87-
```
85+
8886
aws ssm put-parameter --type "String" \
8987
--name "/app/aws-lambda-edge/test/appVersion" \
9088
--value "0.0.0"
89+
90+
aws ssm put-parameter --type "String" \
91+
--name "/app/aws-lambda-edge/test/appConfig" \
92+
--value '{"title":"Lambda@Edge Immutable Web App"}'
9193
```
92-
5. Build and deploy the initial version with
94+
4. Build and deploy the initial version with
9395
```
9496
nvm install
9597
npm install

lib/config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
const { SSM } = require('aws-sdk')
44

55
const parameterNames = [
6+
'appConfig',
67
'appVersion',
78
'assetDomain'
89
]
@@ -18,8 +19,9 @@ const getObjectOfParameters = params => {
1819
}
1920

2021
const getOptionsFromParameters = params => {
21-
const { appVersion, assetDomain } = getObjectOfParameters(params)
22+
const { appConfig, appVersion, assetDomain } = getObjectOfParameters(params)
2223
return {
24+
config: appConfig,
2325
version: appVersion,
2426
origin: `https://${assetDomain}`
2527
}

lib/content.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict'
22

3-
const createIndex = ({ root }) => `
3+
const createIndex = ({ root, config }) => `
44
<!doctype html>
55
<html class="no-js" lang="">
66
<head>
@@ -13,16 +13,22 @@ const createIndex = ({ root }) => `
1313
</head>
1414
<body>
1515
<div id="root"></div>
16+
<script>window.config = JSON.parse(decodeURIComponent('${config}'))</script>
1617
<script src="${root}/index.js"></script>
1718
</body>
1819
`
1920

2021
const createContent = ({
22+
config,
2123
origin,
2224
version
2325
}) => {
2426
const root = [origin, version].filter(x => x).join('/')
25-
return createIndex({ root })
27+
const encodedConfig = encodeURIComponent(config)
28+
return createIndex({
29+
root,
30+
config: encodedConfig
31+
})
2632
}
2733

2834
module.exports = createContent

server.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const port = 8080
1111
const assetPort = 8081
1212
const host = 'localhost'
1313
const options = {
14+
config: '{"title":"Lambda@Edge Immutable Web App"}',
1415
origin: `http://${host}:${assetPort}`,
1516
version: ''
1617
}

src/index.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@ import { render } from 'react-dom'
33

44
import './main.css'
55

6-
const App = () => (
6+
const defaultAppConfig = {
7+
title: 'Lambda@Edge Immutable Web App'
8+
}
9+
10+
const { title } = window.config || defaultAppConfig
11+
12+
const App = ({ title }) => (
713
<main>
8-
<h1>Hello, world!</h1>
14+
<h1>{title}</h1>
915
<div className='logo' />
1016
</main>
1117
)
12-
const renderApp = () => render(<App />, document.getElementById('root'))
18+
const renderApp = () => render(<App title={title} />, document.getElementById('root'))
1319

1420
if ('addEventListener' in document) {
1521
document.addEventListener('DOMContentLoaded', renderApp)

0 commit comments

Comments
 (0)