-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.mjs
More file actions
60 lines (47 loc) · 1.63 KB
/
server.mjs
File metadata and controls
60 lines (47 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import cors from 'cors'
import express from 'express'
import { config as configEnv } from 'dotenv'
import { dirname, join } from 'node:path'
import { fileURLToPath } from 'node:url'
import { registerDemoRoutes } from './server/routes/demo.mjs'
import { registerEntrypointRoutes } from './server/routes/entrypoints.mjs'
import { registerOrdersProcessingRoutes } from './server/routes/orders-processing.mjs'
import { registerReturnsRoutes } from './server/routes/returns.mjs'
configEnv({ path: '.env' })
const __dirname = dirname(fileURLToPath(import.meta.url))
const app = express()
const corsOrigins = (process.env.CORS_ORIGIN || '')
.split(',')
.map(value => value.trim())
.filter(Boolean)
const corsOptions = {
origin: (origin, callback) => {
if (!origin) {
callback(null, true)
return
}
if (corsOrigins.length === 0 || corsOrigins.includes(origin)) {
callback(null, true)
return
}
callback(new Error(`Not allowed by CORS: ${origin}`))
},
credentials: true,
}
const urlencoded = express.urlencoded({ extended: true })
app.use(cors(corsOptions))
app.options('*', cors(corsOptions))
app.use('/dist', express.static(join(__dirname, 'dist')))
registerEntrypointRoutes(app, { rootDir: __dirname })
registerReturnsRoutes(app, { urlencoded })
registerOrdersProcessingRoutes(app, { urlencoded })
registerDemoRoutes(app, { urlencoded })
const server = app.listen(3000, () => {
console.log('Serving on port 3000')
})
process.on('SIGINT', () => {
server.close(() => {
console.log('Server has been stopped')
process.exit(0)
})
})