Merge GitHub main into Gitea repo (allow unrelated histories)
Some checks failed
CI / go (push) Waiting to run
CI / docker (push) Waiting to run
CI / lint-go (push) Waiting to run
CI / lint-docs (push) Waiting to run
CI / check-paperclip (push) Waiting to run
Deploy static site / Deploy to GitHub Pages (push) Has been cancelled
Deploy static site / Deploy via Docker to hatch.surf (push) Has been cancelled
Some checks failed
CI / go (push) Waiting to run
CI / docker (push) Waiting to run
CI / lint-go (push) Waiting to run
CI / lint-docs (push) Waiting to run
CI / check-paperclip (push) Waiting to run
Deploy static site / Deploy to GitHub Pages (push) Has been cancelled
Deploy static site / Deploy via Docker to hatch.surf (push) Has been cancelled
Resolved conflicts by taking GitHub versions for: - .dockerignore, .gitignore, Dockerfile, README.md, docker-compose.yml Kept deploy.sh updated to: - Pull from GitHub (primary source) - Push to Gitea (push-mirror) - Build from site/ directory (GitHub structure) Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
commit
df378d33ef
@ -1,7 +1,37 @@
|
||||
node_modules
|
||||
.next
|
||||
# Git
|
||||
.git
|
||||
*.md
|
||||
.env*
|
||||
.vscode
|
||||
.idea
|
||||
.gitignore
|
||||
.gitattributes
|
||||
|
||||
# Docs (not needed at runtime)
|
||||
docs/
|
||||
|
||||
# Editor config
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Environment (keep .env.example)
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Docker (avoid recursive copy)
|
||||
Dockerfile
|
||||
docker-compose.yml
|
||||
.dockerignore
|
||||
|
||||
# Node artifacts (from pre-migration scaffold, will be removed by ELF-15)
|
||||
node_modules/
|
||||
pnpm-lock.yaml
|
||||
package.json
|
||||
apps/
|
||||
|
||||
# Test / build caches
|
||||
*.test
|
||||
coverage/
|
||||
|
||||
6
.env.example
Normal file
6
.env.example
Normal file
@ -0,0 +1,6 @@
|
||||
# Public hostname for HTTPS (Caddy will obtain a Let's Encrypt cert automatically).
|
||||
# Leave unset or set to "localhost" for local dev (self-signed cert).
|
||||
HATCH_HOSTNAME=hatch.example.com
|
||||
|
||||
# Base URL for SSE and self-referencing links within the UI.
|
||||
HATCH_BASE_URL=https://hatch.example.com
|
||||
88
.github/workflows/ci.yml
vendored
Normal file
88
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,88 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
go:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.24'
|
||||
cache: true
|
||||
|
||||
- name: Check formatting
|
||||
run: |
|
||||
if [ -n "$(gofmt -l .)" ]; then
|
||||
echo "Files not formatted:"
|
||||
gofmt -l .
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Vet
|
||||
run: go vet ./...
|
||||
|
||||
- name: Test
|
||||
run: go test ./... -v -race
|
||||
|
||||
- name: Build
|
||||
run: CGO_ENABLED=0 go build -o /dev/null ./cmd/hatch
|
||||
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build Docker image
|
||||
run: docker build -t hatch:ci .
|
||||
|
||||
- name: Smoke test the Docker image
|
||||
run: |
|
||||
docker run --rm -d -p 8080:8080 --name hatch-ci hatch:ci
|
||||
sleep 2
|
||||
curl -fsS http://localhost:8080/healthz | grep -q 'ok'
|
||||
docker stop hatch-ci
|
||||
|
||||
lint-go:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.24'
|
||||
cache: true
|
||||
|
||||
- name: Run golangci-lint
|
||||
uses: golangci/golangci-lint-action@v6
|
||||
with:
|
||||
version: latest
|
||||
continue-on-error: true # v1.64.8 built with Go 1.24; migrate to v2.x tracking ELF-232
|
||||
|
||||
lint-docs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Check markdown formatting
|
||||
uses: DavidAnson/markdownlint-cli2-action@v16
|
||||
with:
|
||||
globs: '**/*.md'
|
||||
continue-on-error: true
|
||||
|
||||
check-paperclip:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Need full history for PR range
|
||||
- name: Check for Paperclip references in commit messages
|
||||
run: ./scripts/check-paperclip.sh
|
||||
env:
|
||||
GITHUB_EVENT_NAME: ${{ github.event_name }}
|
||||
GITHUB_BASE_REF: ${{ github.base_ref }}
|
||||
93
.github/workflows/deploy-site.yml
vendored
Normal file
93
.github/workflows/deploy-site.yml
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
name: Deploy static site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'site/**'
|
||||
- '.github/workflows/deploy-site.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
# Allow only one concurrent deployment
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
deploy-github-pages:
|
||||
name: Deploy to GitHub Pages
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v5
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
# Upload the site directory
|
||||
path: 'site'
|
||||
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
|
||||
deploy-docker:
|
||||
name: Deploy via Docker to hatch.surf
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Build Docker image
|
||||
run: docker build -t hatch-homepage:latest ./site
|
||||
|
||||
- name: Save Docker image
|
||||
run: docker save hatch-homepage:latest | gzip > hatch-homepage.tar.gz
|
||||
|
||||
- name: Deploy to server
|
||||
uses: appleboy/scp-action@v0.1.7
|
||||
with:
|
||||
host: ${{ secrets.DEPLOY_HOST }}
|
||||
username: ${{ secrets.DEPLOY_USER }}
|
||||
key: ${{ secrets.DEPLOY_KEY }}
|
||||
source: "hatch-homepage.tar.gz"
|
||||
target: "/tmp/hatch-homepage.tar.gz"
|
||||
|
||||
- name: Load and restart container
|
||||
uses: appleboy/ssh-action@v1
|
||||
with:
|
||||
host: ${{ secrets.DEPLOY_HOST }}
|
||||
username: ${{ secrets.DEPLOY_USER }}
|
||||
key: ${{ secrets.DEPLOY_KEY }}
|
||||
script: |
|
||||
# Load the image
|
||||
docker load < /tmp/hatch-homepage.tar.gz
|
||||
|
||||
# Stop and remove old container if exists
|
||||
docker stop hatch-homepage 2>/dev/null || true
|
||||
docker rm hatch-homepage 2>/dev/null || true
|
||||
|
||||
# Run new container (static files baked into image, no host mount)
|
||||
docker run -d \
|
||||
--name hatch-homepage \
|
||||
--restart unless-stopped \
|
||||
-p 127.0.0.1:3000:80 \
|
||||
hatch-homepage:latest
|
||||
|
||||
# Clean up
|
||||
rm -f /tmp/hatch-homepage.tar.gz
|
||||
|
||||
# Reload nginx if it's managing the reverse proxy
|
||||
nginx -t && systemctl reload nginx 2>/dev/null || true
|
||||
189
.github/workflows/release.yml
vendored
Normal file
189
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,189 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
description: 'Release tag (e.g., v1.0.0)'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build ${{ matrix.os }}/${{ matrix.arch }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
arch: amd64
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
- os: linux
|
||||
arch: arm64
|
||||
goos: linux
|
||||
goarch: arm64
|
||||
- os: darwin
|
||||
arch: amd64
|
||||
goos: darwin
|
||||
goarch: amd64
|
||||
- os: darwin
|
||||
arch: arm64
|
||||
goos: darwin
|
||||
goarch: arm64
|
||||
- os: windows
|
||||
arch: amd64
|
||||
goos: windows
|
||||
goarch: amd64
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.25'
|
||||
cache: true
|
||||
|
||||
- name: Determine version
|
||||
id: version
|
||||
run: |
|
||||
if [ "${{ github.ref_type }}" = "tag" ]; then
|
||||
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "version=dev-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Build binary
|
||||
env:
|
||||
GOOS: ${{ matrix.goos }}
|
||||
GOARCH: ${{ matrix.goarch }}
|
||||
CGO_ENABLED: 0
|
||||
run: |
|
||||
EXT=""
|
||||
if [ "${{ matrix.goos }}" = "windows" ]; then
|
||||
EXT=".exe"
|
||||
fi
|
||||
|
||||
BINARY_NAME="hatch-${{ matrix.os }}-${{ matrix.arch }}${EXT}"
|
||||
|
||||
go build \
|
||||
-ldflags="-s -w -X main.version=${{ steps.version.outputs.version }}" \
|
||||
-o "${BINARY_NAME}" \
|
||||
./cmd/hatch
|
||||
|
||||
echo "BINARY_NAME=${BINARY_NAME}" >> $GITHUB_ENV
|
||||
|
||||
- name: Generate checksum
|
||||
run: |
|
||||
sha256sum "${BINARY_NAME}" > "${BINARY_NAME}.sha256"
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.os }}-${{ matrix.arch }}
|
||||
path: |
|
||||
${{ env.BINARY_NAME }}
|
||||
${{ env.BINARY_NAME }}.sha256
|
||||
retention-days: 1
|
||||
|
||||
release:
|
||||
name: Create Release
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Determine version
|
||||
id: version
|
||||
run: |
|
||||
if [ "${{ github.ref_type }}" = "tag" ]; then
|
||||
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "version=dev-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Download all artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: artifacts
|
||||
merge-multiple: true
|
||||
|
||||
- name: List artifacts
|
||||
run: |
|
||||
ls -la artifacts/
|
||||
echo "---"
|
||||
for f in artifacts/*; do
|
||||
echo "$f: $(du -h "$f" | cut -f1)"
|
||||
done
|
||||
|
||||
- name: Create release notes
|
||||
id: notes
|
||||
run: |
|
||||
# Extract changelog for this version if exists
|
||||
VERSION="${{ steps.version.outputs.version }}"
|
||||
NOTES=""
|
||||
|
||||
if [ -f CHANGELOG.md ]; then
|
||||
# Extract notes for this version
|
||||
NOTES=$(awk "/^## ${VERSION}/,/^## [0-9]/" CHANGELOG.md | head -n -1)
|
||||
fi
|
||||
|
||||
if [ -z "$NOTES" ]; then
|
||||
NOTES="## Changes in ${VERSION}
|
||||
|
||||
- Standalone binary releases for Linux, macOS, and Windows
|
||||
- Updated CLI documentation
|
||||
- See [CLI Reference](https://github.com/elfoundation/hatch/blob/main/docs/engineering/cli.md) for usage"
|
||||
fi
|
||||
|
||||
echo "notes<<EOF" >> $GITHUB_OUTPUT
|
||||
echo "$NOTES" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create GitHub Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
name: "Hatch ${{ steps.version.outputs.version }}"
|
||||
body: ${{ steps.notes.outputs.notes }}
|
||||
draft: false
|
||||
prerelease: ${{ contains(steps.version.outputs.version, '-') }}
|
||||
files: |
|
||||
artifacts/*
|
||||
fail_on_unmatched_files: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Generate SBOM
|
||||
run: |
|
||||
# Create a simple SBOM with version info
|
||||
cat > sbom.json << EOF
|
||||
{
|
||||
"name": "hatch",
|
||||
"version": "${{ steps.version.outputs.version }}",
|
||||
"buildDate": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
|
||||
"goVersion": "$(go version | awk '{print $3}')",
|
||||
"platforms": [
|
||||
"linux/amd64",
|
||||
"linux/arm64",
|
||||
"darwin/amd64",
|
||||
"darwin/arm64",
|
||||
"windows/amd64"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
# Upload SBOM as release asset
|
||||
gh release upload "${{ steps.version.outputs.version }}" sbom.json --clobber || true
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
51
.gitignore
vendored
51
.gitignore
vendored
@ -1,29 +1,30 @@
|
||||
# dependencies
|
||||
node_modules/
|
||||
# Go
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
*.test
|
||||
*.out
|
||||
go.work
|
||||
|
||||
# next.js
|
||||
.next/
|
||||
out/
|
||||
# Build
|
||||
/bin
|
||||
/dist
|
||||
/data
|
||||
|
||||
# production
|
||||
build/
|
||||
# Runtime data
|
||||
data/
|
||||
*.db
|
||||
coverage.out
|
||||
|
||||
# misc
|
||||
# IDE
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# local env files
|
||||
.env*.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
out.backup.*
|
||||
/hatch
|
||||
hatch.exe
|
||||
site/*.bak
|
||||
|
||||
58
.golangci.yml
Normal file
58
.golangci.yml
Normal file
@ -0,0 +1,58 @@
|
||||
linters:
|
||||
enable:
|
||||
- errcheck
|
||||
- gosimple
|
||||
- govet
|
||||
- ineffassign
|
||||
- staticcheck
|
||||
- unused
|
||||
- gofmt
|
||||
- misspell
|
||||
- unconvert
|
||||
- unparam
|
||||
- prealloc
|
||||
- gocritic
|
||||
- revive
|
||||
|
||||
linters-settings:
|
||||
errcheck:
|
||||
check-type-assertions: true
|
||||
check-blank: true
|
||||
govet:
|
||||
enable:
|
||||
- shadow
|
||||
revive:
|
||||
rules:
|
||||
- name: blank-imports
|
||||
- name: context-as-argument
|
||||
- name: dot-imports
|
||||
- name: error-return
|
||||
- name: error-strings
|
||||
- name: error-naming
|
||||
- name: exported
|
||||
- name: if-return
|
||||
- name: increment-decrement
|
||||
- name: var-naming
|
||||
- name: var-declaration
|
||||
- name: range
|
||||
- name: receiver-naming
|
||||
- name: indent-error-flow
|
||||
- name: superfluous-else
|
||||
- name: unreachable-code
|
||||
- name: redefines-builtin-id
|
||||
|
||||
issues:
|
||||
exclude-rules:
|
||||
# Exclude some linters from running on test files
|
||||
- path: _test\.go
|
||||
linters:
|
||||
- errcheck
|
||||
- gocritic
|
||||
- unparam
|
||||
# Exclude known issues in test files
|
||||
- path: _test\.go
|
||||
text: "func name"
|
||||
|
||||
run:
|
||||
timeout: 5m
|
||||
modules-download-mode: readonly
|
||||
1
.next/BUILD_ID
Normal file
1
.next/BUILD_ID
Normal file
@ -0,0 +1 @@
|
||||
W0ph6BZ8oDeJaHcE9fuII
|
||||
6
.next/app-path-routes-manifest.json
Normal file
6
.next/app-path-routes-manifest.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"/_global-error/page": "/_global-error",
|
||||
"/_not-found/page": "/_not-found",
|
||||
"/favicon.ico/route": "/favicon.ico",
|
||||
"/page": "/"
|
||||
}
|
||||
20
.next/build-manifest.json
Normal file
20
.next/build-manifest.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"pages": {
|
||||
"/_app": []
|
||||
},
|
||||
"devFiles": [],
|
||||
"polyfillFiles": [
|
||||
"static/chunks/0cz1d0mv5g_q7.js"
|
||||
],
|
||||
"lowPriorityFiles": [
|
||||
"static/W0ph6BZ8oDeJaHcE9fuII/_buildManifest.js",
|
||||
"static/W0ph6BZ8oDeJaHcE9fuII/_ssgManifest.js",
|
||||
"static/W0ph6BZ8oDeJaHcE9fuII/_clientMiddlewareManifest.js"
|
||||
],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/3z5q_p4msz2ha.js",
|
||||
"static/chunks/2ckqm4grawju5.js",
|
||||
"static/chunks/2nykiepra7i1k.js",
|
||||
"static/chunks/turbopack-1n9x74gl-i54j.js"
|
||||
]
|
||||
}
|
||||
6
.next/build/56416d4ae4ce586f.js
Normal file
6
.next/build/56416d4ae4ce586f.js
Normal file
@ -0,0 +1,6 @@
|
||||
var R=require("./chunks/[turbopack]_runtime.js")("56416d4ae4ce586f.js")
|
||||
R.c("chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js")
|
||||
R.c("chunks/[root-of-the-server]__1f933tp._.js")
|
||||
R.m("[turbopack-node]/child_process/globals.ts [postcss] (ecmascript)")
|
||||
R.m("[turbopack-node]/child_process/evaluate.ts/evaluate.js { INNER => \"[turbopack-node]/transforms/postcss.ts { CONFIG => \\\"[project]/postcss.config.mjs [postcss] (ecmascript)\\\" } [postcss] (ecmascript)\", RUNTIME => \"[turbopack-node]/child_process/evaluate.ts [postcss] (ecmascript)\" } [postcss] (ecmascript)")
|
||||
module.exports=R.m("[turbopack-node]/child_process/evaluate.ts/evaluate.js { INNER => \"[turbopack-node]/transforms/postcss.ts { CONFIG => \\\"[project]/postcss.config.mjs [postcss] (ecmascript)\\\" } [postcss] (ecmascript)\", RUNTIME => \"[turbopack-node]/child_process/evaluate.ts [postcss] (ecmascript)\" } [postcss] (ecmascript)").exports
|
||||
5
.next/build/56416d4ae4ce586f.js.map
Normal file
5
.next/build/56416d4ae4ce586f.js.map
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
206
.next/build/chunks/[root-of-the-server]__0oj80bi._.js
Normal file
206
.next/build/chunks/[root-of-the-server]__0oj80bi._.js
Normal file
@ -0,0 +1,206 @@
|
||||
module.exports = [
|
||||
"[externals]/path [external] (path, cjs)", ((__turbopack_context__, module, exports) => {
|
||||
|
||||
const mod = __turbopack_context__.x("path", () => require("path"));
|
||||
|
||||
module.exports = mod;
|
||||
}),
|
||||
"[externals]/url [external] (url, cjs)", ((__turbopack_context__, module, exports) => {
|
||||
|
||||
const mod = __turbopack_context__.x("url", () => require("url"));
|
||||
|
||||
module.exports = mod;
|
||||
}),
|
||||
"[externals]/fs [external] (fs, cjs)", ((__turbopack_context__, module, exports) => {
|
||||
|
||||
const mod = __turbopack_context__.x("fs", () => require("fs"));
|
||||
|
||||
module.exports = mod;
|
||||
}),
|
||||
"[project]/postcss.config.mjs [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"default",
|
||||
()=>__TURBOPACK__default__export__
|
||||
]);
|
||||
const config = {
|
||||
plugins: {
|
||||
"@tailwindcss/postcss": {}
|
||||
}
|
||||
};
|
||||
const __TURBOPACK__default__export__ = config;
|
||||
}),
|
||||
"[turbopack-node]/transforms/transforms.ts [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Shared utilities for our 2 transform implementations.
|
||||
*/ __turbopack_context__.s([
|
||||
"fromPath",
|
||||
()=>fromPath,
|
||||
"getReadEnvVariables",
|
||||
()=>getReadEnvVariables,
|
||||
"toPath",
|
||||
()=>toPath
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/path [external] (path, cjs)");
|
||||
;
|
||||
const contextDir = process.cwd();
|
||||
const toPath = (file)=>{
|
||||
const relPath = (0, __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["relative"])(contextDir, file);
|
||||
if ((0, __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["isAbsolute"])(relPath)) {
|
||||
throw new Error(`Cannot depend on path (${file}) outside of root directory (${contextDir})`);
|
||||
}
|
||||
return __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["sep"] !== '/' ? relPath.replaceAll(__TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["sep"], '/') : relPath;
|
||||
};
|
||||
const fromPath = (path)=>{
|
||||
return (0, __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["join"])(/* turbopackIgnore: true */ contextDir, __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["sep"] !== '/' ? path.replaceAll('/', __TURBOPACK__imported__module__$5b$externals$5d2f$path__$5b$external$5d$__$28$path$2c$__cjs$29$__["sep"]) : path);
|
||||
};
|
||||
// Patch process.env to track which env vars are read
|
||||
const originalEnv = process.env;
|
||||
const readEnvVars = new Set();
|
||||
process.env = new Proxy(originalEnv, {
|
||||
get (target, prop) {
|
||||
if (typeof prop === 'string') {
|
||||
// We register the env var as dependency on the
|
||||
// current transform and all future transforms
|
||||
// since the env var might be cached in module scope
|
||||
// and influence them all
|
||||
readEnvVars.add(prop);
|
||||
}
|
||||
return Reflect.get(target, prop);
|
||||
},
|
||||
set (target, prop, value) {
|
||||
return Reflect.set(target, prop, value);
|
||||
}
|
||||
});
|
||||
function getReadEnvVariables() {
|
||||
return Array.from(readEnvVars);
|
||||
}
|
||||
}),
|
||||
"[turbopack-node]/transforms/postcss.ts { CONFIG => \"[project]/postcss.config.mjs [postcss] (ecmascript)\" } [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"default",
|
||||
()=>transform,
|
||||
"init",
|
||||
()=>init
|
||||
]);
|
||||
// @ts-ignore
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$postcss$2f$lib$2f$postcss$2e$mjs__$5b$postcss$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/postcss/lib/postcss.mjs [postcss] (ecmascript)");
|
||||
// @ts-ignore
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$postcss$2e$config$2e$mjs__$5b$postcss$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/postcss.config.mjs [postcss] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$transforms$2f$transforms$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[turbopack-node]/transforms/transforms.ts [postcss] (ecmascript)");
|
||||
;
|
||||
;
|
||||
;
|
||||
let processor;
|
||||
const init = async (ipc)=>{
|
||||
let config = __TURBOPACK__imported__module__$5b$project$5d2f$postcss$2e$config$2e$mjs__$5b$postcss$5d$__$28$ecmascript$29$__["default"];
|
||||
if (typeof config === 'function') {
|
||||
config = await config({
|
||||
env: 'development'
|
||||
});
|
||||
}
|
||||
if (typeof config === 'undefined') {
|
||||
throw new Error('PostCSS config is undefined (make sure to export an function or object from config file)');
|
||||
}
|
||||
let plugins;
|
||||
if (Array.isArray(config.plugins)) {
|
||||
plugins = config.plugins.map((plugin)=>{
|
||||
if (Array.isArray(plugin)) {
|
||||
return plugin;
|
||||
} else if (typeof plugin === 'string') {
|
||||
return [
|
||||
plugin,
|
||||
{}
|
||||
];
|
||||
} else {
|
||||
return plugin;
|
||||
}
|
||||
});
|
||||
} else if (typeof config.plugins === 'object') {
|
||||
plugins = Object.entries(config.plugins).filter(([, options])=>options);
|
||||
} else {
|
||||
plugins = [];
|
||||
}
|
||||
const loadedPlugins = plugins.map((plugin)=>{
|
||||
if (Array.isArray(plugin)) {
|
||||
const [arg, options] = plugin;
|
||||
let pluginFactory = arg;
|
||||
if (typeof pluginFactory === 'string') {
|
||||
pluginFactory = require(/* turbopackIgnore: true */ pluginFactory);
|
||||
}
|
||||
if (pluginFactory.default) {
|
||||
pluginFactory = pluginFactory.default;
|
||||
}
|
||||
return pluginFactory(options);
|
||||
}
|
||||
return plugin;
|
||||
});
|
||||
processor = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$postcss$2f$lib$2f$postcss$2e$mjs__$5b$postcss$5d$__$28$ecmascript$29$__["default"])(loadedPlugins);
|
||||
};
|
||||
async function transform(ipc, cssContent, name, sourceMap) {
|
||||
const { css, map, messages } = await processor.process(cssContent, {
|
||||
from: name,
|
||||
to: name,
|
||||
map: sourceMap ? {
|
||||
inline: false,
|
||||
annotation: false
|
||||
} : undefined
|
||||
});
|
||||
const assets = [];
|
||||
const filePaths = [];
|
||||
const buildFilePaths = [];
|
||||
const directories = [];
|
||||
for (const msg of messages){
|
||||
switch(msg.type){
|
||||
case 'asset':
|
||||
assets.push({
|
||||
file: msg.file,
|
||||
content: msg.content,
|
||||
sourceMap: !sourceMap ? undefined : typeof msg.sourceMap === 'string' ? msg.sourceMap : JSON.stringify(msg.sourceMap)
|
||||
});
|
||||
break;
|
||||
case 'dependency':
|
||||
case 'missing-dependency':
|
||||
filePaths.push((0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$transforms$2f$transforms$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["toPath"])(msg.file));
|
||||
break;
|
||||
case 'build-dependency':
|
||||
buildFilePaths.push((0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$transforms$2f$transforms$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["toPath"])(msg.file));
|
||||
break;
|
||||
case 'dir-dependency':
|
||||
directories.push([
|
||||
(0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$transforms$2f$transforms$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["toPath"])(msg.dir),
|
||||
msg.glob
|
||||
]);
|
||||
break;
|
||||
case 'context-dependency':
|
||||
directories.push([
|
||||
(0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$transforms$2f$transforms$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["toPath"])(msg.dir),
|
||||
'**'
|
||||
]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
ipc.sendInfo({
|
||||
type: 'dependencies',
|
||||
filePaths,
|
||||
directories,
|
||||
buildFilePaths,
|
||||
envVariables: (0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$transforms$2f$transforms$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["getReadEnvVariables"])()
|
||||
});
|
||||
return {
|
||||
css,
|
||||
map: sourceMap ? JSON.stringify(map) : undefined,
|
||||
assets
|
||||
};
|
||||
}
|
||||
}),
|
||||
];
|
||||
|
||||
//# sourceMappingURL=%5Broot-of-the-server%5D__0oj80bi._.js.map
|
||||
File diff suppressed because one or more lines are too long
500
.next/build/chunks/[root-of-the-server]__1f933tp._.js
Normal file
500
.next/build/chunks/[root-of-the-server]__1f933tp._.js
Normal file
@ -0,0 +1,500 @@
|
||||
module.exports = [
|
||||
"[turbopack-node]/child_process/globals.ts [postcss] (ecmascript)", ((__turbopack_context__, module, exports) => {
|
||||
|
||||
// @ts-ignore
|
||||
process.turbopack = {};
|
||||
}),
|
||||
"[externals]/node:net [external] (node:net, cjs)", ((__turbopack_context__, module, exports) => {
|
||||
|
||||
const mod = __turbopack_context__.x("node:net", () => require("node:net"));
|
||||
|
||||
module.exports = mod;
|
||||
}),
|
||||
"[externals]/node:stream [external] (node:stream, cjs)", ((__turbopack_context__, module, exports) => {
|
||||
|
||||
const mod = __turbopack_context__.x("node:stream", () => require("node:stream"));
|
||||
|
||||
module.exports = mod;
|
||||
}),
|
||||
"[turbopack-node]/compiled/stacktrace-parser/index.js [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"parse",
|
||||
()=>parse
|
||||
]);
|
||||
if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/compiled/stacktrace-parser") + "/";
|
||||
var n = "<unknown>";
|
||||
function parse(e) {
|
||||
var r = e.split("\n");
|
||||
return r.reduce(function(e, r) {
|
||||
var n = parseChrome(r) || parseWinjs(r) || parseGecko(r) || parseNode(r) || parseJSC(r);
|
||||
if (n) {
|
||||
e.push(n);
|
||||
}
|
||||
return e;
|
||||
}, []);
|
||||
}
|
||||
var a = /^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
|
||||
var l = /\((\S*)(?::(\d+))(?::(\d+))\)/;
|
||||
function parseChrome(e) {
|
||||
var r = a.exec(e);
|
||||
if (!r) {
|
||||
return null;
|
||||
}
|
||||
var u = r[2] && r[2].indexOf("native") === 0;
|
||||
var t = r[2] && r[2].indexOf("eval") === 0;
|
||||
var i = l.exec(r[2]);
|
||||
if (t && i != null) {
|
||||
r[2] = i[1];
|
||||
r[3] = i[2];
|
||||
r[4] = i[3];
|
||||
}
|
||||
return {
|
||||
file: !u ? r[2] : null,
|
||||
methodName: r[1] || n,
|
||||
arguments: u ? [
|
||||
r[2]
|
||||
] : [],
|
||||
lineNumber: r[3] ? +r[3] : null,
|
||||
column: r[4] ? +r[4] : null
|
||||
};
|
||||
}
|
||||
var u = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
|
||||
function parseWinjs(e) {
|
||||
var r = u.exec(e);
|
||||
if (!r) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
file: r[2],
|
||||
methodName: r[1] || n,
|
||||
arguments: [],
|
||||
lineNumber: +r[3],
|
||||
column: r[4] ? +r[4] : null
|
||||
};
|
||||
}
|
||||
var t = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i;
|
||||
var i = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
|
||||
function parseGecko(e) {
|
||||
var r = t.exec(e);
|
||||
if (!r) {
|
||||
return null;
|
||||
}
|
||||
var a = r[3] && r[3].indexOf(" > eval") > -1;
|
||||
var l = i.exec(r[3]);
|
||||
if (a && l != null) {
|
||||
r[3] = l[1];
|
||||
r[4] = l[2];
|
||||
r[5] = null;
|
||||
}
|
||||
return {
|
||||
file: r[3],
|
||||
methodName: r[1] || n,
|
||||
arguments: r[2] ? r[2].split(",") : [],
|
||||
lineNumber: r[4] ? +r[4] : null,
|
||||
column: r[5] ? +r[5] : null
|
||||
};
|
||||
}
|
||||
var s = /^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i;
|
||||
function parseJSC(e) {
|
||||
var r = s.exec(e);
|
||||
if (!r) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
file: r[3],
|
||||
methodName: r[1] || n,
|
||||
arguments: [],
|
||||
lineNumber: +r[4],
|
||||
column: r[5] ? +r[5] : null
|
||||
};
|
||||
}
|
||||
var o = /^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;
|
||||
function parseNode(e) {
|
||||
var r = o.exec(e);
|
||||
if (!r) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
file: r[2],
|
||||
methodName: r[1] || n,
|
||||
arguments: [],
|
||||
lineNumber: +r[3],
|
||||
column: r[4] ? +r[4] : null
|
||||
};
|
||||
}
|
||||
}),
|
||||
"[turbopack-node]/error.ts [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"default",
|
||||
()=>isError,
|
||||
"getProperError",
|
||||
()=>getProperError,
|
||||
"structuredError",
|
||||
()=>structuredError
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$compiled$2f$stacktrace$2d$parser$2f$index$2e$js__$5b$postcss$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[turbopack-node]/compiled/stacktrace-parser/index.js [postcss] (ecmascript)");
|
||||
;
|
||||
function isError(err) {
|
||||
return typeof err === 'object' && err !== null && 'name' in err && 'message' in err;
|
||||
}
|
||||
function getProperError(err) {
|
||||
if (isError(err)) {
|
||||
return err;
|
||||
}
|
||||
if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable
|
||||
;
|
||||
return new Error(isPlainObject(err) ? JSON.stringify(err) : err + '');
|
||||
}
|
||||
function getObjectClassLabel(value) {
|
||||
return Object.prototype.toString.call(value);
|
||||
}
|
||||
function isPlainObject(value) {
|
||||
if (getObjectClassLabel(value) !== '[object Object]') {
|
||||
return false;
|
||||
}
|
||||
const prototype = Object.getPrototypeOf(value);
|
||||
/**
|
||||
* this used to be previously:
|
||||
*
|
||||
* `return prototype === null || prototype === Object.prototype`
|
||||
*
|
||||
* but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.
|
||||
*
|
||||
* It was changed to the current implementation since it's resilient to serialization.
|
||||
*/ return prototype === null || prototype.hasOwnProperty('isPrototypeOf');
|
||||
}
|
||||
function structuredError(e) {
|
||||
e = getProperError(e);
|
||||
return {
|
||||
name: e.name,
|
||||
message: e.message,
|
||||
stack: typeof e.stack === 'string' ? (0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$compiled$2f$stacktrace$2d$parser$2f$index$2e$js__$5b$postcss$5d$__$28$ecmascript$29$__["parse"])(e.stack) : [],
|
||||
cause: e.cause ? structuredError(getProperError(e.cause)) : undefined
|
||||
};
|
||||
}
|
||||
}),
|
||||
"[turbopack-node]/child_process/index.ts [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"IPC",
|
||||
()=>IPC
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$externals$5d2f$node$3a$net__$5b$external$5d$__$28$node$3a$net$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/node:net [external] (node:net, cjs)");
|
||||
var __TURBOPACK__imported__module__$5b$externals$5d2f$node$3a$stream__$5b$external$5d$__$28$node$3a$stream$2c$__cjs$29$__ = __turbopack_context__.i("[externals]/node:stream [external] (node:stream, cjs)");
|
||||
var __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$error$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[turbopack-node]/error.ts [postcss] (ecmascript)");
|
||||
;
|
||||
;
|
||||
;
|
||||
function createIpc(port) {
|
||||
const socket = (0, __TURBOPACK__imported__module__$5b$externals$5d2f$node$3a$net__$5b$external$5d$__$28$node$3a$net$2c$__cjs$29$__["createConnection"])({
|
||||
port,
|
||||
host: '127.0.0.1'
|
||||
});
|
||||
/**
|
||||
* A writable stream that writes to the socket.
|
||||
* We don't write directly to the socket because we need to
|
||||
* handle backpressure and wait for the socket to be drained
|
||||
* before writing more data.
|
||||
*/ const socketWritable = new __TURBOPACK__imported__module__$5b$externals$5d2f$node$3a$stream__$5b$external$5d$__$28$node$3a$stream$2c$__cjs$29$__["Writable"]({
|
||||
write (chunk, _enc, cb) {
|
||||
if (socket.write(chunk)) {
|
||||
cb();
|
||||
} else {
|
||||
socket.once('drain', cb);
|
||||
}
|
||||
},
|
||||
final (cb) {
|
||||
socket.end(cb);
|
||||
}
|
||||
});
|
||||
const packetQueue = [];
|
||||
const recvPromiseResolveQueue = [];
|
||||
function pushPacket(packet) {
|
||||
const recvPromiseResolve = recvPromiseResolveQueue.shift();
|
||||
if (recvPromiseResolve != null) {
|
||||
recvPromiseResolve(JSON.parse(packet.toString('utf8')));
|
||||
} else {
|
||||
packetQueue.push(packet);
|
||||
}
|
||||
}
|
||||
let state = {
|
||||
type: 'waiting'
|
||||
};
|
||||
let buffer = Buffer.alloc(0);
|
||||
socket.once('connect', ()=>{
|
||||
socket.setNoDelay(true);
|
||||
socket.on('data', (chunk)=>{
|
||||
buffer = Buffer.concat([
|
||||
buffer,
|
||||
chunk
|
||||
]);
|
||||
loop: while(true){
|
||||
switch(state.type){
|
||||
case 'waiting':
|
||||
{
|
||||
if (buffer.length >= 4) {
|
||||
const length = buffer.readUInt32BE(0);
|
||||
buffer = buffer.subarray(4);
|
||||
state = {
|
||||
type: 'packet',
|
||||
length
|
||||
};
|
||||
} else {
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'packet':
|
||||
{
|
||||
if (buffer.length >= state.length) {
|
||||
const packet = buffer.subarray(0, state.length);
|
||||
buffer = buffer.subarray(state.length);
|
||||
state = {
|
||||
type: 'waiting'
|
||||
};
|
||||
pushPacket(packet);
|
||||
} else {
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
invariant(state, (state)=>`Unknown state type: ${state?.type}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
// When the socket is closed, this process is no longer needed.
|
||||
// This might happen e. g. when parent process is killed or
|
||||
// node.js pool is garbage collected.
|
||||
socket.once('close', ()=>{
|
||||
process.exit(0);
|
||||
});
|
||||
// TODO(lukesandberg): some of the messages being sent are very large and contain lots
|
||||
// of redundant information. Consider adding gzip compression to our stream.
|
||||
function doSend(message) {
|
||||
return new Promise((resolve, reject)=>{
|
||||
// Reserve 4 bytes for our length prefix, we will over-write after encoding.
|
||||
const packet = Buffer.from('0000' + message, 'utf8');
|
||||
packet.writeUInt32BE(packet.length - 4, 0);
|
||||
socketWritable.write(packet, (err)=>{
|
||||
process.stderr.write(`TURBOPACK_OUTPUT_D\n`);
|
||||
process.stdout.write(`TURBOPACK_OUTPUT_D\n`);
|
||||
if (err != null) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function send(message) {
|
||||
return doSend(JSON.stringify(message));
|
||||
}
|
||||
function sendReady() {
|
||||
return doSend('');
|
||||
}
|
||||
return {
|
||||
async recv () {
|
||||
const packet = packetQueue.shift();
|
||||
if (packet != null) {
|
||||
return JSON.parse(packet.toString('utf8'));
|
||||
}
|
||||
const result = await new Promise((resolve)=>{
|
||||
recvPromiseResolveQueue.push((result)=>{
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
return result;
|
||||
},
|
||||
send (message) {
|
||||
return send(message);
|
||||
},
|
||||
sendReady,
|
||||
async sendError (error) {
|
||||
let failed = false;
|
||||
try {
|
||||
await send({
|
||||
type: 'error',
|
||||
...(0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$error$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["structuredError"])(error)
|
||||
});
|
||||
} catch (err) {
|
||||
// There's nothing we can do about errors that happen after this point, we can't tell anyone
|
||||
// about them.
|
||||
console.error('failed to send error back to rust:', err);
|
||||
failed = true;
|
||||
}
|
||||
await new Promise((res)=>socket.end(()=>res()));
|
||||
process.exit(failed ? 1 : 0);
|
||||
}
|
||||
};
|
||||
}
|
||||
const PORT = process.argv[2];
|
||||
const IPC = createIpc(parseInt(PORT, 10));
|
||||
process.on('uncaughtException', (err)=>{
|
||||
IPC.sendError(err);
|
||||
});
|
||||
process.on('unhandledRejection', (reason)=>{
|
||||
IPC.sendError(reason instanceof Error ? reason : new Error(String(reason)));
|
||||
});
|
||||
const improveConsole = (name, stream, addStack)=>{
|
||||
// @ts-ignore
|
||||
const original = console[name];
|
||||
// @ts-ignore
|
||||
const stdio = process[stream];
|
||||
// @ts-ignore
|
||||
console[name] = (...args)=>{
|
||||
stdio.write(`TURBOPACK_OUTPUT_B\n`);
|
||||
original(...args);
|
||||
if (addStack) {
|
||||
const stack = new Error().stack?.replace(/^.+\n.+\n/, '') + '\n';
|
||||
stdio.write('TURBOPACK_OUTPUT_S\n');
|
||||
stdio.write(stack);
|
||||
}
|
||||
stdio.write('TURBOPACK_OUTPUT_E\n');
|
||||
};
|
||||
};
|
||||
improveConsole('error', 'stderr', true);
|
||||
improveConsole('warn', 'stderr', true);
|
||||
improveConsole('count', 'stdout', true);
|
||||
improveConsole('trace', 'stderr', false);
|
||||
improveConsole('log', 'stdout', true);
|
||||
improveConsole('group', 'stdout', true);
|
||||
improveConsole('groupCollapsed', 'stdout', true);
|
||||
improveConsole('table', 'stdout', true);
|
||||
improveConsole('debug', 'stdout', true);
|
||||
improveConsole('info', 'stdout', true);
|
||||
improveConsole('dir', 'stdout', true);
|
||||
improveConsole('dirxml', 'stdout', true);
|
||||
improveConsole('timeEnd', 'stdout', true);
|
||||
improveConsole('timeLog', 'stdout', true);
|
||||
improveConsole('timeStamp', 'stdout', true);
|
||||
improveConsole('assert', 'stderr', true);
|
||||
/**
|
||||
* Utility function to ensure all variants of an enum are handled.
|
||||
*/ function invariant(never, computeMessage) {
|
||||
throw new Error(`Invariant: ${computeMessage(never)}`);
|
||||
}
|
||||
}),
|
||||
"[turbopack-node]/child_process/evaluate.ts [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"run",
|
||||
()=>run
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$child_process$2f$index$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[turbopack-node]/child_process/index.ts [postcss] (ecmascript)");
|
||||
;
|
||||
const ipc = __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$child_process$2f$index$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["IPC"];
|
||||
const queue = [];
|
||||
const run = async (moduleFactory)=>{
|
||||
let nextId = 1;
|
||||
const requests = new Map();
|
||||
const internalIpc = {
|
||||
sendInfo: (message)=>ipc.send({
|
||||
type: 'info',
|
||||
data: message
|
||||
}),
|
||||
sendRequest: (message)=>{
|
||||
const id = nextId++;
|
||||
let resolve, reject;
|
||||
const promise = new Promise((res, rej)=>{
|
||||
resolve = res;
|
||||
reject = rej;
|
||||
});
|
||||
requests.set(id, {
|
||||
resolve,
|
||||
reject
|
||||
});
|
||||
return ipc.send({
|
||||
type: 'request',
|
||||
id,
|
||||
data: message
|
||||
}).then(()=>promise);
|
||||
},
|
||||
sendError: (error)=>{
|
||||
return ipc.sendError(error);
|
||||
}
|
||||
};
|
||||
// Initialize module and send ready message
|
||||
let getValue;
|
||||
try {
|
||||
const module = await moduleFactory();
|
||||
if (typeof module.init === 'function') {
|
||||
await module.init();
|
||||
}
|
||||
getValue = module.default;
|
||||
await ipc.sendReady();
|
||||
} catch (err) {
|
||||
await ipc.sendReady();
|
||||
await ipc.sendError(err);
|
||||
}
|
||||
// Queue handling
|
||||
let isRunning = false;
|
||||
const run = async ()=>{
|
||||
while(queue.length > 0){
|
||||
const args = queue.shift();
|
||||
try {
|
||||
const value = await getValue(internalIpc, ...args);
|
||||
await ipc.send({
|
||||
type: 'end',
|
||||
data: value === undefined ? undefined : JSON.stringify(value, null, 2),
|
||||
duration: 0
|
||||
});
|
||||
} catch (e) {
|
||||
await ipc.sendError(e);
|
||||
}
|
||||
}
|
||||
isRunning = false;
|
||||
};
|
||||
// Communication handling
|
||||
while(true){
|
||||
const msg = await ipc.recv();
|
||||
switch(msg.type){
|
||||
case 'evaluate':
|
||||
{
|
||||
queue.push(msg.args);
|
||||
if (!isRunning) {
|
||||
isRunning = true;
|
||||
run();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'result':
|
||||
{
|
||||
const request = requests.get(msg.id);
|
||||
if (request) {
|
||||
requests.delete(msg.id);
|
||||
if (msg.error) {
|
||||
request.reject(new Error(msg.error));
|
||||
} else {
|
||||
request.resolve(msg.data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
console.error('unexpected message type', msg.type);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}),
|
||||
"[turbopack-node]/child_process/evaluate.ts/evaluate.js { INNER => \"[turbopack-node]/transforms/postcss.ts { CONFIG => \\\"[project]/postcss.config.mjs [postcss] (ecmascript)\\\" } [postcss] (ecmascript)\", RUNTIME => \"[turbopack-node]/child_process/evaluate.ts [postcss] (ecmascript)\" } [postcss] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([]);
|
||||
var __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$child_process$2f$evaluate$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[turbopack-node]/child_process/evaluate.ts [postcss] (ecmascript)");
|
||||
;
|
||||
(0, __TURBOPACK__imported__module__$5b$turbopack$2d$node$5d2f$child_process$2f$evaluate$2e$ts__$5b$postcss$5d$__$28$ecmascript$29$__["run"])(()=>__turbopack_context__.A('[turbopack-node]/transforms/postcss.ts { CONFIG => "[project]/postcss.config.mjs [postcss] (ecmascript)" } [postcss] (ecmascript, async loader)'));
|
||||
}),
|
||||
];
|
||||
|
||||
//# sourceMappingURL=%5Broot-of-the-server%5D__1f933tp._.js.map
|
||||
11
.next/build/chunks/[root-of-the-server]__1f933tp._.js.map
Normal file
11
.next/build/chunks/[root-of-the-server]__1f933tp._.js.map
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,13 @@
|
||||
module.exports = [
|
||||
"[turbopack-node]/transforms/postcss.ts { CONFIG => \"[project]/postcss.config.mjs [postcss] (ecmascript)\" } [postcss] (ecmascript, async loader)", ((__turbopack_context__) => {
|
||||
|
||||
__turbopack_context__.v((parentImport) => {
|
||||
return Promise.all([
|
||||
"chunks/node_modules_20v-8wl._.js",
|
||||
"chunks/[root-of-the-server]__0oj80bi._.js"
|
||||
].map((chunk) => __turbopack_context__.l(chunk))).then(() => {
|
||||
return parentImport("[turbopack-node]/transforms/postcss.ts { CONFIG => \"[project]/postcss.config.mjs [postcss] (ecmascript)\" } [postcss] (ecmascript)");
|
||||
});
|
||||
});
|
||||
}),
|
||||
];
|
||||
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
890
.next/build/chunks/[turbopack]_runtime.js
Normal file
890
.next/build/chunks/[turbopack]_runtime.js
Normal file
@ -0,0 +1,890 @@
|
||||
const RUNTIME_PUBLIC_PATH = "chunks/[turbopack]_runtime.js";
|
||||
const RELATIVE_ROOT_PATH = "..";
|
||||
const ASSET_PREFIX = "/";
|
||||
const WORKER_FORWARDED_GLOBALS = [];
|
||||
/**
|
||||
* This file contains runtime types and functions that are shared between all
|
||||
* TurboPack ECMAScript runtimes.
|
||||
*
|
||||
* It will be prepended to the runtime code of each runtime.
|
||||
*/ /* eslint-disable @typescript-eslint/no-unused-vars */ /// <reference path="./runtime-types.d.ts" />
|
||||
/**
|
||||
* Describes why a module was instantiated.
|
||||
* Shared between browser and Node.js runtimes.
|
||||
*/ var SourceType = /*#__PURE__*/ function(SourceType) {
|
||||
/**
|
||||
* The module was instantiated because it was included in an evaluated chunk's
|
||||
* runtime.
|
||||
* SourceData is a ChunkPath.
|
||||
*/ SourceType[SourceType["Runtime"] = 0] = "Runtime";
|
||||
/**
|
||||
* The module was instantiated because a parent module imported it.
|
||||
* SourceData is a ModuleId.
|
||||
*/ SourceType[SourceType["Parent"] = 1] = "Parent";
|
||||
/**
|
||||
* The module was instantiated because it was included in a chunk's hot module
|
||||
* update.
|
||||
* SourceData is an array of ModuleIds or undefined.
|
||||
*/ SourceType[SourceType["Update"] = 2] = "Update";
|
||||
return SourceType;
|
||||
}(SourceType || {});
|
||||
/**
|
||||
* Flag indicating which module object type to create when a module is merged. Set to `true`
|
||||
* by each runtime that uses ModuleWithDirection (browser dev-base.ts, nodejs dev-base.ts,
|
||||
* nodejs build-base.ts). Browser production (build-base.ts) leaves it as `false` since it
|
||||
* uses plain Module objects.
|
||||
*/ let createModuleWithDirectionFlag = false;
|
||||
const REEXPORTED_OBJECTS = new WeakMap();
|
||||
/**
|
||||
* Constructs the `__turbopack_context__` object for a module.
|
||||
*/ function Context(module, exports) {
|
||||
this.m = module;
|
||||
// We need to store this here instead of accessing it from the module object to:
|
||||
// 1. Make it available to factories directly, since we rewrite `this` to
|
||||
// `__turbopack_context__.e` in CJS modules.
|
||||
// 2. Support async modules which rewrite `module.exports` to a promise, so we
|
||||
// can still access the original exports object from functions like
|
||||
// `esmExport`
|
||||
// Ideally we could find a new approach for async modules and drop this property altogether.
|
||||
this.e = exports;
|
||||
}
|
||||
const contextPrototype = Context.prototype;
|
||||
const hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
const toStringTag = typeof Symbol !== 'undefined' && Symbol.toStringTag;
|
||||
function defineProp(obj, name, options) {
|
||||
if (!hasOwnProperty.call(obj, name)) Object.defineProperty(obj, name, options);
|
||||
}
|
||||
function getOverwrittenModule(moduleCache, id) {
|
||||
let module = moduleCache[id];
|
||||
if (!module) {
|
||||
if (createModuleWithDirectionFlag) {
|
||||
// set in development modes for hmr support
|
||||
module = createModuleWithDirection(id);
|
||||
} else {
|
||||
module = createModuleObject(id);
|
||||
}
|
||||
moduleCache[id] = module;
|
||||
}
|
||||
return module;
|
||||
}
|
||||
/**
|
||||
* Creates the module object. Only done here to ensure all module objects have the same shape.
|
||||
*/ function createModuleObject(id) {
|
||||
return {
|
||||
exports: {},
|
||||
error: undefined,
|
||||
id,
|
||||
namespaceObject: undefined
|
||||
};
|
||||
}
|
||||
function createModuleWithDirection(id) {
|
||||
return {
|
||||
exports: {},
|
||||
error: undefined,
|
||||
id,
|
||||
namespaceObject: undefined,
|
||||
parents: [],
|
||||
children: []
|
||||
};
|
||||
}
|
||||
const BindingTag_Value = 0;
|
||||
/**
|
||||
* Adds the getters to the exports object.
|
||||
*/ function esm(exports, bindings) {
|
||||
defineProp(exports, '__esModule', {
|
||||
value: true
|
||||
});
|
||||
if (toStringTag) defineProp(exports, toStringTag, {
|
||||
value: 'Module'
|
||||
});
|
||||
let i = 0;
|
||||
while(i < bindings.length){
|
||||
const propName = bindings[i++];
|
||||
const tagOrFunction = bindings[i++];
|
||||
if (typeof tagOrFunction === 'number') {
|
||||
if (tagOrFunction === BindingTag_Value) {
|
||||
defineProp(exports, propName, {
|
||||
value: bindings[i++],
|
||||
enumerable: true,
|
||||
writable: false
|
||||
});
|
||||
} else {
|
||||
throw new Error(`unexpected tag: ${tagOrFunction}`);
|
||||
}
|
||||
} else {
|
||||
const getterFn = tagOrFunction;
|
||||
if (typeof bindings[i] === 'function') {
|
||||
const setterFn = bindings[i++];
|
||||
defineProp(exports, propName, {
|
||||
get: getterFn,
|
||||
set: setterFn,
|
||||
enumerable: true
|
||||
});
|
||||
} else {
|
||||
defineProp(exports, propName, {
|
||||
get: getterFn,
|
||||
enumerable: true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Object.seal(exports);
|
||||
}
|
||||
/**
|
||||
* Makes the module an ESM with exports
|
||||
*/ function esmExport(bindings, id) {
|
||||
let module;
|
||||
let exports;
|
||||
if (id != null) {
|
||||
module = getOverwrittenModule(this.c, id);
|
||||
exports = module.exports;
|
||||
} else {
|
||||
module = this.m;
|
||||
exports = this.e;
|
||||
}
|
||||
module.namespaceObject = exports;
|
||||
esm(exports, bindings);
|
||||
}
|
||||
contextPrototype.s = esmExport;
|
||||
function ensureDynamicExports(module, exports) {
|
||||
let reexportedObjects = REEXPORTED_OBJECTS.get(module);
|
||||
if (!reexportedObjects) {
|
||||
REEXPORTED_OBJECTS.set(module, reexportedObjects = []);
|
||||
module.exports = module.namespaceObject = new Proxy(exports, {
|
||||
get (target, prop) {
|
||||
if (hasOwnProperty.call(target, prop) || prop === 'default' || prop === '__esModule') {
|
||||
return Reflect.get(target, prop);
|
||||
}
|
||||
for (const obj of reexportedObjects){
|
||||
const value = Reflect.get(obj, prop);
|
||||
if (value !== undefined) return value;
|
||||
}
|
||||
return undefined;
|
||||
},
|
||||
ownKeys (target) {
|
||||
const keys = Reflect.ownKeys(target);
|
||||
for (const obj of reexportedObjects){
|
||||
for (const key of Reflect.ownKeys(obj)){
|
||||
if (key !== 'default' && !keys.includes(key)) keys.push(key);
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
});
|
||||
}
|
||||
return reexportedObjects;
|
||||
}
|
||||
/**
|
||||
* Dynamically exports properties from an object
|
||||
*/ function dynamicExport(object, id) {
|
||||
let module;
|
||||
let exports;
|
||||
if (id != null) {
|
||||
module = getOverwrittenModule(this.c, id);
|
||||
exports = module.exports;
|
||||
} else {
|
||||
module = this.m;
|
||||
exports = this.e;
|
||||
}
|
||||
const reexportedObjects = ensureDynamicExports(module, exports);
|
||||
if (typeof object === 'object' && object !== null) {
|
||||
reexportedObjects.push(object);
|
||||
}
|
||||
}
|
||||
contextPrototype.j = dynamicExport;
|
||||
function exportValue(value, id) {
|
||||
let module;
|
||||
if (id != null) {
|
||||
module = getOverwrittenModule(this.c, id);
|
||||
} else {
|
||||
module = this.m;
|
||||
}
|
||||
module.exports = value;
|
||||
}
|
||||
contextPrototype.v = exportValue;
|
||||
function exportNamespace(namespace, id) {
|
||||
let module;
|
||||
if (id != null) {
|
||||
module = getOverwrittenModule(this.c, id);
|
||||
} else {
|
||||
module = this.m;
|
||||
}
|
||||
module.exports = module.namespaceObject = namespace;
|
||||
}
|
||||
contextPrototype.n = exportNamespace;
|
||||
function createGetter(obj, key) {
|
||||
return ()=>obj[key];
|
||||
}
|
||||
/**
|
||||
* @returns prototype of the object
|
||||
*/ const getProto = Object.getPrototypeOf ? (obj)=>Object.getPrototypeOf(obj) : (obj)=>obj.__proto__;
|
||||
/** Prototypes that are not expanded for exports */ const LEAF_PROTOTYPES = [
|
||||
null,
|
||||
getProto({}),
|
||||
getProto([]),
|
||||
getProto(getProto)
|
||||
];
|
||||
/**
|
||||
* @param raw
|
||||
* @param ns
|
||||
* @param allowExportDefault
|
||||
* * `false`: will have the raw module as default export
|
||||
* * `true`: will have the default property as default export
|
||||
*/ function interopEsm(raw, ns, allowExportDefault) {
|
||||
const bindings = [];
|
||||
let defaultLocation = -1;
|
||||
for(let current = raw; (typeof current === 'object' || typeof current === 'function') && !LEAF_PROTOTYPES.includes(current); current = getProto(current)){
|
||||
for (const key of Object.getOwnPropertyNames(current)){
|
||||
bindings.push(key, createGetter(raw, key));
|
||||
if (defaultLocation === -1 && key === 'default') {
|
||||
defaultLocation = bindings.length - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
// this is not really correct
|
||||
// we should set the `default` getter if the imported module is a `.cjs file`
|
||||
if (!(allowExportDefault && defaultLocation >= 0)) {
|
||||
// Replace the binding with one for the namespace itself in order to preserve iteration order.
|
||||
if (defaultLocation >= 0) {
|
||||
// Replace the getter with the value
|
||||
bindings.splice(defaultLocation, 1, BindingTag_Value, raw);
|
||||
} else {
|
||||
bindings.push('default', BindingTag_Value, raw);
|
||||
}
|
||||
}
|
||||
esm(ns, bindings);
|
||||
return ns;
|
||||
}
|
||||
function createNS(raw) {
|
||||
if (typeof raw === 'function') {
|
||||
return function(...args) {
|
||||
return raw.apply(this, args);
|
||||
};
|
||||
} else {
|
||||
return Object.create(null);
|
||||
}
|
||||
}
|
||||
function esmImport(id) {
|
||||
const module = getOrInstantiateModuleFromParent(id, this.m);
|
||||
// any ES module has to have `module.namespaceObject` defined.
|
||||
if (module.namespaceObject) return module.namespaceObject;
|
||||
// only ESM can be an async module, so we don't need to worry about exports being a promise here.
|
||||
const raw = module.exports;
|
||||
return module.namespaceObject = interopEsm(raw, createNS(raw), raw && raw.__esModule);
|
||||
}
|
||||
contextPrototype.i = esmImport;
|
||||
function asyncLoader(moduleId) {
|
||||
const loader = this.r(moduleId);
|
||||
return loader(esmImport.bind(this));
|
||||
}
|
||||
contextPrototype.A = asyncLoader;
|
||||
// Add a simple runtime require so that environments without one can still pass
|
||||
// `typeof require` CommonJS checks so that exports are correctly registered.
|
||||
const runtimeRequire = // @ts-ignore
|
||||
typeof require === 'function' ? require : function require1() {
|
||||
throw new Error('Unexpected use of runtime require');
|
||||
};
|
||||
contextPrototype.t = runtimeRequire;
|
||||
function commonJsRequire(id) {
|
||||
return getOrInstantiateModuleFromParent(id, this.m).exports;
|
||||
}
|
||||
contextPrototype.r = commonJsRequire;
|
||||
/**
|
||||
* Remove fragments and query parameters since they are never part of the context map keys
|
||||
*
|
||||
* This matches how we parse patterns at resolving time. Arguably we should only do this for
|
||||
* strings passed to `import` but the resolve does it for `import` and `require` and so we do
|
||||
* here as well.
|
||||
*/ function parseRequest(request) {
|
||||
// Per the URI spec fragments can contain `?` characters, so we should trim it off first
|
||||
// https://datatracker.ietf.org/doc/html/rfc3986#section-3.5
|
||||
const hashIndex = request.indexOf('#');
|
||||
if (hashIndex !== -1) {
|
||||
request = request.substring(0, hashIndex);
|
||||
}
|
||||
const queryIndex = request.indexOf('?');
|
||||
if (queryIndex !== -1) {
|
||||
request = request.substring(0, queryIndex);
|
||||
}
|
||||
return request;
|
||||
}
|
||||
/**
|
||||
* `require.context` and require/import expression runtime.
|
||||
*/ function moduleContext(map) {
|
||||
function moduleContext(id) {
|
||||
id = parseRequest(id);
|
||||
if (hasOwnProperty.call(map, id)) {
|
||||
return map[id].module();
|
||||
}
|
||||
const e = new Error(`Cannot find module '${id}'`);
|
||||
e.code = 'MODULE_NOT_FOUND';
|
||||
throw e;
|
||||
}
|
||||
moduleContext.keys = ()=>{
|
||||
return Object.keys(map);
|
||||
};
|
||||
moduleContext.resolve = (id)=>{
|
||||
id = parseRequest(id);
|
||||
if (hasOwnProperty.call(map, id)) {
|
||||
return map[id].id();
|
||||
}
|
||||
const e = new Error(`Cannot find module '${id}'`);
|
||||
e.code = 'MODULE_NOT_FOUND';
|
||||
throw e;
|
||||
};
|
||||
moduleContext.import = async (id)=>{
|
||||
return await moduleContext(id);
|
||||
};
|
||||
return moduleContext;
|
||||
}
|
||||
contextPrototype.f = moduleContext;
|
||||
/**
|
||||
* Returns the path of a chunk defined by its data.
|
||||
*/ function getChunkPath(chunkData) {
|
||||
return typeof chunkData === 'string' ? chunkData : chunkData.path;
|
||||
}
|
||||
function isPromise(maybePromise) {
|
||||
return maybePromise != null && typeof maybePromise === 'object' && 'then' in maybePromise && typeof maybePromise.then === 'function';
|
||||
}
|
||||
function isAsyncModuleExt(obj) {
|
||||
return turbopackQueues in obj;
|
||||
}
|
||||
function createPromise() {
|
||||
let resolve;
|
||||
let reject;
|
||||
const promise = new Promise((res, rej)=>{
|
||||
reject = rej;
|
||||
resolve = res;
|
||||
});
|
||||
return {
|
||||
promise,
|
||||
resolve: resolve,
|
||||
reject: reject
|
||||
};
|
||||
}
|
||||
// Load the CompressedmoduleFactories of a chunk into the `moduleFactories` Map.
|
||||
// The CompressedModuleFactories format is
|
||||
// - 1 or more module ids
|
||||
// - a module factory function
|
||||
// So walking this is a little complex but the flat structure is also fast to
|
||||
// traverse, we can use `typeof` operators to distinguish the two cases.
|
||||
function installCompressedModuleFactories(chunkModules, offset, moduleFactories, newModuleId) {
|
||||
let i = offset;
|
||||
while(i < chunkModules.length){
|
||||
let end = i + 1;
|
||||
// Find our factory function
|
||||
while(end < chunkModules.length && typeof chunkModules[end] !== 'function'){
|
||||
end++;
|
||||
}
|
||||
if (end === chunkModules.length) {
|
||||
throw new Error('malformed chunk format, expected a factory function');
|
||||
}
|
||||
// Install the factory for each module ID that doesn't already have one.
|
||||
// When some IDs in this group already have a factory, reuse that existing
|
||||
// group factory for the missing IDs to keep all IDs in the group consistent.
|
||||
// Otherwise, install the factory from this chunk.
|
||||
const moduleFactoryFn = chunkModules[end];
|
||||
let existingGroupFactory = undefined;
|
||||
for(let j = i; j < end; j++){
|
||||
const id = chunkModules[j];
|
||||
const existingFactory = moduleFactories.get(id);
|
||||
if (existingFactory) {
|
||||
existingGroupFactory = existingFactory;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const factoryToInstall = existingGroupFactory ?? moduleFactoryFn;
|
||||
let didInstallFactory = false;
|
||||
for(let j = i; j < end; j++){
|
||||
const id = chunkModules[j];
|
||||
if (!moduleFactories.has(id)) {
|
||||
if (!didInstallFactory) {
|
||||
if (factoryToInstall === moduleFactoryFn) {
|
||||
applyModuleFactoryName(moduleFactoryFn);
|
||||
}
|
||||
didInstallFactory = true;
|
||||
}
|
||||
moduleFactories.set(id, factoryToInstall);
|
||||
newModuleId?.(id);
|
||||
}
|
||||
}
|
||||
i = end + 1; // end is pointing at the last factory advance to the next id or the end of the array.
|
||||
}
|
||||
}
|
||||
// everything below is adapted from webpack
|
||||
// https://github.com/webpack/webpack/blob/6be4065ade1e252c1d8dcba4af0f43e32af1bdc1/lib/runtime/AsyncModuleRuntimeModule.js#L13
|
||||
const turbopackQueues = Symbol('turbopack queues');
|
||||
const turbopackExports = Symbol('turbopack exports');
|
||||
const turbopackError = Symbol('turbopack error');
|
||||
function resolveQueue(queue) {
|
||||
if (queue && queue.status !== 1) {
|
||||
queue.status = 1;
|
||||
queue.forEach((fn)=>fn.queueCount--);
|
||||
queue.forEach((fn)=>fn.queueCount-- ? fn.queueCount++ : fn());
|
||||
}
|
||||
}
|
||||
function wrapDeps(deps) {
|
||||
return deps.map((dep)=>{
|
||||
if (dep !== null && typeof dep === 'object') {
|
||||
if (isAsyncModuleExt(dep)) return dep;
|
||||
if (isPromise(dep)) {
|
||||
const queue = Object.assign([], {
|
||||
status: 0
|
||||
});
|
||||
const obj = {
|
||||
[turbopackExports]: {},
|
||||
[turbopackQueues]: (fn)=>fn(queue)
|
||||
};
|
||||
dep.then((res)=>{
|
||||
obj[turbopackExports] = res;
|
||||
resolveQueue(queue);
|
||||
}, (err)=>{
|
||||
obj[turbopackError] = err;
|
||||
resolveQueue(queue);
|
||||
});
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
return {
|
||||
[turbopackExports]: dep,
|
||||
[turbopackQueues]: ()=>{}
|
||||
};
|
||||
});
|
||||
}
|
||||
function asyncModule(body, hasAwait) {
|
||||
const module = this.m;
|
||||
const queue = hasAwait ? Object.assign([], {
|
||||
status: -1
|
||||
}) : undefined;
|
||||
const depQueues = new Set();
|
||||
const { resolve, reject, promise: rawPromise } = createPromise();
|
||||
const promise = Object.assign(rawPromise, {
|
||||
[turbopackExports]: module.exports,
|
||||
[turbopackQueues]: (fn)=>{
|
||||
queue && fn(queue);
|
||||
depQueues.forEach(fn);
|
||||
promise['catch'](()=>{});
|
||||
}
|
||||
});
|
||||
const attributes = {
|
||||
get () {
|
||||
return promise;
|
||||
},
|
||||
set (v) {
|
||||
// Calling `esmExport` leads to this.
|
||||
if (v !== promise) {
|
||||
promise[turbopackExports] = v;
|
||||
}
|
||||
}
|
||||
};
|
||||
Object.defineProperty(module, 'exports', attributes);
|
||||
Object.defineProperty(module, 'namespaceObject', attributes);
|
||||
function handleAsyncDependencies(deps) {
|
||||
const currentDeps = wrapDeps(deps);
|
||||
const getResult = ()=>currentDeps.map((d)=>{
|
||||
if (d[turbopackError]) throw d[turbopackError];
|
||||
return d[turbopackExports];
|
||||
});
|
||||
const { promise, resolve } = createPromise();
|
||||
const fn = Object.assign(()=>resolve(getResult), {
|
||||
queueCount: 0
|
||||
});
|
||||
function fnQueue(q) {
|
||||
if (q !== queue && !depQueues.has(q)) {
|
||||
depQueues.add(q);
|
||||
if (q && q.status === 0) {
|
||||
fn.queueCount++;
|
||||
q.push(fn);
|
||||
}
|
||||
}
|
||||
}
|
||||
currentDeps.map((dep)=>dep[turbopackQueues](fnQueue));
|
||||
return fn.queueCount ? promise : getResult();
|
||||
}
|
||||
function asyncResult(err) {
|
||||
if (err) {
|
||||
reject(promise[turbopackError] = err);
|
||||
} else {
|
||||
resolve(promise[turbopackExports]);
|
||||
}
|
||||
resolveQueue(queue);
|
||||
}
|
||||
body(handleAsyncDependencies, asyncResult);
|
||||
if (queue && queue.status === -1) {
|
||||
queue.status = 0;
|
||||
}
|
||||
}
|
||||
contextPrototype.a = asyncModule;
|
||||
/**
|
||||
* A pseudo "fake" URL object to resolve to its relative path.
|
||||
*
|
||||
* When UrlRewriteBehavior is set to relative, calls to the `new URL()` will construct url without base using this
|
||||
* runtime function to generate context-agnostic urls between different rendering context, i.e ssr / client to avoid
|
||||
* hydration mismatch.
|
||||
*
|
||||
* This is based on webpack's existing implementation:
|
||||
* https://github.com/webpack/webpack/blob/87660921808566ef3b8796f8df61bd79fc026108/lib/runtime/RelativeUrlRuntimeModule.js
|
||||
*/ const relativeURL = function relativeURL(inputUrl) {
|
||||
const realUrl = new URL(inputUrl, 'x:/');
|
||||
const values = {};
|
||||
for(const key in realUrl)values[key] = realUrl[key];
|
||||
values.href = inputUrl;
|
||||
values.pathname = inputUrl.replace(/[?#].*/, '');
|
||||
values.origin = values.protocol = '';
|
||||
values.toString = values.toJSON = (..._args)=>inputUrl;
|
||||
for(const key in values)Object.defineProperty(this, key, {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
value: values[key]
|
||||
});
|
||||
};
|
||||
relativeURL.prototype = URL.prototype;
|
||||
contextPrototype.U = relativeURL;
|
||||
/**
|
||||
* Utility function to ensure all variants of an enum are handled.
|
||||
*/ function invariant(never, computeMessage) {
|
||||
throw new Error(`Invariant: ${computeMessage(never)}`);
|
||||
}
|
||||
/**
|
||||
* Constructs an error message for when a module factory is not available.
|
||||
*/ function factoryNotAvailableMessage(moduleId, sourceType, sourceData) {
|
||||
let instantiationReason;
|
||||
switch(sourceType){
|
||||
case 0:
|
||||
instantiationReason = `as a runtime entry of chunk ${sourceData}`;
|
||||
break;
|
||||
case 1:
|
||||
instantiationReason = `because it was required from module ${sourceData}`;
|
||||
break;
|
||||
case 2:
|
||||
instantiationReason = 'because of an HMR update';
|
||||
break;
|
||||
default:
|
||||
invariant(sourceType, (sourceType)=>`Unknown source type: ${sourceType}`);
|
||||
}
|
||||
return `Module ${moduleId} was instantiated ${instantiationReason}, but the module factory is not available.`;
|
||||
}
|
||||
/**
|
||||
* A stub function to make `require` available but non-functional in ESM.
|
||||
*/ function requireStub(_moduleId) {
|
||||
throw new Error('dynamic usage of require is not supported');
|
||||
}
|
||||
contextPrototype.z = requireStub;
|
||||
// Make `globalThis` available to the module in a way that cannot be shadowed by a local variable.
|
||||
contextPrototype.g = globalThis;
|
||||
function applyModuleFactoryName(factory) {
|
||||
// Give the module factory a nice name to improve stack traces.
|
||||
Object.defineProperty(factory, 'name', {
|
||||
value: 'module evaluation'
|
||||
});
|
||||
}
|
||||
/// <reference path="../shared/runtime/runtime-utils.ts" />
|
||||
/// A 'base' utilities to support runtime can have externals.
|
||||
/// Currently this is for node.js / edge runtime both.
|
||||
/// If a fn requires node.js specific behavior, it should be placed in `node-external-utils` instead.
|
||||
async function externalImport(id) {
|
||||
let raw;
|
||||
try {
|
||||
raw = await import(id);
|
||||
} catch (err) {
|
||||
// TODO(alexkirsz) This can happen when a client-side module tries to load
|
||||
// an external module we don't provide a shim for (e.g. querystring, url).
|
||||
// For now, we fail semi-silently, but in the future this should be a
|
||||
// compilation error.
|
||||
throw new Error(`Failed to load external module ${id}: ${err}`);
|
||||
}
|
||||
if (raw && raw.__esModule && raw.default && 'default' in raw.default) {
|
||||
return interopEsm(raw.default, createNS(raw), true);
|
||||
}
|
||||
return raw;
|
||||
}
|
||||
contextPrototype.y = externalImport;
|
||||
function externalRequire(id, thunk, esm = false) {
|
||||
let raw;
|
||||
try {
|
||||
raw = thunk();
|
||||
} catch (err) {
|
||||
// TODO(alexkirsz) This can happen when a client-side module tries to load
|
||||
// an external module we don't provide a shim for (e.g. querystring, url).
|
||||
// For now, we fail semi-silently, but in the future this should be a
|
||||
// compilation error.
|
||||
throw new Error(`Failed to load external module ${id}: ${err}`);
|
||||
}
|
||||
if (!esm || raw.__esModule) {
|
||||
return raw;
|
||||
}
|
||||
return interopEsm(raw, createNS(raw), true);
|
||||
}
|
||||
externalRequire.resolve = (id, options)=>{
|
||||
return require.resolve(id, options);
|
||||
};
|
||||
contextPrototype.x = externalRequire;
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */ const path = require('path');
|
||||
const relativePathToRuntimeRoot = path.relative(RUNTIME_PUBLIC_PATH, '.');
|
||||
// Compute the relative path to the `distDir`.
|
||||
const relativePathToDistRoot = path.join(relativePathToRuntimeRoot, RELATIVE_ROOT_PATH);
|
||||
const RUNTIME_ROOT = path.resolve(__filename, relativePathToRuntimeRoot);
|
||||
// Compute the absolute path to the root, by stripping distDir from the absolute path to this file.
|
||||
const ABSOLUTE_ROOT = path.resolve(__filename, relativePathToDistRoot);
|
||||
/**
|
||||
* Returns an absolute path to the given module path.
|
||||
* Module path should be relative, either path to a file or a directory.
|
||||
*
|
||||
* This fn allows to calculate an absolute path for some global static values, such as
|
||||
* `__dirname` or `import.meta.url` that Turbopack will not embeds in compile time.
|
||||
* See ImportMetaBinding::code_generation for the usage.
|
||||
*/ function resolveAbsolutePath(modulePath) {
|
||||
if (modulePath) {
|
||||
return path.join(ABSOLUTE_ROOT, modulePath);
|
||||
}
|
||||
return ABSOLUTE_ROOT;
|
||||
}
|
||||
Context.prototype.P = resolveAbsolutePath;
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */ /// <reference path="../shared/runtime/runtime-utils.ts" />
|
||||
function readWebAssemblyAsResponse(path) {
|
||||
const { createReadStream } = require('fs');
|
||||
const { Readable } = require('stream');
|
||||
const stream = createReadStream(path);
|
||||
// @ts-ignore unfortunately there's a slight type mismatch with the stream.
|
||||
return new Response(Readable.toWeb(stream), {
|
||||
headers: {
|
||||
'content-type': 'application/wasm'
|
||||
}
|
||||
});
|
||||
}
|
||||
async function compileWebAssemblyFromPath(path) {
|
||||
const response = readWebAssemblyAsResponse(path);
|
||||
return await WebAssembly.compileStreaming(response);
|
||||
}
|
||||
async function instantiateWebAssemblyFromPath(path, importsObj) {
|
||||
const response = readWebAssemblyAsResponse(path);
|
||||
const { instance } = await WebAssembly.instantiateStreaming(response, importsObj);
|
||||
return instance.exports;
|
||||
}
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */ /// <reference path="../../shared/runtime/runtime-utils.ts" />
|
||||
/// <reference path="../../shared-node/base-externals-utils.ts" />
|
||||
/// <reference path="../../shared-node/node-externals-utils.ts" />
|
||||
/// <reference path="../../shared-node/node-wasm-utils.ts" />
|
||||
/// <reference path="./nodejs-globals.d.ts" />
|
||||
/**
|
||||
* Base Node.js runtime shared between production and development.
|
||||
* Contains chunk loading, module caching, and other non-HMR functionality.
|
||||
*/ process.env.TURBOPACK = '1';
|
||||
const url = require('url');
|
||||
const moduleFactories = new Map();
|
||||
const moduleCache = Object.create(null);
|
||||
/**
|
||||
* Returns an absolute path to the given module's id.
|
||||
*/ function resolvePathFromModule(moduleId) {
|
||||
const exported = this.r(moduleId);
|
||||
const exportedPath = exported?.default ?? exported;
|
||||
if (typeof exportedPath !== 'string') {
|
||||
return exported;
|
||||
}
|
||||
const strippedAssetPrefix = exportedPath.slice(ASSET_PREFIX.length);
|
||||
const resolved = path.resolve(RUNTIME_ROOT, strippedAssetPrefix);
|
||||
return url.pathToFileURL(resolved).href;
|
||||
}
|
||||
/**
|
||||
* Exports a URL value. No suffix is added in Node.js runtime.
|
||||
*/ function exportUrl(urlValue, id) {
|
||||
exportValue.call(this, urlValue, id);
|
||||
}
|
||||
function loadRuntimeChunk(sourcePath, chunkData) {
|
||||
if (typeof chunkData === 'string') {
|
||||
loadRuntimeChunkPath(sourcePath, chunkData);
|
||||
} else {
|
||||
loadRuntimeChunkPath(sourcePath, chunkData.path);
|
||||
}
|
||||
}
|
||||
const loadedChunks = new Set();
|
||||
const unsupportedLoadChunk = Promise.resolve(undefined);
|
||||
const loadedChunk = Promise.resolve(undefined);
|
||||
const chunkCache = new Map();
|
||||
function clearChunkCache() {
|
||||
chunkCache.clear();
|
||||
loadedChunks.clear();
|
||||
}
|
||||
function loadRuntimeChunkPath(sourcePath, chunkPath) {
|
||||
if (!isJs(chunkPath)) {
|
||||
// We only support loading JS chunks in Node.js.
|
||||
// This branch can be hit when trying to load a CSS chunk.
|
||||
return;
|
||||
}
|
||||
if (loadedChunks.has(chunkPath)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const resolved = path.resolve(RUNTIME_ROOT, chunkPath);
|
||||
const chunkModules = require(resolved);
|
||||
installCompressedModuleFactories(chunkModules, 0, moduleFactories);
|
||||
loadedChunks.add(chunkPath);
|
||||
} catch (cause) {
|
||||
let errorMessage = `Failed to load chunk ${chunkPath}`;
|
||||
if (sourcePath) {
|
||||
errorMessage += ` from runtime for chunk ${sourcePath}`;
|
||||
}
|
||||
const error = new Error(errorMessage, {
|
||||
cause
|
||||
});
|
||||
error.name = 'ChunkLoadError';
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
function loadChunkAsync(chunkData) {
|
||||
const chunkPath = typeof chunkData === 'string' ? chunkData : chunkData.path;
|
||||
if (!isJs(chunkPath)) {
|
||||
// We only support loading JS chunks in Node.js.
|
||||
// This branch can be hit when trying to load a CSS chunk.
|
||||
return unsupportedLoadChunk;
|
||||
}
|
||||
let entry = chunkCache.get(chunkPath);
|
||||
if (entry === undefined) {
|
||||
try {
|
||||
// resolve to an absolute path to simplify `require` handling
|
||||
const resolved = path.resolve(RUNTIME_ROOT, chunkPath);
|
||||
// TODO: consider switching to `import()` to enable concurrent chunk loading and async file io
|
||||
// However this is incompatible with hot reloading (since `import` doesn't use the require cache)
|
||||
const chunkModules = require(resolved);
|
||||
installCompressedModuleFactories(chunkModules, 0, moduleFactories);
|
||||
entry = loadedChunk;
|
||||
} catch (cause) {
|
||||
const errorMessage = `Failed to load chunk ${chunkPath} from module ${this.m.id}`;
|
||||
const error = new Error(errorMessage, {
|
||||
cause
|
||||
});
|
||||
error.name = 'ChunkLoadError';
|
||||
// Cache the failure promise, future requests will also get this same rejection
|
||||
entry = Promise.reject(error);
|
||||
}
|
||||
chunkCache.set(chunkPath, entry);
|
||||
}
|
||||
// TODO: Return an instrumented Promise that React can use instead of relying on referential equality.
|
||||
return entry;
|
||||
}
|
||||
contextPrototype.l = loadChunkAsync;
|
||||
function loadChunkAsyncByUrl(chunkUrl) {
|
||||
const path1 = url.fileURLToPath(new URL(chunkUrl, RUNTIME_ROOT));
|
||||
return loadChunkAsync.call(this, path1);
|
||||
}
|
||||
contextPrototype.L = loadChunkAsyncByUrl;
|
||||
function loadWebAssembly(chunkPath, _edgeModule, imports) {
|
||||
const resolved = path.resolve(RUNTIME_ROOT, chunkPath);
|
||||
return instantiateWebAssemblyFromPath(resolved, imports);
|
||||
}
|
||||
contextPrototype.w = loadWebAssembly;
|
||||
function loadWebAssemblyModule(chunkPath, _edgeModule) {
|
||||
const resolved = path.resolve(RUNTIME_ROOT, chunkPath);
|
||||
return compileWebAssemblyFromPath(resolved);
|
||||
}
|
||||
contextPrototype.u = loadWebAssemblyModule;
|
||||
/**
|
||||
* Creates a Node.js worker thread by instantiating the given WorkerConstructor
|
||||
* with the appropriate path and options, including forwarded globals.
|
||||
*
|
||||
* @param WorkerConstructor The Worker constructor from worker_threads
|
||||
* @param workerPath Path to the worker entry chunk
|
||||
* @param workerOptions options to pass to the Worker constructor (optional)
|
||||
*/ function createWorker(WorkerConstructor, workerPath, workerOptions) {
|
||||
// Build the forwarded globals object
|
||||
const forwardedGlobals = {};
|
||||
for (const name of WORKER_FORWARDED_GLOBALS){
|
||||
forwardedGlobals[name] = globalThis[name];
|
||||
}
|
||||
// Merge workerData with forwarded globals
|
||||
const existingWorkerData = workerOptions?.workerData || {};
|
||||
const options = {
|
||||
...workerOptions,
|
||||
workerData: {
|
||||
...typeof existingWorkerData === 'object' ? existingWorkerData : {},
|
||||
__turbopack_globals__: forwardedGlobals
|
||||
}
|
||||
};
|
||||
return new WorkerConstructor(workerPath, options);
|
||||
}
|
||||
const regexJsUrl = /\.js(?:\?[^#]*)?(?:#.*)?$/;
|
||||
/**
|
||||
* Checks if a given path/URL ends with .js, optionally followed by ?query or #fragment.
|
||||
*/ function isJs(chunkUrlOrPath) {
|
||||
return regexJsUrl.test(chunkUrlOrPath);
|
||||
}
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */ /// <reference path="./runtime-base.ts" />
|
||||
/**
|
||||
* Production Node.js runtime.
|
||||
* Uses ModuleWithDirection and simple module instantiation without HMR support.
|
||||
*/ // moduleCache and moduleFactories are declared in runtime-base.ts
|
||||
// this is read in runtime-utils.ts so it creates a module with direction for hmr
|
||||
createModuleWithDirectionFlag = true;
|
||||
const nodeContextPrototype = Context.prototype;
|
||||
nodeContextPrototype.q = exportUrl;
|
||||
nodeContextPrototype.M = moduleFactories;
|
||||
// Cast moduleCache to ModuleWithDirection for production mode
|
||||
nodeContextPrototype.c = moduleCache;
|
||||
nodeContextPrototype.R = resolvePathFromModule;
|
||||
nodeContextPrototype.b = createWorker;
|
||||
nodeContextPrototype.C = clearChunkCache;
|
||||
function instantiateModule(id, sourceType, sourceData) {
|
||||
const moduleFactory = moduleFactories.get(id);
|
||||
if (typeof moduleFactory !== 'function') {
|
||||
// This can happen if modules incorrectly handle HMR disposes/updates,
|
||||
// e.g. when they keep a `setTimeout` around which still executes old code
|
||||
// and contains e.g. a `require("something")` call.
|
||||
throw new Error(factoryNotAvailableMessage(id, sourceType, sourceData));
|
||||
}
|
||||
const module1 = createModuleWithDirection(id);
|
||||
const exports = module1.exports;
|
||||
moduleCache[id] = module1;
|
||||
const context = new Context(module1, exports);
|
||||
// NOTE(alexkirsz) This can fail when the module encounters a runtime error.
|
||||
try {
|
||||
moduleFactory(context, module1, exports);
|
||||
} catch (error) {
|
||||
module1.error = error;
|
||||
throw error;
|
||||
}
|
||||
;
|
||||
module1.loaded = true;
|
||||
if (module1.namespaceObject && module1.exports !== module1.namespaceObject) {
|
||||
// in case of a circular dependency: cjs1 -> esm2 -> cjs1
|
||||
interopEsm(module1.exports, module1.namespaceObject);
|
||||
}
|
||||
return module1;
|
||||
}
|
||||
/**
|
||||
* Retrieves a module from the cache, or instantiate it if it is not cached.
|
||||
*/ // @ts-ignore
|
||||
function getOrInstantiateModuleFromParent(id, sourceModule) {
|
||||
const module1 = moduleCache[id];
|
||||
if (module1) {
|
||||
if (module1.error) {
|
||||
throw module1.error;
|
||||
}
|
||||
return module1;
|
||||
}
|
||||
return instantiateModule(id, SourceType.Parent, sourceModule.id);
|
||||
}
|
||||
/**
|
||||
* Instantiates a runtime module.
|
||||
*/ function instantiateRuntimeModule(chunkPath, moduleId) {
|
||||
return instantiateModule(moduleId, SourceType.Runtime, chunkPath);
|
||||
}
|
||||
/**
|
||||
* Retrieves a module from the cache, or instantiate it as a runtime module if it is not cached.
|
||||
*/ // @ts-ignore TypeScript doesn't separate this module space from the browser runtime
|
||||
function getOrInstantiateRuntimeModule(chunkPath, moduleId) {
|
||||
const module1 = moduleCache[moduleId];
|
||||
if (module1) {
|
||||
if (module1.error) {
|
||||
throw module1.error;
|
||||
}
|
||||
return module1;
|
||||
}
|
||||
return instantiateRuntimeModule(chunkPath, moduleId);
|
||||
}
|
||||
module.exports = (sourcePath)=>({
|
||||
m: (id)=>getOrInstantiateRuntimeModule(sourcePath, id),
|
||||
c: (chunkData)=>loadRuntimeChunk(sourcePath, chunkData)
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=%5Bturbopack%5D_runtime.js.map
|
||||
11
.next/build/chunks/[turbopack]_runtime.js.map
Normal file
11
.next/build/chunks/[turbopack]_runtime.js.map
Normal file
File diff suppressed because one or more lines are too long
6814
.next/build/chunks/node_modules_20v-8wl._.js
Normal file
6814
.next/build/chunks/node_modules_20v-8wl._.js
Normal file
File diff suppressed because it is too large
Load Diff
47
.next/build/chunks/node_modules_20v-8wl._.js.map
Normal file
47
.next/build/chunks/node_modules_20v-8wl._.js.map
Normal file
File diff suppressed because one or more lines are too long
1
.next/build/package.json
Normal file
1
.next/build/package.json
Normal file
@ -0,0 +1 @@
|
||||
{"type": "commonjs"}
|
||||
1
.next/cache/.previewinfo
vendored
Normal file
1
.next/cache/.previewinfo
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"previewModeId":"4dbaac0b264ca6f91a02194460243f7a","previewModeSigningKey":"f70c7152b8842c100103613c1289ed7d989a58aafbc16a56530e990f2cc7e131","previewModeEncryptionKey":"1a76359dbe856ec6a566270d9c9e3288bdc7e018dbd6e4528829d954c9bd157d","expireAt":1783500404112}
|
||||
1
.next/cache/.rscinfo
vendored
Normal file
1
.next/cache/.rscinfo
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"encryption.key":"ni9seIaXPnf9W/IK9IjxOPES1FOAXuJEAQLMrXy71pI=","encryption.expire_at":1783500404048}
|
||||
1
.next/cache/.tsbuildinfo
vendored
Normal file
1
.next/cache/.tsbuildinfo
vendored
Normal file
File diff suppressed because one or more lines are too long
6
.next/diagnostics/build-diagnostics.json
Normal file
6
.next/diagnostics/build-diagnostics.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"buildStage": "static-generation",
|
||||
"buildOptions": {
|
||||
"useBuildWorker": "true"
|
||||
}
|
||||
}
|
||||
1
.next/diagnostics/framework.json
Normal file
1
.next/diagnostics/framework.json
Normal file
@ -0,0 +1 @@
|
||||
{"name":"Next.js","version":"16.2.9"}
|
||||
24
.next/diagnostics/route-bundle-stats.json
Normal file
24
.next/diagnostics/route-bundle-stats.json
Normal file
@ -0,0 +1,24 @@
|
||||
[
|
||||
{
|
||||
"route": "/",
|
||||
"firstLoadUncompressedJsBytes": 513840,
|
||||
"firstLoadChunkPaths": [
|
||||
".next/static/chunks/158myu8e_yme3.js",
|
||||
".next/static/chunks/3z5q_p4msz2ha.js",
|
||||
".next/static/chunks/2ckqm4grawju5.js",
|
||||
".next/static/chunks/2nykiepra7i1k.js",
|
||||
".next/static/chunks/turbopack-1n9x74gl-i54j.js"
|
||||
]
|
||||
},
|
||||
{
|
||||
"route": "/_not-found",
|
||||
"firstLoadUncompressedJsBytes": 513840,
|
||||
"firstLoadChunkPaths": [
|
||||
".next/static/chunks/158myu8e_yme3.js",
|
||||
".next/static/chunks/3z5q_p4msz2ha.js",
|
||||
".next/static/chunks/2ckqm4grawju5.js",
|
||||
".next/static/chunks/2nykiepra7i1k.js",
|
||||
".next/static/chunks/turbopack-1n9x74gl-i54j.js"
|
||||
]
|
||||
}
|
||||
]
|
||||
5
.next/export-detail.json
Normal file
5
.next/export-detail.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 1,
|
||||
"outDirectory": "/home/nara/apps/web/out",
|
||||
"success": true
|
||||
}
|
||||
6
.next/export-marker.json
Normal file
6
.next/export-marker.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"hasExportPathMap": false,
|
||||
"exportTrailingSlash": false,
|
||||
"isNextImageImported": false
|
||||
}
|
||||
13
.next/fallback-build-manifest.json
Normal file
13
.next/fallback-build-manifest.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"pages": {
|
||||
"/_app": []
|
||||
},
|
||||
"devFiles": [],
|
||||
"polyfillFiles": [],
|
||||
"lowPriorityFiles": [
|
||||
"static/W0ph6BZ8oDeJaHcE9fuII/_buildManifest.js",
|
||||
"static/W0ph6BZ8oDeJaHcE9fuII/_ssgManifest.js",
|
||||
"static/W0ph6BZ8oDeJaHcE9fuII/_clientMiddlewareManifest.js"
|
||||
],
|
||||
"rootMainFiles": []
|
||||
}
|
||||
68
.next/images-manifest.json
Normal file
68
.next/images-manifest.json
Normal file
@ -0,0 +1,68 @@
|
||||
{
|
||||
"version": 1,
|
||||
"images": {
|
||||
"deviceSizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840
|
||||
],
|
||||
"imageSizes": [
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
],
|
||||
"path": "/_next/image",
|
||||
"loader": "default",
|
||||
"loaderFile": "",
|
||||
"domains": [],
|
||||
"disableStaticImages": false,
|
||||
"minimumCacheTTL": 14400,
|
||||
"formats": [
|
||||
"image/webp"
|
||||
],
|
||||
"maximumRedirects": 3,
|
||||
"maximumResponseBody": 50000000,
|
||||
"dangerouslyAllowLocalIP": false,
|
||||
"dangerouslyAllowSVG": false,
|
||||
"contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
|
||||
"contentDispositionType": "attachment",
|
||||
"localPatterns": [
|
||||
{
|
||||
"pathname": "^(?:(?!(?:^|\\/)\\.{1,2}(?:\\/|$))(?:(?:(?!(?:^|\\/)\\.{1,2}(?:\\/|$)).)*?)\\/?)$",
|
||||
"search": ""
|
||||
}
|
||||
],
|
||||
"remotePatterns": [],
|
||||
"qualities": [
|
||||
75
|
||||
],
|
||||
"unoptimized": true,
|
||||
"customCacheHandler": false,
|
||||
"sizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840,
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
]
|
||||
}
|
||||
}
|
||||
1
.next/next-minimal-server.js.nft.json
Normal file
1
.next/next-minimal-server.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
1
.next/next-server.js.nft.json
Normal file
1
.next/next-server.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
1
.next/package.json
Normal file
1
.next/package.json
Normal file
@ -0,0 +1 @@
|
||||
{"type": "commonjs"}
|
||||
114
.next/prerender-manifest.json
Normal file
114
.next/prerender-manifest.json
Normal file
@ -0,0 +1,114 @@
|
||||
{
|
||||
"version": 4,
|
||||
"routes": {
|
||||
"/": {
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/",
|
||||
"dataRoute": "/index.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
},
|
||||
"/_global-error": {
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/_global-error",
|
||||
"dataRoute": "/_global-error.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
},
|
||||
"/_not-found": {
|
||||
"initialStatus": 404,
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/_not-found",
|
||||
"dataRoute": "/_not-found.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
},
|
||||
"/favicon.ico": {
|
||||
"initialHeaders": {
|
||||
"cache-control": "public, max-age=0, must-revalidate",
|
||||
"content-type": "image/x-icon",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/favicon.ico/layout,_N_T_/favicon.ico/route,_N_T_/favicon.ico"
|
||||
},
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/favicon.ico",
|
||||
"dataRoute": null,
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
}
|
||||
},
|
||||
"dynamicRoutes": {},
|
||||
"notFoundRoutes": [],
|
||||
"preview": {
|
||||
"previewModeId": "4dbaac0b264ca6f91a02194460243f7a",
|
||||
"previewModeSigningKey": "f70c7152b8842c100103613c1289ed7d989a58aafbc16a56530e990f2cc7e131",
|
||||
"previewModeEncryptionKey": "1a76359dbe856ec6a566270d9c9e3288bdc7e018dbd6e4528829d954c9bd157d"
|
||||
}
|
||||
}
|
||||
334
.next/required-server-files.js
Normal file
334
.next/required-server-files.js
Normal file
@ -0,0 +1,334 @@
|
||||
self.__SERVER_FILES_MANIFEST={
|
||||
"version": 1,
|
||||
"config": {
|
||||
"env": {},
|
||||
"webpack": null,
|
||||
"typescript": {
|
||||
"ignoreBuildErrors": false
|
||||
},
|
||||
"typedRoutes": false,
|
||||
"distDir": ".next",
|
||||
"cleanDistDir": true,
|
||||
"assetPrefix": "",
|
||||
"cacheMaxMemorySize": 52428800,
|
||||
"configOrigin": "next.config.ts",
|
||||
"useFileSystemPublicRoutes": true,
|
||||
"generateEtags": true,
|
||||
"pageExtensions": [
|
||||
"tsx",
|
||||
"ts",
|
||||
"jsx",
|
||||
"js"
|
||||
],
|
||||
"poweredByHeader": true,
|
||||
"compress": true,
|
||||
"images": {
|
||||
"deviceSizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840
|
||||
],
|
||||
"imageSizes": [
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
],
|
||||
"path": "/_next/image",
|
||||
"loader": "default",
|
||||
"loaderFile": "",
|
||||
"domains": [],
|
||||
"disableStaticImages": false,
|
||||
"minimumCacheTTL": 14400,
|
||||
"formats": [
|
||||
"image/webp"
|
||||
],
|
||||
"maximumRedirects": 3,
|
||||
"maximumResponseBody": 50000000,
|
||||
"dangerouslyAllowLocalIP": false,
|
||||
"dangerouslyAllowSVG": false,
|
||||
"contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
|
||||
"contentDispositionType": "attachment",
|
||||
"localPatterns": [
|
||||
{
|
||||
"pathname": "**",
|
||||
"search": ""
|
||||
}
|
||||
],
|
||||
"remotePatterns": [],
|
||||
"qualities": [
|
||||
75
|
||||
],
|
||||
"unoptimized": true,
|
||||
"customCacheHandler": false
|
||||
},
|
||||
"devIndicators": {
|
||||
"position": "bottom-left"
|
||||
},
|
||||
"onDemandEntries": {
|
||||
"maxInactiveAge": 60000,
|
||||
"pagesBufferLength": 5
|
||||
},
|
||||
"basePath": "",
|
||||
"sassOptions": {},
|
||||
"trailingSlash": false,
|
||||
"i18n": null,
|
||||
"productionBrowserSourceMaps": false,
|
||||
"excludeDefaultMomentLocales": true,
|
||||
"reactProductionProfiling": false,
|
||||
"reactStrictMode": null,
|
||||
"reactMaxHeadersLength": 6000,
|
||||
"httpAgentOptions": {
|
||||
"keepAlive": true
|
||||
},
|
||||
"logging": {
|
||||
"serverFunctions": true,
|
||||
"browserToTerminal": "warn"
|
||||
},
|
||||
"compiler": {},
|
||||
"expireTime": 31536000,
|
||||
"staticPageGenerationTimeout": 60,
|
||||
"output": "export",
|
||||
"modularizeImports": {
|
||||
"@mui/icons-material": {
|
||||
"transform": "@mui/icons-material/{{member}}"
|
||||
},
|
||||
"lodash": {
|
||||
"transform": "lodash/{{member}}"
|
||||
}
|
||||
},
|
||||
"outputFileTracingRoot": "/home/nara/apps/web",
|
||||
"cacheComponents": false,
|
||||
"cacheLife": {
|
||||
"default": {
|
||||
"stale": 300,
|
||||
"revalidate": 900,
|
||||
"expire": 4294967294
|
||||
},
|
||||
"seconds": {
|
||||
"stale": 30,
|
||||
"revalidate": 1,
|
||||
"expire": 60
|
||||
},
|
||||
"minutes": {
|
||||
"stale": 300,
|
||||
"revalidate": 60,
|
||||
"expire": 3600
|
||||
},
|
||||
"hours": {
|
||||
"stale": 300,
|
||||
"revalidate": 3600,
|
||||
"expire": 86400
|
||||
},
|
||||
"days": {
|
||||
"stale": 300,
|
||||
"revalidate": 86400,
|
||||
"expire": 604800
|
||||
},
|
||||
"weeks": {
|
||||
"stale": 300,
|
||||
"revalidate": 604800,
|
||||
"expire": 2592000
|
||||
},
|
||||
"max": {
|
||||
"stale": 300,
|
||||
"revalidate": 2592000,
|
||||
"expire": 31536000
|
||||
}
|
||||
},
|
||||
"cacheHandlers": {},
|
||||
"experimental": {
|
||||
"appNewScrollHandler": false,
|
||||
"useSkewCookie": false,
|
||||
"cssChunking": true,
|
||||
"multiZoneDraftMode": false,
|
||||
"appNavFailHandling": false,
|
||||
"prerenderEarlyExit": true,
|
||||
"serverMinification": true,
|
||||
"linkNoTouchStart": false,
|
||||
"caseSensitiveRoutes": false,
|
||||
"cachedNavigations": false,
|
||||
"partialFallbacks": false,
|
||||
"dynamicOnHover": false,
|
||||
"varyParams": false,
|
||||
"prefetchInlining": false,
|
||||
"preloadEntriesOnStart": true,
|
||||
"clientRouterFilter": true,
|
||||
"clientRouterFilterRedirects": false,
|
||||
"fetchCacheKeyPrefix": "",
|
||||
"proxyPrefetch": "flexible",
|
||||
"optimisticClientCache": true,
|
||||
"manualClientBasePath": false,
|
||||
"cpus": 3,
|
||||
"memoryBasedWorkersCount": false,
|
||||
"imgOptConcurrency": null,
|
||||
"imgOptTimeoutInSeconds": 7,
|
||||
"imgOptMaxInputPixels": 268402689,
|
||||
"imgOptSequentialRead": null,
|
||||
"imgOptSkipMetadata": null,
|
||||
"isrFlushToDisk": true,
|
||||
"workerThreads": false,
|
||||
"optimizeCss": false,
|
||||
"nextScriptWorkers": false,
|
||||
"scrollRestoration": false,
|
||||
"externalDir": false,
|
||||
"disableOptimizedLoading": false,
|
||||
"gzipSize": true,
|
||||
"craCompat": false,
|
||||
"esmExternals": true,
|
||||
"fullySpecified": false,
|
||||
"swcTraceProfiling": false,
|
||||
"forceSwcTransforms": false,
|
||||
"largePageDataBytes": 128000,
|
||||
"typedEnv": false,
|
||||
"parallelServerCompiles": false,
|
||||
"parallelServerBuildTraces": false,
|
||||
"ppr": false,
|
||||
"authInterrupts": false,
|
||||
"webpackMemoryOptimizations": false,
|
||||
"optimizeServerReact": true,
|
||||
"strictRouteTypes": false,
|
||||
"viewTransition": false,
|
||||
"removeUncaughtErrorAndRejectionListeners": false,
|
||||
"validateRSCRequestHeaders": false,
|
||||
"staleTimes": {
|
||||
"dynamic": 0,
|
||||
"static": 300
|
||||
},
|
||||
"reactDebugChannel": true,
|
||||
"serverComponentsHmrCache": true,
|
||||
"staticGenerationMaxConcurrency": 8,
|
||||
"staticGenerationMinPagesPerWorker": 25,
|
||||
"transitionIndicator": false,
|
||||
"gestureTransition": false,
|
||||
"inlineCss": false,
|
||||
"useCache": false,
|
||||
"globalNotFound": false,
|
||||
"browserDebugInfoInTerminal": "warn",
|
||||
"lockDistDir": true,
|
||||
"proxyClientMaxBodySize": 10485760,
|
||||
"hideLogsAfterAbort": false,
|
||||
"mcpServer": true,
|
||||
"turbopackFileSystemCacheForDev": true,
|
||||
"turbopackFileSystemCacheForBuild": false,
|
||||
"turbopackInferModuleSideEffects": true,
|
||||
"turbopackPluginRuntimeStrategy": "childProcesses",
|
||||
"optimizePackageImports": [
|
||||
"lucide-react",
|
||||
"date-fns",
|
||||
"lodash-es",
|
||||
"ramda",
|
||||
"antd",
|
||||
"react-bootstrap",
|
||||
"ahooks",
|
||||
"@ant-design/icons",
|
||||
"@headlessui/react",
|
||||
"@headlessui-float/react",
|
||||
"@heroicons/react/20/solid",
|
||||
"@heroicons/react/24/solid",
|
||||
"@heroicons/react/24/outline",
|
||||
"@visx/visx",
|
||||
"@tremor/react",
|
||||
"rxjs",
|
||||
"@mui/material",
|
||||
"@mui/icons-material",
|
||||
"recharts",
|
||||
"react-use",
|
||||
"effect",
|
||||
"@effect/schema",
|
||||
"@effect/platform",
|
||||
"@effect/platform-node",
|
||||
"@effect/platform-browser",
|
||||
"@effect/platform-bun",
|
||||
"@effect/sql",
|
||||
"@effect/sql-mssql",
|
||||
"@effect/sql-mysql2",
|
||||
"@effect/sql-pg",
|
||||
"@effect/sql-sqlite-node",
|
||||
"@effect/sql-sqlite-bun",
|
||||
"@effect/sql-sqlite-wasm",
|
||||
"@effect/sql-sqlite-react-native",
|
||||
"@effect/rpc",
|
||||
"@effect/rpc-http",
|
||||
"@effect/typeclass",
|
||||
"@effect/experimental",
|
||||
"@effect/opentelemetry",
|
||||
"@material-ui/core",
|
||||
"@material-ui/icons",
|
||||
"@tabler/icons-react",
|
||||
"mui-core",
|
||||
"react-icons/ai",
|
||||
"react-icons/bi",
|
||||
"react-icons/bs",
|
||||
"react-icons/cg",
|
||||
"react-icons/ci",
|
||||
"react-icons/di",
|
||||
"react-icons/fa",
|
||||
"react-icons/fa6",
|
||||
"react-icons/fc",
|
||||
"react-icons/fi",
|
||||
"react-icons/gi",
|
||||
"react-icons/go",
|
||||
"react-icons/gr",
|
||||
"react-icons/hi",
|
||||
"react-icons/hi2",
|
||||
"react-icons/im",
|
||||
"react-icons/io",
|
||||
"react-icons/io5",
|
||||
"react-icons/lia",
|
||||
"react-icons/lib",
|
||||
"react-icons/lu",
|
||||
"react-icons/md",
|
||||
"react-icons/pi",
|
||||
"react-icons/ri",
|
||||
"react-icons/rx",
|
||||
"react-icons/si",
|
||||
"react-icons/sl",
|
||||
"react-icons/tb",
|
||||
"react-icons/tfi",
|
||||
"react-icons/ti",
|
||||
"react-icons/vsc",
|
||||
"react-icons/wi"
|
||||
],
|
||||
"trustHostHeader": false,
|
||||
"isExperimentalCompile": false
|
||||
},
|
||||
"htmlLimitedBots": "[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight",
|
||||
"bundlePagesRouterDependencies": false,
|
||||
"configFileName": "next.config.ts",
|
||||
"turbopack": {
|
||||
"root": "/home/nara/apps/web"
|
||||
},
|
||||
"distDirRoot": ".next"
|
||||
},
|
||||
"appDir": "/home/nara/apps/web",
|
||||
"relativeAppDir": "",
|
||||
"files": [
|
||||
".next/package.json",
|
||||
".next/routes-manifest.json",
|
||||
".next/server/pages-manifest.json",
|
||||
".next/build-manifest.json",
|
||||
".next/prerender-manifest.json",
|
||||
".next/server/functions-config-manifest.json",
|
||||
".next/server/middleware-manifest.json",
|
||||
".next/server/middleware-build-manifest.js",
|
||||
".next/server/app-paths-manifest.json",
|
||||
".next/app-path-routes-manifest.json",
|
||||
".next/server/server-reference-manifest.js",
|
||||
".next/server/server-reference-manifest.json",
|
||||
".next/server/prefetch-hints.json",
|
||||
".next/BUILD_ID",
|
||||
".next/server/next-font-manifest.js",
|
||||
".next/server/next-font-manifest.json",
|
||||
".next/required-server-files.json"
|
||||
],
|
||||
"ignore": []
|
||||
}
|
||||
334
.next/required-server-files.json
Normal file
334
.next/required-server-files.json
Normal file
@ -0,0 +1,334 @@
|
||||
{
|
||||
"version": 1,
|
||||
"config": {
|
||||
"env": {},
|
||||
"webpack": null,
|
||||
"typescript": {
|
||||
"ignoreBuildErrors": false
|
||||
},
|
||||
"typedRoutes": false,
|
||||
"distDir": ".next",
|
||||
"cleanDistDir": true,
|
||||
"assetPrefix": "",
|
||||
"cacheMaxMemorySize": 52428800,
|
||||
"configOrigin": "next.config.ts",
|
||||
"useFileSystemPublicRoutes": true,
|
||||
"generateEtags": true,
|
||||
"pageExtensions": [
|
||||
"tsx",
|
||||
"ts",
|
||||
"jsx",
|
||||
"js"
|
||||
],
|
||||
"poweredByHeader": true,
|
||||
"compress": true,
|
||||
"images": {
|
||||
"deviceSizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840
|
||||
],
|
||||
"imageSizes": [
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
],
|
||||
"path": "/_next/image",
|
||||
"loader": "default",
|
||||
"loaderFile": "",
|
||||
"domains": [],
|
||||
"disableStaticImages": false,
|
||||
"minimumCacheTTL": 14400,
|
||||
"formats": [
|
||||
"image/webp"
|
||||
],
|
||||
"maximumRedirects": 3,
|
||||
"maximumResponseBody": 50000000,
|
||||
"dangerouslyAllowLocalIP": false,
|
||||
"dangerouslyAllowSVG": false,
|
||||
"contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
|
||||
"contentDispositionType": "attachment",
|
||||
"localPatterns": [
|
||||
{
|
||||
"pathname": "**",
|
||||
"search": ""
|
||||
}
|
||||
],
|
||||
"remotePatterns": [],
|
||||
"qualities": [
|
||||
75
|
||||
],
|
||||
"unoptimized": true,
|
||||
"customCacheHandler": false
|
||||
},
|
||||
"devIndicators": {
|
||||
"position": "bottom-left"
|
||||
},
|
||||
"onDemandEntries": {
|
||||
"maxInactiveAge": 60000,
|
||||
"pagesBufferLength": 5
|
||||
},
|
||||
"basePath": "",
|
||||
"sassOptions": {},
|
||||
"trailingSlash": false,
|
||||
"i18n": null,
|
||||
"productionBrowserSourceMaps": false,
|
||||
"excludeDefaultMomentLocales": true,
|
||||
"reactProductionProfiling": false,
|
||||
"reactStrictMode": null,
|
||||
"reactMaxHeadersLength": 6000,
|
||||
"httpAgentOptions": {
|
||||
"keepAlive": true
|
||||
},
|
||||
"logging": {
|
||||
"serverFunctions": true,
|
||||
"browserToTerminal": "warn"
|
||||
},
|
||||
"compiler": {},
|
||||
"expireTime": 31536000,
|
||||
"staticPageGenerationTimeout": 60,
|
||||
"output": "export",
|
||||
"modularizeImports": {
|
||||
"@mui/icons-material": {
|
||||
"transform": "@mui/icons-material/{{member}}"
|
||||
},
|
||||
"lodash": {
|
||||
"transform": "lodash/{{member}}"
|
||||
}
|
||||
},
|
||||
"outputFileTracingRoot": "/home/nara/apps/web",
|
||||
"cacheComponents": false,
|
||||
"cacheLife": {
|
||||
"default": {
|
||||
"stale": 300,
|
||||
"revalidate": 900,
|
||||
"expire": 4294967294
|
||||
},
|
||||
"seconds": {
|
||||
"stale": 30,
|
||||
"revalidate": 1,
|
||||
"expire": 60
|
||||
},
|
||||
"minutes": {
|
||||
"stale": 300,
|
||||
"revalidate": 60,
|
||||
"expire": 3600
|
||||
},
|
||||
"hours": {
|
||||
"stale": 300,
|
||||
"revalidate": 3600,
|
||||
"expire": 86400
|
||||
},
|
||||
"days": {
|
||||
"stale": 300,
|
||||
"revalidate": 86400,
|
||||
"expire": 604800
|
||||
},
|
||||
"weeks": {
|
||||
"stale": 300,
|
||||
"revalidate": 604800,
|
||||
"expire": 2592000
|
||||
},
|
||||
"max": {
|
||||
"stale": 300,
|
||||
"revalidate": 2592000,
|
||||
"expire": 31536000
|
||||
}
|
||||
},
|
||||
"cacheHandlers": {},
|
||||
"experimental": {
|
||||
"appNewScrollHandler": false,
|
||||
"useSkewCookie": false,
|
||||
"cssChunking": true,
|
||||
"multiZoneDraftMode": false,
|
||||
"appNavFailHandling": false,
|
||||
"prerenderEarlyExit": true,
|
||||
"serverMinification": true,
|
||||
"linkNoTouchStart": false,
|
||||
"caseSensitiveRoutes": false,
|
||||
"cachedNavigations": false,
|
||||
"partialFallbacks": false,
|
||||
"dynamicOnHover": false,
|
||||
"varyParams": false,
|
||||
"prefetchInlining": false,
|
||||
"preloadEntriesOnStart": true,
|
||||
"clientRouterFilter": true,
|
||||
"clientRouterFilterRedirects": false,
|
||||
"fetchCacheKeyPrefix": "",
|
||||
"proxyPrefetch": "flexible",
|
||||
"optimisticClientCache": true,
|
||||
"manualClientBasePath": false,
|
||||
"cpus": 3,
|
||||
"memoryBasedWorkersCount": false,
|
||||
"imgOptConcurrency": null,
|
||||
"imgOptTimeoutInSeconds": 7,
|
||||
"imgOptMaxInputPixels": 268402689,
|
||||
"imgOptSequentialRead": null,
|
||||
"imgOptSkipMetadata": null,
|
||||
"isrFlushToDisk": true,
|
||||
"workerThreads": false,
|
||||
"optimizeCss": false,
|
||||
"nextScriptWorkers": false,
|
||||
"scrollRestoration": false,
|
||||
"externalDir": false,
|
||||
"disableOptimizedLoading": false,
|
||||
"gzipSize": true,
|
||||
"craCompat": false,
|
||||
"esmExternals": true,
|
||||
"fullySpecified": false,
|
||||
"swcTraceProfiling": false,
|
||||
"forceSwcTransforms": false,
|
||||
"largePageDataBytes": 128000,
|
||||
"typedEnv": false,
|
||||
"parallelServerCompiles": false,
|
||||
"parallelServerBuildTraces": false,
|
||||
"ppr": false,
|
||||
"authInterrupts": false,
|
||||
"webpackMemoryOptimizations": false,
|
||||
"optimizeServerReact": true,
|
||||
"strictRouteTypes": false,
|
||||
"viewTransition": false,
|
||||
"removeUncaughtErrorAndRejectionListeners": false,
|
||||
"validateRSCRequestHeaders": false,
|
||||
"staleTimes": {
|
||||
"dynamic": 0,
|
||||
"static": 300
|
||||
},
|
||||
"reactDebugChannel": true,
|
||||
"serverComponentsHmrCache": true,
|
||||
"staticGenerationMaxConcurrency": 8,
|
||||
"staticGenerationMinPagesPerWorker": 25,
|
||||
"transitionIndicator": false,
|
||||
"gestureTransition": false,
|
||||
"inlineCss": false,
|
||||
"useCache": false,
|
||||
"globalNotFound": false,
|
||||
"browserDebugInfoInTerminal": "warn",
|
||||
"lockDistDir": true,
|
||||
"proxyClientMaxBodySize": 10485760,
|
||||
"hideLogsAfterAbort": false,
|
||||
"mcpServer": true,
|
||||
"turbopackFileSystemCacheForDev": true,
|
||||
"turbopackFileSystemCacheForBuild": false,
|
||||
"turbopackInferModuleSideEffects": true,
|
||||
"turbopackPluginRuntimeStrategy": "childProcesses",
|
||||
"optimizePackageImports": [
|
||||
"lucide-react",
|
||||
"date-fns",
|
||||
"lodash-es",
|
||||
"ramda",
|
||||
"antd",
|
||||
"react-bootstrap",
|
||||
"ahooks",
|
||||
"@ant-design/icons",
|
||||
"@headlessui/react",
|
||||
"@headlessui-float/react",
|
||||
"@heroicons/react/20/solid",
|
||||
"@heroicons/react/24/solid",
|
||||
"@heroicons/react/24/outline",
|
||||
"@visx/visx",
|
||||
"@tremor/react",
|
||||
"rxjs",
|
||||
"@mui/material",
|
||||
"@mui/icons-material",
|
||||
"recharts",
|
||||
"react-use",
|
||||
"effect",
|
||||
"@effect/schema",
|
||||
"@effect/platform",
|
||||
"@effect/platform-node",
|
||||
"@effect/platform-browser",
|
||||
"@effect/platform-bun",
|
||||
"@effect/sql",
|
||||
"@effect/sql-mssql",
|
||||
"@effect/sql-mysql2",
|
||||
"@effect/sql-pg",
|
||||
"@effect/sql-sqlite-node",
|
||||
"@effect/sql-sqlite-bun",
|
||||
"@effect/sql-sqlite-wasm",
|
||||
"@effect/sql-sqlite-react-native",
|
||||
"@effect/rpc",
|
||||
"@effect/rpc-http",
|
||||
"@effect/typeclass",
|
||||
"@effect/experimental",
|
||||
"@effect/opentelemetry",
|
||||
"@material-ui/core",
|
||||
"@material-ui/icons",
|
||||
"@tabler/icons-react",
|
||||
"mui-core",
|
||||
"react-icons/ai",
|
||||
"react-icons/bi",
|
||||
"react-icons/bs",
|
||||
"react-icons/cg",
|
||||
"react-icons/ci",
|
||||
"react-icons/di",
|
||||
"react-icons/fa",
|
||||
"react-icons/fa6",
|
||||
"react-icons/fc",
|
||||
"react-icons/fi",
|
||||
"react-icons/gi",
|
||||
"react-icons/go",
|
||||
"react-icons/gr",
|
||||
"react-icons/hi",
|
||||
"react-icons/hi2",
|
||||
"react-icons/im",
|
||||
"react-icons/io",
|
||||
"react-icons/io5",
|
||||
"react-icons/lia",
|
||||
"react-icons/lib",
|
||||
"react-icons/lu",
|
||||
"react-icons/md",
|
||||
"react-icons/pi",
|
||||
"react-icons/ri",
|
||||
"react-icons/rx",
|
||||
"react-icons/si",
|
||||
"react-icons/sl",
|
||||
"react-icons/tb",
|
||||
"react-icons/tfi",
|
||||
"react-icons/ti",
|
||||
"react-icons/vsc",
|
||||
"react-icons/wi"
|
||||
],
|
||||
"trustHostHeader": false,
|
||||
"isExperimentalCompile": false
|
||||
},
|
||||
"htmlLimitedBots": "[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight",
|
||||
"bundlePagesRouterDependencies": false,
|
||||
"configFileName": "next.config.ts",
|
||||
"turbopack": {
|
||||
"root": "/home/nara/apps/web"
|
||||
},
|
||||
"distDirRoot": ".next"
|
||||
},
|
||||
"appDir": "/home/nara/apps/web",
|
||||
"relativeAppDir": "",
|
||||
"files": [
|
||||
".next/package.json",
|
||||
".next/routes-manifest.json",
|
||||
".next/server/pages-manifest.json",
|
||||
".next/build-manifest.json",
|
||||
".next/prerender-manifest.json",
|
||||
".next/server/functions-config-manifest.json",
|
||||
".next/server/middleware-manifest.json",
|
||||
".next/server/middleware-build-manifest.js",
|
||||
".next/server/app-paths-manifest.json",
|
||||
".next/app-path-routes-manifest.json",
|
||||
".next/server/server-reference-manifest.js",
|
||||
".next/server/server-reference-manifest.json",
|
||||
".next/server/prefetch-hints.json",
|
||||
".next/BUILD_ID",
|
||||
".next/server/next-font-manifest.js",
|
||||
".next/server/next-font-manifest.json",
|
||||
".next/required-server-files.json"
|
||||
],
|
||||
"ignore": []
|
||||
}
|
||||
69
.next/routes-manifest.json
Normal file
69
.next/routes-manifest.json
Normal file
@ -0,0 +1,69 @@
|
||||
{
|
||||
"version": 3,
|
||||
"pages404": true,
|
||||
"appType": "app",
|
||||
"caseSensitive": false,
|
||||
"basePath": "",
|
||||
"redirects": [
|
||||
{
|
||||
"source": "/:path+/",
|
||||
"destination": "/:path+",
|
||||
"internal": true,
|
||||
"priority": true,
|
||||
"statusCode": 308,
|
||||
"regex": "^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"
|
||||
}
|
||||
],
|
||||
"headers": [],
|
||||
"onMatchHeaders": [],
|
||||
"rewrites": {
|
||||
"beforeFiles": [],
|
||||
"afterFiles": [],
|
||||
"fallback": []
|
||||
},
|
||||
"dynamicRoutes": [],
|
||||
"staticRoutes": [
|
||||
{
|
||||
"page": "/",
|
||||
"regex": "^/(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/_global-error",
|
||||
"regex": "^/_global\\-error(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/_global\\-error(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/_not-found",
|
||||
"regex": "^/_not\\-found(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/_not\\-found(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/favicon.ico",
|
||||
"regex": "^/favicon\\.ico(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/favicon\\.ico(?:/)?$"
|
||||
}
|
||||
],
|
||||
"dataRoutes": [],
|
||||
"rsc": {
|
||||
"header": "rsc",
|
||||
"varyHeader": "rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch",
|
||||
"prefetchHeader": "next-router-prefetch",
|
||||
"didPostponeHeader": "x-nextjs-postponed",
|
||||
"contentTypeHeader": "text/x-component",
|
||||
"suffix": ".rsc",
|
||||
"prefetchSegmentHeader": "next-router-segment-prefetch",
|
||||
"prefetchSegmentSuffix": ".segment.rsc",
|
||||
"prefetchSegmentDirSuffix": ".segments",
|
||||
"clientParamParsing": false,
|
||||
"dynamicRSCPrerender": false
|
||||
},
|
||||
"rewriteHeaders": {
|
||||
"pathHeader": "x-nextjs-rewritten-path",
|
||||
"queryHeader": "x-nextjs-rewritten-query"
|
||||
}
|
||||
}
|
||||
6
.next/server/app-paths-manifest.json
Normal file
6
.next/server/app-paths-manifest.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"/_global-error/page": "app/_global-error/page.js",
|
||||
"/_not-found/page": "app/_not-found/page.js",
|
||||
"/favicon.ico/route": "app/favicon.ico/route.js",
|
||||
"/page": "app/page.js"
|
||||
}
|
||||
1
.next/server/app/_global-error.html
Normal file
1
.next/server/app/_global-error.html
Normal file
File diff suppressed because one or more lines are too long
15
.next/server/app/_global-error.meta
Normal file
15
.next/server/app/_global-error.meta
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"status": 500,
|
||||
"headers": {
|
||||
"x-nextjs-stale-time": "300",
|
||||
"x-nextjs-prerender": "1",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/_global-error/layout,_N_T_/_global-error/page,_N_T_/_global-error"
|
||||
},
|
||||
"segmentPaths": [
|
||||
"/_tree",
|
||||
"/_full",
|
||||
"/__PAGE__",
|
||||
"/_index",
|
||||
"/_head"
|
||||
]
|
||||
}
|
||||
15
.next/server/app/_global-error.rsc
Normal file
15
.next/server/app/_global-error.rsc
Normal file
@ -0,0 +1,15 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
4:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"OutletBoundary"]
|
||||
5:"$Sreact.suspense"
|
||||
8:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"ViewportBoundary"]
|
||||
a:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"MetadataBoundary"]
|
||||
c:I[68027,["/_next/static/chunks/158myu8e_yme3.js"],"default",1]
|
||||
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
d:[]
|
||||
7:"$Wd"
|
||||
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
e:I[27201,["/_next/static/chunks/158myu8e_yme3.js"],"IconMark"]
|
||||
6:null
|
||||
b:[["$","link","0",{"rel":"icon","href":"/favicon.ico?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","$Le","1",{}]]
|
||||
@ -0,0 +1,5 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"OutletBoundary"]
|
||||
3:"$Sreact.suspense"
|
||||
0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
4:null
|
||||
15
.next/server/app/_global-error.segments/_full.segment.rsc
Normal file
15
.next/server/app/_global-error.segments/_full.segment.rsc
Normal file
@ -0,0 +1,15 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
4:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"OutletBoundary"]
|
||||
5:"$Sreact.suspense"
|
||||
8:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"ViewportBoundary"]
|
||||
a:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"MetadataBoundary"]
|
||||
c:I[68027,["/_next/static/chunks/158myu8e_yme3.js"],"default",1]
|
||||
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
d:[]
|
||||
7:"$Wd"
|
||||
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
e:I[27201,["/_next/static/chunks/158myu8e_yme3.js"],"IconMark"]
|
||||
6:null
|
||||
b:[["$","link","0",{"rel":"icon","href":"/favicon.ico?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","$Le","1",{}]]
|
||||
@ -0,0 +1,6 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"ViewportBoundary"]
|
||||
3:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"MetadataBoundary"]
|
||||
4:"$Sreact.suspense"
|
||||
5:I[27201,["/_next/static/chunks/158myu8e_yme3.js"],"IconMark"]
|
||||
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"icon","href":"/favicon.ico?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","1",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
@ -0,0 +1,5 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
4:[]
|
||||
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
@ -0,0 +1 @@
|
||||
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
10
.next/server/app/_global-error/page.js
Normal file
10
.next/server/app/_global-error/page.js
Normal file
@ -0,0 +1,10 @@
|
||||
var R=require("../../chunks/ssr/[turbopack]_runtime.js")("server/app/_global-error/page.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__0c6sjbl._.js")
|
||||
R.c("server/chunks/ssr/node_modules_09r9c10._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13q04th.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__1jp7az7._.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__0g84hko._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js")
|
||||
R.c("server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js")
|
||||
R.m(99158)
|
||||
module.exports=R.m(99158).exports
|
||||
5
.next/server/app/_global-error/page.js.map
Normal file
5
.next/server/app/_global-error/page.js.map
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
1
.next/server/app/_global-error/page.js.nft.json
Normal file
1
.next/server/app/_global-error/page.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,3 @@
|
||||
{
|
||||
"/_global-error/page": "app/_global-error/page.js"
|
||||
}
|
||||
16
.next/server/app/_global-error/page/build-manifest.json
Normal file
16
.next/server/app/_global-error/page/build-manifest.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"polyfillFiles": [
|
||||
"static/chunks/0cz1d0mv5g_q7.js"
|
||||
],
|
||||
"lowPriorityFiles": [],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/3z5q_p4msz2ha.js",
|
||||
"static/chunks/2ckqm4grawju5.js",
|
||||
"static/chunks/2nykiepra7i1k.js",
|
||||
"static/chunks/turbopack-1n9x74gl-i54j.js"
|
||||
],
|
||||
"pages": {},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"pages": {},
|
||||
"app": {},
|
||||
"appUsingSizeAdjust": false,
|
||||
"pagesUsingSizeAdjust": false
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"node": {},
|
||||
"edge": {}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
1
.next/server/app/_not-found.html
Normal file
1
.next/server/app/_not-found.html
Normal file
File diff suppressed because one or more lines are too long
16
.next/server/app/_not-found.meta
Normal file
16
.next/server/app/_not-found.meta
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"status": 404,
|
||||
"headers": {
|
||||
"x-nextjs-stale-time": "300",
|
||||
"x-nextjs-prerender": "1",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/_not-found/layout,_N_T_/_not-found/page,_N_T_/_not-found"
|
||||
},
|
||||
"segmentPaths": [
|
||||
"/_tree",
|
||||
"/_full",
|
||||
"/_not-found/__PAGE__",
|
||||
"/_not-found",
|
||||
"/_index",
|
||||
"/_head"
|
||||
]
|
||||
}
|
||||
21
.next/server/app/_not-found.rsc
Normal file
21
.next/server/app/_not-found.rsc
Normal file
File diff suppressed because one or more lines are too long
21
.next/server/app/_not-found.segments/_full.segment.rsc
Normal file
21
.next/server/app/_not-found.segments/_full.segment.rsc
Normal file
File diff suppressed because one or more lines are too long
6
.next/server/app/_not-found.segments/_head.segment.rsc
Normal file
6
.next/server/app/_not-found.segments/_head.segment.rsc
Normal file
@ -0,0 +1,6 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"ViewportBoundary"]
|
||||
3:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"MetadataBoundary"]
|
||||
4:"$Sreact.suspense"
|
||||
5:I[27201,["/_next/static/chunks/158myu8e_yme3.js"],"IconMark"]
|
||||
0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","1",{"name":"description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","2",{"property":"og:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","3",{"property":"og:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","4",{"property":"og:url","content":"https://hatch.surf"}],["$","meta","5",{"property":"og:site_name","content":"Hatch"}],["$","meta","6",{"property":"og:image","content":"http://localhost:3000/brand/og/default.png"}],["$","meta","7",{"property":"og:image:width","content":"1200"}],["$","meta","8",{"property":"og:image:height","content":"630"}],["$","meta","9",{"property":"og:type","content":"website"}],["$","meta","10",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","11",{"name":"twitter:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","12",{"name":"twitter:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","13",{"name":"twitter:image","content":"http://localhost:3000/brand/og/default.png"}],["$","link","14",{"rel":"icon","href":"/favicon.ico?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","15",{"rel":"icon","href":"/brand/favicon/favicon-48.png"}],["$","$L5","16",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
5
.next/server/app/_not-found.segments/_index.segment.rsc
Normal file
5
.next/server/app/_not-found.segments/_index.segment.rsc
Normal file
@ -0,0 +1,5 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
:HL["/_next/static/chunks/40hwf0y1goj6_.css","style"]
|
||||
0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/40hwf0y1goj6_.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/158myu8e_yme3.js","async":true}]],["$","html",null,{"lang":"en","className":"inter_5901b7c6-module__ec5Qua__variable jetbrains_mono_d5591ac2-module__D88TVW__variable","children":["$","body",null,{"className":"min-h-screen bg-zinc-950 text-white font-sans antialiased","children":[["$","a",null,{"href":"#main-content","className":"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:px-4 focus:py-2 focus:bg-blue-500 focus:text-white focus:rounded-lg","children":"Skip to content"}],["$","header",null,{"className":"fixed top-0 left-0 right-0 z-50 py-4 bg-zinc-950/80 backdrop-blur-lg border-b border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto px-6 flex justify-between items-center","children":[["$","a",null,{"href":"/","className":"text-xl font-bold text-white flex items-center gap-2 hover:text-white transition-colors","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","nav",null,{"className":"flex items-center gap-6","children":[["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"GitHub"}],["$","a",null,{"href":"/blog/","className":"text-zinc-400 hover:text-white transition-colors","children":"Blog"}]]}]]}]}],["$","main",null,{"id":"main-content","role":"main","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","footer",null,{"className":"py-8 px-6 border-t border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":["$","div",null,{"className":"flex flex-col md:flex-row justify-between items-center gap-4","children":[["$","span",null,{"className":"text-white font-bold flex items-center gap-2","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","p",null,{"className":"text-zinc-500 text-sm text-center md:text-right","children":["© 2026 El Foundation."," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"Hatch"}]," ","is released under the"," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch/blob/main/LICENSE","className":"text-zinc-400 hover:text-white transition-colors","children":"MIT License"}],"."]}]]}]}]}]]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
@ -0,0 +1,5 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
4:[]
|
||||
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
@ -0,0 +1,5 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"OutletBoundary"]
|
||||
3:"$Sreact.suspense"
|
||||
0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
4:null
|
||||
2
.next/server/app/_not-found.segments/_tree.segment.rsc
Normal file
2
.next/server/app/_not-found.segments/_tree.segment.rsc
Normal file
@ -0,0 +1,2 @@
|
||||
:HL["/_next/static/chunks/40hwf0y1goj6_.css","style"]
|
||||
0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
13
.next/server/app/_not-found/page.js
Normal file
13
.next/server/app/_not-found/page.js
Normal file
@ -0,0 +1,13 @@
|
||||
var R=require("../../chunks/ssr/[turbopack]_runtime.js")("server/app/_not-found/page.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__04at3p9._.js")
|
||||
R.c("server/chunks/ssr/node_modules_09r9c10._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0048lj3.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__1jp7az7._.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__0g84hko._.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__0gn_kkd._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js")
|
||||
R.c("server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js")
|
||||
R.m(75972)
|
||||
module.exports=R.m(75972).exports
|
||||
5
.next/server/app/_not-found/page.js.map
Normal file
5
.next/server/app/_not-found/page.js.map
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
1
.next/server/app/_not-found/page.js.nft.json
Normal file
1
.next/server/app/_not-found/page.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
3
.next/server/app/_not-found/page/app-paths-manifest.json
Normal file
3
.next/server/app/_not-found/page/app-paths-manifest.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"/_not-found/page": "app/_not-found/page.js"
|
||||
}
|
||||
16
.next/server/app/_not-found/page/build-manifest.json
Normal file
16
.next/server/app/_not-found/page/build-manifest.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"polyfillFiles": [
|
||||
"static/chunks/0cz1d0mv5g_q7.js"
|
||||
],
|
||||
"lowPriorityFiles": [],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/3z5q_p4msz2ha.js",
|
||||
"static/chunks/2ckqm4grawju5.js",
|
||||
"static/chunks/2nykiepra7i1k.js",
|
||||
"static/chunks/turbopack-1n9x74gl-i54j.js"
|
||||
],
|
||||
"pages": {},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
11
.next/server/app/_not-found/page/next-font-manifest.json
Normal file
11
.next/server/app/_not-found/page/next-font-manifest.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"pages": {},
|
||||
"app": {
|
||||
"[project]/app/_not-found/page": [
|
||||
"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
|
||||
"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
|
||||
]
|
||||
},
|
||||
"appUsingSizeAdjust": true,
|
||||
"pagesUsingSizeAdjust": false
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
{}
|
||||
@ -0,0 +1,4 @@
|
||||
{
|
||||
"node": {},
|
||||
"edge": {}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
BIN
.next/server/app/favicon.ico.body
Normal file
BIN
.next/server/app/favicon.ico.body
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
1
.next/server/app/favicon.ico.meta
Normal file
1
.next/server/app/favicon.ico.meta
Normal file
@ -0,0 +1 @@
|
||||
{"status":200,"headers":{"cache-control":"public, max-age=0, must-revalidate","content-type":"image/x-icon","x-next-cache-tags":"_N_T_/layout,_N_T_/favicon.ico/layout,_N_T_/favicon.ico/route,_N_T_/favicon.ico"}}
|
||||
6
.next/server/app/favicon.ico/route.js
Normal file
6
.next/server/app/favicon.ico/route.js
Normal file
@ -0,0 +1,6 @@
|
||||
var R=require("../../chunks/[turbopack]_runtime.js")("server/app/favicon.ico/route.js")
|
||||
R.c("server/chunks/[externals]_next_dist_0iuj5m_._.js")
|
||||
R.c("server/chunks/[root-of-the-server]__17cj935._.js")
|
||||
R.c("server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js")
|
||||
R.m(6218)
|
||||
module.exports=R.m(6218).exports
|
||||
5
.next/server/app/favicon.ico/route.js.map
Normal file
5
.next/server/app/favicon.ico/route.js.map
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
1
.next/server/app/favicon.ico/route.js.nft.json
Normal file
1
.next/server/app/favicon.ico/route.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,3 @@
|
||||
{
|
||||
"/favicon.ico/route": "app/favicon.ico/route.js"
|
||||
}
|
||||
9
.next/server/app/favicon.ico/route/build-manifest.json
Normal file
9
.next/server/app/favicon.ico/route/build-manifest.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"polyfillFiles": [],
|
||||
"lowPriorityFiles": [],
|
||||
"rootMainFiles": [],
|
||||
"pages": {},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
4
.next/server/app/index.html
Normal file
4
.next/server/app/index.html
Normal file
File diff suppressed because one or more lines are too long
14
.next/server/app/index.meta
Normal file
14
.next/server/app/index.meta
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"headers": {
|
||||
"x-nextjs-stale-time": "300",
|
||||
"x-nextjs-prerender": "1",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/page,_N_T_/,_N_T_/index"
|
||||
},
|
||||
"segmentPaths": [
|
||||
"/_tree",
|
||||
"/_full",
|
||||
"/__PAGE__",
|
||||
"/_index",
|
||||
"/_head"
|
||||
]
|
||||
}
|
||||
26
.next/server/app/index.rsc
Normal file
26
.next/server/app/index.rsc
Normal file
@ -0,0 +1,26 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
d:I[68027,["/_next/static/chunks/158myu8e_yme3.js"],"default",1]
|
||||
:HL["/_next/static/chunks/40hwf0y1goj6_.css","style"]
|
||||
:HL["/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
:HL["/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/40hwf0y1goj6_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/158myu8e_yme3.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"inter_5901b7c6-module__ec5Qua__variable jetbrains_mono_d5591ac2-module__D88TVW__variable","children":["$","body",null,{"className":"min-h-screen bg-zinc-950 text-white font-sans antialiased","children":[["$","a",null,{"href":"#main-content","className":"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:px-4 focus:py-2 focus:bg-blue-500 focus:text-white focus:rounded-lg","children":"Skip to content"}],["$","header",null,{"className":"fixed top-0 left-0 right-0 z-50 py-4 bg-zinc-950/80 backdrop-blur-lg border-b border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto px-6 flex justify-between items-center","children":[["$","a",null,{"href":"/","className":"text-xl font-bold text-white flex items-center gap-2 hover:text-white transition-colors","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","nav",null,{"className":"flex items-center gap-6","children":[["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"GitHub"}],["$","a",null,{"href":"/blog/","className":"text-zinc-400 hover:text-white transition-colors","children":"Blog"}]]}]]}]}],["$","main",null,{"id":"main-content","role":"main","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],["$","footer",null,{"className":"py-8 px-6 border-t border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":["$","div",null,{"className":"flex flex-col md:flex-row justify-between items-center gap-4","children":[["$","span",null,{"className":"text-white font-bold flex items-center gap-2","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","p",null,{"className":"text-zinc-500 text-sm text-center md:text-right","children":["© 2026 El Foundation."," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"Hatch"}]," ","is released under the"," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch/blob/main/LICENSE","className":"text-zinc-400 hover:text-white transition-colors","children":"MIT License"}],"."]}]]}]}]}]]}]}]]}],{"children":[["$","$1","c",{"children":[[["$","section",null,{"className":"pt-32 pb-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto text-center","children":[["$","div",null,{"className":"inline-block mb-6 px-5 py-2 rounded-full bg-blue-500/10 border border-blue-500/30 text-blue-400 text-sm font-medium","children":"Open source · MIT licensed"}],["$","h1",null,{"className":"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-6 leading-tight bg-gradient-to-r from-white to-zinc-400 bg-clip-text text-transparent","children":["Self-hostable HTTP request","$L4","inspector + mocker"]}],"$L5","$L6","$L7"]}]}],"$L8","$L9","$La"],null,"$Lb"]}],{},null,false,null]},null,false,null],"$Lc",false]],"m":"$undefined","G":["$d",["$Le"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
f:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"OutletBoundary"]
|
||||
10:"$Sreact.suspense"
|
||||
12:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"ViewportBoundary"]
|
||||
14:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"MetadataBoundary"]
|
||||
4:["$","br",null,{}]
|
||||
5:["$","p",null,{"className":"text-lg md:text-xl text-zinc-400 mb-10 max-w-2xl mx-auto leading-relaxed","children":["One Go binary. SQLite under the hood.",["$","code",null,{"className":"mx-1 px-2 py-0.5 bg-zinc-800 border border-zinc-700 rounded text-fuchsia-400 text-base","children":"docker compose up"}],", and you have an inspection endpoint and a live feed in under 30 seconds."]}]
|
||||
6:["$","div",null,{"className":"flex flex-col sm:flex-row gap-4 justify-center mb-16","children":[["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"inline-flex items-center justify-center gap-2 px-8 py-4 bg-blue-500 hover:bg-blue-600 text-white font-semibold rounded-lg transition-all shadow-lg shadow-blue-500/30 hover:shadow-xl hover:shadow-blue-500/40 hover:-translate-y-0.5","children":[["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"}]}],"View on GitHub"]}],["$","a",null,{"href":"https://github.com/elfoundation/hatch#quick-start","className":"inline-flex items-center justify-center gap-2 px-8 py-4 bg-zinc-800 hover:bg-zinc-700 text-white font-semibold rounded-lg border border-zinc-700 transition-all shadow-lg hover:shadow-xl hover:-translate-y-0.5","children":"Quick Start →"}]]}]
|
||||
7:["$","div",null,{"className":"max-w-2xl mx-auto rounded-xl overflow-hidden border border-zinc-800 bg-zinc-900/50 backdrop-blur-sm shadow-2xl","children":[["$","div",null,{"className":"flex items-center gap-2 px-4 py-3 bg-gradient-to-r from-zinc-800/50 to-zinc-800/30 border-b border-zinc-800","children":[["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","span",null,{"className":"ml-2 text-sm text-zinc-500","children":"terminal"}]]}],["$","pre",null,{"className":"p-5 text-left text-sm font-mono overflow-x-auto","children":["$","code",null,{"children":[["$","span",null,{"className":"text-blue-400 font-semibold","children":"$$"}]," ",["$","span",null,{"className":"text-zinc-300","children":"docker compose up -d"}],"\n",["$","span",null,{"className":"text-emerald-400","children":"✓ hatch started on :8080"}],"\n",["$","span",null,{"className":"text-blue-400 font-semibold","children":"$$"}]," ",["$","span",null,{"className":"text-zinc-300","children":["curl -X POST https://your-bin.hatch.surf/test -d ","{'hello':'world'}"]}],"\n",["$","span",null,{"className":"text-emerald-400","children":"✓ captured — view at https://your-bin.hatch.surf/inspect"}]]}]}]]}]
|
||||
8:["$","section",null,{"className":"py-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":[["$","h2",null,{"className":"text-3xl md:text-4xl font-bold text-center mb-16","children":"Three things, and nothing else"}],["$","div",null,{"className":"grid md:grid-cols-3 gap-8","children":[["$","div","Capture",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-blue-500/40 hover:shadow-blue-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-blue-500/15 text-blue-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"12","cy":"12","r":"10"}],["$","polyline",null,{"points":"12 6 12 12 16 14"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Capture"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Method, path, headers, query, body. Persists across restarts because the storage is SQLite on disk, not a hosted queue."}]]}],["$","div","Inspect",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-purple-500/40 hover:shadow-purple-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-purple-500/15 text-purple-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}],["$","circle",null,{"cx":"12","cy":"12","r":"3"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Inspect"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"A live SSE feed of incoming requests. Click any captured request to see the headers, the body, the timing."}]]}],["$","div","Mock",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-cyan-500/40 hover:shadow-cyan-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-cyan-500/15 text-cyan-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","polyline",null,{"points":"16 18 22 12 16 6"}],["$","polyline",null,{"points":"8 6 2 12 8 18"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Mock"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Return a 200, a 500, or a custom JSON payload. For testing your own retry, backoff, and error-handling logic."}]]}]]}]]}]}]
|
||||
9:["$","section",null,{"className":"py-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":[["$","h2",null,{"className":"text-3xl md:text-4xl font-bold text-center mb-16","children":"Why a single binary, not a SaaS"}],["$","div",null,{"className":"grid md:grid-cols-3 gap-6","children":[["$","div","01",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-blue-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"01"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Compliance and privacy"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Some teams cannot legally send webhook payloads to a hosted SaaS. Hatch keeps the data on your own network."}]]}],["$","div","02",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-purple-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"02"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Cost"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"A hosted inspector charges per request, per seat, or per retention day. Hatch is one Go binary on a $5 VPS. There is no per-request fee because there is no one to charge it."}]]}],["$","div","03",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-cyan-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"03"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Speed of setup"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":[["$","code",null,{"className":"px-2 py-0.5 bg-zinc-800 border border-zinc-700 rounded text-fuchsia-400 text-sm","children":"docker compose up"}]," ","is faster than signing up for a SaaS, verifying your email, configuring your first bin, and pasting the URL into your webhook config."]}]]}]]}]]}]}]
|
||||
a:["$","section",null,{"className":"py-24 px-6 bg-gradient-to-b from-zinc-900/30 to-zinc-900/60","children":["$","div",null,{"className":"max-w-4xl mx-auto text-center","children":[["$","h2",null,{"className":"text-4xl md:text-5xl font-extrabold mb-4 bg-gradient-to-r from-white to-blue-400 bg-clip-text text-transparent","children":"Start inspecting in 30 seconds"}],["$","p",null,{"className":"text-xl text-zinc-400 mb-10","children":"One binary. Your data stays yours."}],["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"inline-flex items-center justify-center gap-2 px-10 py-5 bg-blue-500 hover:bg-blue-600 text-white font-semibold rounded-lg transition-all shadow-lg shadow-blue-500/30 hover:shadow-xl hover:shadow-blue-500/40 hover:-translate-y-0.5 text-lg","children":"Get Hatch →"}]]}]}]
|
||||
b:["$","$Lf",null,{"children":["$","$10",null,{"name":"Next.MetadataOutlet","children":"$@11"}]}]
|
||||
c:["$","$1","h",{"children":[null,["$","$L12",null,{"children":"$L13"}],["$","div",null,{"hidden":true,"children":["$","$L14",null,{"children":["$","$10",null,{"name":"Next.Metadata","children":"$L15"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
|
||||
e:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/40hwf0y1goj6_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
|
||||
13:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
16:I[27201,["/_next/static/chunks/158myu8e_yme3.js"],"IconMark"]
|
||||
11:null
|
||||
15:[["$","title","0",{"children":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","1",{"name":"description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","2",{"property":"og:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","3",{"property":"og:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","4",{"property":"og:url","content":"https://hatch.surf"}],["$","meta","5",{"property":"og:site_name","content":"Hatch"}],["$","meta","6",{"property":"og:image","content":"http://localhost:3000/brand/og/default.png"}],["$","meta","7",{"property":"og:image:width","content":"1200"}],["$","meta","8",{"property":"og:image:height","content":"630"}],["$","meta","9",{"property":"og:type","content":"website"}],["$","meta","10",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","11",{"name":"twitter:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","12",{"name":"twitter:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","13",{"name":"twitter:image","content":"http://localhost:3000/brand/og/default.png"}],["$","link","14",{"rel":"icon","href":"/favicon.ico?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","15",{"rel":"icon","href":"/brand/favicon/favicon-48.png"}],["$","$L16","16",{}]]
|
||||
13
.next/server/app/index.segments/__PAGE__.segment.rsc
Normal file
13
.next/server/app/index.segments/__PAGE__.segment.rsc
Normal file
@ -0,0 +1,13 @@
|
||||
1:"$Sreact.fragment"
|
||||
a:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"OutletBoundary"]
|
||||
b:"$Sreact.suspense"
|
||||
0:{"rsc":["$","$1","c",{"children":[[["$","section",null,{"className":"pt-32 pb-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto text-center","children":[["$","div",null,{"className":"inline-block mb-6 px-5 py-2 rounded-full bg-blue-500/10 border border-blue-500/30 text-blue-400 text-sm font-medium","children":"Open source · MIT licensed"}],["$","h1",null,{"className":"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-6 leading-tight bg-gradient-to-r from-white to-zinc-400 bg-clip-text text-transparent","children":["Self-hostable HTTP request",["$","br",null,{}],"inspector + mocker"]}],["$","p",null,{"className":"text-lg md:text-xl text-zinc-400 mb-10 max-w-2xl mx-auto leading-relaxed","children":["One Go binary. SQLite under the hood.",["$","code",null,{"className":"mx-1 px-2 py-0.5 bg-zinc-800 border border-zinc-700 rounded text-fuchsia-400 text-base","children":"docker compose up"}],", and you have an inspection endpoint and a live feed in under 30 seconds."]}],["$","div",null,{"className":"flex flex-col sm:flex-row gap-4 justify-center mb-16","children":[["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"inline-flex items-center justify-center gap-2 px-8 py-4 bg-blue-500 hover:bg-blue-600 text-white font-semibold rounded-lg transition-all shadow-lg shadow-blue-500/30 hover:shadow-xl hover:shadow-blue-500/40 hover:-translate-y-0.5","children":[["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"}]}],"View on GitHub"]}],["$","a",null,{"href":"https://github.com/elfoundation/hatch#quick-start","className":"inline-flex items-center justify-center gap-2 px-8 py-4 bg-zinc-800 hover:bg-zinc-700 text-white font-semibold rounded-lg border border-zinc-700 transition-all shadow-lg hover:shadow-xl hover:-translate-y-0.5","children":"Quick Start →"}]]}],["$","div",null,{"className":"max-w-2xl mx-auto rounded-xl overflow-hidden border border-zinc-800 bg-zinc-900/50 backdrop-blur-sm shadow-2xl","children":[["$","div",null,{"className":"flex items-center gap-2 px-4 py-3 bg-gradient-to-r from-zinc-800/50 to-zinc-800/30 border-b border-zinc-800","children":[["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","span",null,{"className":"ml-2 text-sm text-zinc-500","children":"terminal"}]]}],["$","pre",null,{"className":"p-5 text-left text-sm font-mono overflow-x-auto","children":["$","code",null,{"children":[["$","span",null,{"className":"text-blue-400 font-semibold","children":"$$"}]," ",["$","span",null,{"className":"text-zinc-300","children":"docker compose up -d"}],"\n",["$","span",null,{"className":"text-emerald-400","children":"✓ hatch started on :8080"}],"\n",["$","span",null,{"className":"text-blue-400 font-semibold","children":"$$"}]," ",["$","span",null,{"className":"text-zinc-300","children":["curl -X POST https://your-bin.hatch.surf/test -d ","{'hello':'world'}"]}],"\n",["$","span",null,{"className":"text-emerald-400","children":"✓ captured — view at https://your-bin.hatch.surf/inspect"}]]}]}]]}]]}]}],["$","section",null,{"className":"py-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":[["$","h2",null,{"className":"text-3xl md:text-4xl font-bold text-center mb-16","children":"Three things, and nothing else"}],["$","div",null,{"className":"grid md:grid-cols-3 gap-8","children":[["$","div","Capture",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-blue-500/40 hover:shadow-blue-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":["$L2","$L3","$L4"]}],"$L5","$L6"]}]]}]}],"$L7","$L8"],null,"$L9"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
2:["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-blue-500/15 text-blue-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"12","cy":"12","r":"10"}],["$","polyline",null,{"points":"12 6 12 12 16 14"}]]}]}]
|
||||
3:["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Capture"}]
|
||||
4:["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Method, path, headers, query, body. Persists across restarts because the storage is SQLite on disk, not a hosted queue."}]
|
||||
5:["$","div","Inspect",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-purple-500/40 hover:shadow-purple-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-purple-500/15 text-purple-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}],["$","circle",null,{"cx":"12","cy":"12","r":"3"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Inspect"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"A live SSE feed of incoming requests. Click any captured request to see the headers, the body, the timing."}]]}]
|
||||
6:["$","div","Mock",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-cyan-500/40 hover:shadow-cyan-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-cyan-500/15 text-cyan-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","polyline",null,{"points":"16 18 22 12 16 6"}],["$","polyline",null,{"points":"8 6 2 12 8 18"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Mock"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Return a 200, a 500, or a custom JSON payload. For testing your own retry, backoff, and error-handling logic."}]]}]
|
||||
7:["$","section",null,{"className":"py-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":[["$","h2",null,{"className":"text-3xl md:text-4xl font-bold text-center mb-16","children":"Why a single binary, not a SaaS"}],["$","div",null,{"className":"grid md:grid-cols-3 gap-6","children":[["$","div","01",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-blue-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"01"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Compliance and privacy"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Some teams cannot legally send webhook payloads to a hosted SaaS. Hatch keeps the data on your own network."}]]}],["$","div","02",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-purple-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"02"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Cost"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"A hosted inspector charges per request, per seat, or per retention day. Hatch is one Go binary on a $5 VPS. There is no per-request fee because there is no one to charge it."}]]}],["$","div","03",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-cyan-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"03"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Speed of setup"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":[["$","code",null,{"className":"px-2 py-0.5 bg-zinc-800 border border-zinc-700 rounded text-fuchsia-400 text-sm","children":"docker compose up"}]," ","is faster than signing up for a SaaS, verifying your email, configuring your first bin, and pasting the URL into your webhook config."]}]]}]]}]]}]}]
|
||||
8:["$","section",null,{"className":"py-24 px-6 bg-gradient-to-b from-zinc-900/30 to-zinc-900/60","children":["$","div",null,{"className":"max-w-4xl mx-auto text-center","children":[["$","h2",null,{"className":"text-4xl md:text-5xl font-extrabold mb-4 bg-gradient-to-r from-white to-blue-400 bg-clip-text text-transparent","children":"Start inspecting in 30 seconds"}],["$","p",null,{"className":"text-xl text-zinc-400 mb-10","children":"One binary. Your data stays yours."}],["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"inline-flex items-center justify-center gap-2 px-10 py-5 bg-blue-500 hover:bg-blue-600 text-white font-semibold rounded-lg transition-all shadow-lg shadow-blue-500/30 hover:shadow-xl hover:shadow-blue-500/40 hover:-translate-y-0.5 text-lg","children":"Get Hatch →"}]]}]}]
|
||||
9:["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]
|
||||
c:null
|
||||
26
.next/server/app/index.segments/_full.segment.rsc
Normal file
26
.next/server/app/index.segments/_full.segment.rsc
Normal file
@ -0,0 +1,26 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
d:I[68027,["/_next/static/chunks/158myu8e_yme3.js"],"default",1]
|
||||
:HL["/_next/static/chunks/40hwf0y1goj6_.css","style"]
|
||||
:HL["/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
:HL["/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/40hwf0y1goj6_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/158myu8e_yme3.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"inter_5901b7c6-module__ec5Qua__variable jetbrains_mono_d5591ac2-module__D88TVW__variable","children":["$","body",null,{"className":"min-h-screen bg-zinc-950 text-white font-sans antialiased","children":[["$","a",null,{"href":"#main-content","className":"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:px-4 focus:py-2 focus:bg-blue-500 focus:text-white focus:rounded-lg","children":"Skip to content"}],["$","header",null,{"className":"fixed top-0 left-0 right-0 z-50 py-4 bg-zinc-950/80 backdrop-blur-lg border-b border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto px-6 flex justify-between items-center","children":[["$","a",null,{"href":"/","className":"text-xl font-bold text-white flex items-center gap-2 hover:text-white transition-colors","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","nav",null,{"className":"flex items-center gap-6","children":[["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"GitHub"}],["$","a",null,{"href":"/blog/","className":"text-zinc-400 hover:text-white transition-colors","children":"Blog"}]]}]]}]}],["$","main",null,{"id":"main-content","role":"main","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],["$","footer",null,{"className":"py-8 px-6 border-t border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":["$","div",null,{"className":"flex flex-col md:flex-row justify-between items-center gap-4","children":[["$","span",null,{"className":"text-white font-bold flex items-center gap-2","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","p",null,{"className":"text-zinc-500 text-sm text-center md:text-right","children":["© 2026 El Foundation."," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"Hatch"}]," ","is released under the"," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch/blob/main/LICENSE","className":"text-zinc-400 hover:text-white transition-colors","children":"MIT License"}],"."]}]]}]}]}]]}]}]]}],{"children":[["$","$1","c",{"children":[[["$","section",null,{"className":"pt-32 pb-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto text-center","children":[["$","div",null,{"className":"inline-block mb-6 px-5 py-2 rounded-full bg-blue-500/10 border border-blue-500/30 text-blue-400 text-sm font-medium","children":"Open source · MIT licensed"}],["$","h1",null,{"className":"text-4xl md:text-5xl lg:text-6xl font-extrabold tracking-tight mb-6 leading-tight bg-gradient-to-r from-white to-zinc-400 bg-clip-text text-transparent","children":["Self-hostable HTTP request","$L4","inspector + mocker"]}],"$L5","$L6","$L7"]}]}],"$L8","$L9","$La"],null,"$Lb"]}],{},null,false,null]},null,false,null],"$Lc",false]],"m":"$undefined","G":["$d",["$Le"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
f:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"OutletBoundary"]
|
||||
10:"$Sreact.suspense"
|
||||
12:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"ViewportBoundary"]
|
||||
14:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"MetadataBoundary"]
|
||||
4:["$","br",null,{}]
|
||||
5:["$","p",null,{"className":"text-lg md:text-xl text-zinc-400 mb-10 max-w-2xl mx-auto leading-relaxed","children":["One Go binary. SQLite under the hood.",["$","code",null,{"className":"mx-1 px-2 py-0.5 bg-zinc-800 border border-zinc-700 rounded text-fuchsia-400 text-base","children":"docker compose up"}],", and you have an inspection endpoint and a live feed in under 30 seconds."]}]
|
||||
6:["$","div",null,{"className":"flex flex-col sm:flex-row gap-4 justify-center mb-16","children":[["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"inline-flex items-center justify-center gap-2 px-8 py-4 bg-blue-500 hover:bg-blue-600 text-white font-semibold rounded-lg transition-all shadow-lg shadow-blue-500/30 hover:shadow-xl hover:shadow-blue-500/40 hover:-translate-y-0.5","children":[["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"}]}],"View on GitHub"]}],["$","a",null,{"href":"https://github.com/elfoundation/hatch#quick-start","className":"inline-flex items-center justify-center gap-2 px-8 py-4 bg-zinc-800 hover:bg-zinc-700 text-white font-semibold rounded-lg border border-zinc-700 transition-all shadow-lg hover:shadow-xl hover:-translate-y-0.5","children":"Quick Start →"}]]}]
|
||||
7:["$","div",null,{"className":"max-w-2xl mx-auto rounded-xl overflow-hidden border border-zinc-800 bg-zinc-900/50 backdrop-blur-sm shadow-2xl","children":[["$","div",null,{"className":"flex items-center gap-2 px-4 py-3 bg-gradient-to-r from-zinc-800/50 to-zinc-800/30 border-b border-zinc-800","children":[["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","div",null,{"className":"w-3 h-3 rounded-full bg-zinc-600"}],["$","span",null,{"className":"ml-2 text-sm text-zinc-500","children":"terminal"}]]}],["$","pre",null,{"className":"p-5 text-left text-sm font-mono overflow-x-auto","children":["$","code",null,{"children":[["$","span",null,{"className":"text-blue-400 font-semibold","children":"$$"}]," ",["$","span",null,{"className":"text-zinc-300","children":"docker compose up -d"}],"\n",["$","span",null,{"className":"text-emerald-400","children":"✓ hatch started on :8080"}],"\n",["$","span",null,{"className":"text-blue-400 font-semibold","children":"$$"}]," ",["$","span",null,{"className":"text-zinc-300","children":["curl -X POST https://your-bin.hatch.surf/test -d ","{'hello':'world'}"]}],"\n",["$","span",null,{"className":"text-emerald-400","children":"✓ captured — view at https://your-bin.hatch.surf/inspect"}]]}]}]]}]
|
||||
8:["$","section",null,{"className":"py-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":[["$","h2",null,{"className":"text-3xl md:text-4xl font-bold text-center mb-16","children":"Three things, and nothing else"}],["$","div",null,{"className":"grid md:grid-cols-3 gap-8","children":[["$","div","Capture",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-blue-500/40 hover:shadow-blue-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-blue-500/15 text-blue-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"12","cy":"12","r":"10"}],["$","polyline",null,{"points":"12 6 12 12 16 14"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Capture"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Method, path, headers, query, body. Persists across restarts because the storage is SQLite on disk, not a hosted queue."}]]}],["$","div","Inspect",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-purple-500/40 hover:shadow-purple-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-purple-500/15 text-purple-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}],["$","circle",null,{"cx":"12","cy":"12","r":"3"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Inspect"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"A live SSE feed of incoming requests. Click any captured request to see the headers, the body, the timing."}]]}],["$","div","Mock",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 hover:border-cyan-500/40 hover:shadow-cyan-500/10 transition-all hover:-translate-y-1 shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"w-14 h-14 flex items-center justify-center rounded-xl bg-cyan-500/15 text-cyan-400 mb-4 shadow-lg","children":["$","svg",null,{"width":"28","height":"28","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.5","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","polyline",null,{"points":"16 18 22 12 16 6"}],["$","polyline",null,{"points":"8 6 2 12 8 18"}]]}]}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Mock"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Return a 200, a 500, or a custom JSON payload. For testing your own retry, backoff, and error-handling logic."}]]}]]}]]}]}]
|
||||
9:["$","section",null,{"className":"py-20 px-6","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":[["$","h2",null,{"className":"text-3xl md:text-4xl font-bold text-center mb-16","children":"Why a single binary, not a SaaS"}],["$","div",null,{"className":"grid md:grid-cols-3 gap-6","children":[["$","div","01",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-blue-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"01"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Compliance and privacy"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"Some teams cannot legally send webhook payloads to a hosted SaaS. Hatch keeps the data on your own network."}]]}],["$","div","02",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-purple-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"02"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Cost"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":"A hosted inspector charges per request, per seat, or per retention day. Hatch is one Go binary on a $5 VPS. There is no per-request fee because there is no one to charge it."}]]}],["$","div","03",{"className":"p-6 rounded-xl bg-gradient-to-b from-zinc-900/80 to-zinc-900/40 border border-zinc-800 border-l-4 border-l-cyan-500 hover:-translate-y-1 transition-all shadow-lg hover:shadow-xl","children":[["$","div",null,{"className":"text-4xl font-bold text-zinc-600 font-mono mb-4","children":"03"}],["$","h3",null,{"className":"text-xl font-semibold mb-2","children":"Speed of setup"}],["$","p",null,{"className":"text-zinc-400 leading-relaxed","children":[["$","code",null,{"className":"px-2 py-0.5 bg-zinc-800 border border-zinc-700 rounded text-fuchsia-400 text-sm","children":"docker compose up"}]," ","is faster than signing up for a SaaS, verifying your email, configuring your first bin, and pasting the URL into your webhook config."]}]]}]]}]]}]}]
|
||||
a:["$","section",null,{"className":"py-24 px-6 bg-gradient-to-b from-zinc-900/30 to-zinc-900/60","children":["$","div",null,{"className":"max-w-4xl mx-auto text-center","children":[["$","h2",null,{"className":"text-4xl md:text-5xl font-extrabold mb-4 bg-gradient-to-r from-white to-blue-400 bg-clip-text text-transparent","children":"Start inspecting in 30 seconds"}],["$","p",null,{"className":"text-xl text-zinc-400 mb-10","children":"One binary. Your data stays yours."}],["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"inline-flex items-center justify-center gap-2 px-10 py-5 bg-blue-500 hover:bg-blue-600 text-white font-semibold rounded-lg transition-all shadow-lg shadow-blue-500/30 hover:shadow-xl hover:shadow-blue-500/40 hover:-translate-y-0.5 text-lg","children":"Get Hatch →"}]]}]}]
|
||||
b:["$","$Lf",null,{"children":["$","$10",null,{"name":"Next.MetadataOutlet","children":"$@11"}]}]
|
||||
c:["$","$1","h",{"children":[null,["$","$L12",null,{"children":"$L13"}],["$","div",null,{"hidden":true,"children":["$","$L14",null,{"children":["$","$10",null,{"name":"Next.Metadata","children":"$L15"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
|
||||
e:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/40hwf0y1goj6_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
|
||||
13:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
16:I[27201,["/_next/static/chunks/158myu8e_yme3.js"],"IconMark"]
|
||||
11:null
|
||||
15:[["$","title","0",{"children":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","1",{"name":"description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","2",{"property":"og:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","3",{"property":"og:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","4",{"property":"og:url","content":"https://hatch.surf"}],["$","meta","5",{"property":"og:site_name","content":"Hatch"}],["$","meta","6",{"property":"og:image","content":"http://localhost:3000/brand/og/default.png"}],["$","meta","7",{"property":"og:image:width","content":"1200"}],["$","meta","8",{"property":"og:image:height","content":"630"}],["$","meta","9",{"property":"og:type","content":"website"}],["$","meta","10",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","11",{"name":"twitter:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","12",{"name":"twitter:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","13",{"name":"twitter:image","content":"http://localhost:3000/brand/og/default.png"}],["$","link","14",{"rel":"icon","href":"/favicon.ico?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","15",{"rel":"icon","href":"/brand/favicon/favicon-48.png"}],["$","$L16","16",{}]]
|
||||
6
.next/server/app/index.segments/_head.segment.rsc
Normal file
6
.next/server/app/index.segments/_head.segment.rsc
Normal file
@ -0,0 +1,6 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"ViewportBoundary"]
|
||||
3:I[97367,["/_next/static/chunks/158myu8e_yme3.js"],"MetadataBoundary"]
|
||||
4:"$Sreact.suspense"
|
||||
5:I[27201,["/_next/static/chunks/158myu8e_yme3.js"],"IconMark"]
|
||||
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","1",{"name":"description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","2",{"property":"og:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","3",{"property":"og:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","4",{"property":"og:url","content":"https://hatch.surf"}],["$","meta","5",{"property":"og:site_name","content":"Hatch"}],["$","meta","6",{"property":"og:image","content":"http://localhost:3000/brand/og/default.png"}],["$","meta","7",{"property":"og:image:width","content":"1200"}],["$","meta","8",{"property":"og:image:height","content":"630"}],["$","meta","9",{"property":"og:type","content":"website"}],["$","meta","10",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","11",{"name":"twitter:title","content":"Hatch — Self-hostable HTTP request inspector + mocker"}],["$","meta","12",{"name":"twitter:description","content":"Hatch is a self-hostable HTTP request inspector and mocker. One Go binary, SQLite, no SaaS, no per-request fee. Open source, MIT."}],["$","meta","13",{"name":"twitter:image","content":"http://localhost:3000/brand/og/default.png"}],["$","link","14",{"rel":"icon","href":"/favicon.ico?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","15",{"rel":"icon","href":"/brand/favicon/favicon-48.png"}],["$","$L5","16",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
5
.next/server/app/index.segments/_index.segment.rsc
Normal file
5
.next/server/app/index.segments/_index.segment.rsc
Normal file
@ -0,0 +1,5 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[39756,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
3:I[37457,["/_next/static/chunks/158myu8e_yme3.js"],"default"]
|
||||
:HL["/_next/static/chunks/40hwf0y1goj6_.css","style"]
|
||||
0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/40hwf0y1goj6_.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/158myu8e_yme3.js","async":true}]],["$","html",null,{"lang":"en","className":"inter_5901b7c6-module__ec5Qua__variable jetbrains_mono_d5591ac2-module__D88TVW__variable","children":["$","body",null,{"className":"min-h-screen bg-zinc-950 text-white font-sans antialiased","children":[["$","a",null,{"href":"#main-content","className":"sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:px-4 focus:py-2 focus:bg-blue-500 focus:text-white focus:rounded-lg","children":"Skip to content"}],["$","header",null,{"className":"fixed top-0 left-0 right-0 z-50 py-4 bg-zinc-950/80 backdrop-blur-lg border-b border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto px-6 flex justify-between items-center","children":[["$","a",null,{"href":"/","className":"text-xl font-bold text-white flex items-center gap-2 hover:text-white transition-colors","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","nav",null,{"className":"flex items-center gap-6","children":[["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"GitHub"}],["$","a",null,{"href":"/blog/","className":"text-zinc-400 hover:text-white transition-colors","children":"Blog"}]]}]]}]}],["$","main",null,{"id":"main-content","role":"main","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","footer",null,{"className":"py-8 px-6 border-t border-zinc-800","children":["$","div",null,{"className":"max-w-4xl mx-auto","children":["$","div",null,{"className":"flex flex-col md:flex-row justify-between items-center gap-4","children":[["$","span",null,{"className":"text-white font-bold flex items-center gap-2","children":[["$","span",null,{"className":"text-blue-400","children":"⬡"}]," Hatch"]}],["$","p",null,{"className":"text-zinc-500 text-sm text-center md:text-right","children":["© 2026 El Foundation."," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch","className":"text-zinc-400 hover:text-white transition-colors","children":"Hatch"}]," ","is released under the"," ",["$","a",null,{"href":"https://github.com/elfoundation/hatch/blob/main/LICENSE","className":"text-zinc-400 hover:text-white transition-colors","children":"MIT License"}],"."]}]]}]}]}]]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
4
.next/server/app/index.segments/_tree.segment.rsc
Normal file
4
.next/server/app/index.segments/_tree.segment.rsc
Normal file
@ -0,0 +1,4 @@
|
||||
:HL["/_next/static/chunks/40hwf0y1goj6_.css","style"]
|
||||
:HL["/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
:HL["/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
||||
0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"W0ph6BZ8oDeJaHcE9fuII"}
|
||||
14
.next/server/app/page.js
Normal file
14
.next/server/app/page.js
Normal file
@ -0,0 +1,14 @@
|
||||
var R=require("../chunks/ssr/[turbopack]_runtime.js")("server/app/page.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__02fbh2n._.js")
|
||||
R.c("server/chunks/ssr/node_modules_09r9c10._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_04tpgk4.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__1jp7az7._.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__0g84hko._.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__0gn_kkd._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js")
|
||||
R.c("server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js")
|
||||
R.c("server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js")
|
||||
R.m(51717)
|
||||
module.exports=R.m(51717).exports
|
||||
5
.next/server/app/page.js.map
Normal file
5
.next/server/app/page.js.map
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sections": []
|
||||
}
|
||||
1
.next/server/app/page.js.nft.json
Normal file
1
.next/server/app/page.js.nft.json
Normal file
File diff suppressed because one or more lines are too long
3
.next/server/app/page/app-paths-manifest.json
Normal file
3
.next/server/app/page/app-paths-manifest.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"/page": "app/page.js"
|
||||
}
|
||||
16
.next/server/app/page/build-manifest.json
Normal file
16
.next/server/app/page/build-manifest.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"polyfillFiles": [
|
||||
"static/chunks/0cz1d0mv5g_q7.js"
|
||||
],
|
||||
"lowPriorityFiles": [],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/3z5q_p4msz2ha.js",
|
||||
"static/chunks/2ckqm4grawju5.js",
|
||||
"static/chunks/2nykiepra7i1k.js",
|
||||
"static/chunks/turbopack-1n9x74gl-i54j.js"
|
||||
],
|
||||
"pages": {},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
11
.next/server/app/page/next-font-manifest.json
Normal file
11
.next/server/app/page/next-font-manifest.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"pages": {},
|
||||
"app": {
|
||||
"[project]/app/page": [
|
||||
"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
|
||||
"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
|
||||
]
|
||||
},
|
||||
"appUsingSizeAdjust": true,
|
||||
"pagesUsingSizeAdjust": false
|
||||
}
|
||||
1
.next/server/app/page/react-loadable-manifest.json
Normal file
1
.next/server/app/page/react-loadable-manifest.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
||||
4
.next/server/app/page/server-reference-manifest.json
Normal file
4
.next/server/app/page/server-reference-manifest.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"node": {},
|
||||
"edge": {}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user