|
|
|
@ -1,5 +1,6 @@
|
|
|
|
import { Auth } from "./auth.js"
|
|
|
|
import { Auth } from "./auth.js"
|
|
|
|
import { Frontend } from "./frontend.js"
|
|
|
|
import { Frontend } from "./frontend.js"
|
|
|
|
|
|
|
|
import { Storage } from "./storage.js"
|
|
|
|
|
|
|
|
|
|
|
|
export class Server {
|
|
|
|
export class Server {
|
|
|
|
async getEnv(variables) {
|
|
|
|
async getEnv(variables) {
|
|
|
|
@ -61,6 +62,7 @@ export class Server {
|
|
|
|
appBaseUrl: this.giteaAppBaseUrl,
|
|
|
|
appBaseUrl: this.giteaAppBaseUrl,
|
|
|
|
apiBaseUrl: this.giteaApiBaseUrl,
|
|
|
|
apiBaseUrl: this.giteaApiBaseUrl,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
this.storage = new Storage()
|
|
|
|
await Promise.all([
|
|
|
|
await Promise.all([
|
|
|
|
...([
|
|
|
|
...([
|
|
|
|
'loader',
|
|
|
|
'loader',
|
|
|
|
@ -74,14 +76,26 @@ export class Server {
|
|
|
|
].map(repo => (
|
|
|
|
].map(repo => (
|
|
|
|
server.frontend.loadRepo(
|
|
|
|
server.frontend.loadRepo(
|
|
|
|
'macchiato',
|
|
|
|
'macchiato',
|
|
|
|
repo,
|
|
|
|
repo.split('#')[0],
|
|
|
|
{srcPath: [], destPath: [repo]}
|
|
|
|
{
|
|
|
|
|
|
|
|
srcPath: [],
|
|
|
|
|
|
|
|
destPath: [repo],
|
|
|
|
|
|
|
|
...(
|
|
|
|
|
|
|
|
repo.includes('#') ?
|
|
|
|
|
|
|
|
{ref: repo.split('#')[1]} :
|
|
|
|
|
|
|
|
{}
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
}
|
|
|
|
)
|
|
|
|
)
|
|
|
|
))),
|
|
|
|
))),
|
|
|
|
server.frontend.loadRepo(
|
|
|
|
server.frontend.loadRepo(
|
|
|
|
'macchiato',
|
|
|
|
'macchiato',
|
|
|
|
'pages',
|
|
|
|
'pages',
|
|
|
|
{srcPath: [], destPath: []}
|
|
|
|
{
|
|
|
|
|
|
|
|
srcPath: [],
|
|
|
|
|
|
|
|
destPath: [],
|
|
|
|
|
|
|
|
ref: 'shared-server',
|
|
|
|
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
server.frontend.loadRepo(
|
|
|
|
server.frontend.loadRepo(
|
|
|
|
'macchiato',
|
|
|
|
'macchiato',
|
|
|
|
@ -89,7 +103,7 @@ export class Server {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
srcPath: [],
|
|
|
|
srcPath: [],
|
|
|
|
destPath: ['server'],
|
|
|
|
destPath: ['server'],
|
|
|
|
ref: 'shared-server'
|
|
|
|
ref: 'shared-server',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
),
|
|
|
|
),
|
|
|
|
])
|
|
|
|
])
|
|
|
|
@ -112,9 +126,17 @@ export class Server {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async serveRequest(event) {
|
|
|
|
async serveRequest(event) {
|
|
|
|
const {pathname} = new URL(event.request.url)
|
|
|
|
const {pathname: p} = new URL(event.request.url)
|
|
|
|
if (pathname.startsWith(`${this.baseUrl}/api/auth`)) {
|
|
|
|
const base = this.baseUrl
|
|
|
|
|
|
|
|
if (p.startsWith(`${base}/api/auth`)) {
|
|
|
|
await this.auth.serve(event)
|
|
|
|
await this.auth.serve(event)
|
|
|
|
|
|
|
|
} else if (p.startsWith(`${base}/api/storage`)) {
|
|
|
|
|
|
|
|
const {allow, headers} = (
|
|
|
|
|
|
|
|
await this.auth.requireAuth(event)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
if (allowed) {
|
|
|
|
|
|
|
|
await this.storage.serve(event, headers)
|
|
|
|
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
await this.frontend.serve(event)
|
|
|
|
await this.frontend.serve(event)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|