mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-15 23:32:46 +00:00
Merge branch 'production-web-ui'
This commit is contained in:
commit
3745480992
813 changed files with 6698 additions and 6569 deletions
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
lib/crates/fabro-spa/assets/** linguist-generated=true -diff
|
||||
13
.github/workflows/typescript.yml
vendored
13
.github/workflows/typescript.yml
vendored
|
|
@ -5,17 +5,23 @@ on:
|
|||
branches: [main]
|
||||
paths:
|
||||
- "apps/**"
|
||||
- "lib/crates/fabro-spa/**"
|
||||
- "lib/packages/**"
|
||||
- "package.json"
|
||||
- "bun.lock"
|
||||
- ".gitattributes"
|
||||
- "scripts/**"
|
||||
- ".github/workflows/typescript.yml"
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "apps/**"
|
||||
- "lib/crates/fabro-spa/**"
|
||||
- "lib/packages/**"
|
||||
- "package.json"
|
||||
- "bun.lock"
|
||||
- ".gitattributes"
|
||||
- "scripts/**"
|
||||
- ".github/workflows/typescript.yml"
|
||||
workflow_dispatch:
|
||||
|
||||
|
|
@ -58,4 +64,9 @@ jobs:
|
|||
persist-credentials: false
|
||||
- uses: oven-sh/setup-bun@3d267786b128fe76c2f16a390aa2448b815359f3 # v2
|
||||
- run: bun install
|
||||
- run: cd apps/fabro-web && bun run build
|
||||
- run: scripts/refresh-fabro-spa.sh
|
||||
- run: git diff --exit-code -- lib/crates/fabro-spa/assets
|
||||
- run: scripts/check-fabro-spa-budgets.sh
|
||||
- uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
|
||||
- run: cargo build -p fabro-cli --release
|
||||
- run: wc -c < target/release/fabro
|
||||
|
|
|
|||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -2,6 +2,7 @@ target
|
|||
.env
|
||||
.entire
|
||||
node_modules
|
||||
apps/fabro-web/dist/
|
||||
tmp
|
||||
evals/swe-bench/repos/
|
||||
evals/swe-bench/results/
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||
macOS note: if `cargo nextest run` fails with `Too many open files (os error 24)` / `EMFILE`, raise the shell's soft FD limit before running tests, for example `ulimit -n 4096 && cargo nextest run --workspace`. Some terminals and inherited agent sessions start with `ulimit -n 256`, which is too low for the shared CLI test daemon under parallel nextest load.
|
||||
|
||||
### TypeScript (fabro-web)
|
||||
- `cd apps/fabro-web && bun run dev` — start React dev server
|
||||
- `cd apps/fabro-web && bun run dev` — rebuild web assets on change for the Rust server; refresh the browser manually
|
||||
- `cd apps/fabro-web && bun test` — run tests
|
||||
- `cd apps/fabro-web && bun run typecheck` — type check
|
||||
- `cd apps/fabro-web && bun run build` — production build
|
||||
|
|
@ -29,7 +29,7 @@ macOS note: if `cargo nextest run` fails with `Too many open files (os error 24)
|
|||
|
||||
### Dev servers
|
||||
1. `fabro server start` — starts the Rust API server (demo mode is per-request via `X-Fabro-Demo: 1` header)
|
||||
2. `cd apps/fabro-web && bun run dev` — starts the React dev server
|
||||
2. `cd apps/fabro-web && bun run dev` — rebuilds web assets on change; refresh the browser manually
|
||||
3. Mintlify docs dev server (requires Docker — `mintlify dev` needs Node LTS which may not match the host):
|
||||
```
|
||||
docker run --rm -d -p 3333:3333 -v $(pwd)/docs:/docs -w /docs --name mintlify-dev node:22-slim \
|
||||
|
|
|
|||
132
Cargo.lock
generated
132
Cargo.lock
generated
|
|
@ -17,6 +17,12 @@ version = "2.0.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
||||
|
||||
[[package]]
|
||||
name = "adler32"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
|
||||
|
||||
[[package]]
|
||||
name = "aead"
|
||||
version = "0.5.2"
|
||||
|
|
@ -855,6 +861,15 @@ version = "0.8.7"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
||||
|
||||
[[package]]
|
||||
name = "core2"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.17"
|
||||
|
|
@ -1116,6 +1131,12 @@ dependencies = [
|
|||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dary_heap"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04"
|
||||
|
||||
[[package]]
|
||||
name = "data-encoding"
|
||||
version = "2.10.0"
|
||||
|
|
@ -1874,6 +1895,7 @@ dependencies = [
|
|||
"fabro-retro",
|
||||
"fabro-sandbox",
|
||||
"fabro-slack",
|
||||
"fabro-spa",
|
||||
"fabro-store",
|
||||
"fabro-types",
|
||||
"fabro-util",
|
||||
|
|
@ -1893,7 +1915,6 @@ dependencies = [
|
|||
"rand 0.8.5",
|
||||
"regex",
|
||||
"reqwest 0.13.2",
|
||||
"rust-embed",
|
||||
"rustls",
|
||||
"rustls-pemfile",
|
||||
"rustls-pki-types",
|
||||
|
|
@ -1908,6 +1929,7 @@ dependencies = [
|
|||
"tokio-stream",
|
||||
"toml 0.8.23",
|
||||
"tower",
|
||||
"tower-http",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
"ulid",
|
||||
|
|
@ -1935,6 +1957,13 @@ dependencies = [
|
|||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fabro-spa"
|
||||
version = "0.176.2"
|
||||
dependencies = [
|
||||
"rust-embed",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fabro-store"
|
||||
version = "0.176.2"
|
||||
|
|
@ -2596,6 +2625,19 @@ version = "0.3.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
|
||||
|
||||
[[package]]
|
||||
name = "globset"
|
||||
version = "0.4.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"bstr",
|
||||
"log",
|
||||
"regex-automata",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gloo-timers"
|
||||
version = "0.3.0"
|
||||
|
|
@ -3092,6 +3134,39 @@ dependencies = [
|
|||
"icu_properties",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "include-flate"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a05fb00d9abc625268e0573a519506b264a7d6965de09bac13201bfb44e723d"
|
||||
dependencies = [
|
||||
"include-flate-codegen",
|
||||
"include-flate-compress",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "include-flate-codegen"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92c3c319a7527668538a8530c541e74e881e94c4f41e1425622d0a41c16468af"
|
||||
dependencies = [
|
||||
"include-flate-compress",
|
||||
"proc-macro-error2",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "include-flate-compress"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed0bd9ea81b94169d61c5a397e9faef02153d3711fc62d3270bcde3ac85380d9"
|
||||
dependencies = [
|
||||
"libflate",
|
||||
"zstd",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.9.3"
|
||||
|
|
@ -3361,6 +3436,30 @@ version = "0.2.182"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
|
||||
|
||||
[[package]]
|
||||
name = "libflate"
|
||||
version = "2.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3248b8d211bd23a104a42d81b4fa8bb8ac4a3b75e7a43d85d2c9ccb6179cd74"
|
||||
dependencies = [
|
||||
"adler32",
|
||||
"core2",
|
||||
"crc32fast",
|
||||
"dary_heap",
|
||||
"libflate_lz77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libflate_lz77"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a599cb10a9cd92b1300debcef28da8f70b935ec937f44fcd1b70a7c986a11c5c"
|
||||
dependencies = [
|
||||
"core2",
|
||||
"hashbrown 0.16.1",
|
||||
"rle-decode-fast",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libgit2-sys"
|
||||
version = "0.18.3+1.9.2"
|
||||
|
|
@ -4554,6 +4653,28 @@ dependencies = [
|
|||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-error-attr2"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-error2"
|
||||
version = "2.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
|
||||
dependencies = [
|
||||
"proc-macro-error-attr2",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.106"
|
||||
|
|
@ -5039,6 +5160,12 @@ dependencies = [
|
|||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rle-decode-fast"
|
||||
version = "1.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
|
||||
|
||||
[[package]]
|
||||
name = "rmcp"
|
||||
version = "1.3.0"
|
||||
|
|
@ -5084,6 +5211,7 @@ version = "8.11.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27"
|
||||
dependencies = [
|
||||
"include-flate",
|
||||
"rust-embed-impl",
|
||||
"rust-embed-utils",
|
||||
"walkdir",
|
||||
|
|
@ -5108,6 +5236,7 @@ version = "8.11.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1"
|
||||
dependencies = [
|
||||
"globset",
|
||||
"sha2",
|
||||
"walkdir",
|
||||
]
|
||||
|
|
@ -6399,6 +6528,7 @@ dependencies = [
|
|||
"tower",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
|||
16
apps/fabro-web/app/api.test.ts
Normal file
16
apps/fabro-web/app/api.test.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import { describe, expect, test } from "bun:test";
|
||||
import { isNotImplemented } from "./api";
|
||||
|
||||
describe("isNotImplemented", () => {
|
||||
test("returns true for 501 status", () => {
|
||||
expect(isNotImplemented(501)).toBe(true);
|
||||
});
|
||||
|
||||
test("returns false for 200 status", () => {
|
||||
expect(isNotImplemented(200)).toBe(false);
|
||||
});
|
||||
|
||||
test("returns false for 404 status", () => {
|
||||
expect(isNotImplemented(404)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
|
@ -27,6 +27,27 @@ export async function apiJson<T>(path: string, options?: ApiOptions): Promise<T>
|
|||
return response.json() as Promise<T>;
|
||||
}
|
||||
|
||||
export function isNotImplemented(status: number): boolean {
|
||||
return status === 501;
|
||||
}
|
||||
|
||||
export async function apiJsonOrNull<T>(
|
||||
path: string,
|
||||
options?: ApiOptions,
|
||||
): Promise<T | null> {
|
||||
const response = await apiFetch(path, options);
|
||||
if (isNotImplemented(response.status)) {
|
||||
return null;
|
||||
}
|
||||
if (!response.ok) {
|
||||
throw new Response(null, {
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
});
|
||||
}
|
||||
return response.json() as Promise<T>;
|
||||
}
|
||||
|
||||
export async function getSetupStatus(): Promise<{ configured: boolean }> {
|
||||
const response = await fetch("/api/v1/setup/status", { credentials: "include" });
|
||||
if (!response.ok) {
|
||||
|
|
|
|||
49
apps/fabro-web/app/data/runs.test.ts
Normal file
49
apps/fabro-web/app/data/runs.test.ts
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import { describe, expect, test } from "bun:test";
|
||||
import { mapRunSummaryToRunItem } from "./runs";
|
||||
|
||||
describe("mapRunSummaryToRunItem", () => {
|
||||
test("maps store run summary to RunItem", () => {
|
||||
const summary = {
|
||||
run_id: "01ABC",
|
||||
goal: "Fix the build",
|
||||
workflow_slug: "fix_build",
|
||||
workflow_name: "Fix Build",
|
||||
host_repo_path: "/home/user/myrepo",
|
||||
status: "running",
|
||||
duration_ms: 65000,
|
||||
total_usd_micros: 500000,
|
||||
labels: {},
|
||||
start_time: "2026-04-08T12:00:00Z",
|
||||
status_reason: null,
|
||||
pending_control: null,
|
||||
};
|
||||
const item = mapRunSummaryToRunItem(summary);
|
||||
expect(item.id).toBe("01ABC");
|
||||
expect(item.title).toBe("Fix the build");
|
||||
expect(item.workflow).toBe("fix_build");
|
||||
expect(item.repo).toBe("myrepo");
|
||||
expect(item.elapsed).toBeDefined();
|
||||
});
|
||||
|
||||
test("handles missing optional fields", () => {
|
||||
const summary = {
|
||||
run_id: "01DEF",
|
||||
goal: null,
|
||||
workflow_slug: null,
|
||||
workflow_name: null,
|
||||
host_repo_path: null,
|
||||
status: "submitted",
|
||||
duration_ms: null,
|
||||
total_usd_micros: null,
|
||||
labels: {},
|
||||
start_time: null,
|
||||
status_reason: null,
|
||||
pending_control: null,
|
||||
};
|
||||
const item = mapRunSummaryToRunItem(summary);
|
||||
expect(item.id).toBe("01DEF");
|
||||
expect(item.title).toBe("Untitled run");
|
||||
expect(item.workflow).toBe("unknown");
|
||||
expect(item.repo).toBe("unknown");
|
||||
});
|
||||
});
|
||||
|
|
@ -66,6 +66,36 @@ export function mapRunListItem(item: RunListItem): RunItem {
|
|||
};
|
||||
}
|
||||
|
||||
export interface RunSummaryResponse {
|
||||
run_id: string;
|
||||
goal: string | null;
|
||||
workflow_slug: string | null;
|
||||
workflow_name: string | null;
|
||||
host_repo_path: string | null;
|
||||
status: string | null;
|
||||
status_reason: string | null;
|
||||
pending_control: string | null;
|
||||
duration_ms: number | null;
|
||||
total_usd_micros: number | null;
|
||||
labels: Record<string, string>;
|
||||
start_time: string | null;
|
||||
}
|
||||
|
||||
export function mapRunSummaryToRunItem(summary: RunSummaryResponse): RunItem {
|
||||
const repoPath = summary.host_repo_path ?? "";
|
||||
const repoName = repoPath.split("/").pop() || "unknown";
|
||||
return {
|
||||
id: summary.run_id,
|
||||
repo: repoName,
|
||||
title: summary.goal ?? "Untitled run",
|
||||
workflow: summary.workflow_slug ?? "unknown",
|
||||
elapsed:
|
||||
summary.duration_ms != null
|
||||
? formatElapsedSecs(summary.duration_ms / 1000)
|
||||
: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
export function deriveCiStatus(checks: CheckRun[]): CiStatus {
|
||||
if (checks.some((c) => c.status === "failure")) return "failing";
|
||||
if (checks.some((c) => c.status === "pending" || c.status === "queued")) return "pending";
|
||||
|
|
|
|||
20
apps/fabro-web/app/layouts/app-shell.test.tsx
Normal file
20
apps/fabro-web/app/layouts/app-shell.test.tsx
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import { describe, expect, test } from "bun:test";
|
||||
import { getVisibleNavigation } from "./app-shell";
|
||||
|
||||
describe("getVisibleNavigation", () => {
|
||||
test("shows all nav items in demo mode", () => {
|
||||
const items = getVisibleNavigation(true);
|
||||
const names = items.map((i) => i.name);
|
||||
expect(names).toContain("Workflows");
|
||||
expect(names).toContain("Runs");
|
||||
expect(names).toContain("Insights");
|
||||
});
|
||||
|
||||
test("hides Workflows and Insights in production mode", () => {
|
||||
const items = getVisibleNavigation(false);
|
||||
const names = items.map((i) => i.name);
|
||||
expect(names).not.toContain("Workflows");
|
||||
expect(names).not.toContain("Insights");
|
||||
expect(names).toContain("Runs");
|
||||
});
|
||||
});
|
||||
|
|
@ -19,18 +19,23 @@ import {
|
|||
} from "@heroicons/react/24/outline";
|
||||
import { Form, Link, Outlet, redirect, useLocation, useMatches, useRevalidator } from "react-router";
|
||||
import { getAuthMe } from "../api";
|
||||
import { DemoModeProvider } from "../lib/demo-mode";
|
||||
import { useTheme } from "../lib/theme";
|
||||
|
||||
export async function loader() {
|
||||
return getAuthMe();
|
||||
}
|
||||
|
||||
const navigation = [
|
||||
{ name: "Workflows", href: "/workflows", icon: RectangleStackIcon },
|
||||
{ name: "Runs", href: "/runs", icon: PlayIcon },
|
||||
{ name: "Insights", href: "/insights", icon: ChartBarIcon },
|
||||
const allNavigation = [
|
||||
{ name: "Workflows", href: "/workflows", icon: RectangleStackIcon, demoOnly: true },
|
||||
{ name: "Runs", href: "/runs", icon: PlayIcon, demoOnly: false },
|
||||
{ name: "Insights", href: "/insights", icon: ChartBarIcon, demoOnly: true },
|
||||
];
|
||||
|
||||
export function getVisibleNavigation(demoMode: boolean) {
|
||||
return allNavigation.filter((item) => !item.demoOnly || demoMode);
|
||||
}
|
||||
|
||||
function classNames(...classes: Array<string | false | null | undefined>) {
|
||||
return classes.filter(Boolean).join(" ");
|
||||
}
|
||||
|
|
@ -41,6 +46,7 @@ export default function AppShell({ loaderData }: any) {
|
|||
const matches = useMatches();
|
||||
const revalidator = useRevalidator();
|
||||
const { theme, toggle } = useTheme();
|
||||
const navigation = getVisibleNavigation(demoMode);
|
||||
const currentNav = navigation.find((item) => pathname.startsWith(item.href));
|
||||
const title = currentNav?.name ?? "";
|
||||
const lastMatch = matches[matches.length - 1];
|
||||
|
|
@ -63,6 +69,7 @@ export default function AppShell({ loaderData }: any) {
|
|||
}
|
||||
|
||||
return (
|
||||
<DemoModeProvider value={demoMode}>
|
||||
<div className="min-h-full">
|
||||
<Disclosure as="nav" className="bg-panel/50">
|
||||
<div className="px-4 sm:px-6 lg:px-8">
|
||||
|
|
@ -263,5 +270,6 @@ export default function AppShell({ loaderData }: any) {
|
|||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</DemoModeProvider>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
29
apps/fabro-web/app/lib/demo-mode.test.tsx
Normal file
29
apps/fabro-web/app/lib/demo-mode.test.tsx
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import { describe, expect, test } from "bun:test";
|
||||
import { renderToString } from "react-dom/server";
|
||||
import { DemoModeProvider, useDemoMode } from "./demo-mode";
|
||||
|
||||
function TestConsumer() {
|
||||
const demoMode = useDemoMode();
|
||||
return <span data-demo={demoMode}>{demoMode ? "demo" : "prod"}</span>;
|
||||
}
|
||||
|
||||
describe("DemoModeProvider", () => {
|
||||
test("provides demo mode value to children", () => {
|
||||
const html = renderToString(
|
||||
<DemoModeProvider value={true}>
|
||||
<TestConsumer />
|
||||
</DemoModeProvider>,
|
||||
);
|
||||
expect(html).toContain("demo");
|
||||
expect(html).toContain('data-demo="true"');
|
||||
});
|
||||
|
||||
test("defaults to false", () => {
|
||||
const html = renderToString(
|
||||
<DemoModeProvider value={false}>
|
||||
<TestConsumer />
|
||||
</DemoModeProvider>,
|
||||
);
|
||||
expect(html).toContain("prod");
|
||||
});
|
||||
});
|
||||
21
apps/fabro-web/app/lib/demo-mode.tsx
Normal file
21
apps/fabro-web/app/lib/demo-mode.tsx
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import { createContext, useContext } from "react";
|
||||
|
||||
const DemoModeContext = createContext(false);
|
||||
|
||||
export function DemoModeProvider({
|
||||
value,
|
||||
children,
|
||||
}: {
|
||||
value: boolean;
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<DemoModeContext.Provider value={value}>
|
||||
{children}
|
||||
</DemoModeContext.Provider>
|
||||
);
|
||||
}
|
||||
|
||||
export function useDemoMode(): boolean {
|
||||
return useContext(DemoModeContext);
|
||||
}
|
||||
24
apps/fabro-web/app/lib/theme-selection.test.ts
Normal file
24
apps/fabro-web/app/lib/theme-selection.test.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import { describe, expect, test } from "bun:test";
|
||||
import { buildThemeBootScript, resolveTheme } from "./theme-selection";
|
||||
|
||||
describe("resolveTheme", () => {
|
||||
test("defaults to dark when no saved theme exists", () => {
|
||||
expect(resolveTheme(null)).toBe("dark");
|
||||
expect(resolveTheme("system")).toBe("dark");
|
||||
});
|
||||
|
||||
test("uses the saved theme when it is valid", () => {
|
||||
expect(resolveTheme("light")).toBe("light");
|
||||
expect(resolveTheme("dark")).toBe("dark");
|
||||
});
|
||||
});
|
||||
|
||||
describe("buildThemeBootScript", () => {
|
||||
test("defaults the boot script to dark without using system preference", () => {
|
||||
const script = buildThemeBootScript();
|
||||
|
||||
expect(script).toContain('localStorage.getItem("fabro-theme")');
|
||||
expect(script).toContain('t="dark"');
|
||||
expect(script).not.toContain("matchMedia");
|
||||
});
|
||||
});
|
||||
16
apps/fabro-web/app/lib/theme-selection.ts
Normal file
16
apps/fabro-web/app/lib/theme-selection.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
type Theme = "light" | "dark";
|
||||
|
||||
const STORAGE_KEY = "fabro-theme";
|
||||
|
||||
function resolveTheme(storedTheme: string | null): Theme {
|
||||
return storedTheme === "light" || storedTheme === "dark"
|
||||
? storedTheme
|
||||
: "dark";
|
||||
}
|
||||
|
||||
function buildThemeBootScript(storageKey = STORAGE_KEY) {
|
||||
return `(function(){try{var t=localStorage.getItem("${storageKey}");if(t!=="light"&&t!=="dark")t="dark";document.documentElement.classList.add(t)}catch(e){document.documentElement.classList.add("dark")}})()`;
|
||||
}
|
||||
|
||||
export { STORAGE_KEY, buildThemeBootScript, resolveTheme };
|
||||
export type { Theme };
|
||||
|
|
@ -1,16 +1,10 @@
|
|||
import { createContext, useCallback, useContext, useEffect, useState } from "react";
|
||||
|
||||
type Theme = "light" | "dark";
|
||||
|
||||
const STORAGE_KEY = "fabro-theme";
|
||||
import { STORAGE_KEY, resolveTheme } from "./theme-selection";
|
||||
import type { Theme } from "./theme-selection";
|
||||
|
||||
function getInitialTheme(): Theme {
|
||||
if (typeof window === "undefined") return "dark";
|
||||
const stored = localStorage.getItem(STORAGE_KEY);
|
||||
if (stored === "light" || stored === "dark") return stored;
|
||||
return window.matchMedia("(prefers-color-scheme: dark)").matches
|
||||
? "dark"
|
||||
: "light";
|
||||
return resolveTheme(localStorage.getItem(STORAGE_KEY));
|
||||
}
|
||||
|
||||
function applyThemeClass(theme: Theme) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
import { isRouteErrorResponse, Outlet } from "react-router";
|
||||
import { ThemeProvider } from "./lib/theme";
|
||||
import { buildThemeBootScript } from "./lib/theme-selection";
|
||||
import "./app.css";
|
||||
|
||||
const themeScript = `(function(){try{var t=localStorage.getItem("fabro-theme");if(t!=="light"&&t!=="dark")t=window.matchMedia("(prefers-color-scheme:dark)").matches?"dark":"light";document.documentElement.classList.add(t)}catch(e){document.documentElement.classList.add("dark")}})()`;
|
||||
const themeScript = buildThemeBootScript();
|
||||
|
||||
export default function Root() {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -2,29 +2,40 @@ import { useEffect } from "react";
|
|||
import { ChevronDownIcon, ChevronRightIcon } from "@heroicons/react/20/solid";
|
||||
import { Menu, MenuButton, MenuItem, MenuItems } from "@headlessui/react";
|
||||
import { Link, Outlet, useFetcher, useLocation } from "react-router";
|
||||
import { columnNames, mapRunListItem, statusColors } from "../data/runs";
|
||||
import type { ColumnStatus } from "../data/runs";
|
||||
import { columnNames, mapRunSummaryToRunItem, statusColors } from "../data/runs";
|
||||
import type { ColumnStatus, RunSummaryResponse } from "../data/runs";
|
||||
import { apiJson } from "../api";
|
||||
import type { PaginatedRunList, PreviewUrlResponse } from "@qltysh/fabro-api-client";
|
||||
import { useDemoMode } from "../lib/demo-mode";
|
||||
import type { PreviewUrlResponse } from "@qltysh/fabro-api-client";
|
||||
|
||||
const tabs = [
|
||||
{ name: "Overview", path: "", count: null },
|
||||
{ name: "Stages", path: "/stages/detect-drift", count: null },
|
||||
{ name: "Files Changed", path: "/files", count: null },
|
||||
{ name: "Billing", path: "/billing", count: null },
|
||||
const allTabs = [
|
||||
{ name: "Overview", path: "", count: null, demoOnly: false, broken: false },
|
||||
{ name: "Stages", path: "/stages/detect-drift", count: null, demoOnly: true, broken: false },
|
||||
{ name: "Files Changed", path: "/files", count: null, demoOnly: false, broken: true },
|
||||
{ name: "Graph", path: "/graph", count: null, demoOnly: false, broken: false },
|
||||
{ name: "Billing", path: "/billing", count: null, demoOnly: false, broken: false },
|
||||
];
|
||||
|
||||
export const handle = { hideHeader: true };
|
||||
|
||||
export async function loader({ request, params }: any) {
|
||||
const response = await apiJson<PaginatedRunList>("/boards/runs", { request });
|
||||
const apiRun = response.data.find((r) => r.id === params.id);
|
||||
if (!apiRun) return { run: null };
|
||||
const response = await fetch(`/api/v1/runs/${params.id}`, {
|
||||
credentials: "include",
|
||||
});
|
||||
if (!response.ok) return { run: null };
|
||||
const summary: RunSummaryResponse = await response.json();
|
||||
const item = mapRunSummaryToRunItem(summary);
|
||||
const statusMap: Record<string, ColumnStatus> = {
|
||||
running: "working",
|
||||
paused: "pending",
|
||||
completed: "merge",
|
||||
};
|
||||
const status = statusMap[summary.status ?? ""] ?? "working";
|
||||
return {
|
||||
run: {
|
||||
...mapRunListItem(apiRun),
|
||||
status: apiRun.status as ColumnStatus,
|
||||
statusLabel: columnNames[apiRun.status as ColumnStatus] ?? apiRun.status,
|
||||
...item,
|
||||
status,
|
||||
statusLabel: columnNames[status] ?? summary.status ?? "Unknown",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
@ -54,6 +65,8 @@ export default function RunDetail({ loaderData, params }: any) {
|
|||
const { pathname } = useLocation();
|
||||
const basePath = `/runs/${params.id}`;
|
||||
const previewFetcher = useFetcher<PreviewUrlResponse>();
|
||||
const demoMode = useDemoMode();
|
||||
const tabs = allTabs.filter((t) => !t.broken && (!t.demoOnly || demoMode));
|
||||
|
||||
useEffect(() => {
|
||||
if (previewFetcher.data?.url) {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { CheckCircleIcon, ArrowPathIcon, PauseCircleIcon, XCircleIcon } from "@h
|
|||
import { DocumentTextIcon, MapIcon } from "@heroicons/react/24/outline";
|
||||
import { useTheme } from "../lib/theme";
|
||||
import { getGraphTheme } from "../lib/graph-theme";
|
||||
import { apiFetch, apiJson } from "../api";
|
||||
import { apiFetch, apiJsonOrNull } from "../api";
|
||||
import { formatDurationSecs } from "../lib/format";
|
||||
import type { PaginatedRunStageList } from "@qltysh/fabro-api-client";
|
||||
|
||||
|
|
@ -22,11 +22,11 @@ interface Stage {
|
|||
}
|
||||
|
||||
export async function loader({ request, params }: any) {
|
||||
const [{ data: apiStages }, graphRes] = await Promise.all([
|
||||
apiJson<PaginatedRunStageList>(`/runs/${params.id}/stages`, { request }),
|
||||
const [stagesResult, graphRes] = await Promise.all([
|
||||
apiJsonOrNull<PaginatedRunStageList>(`/runs/${params.id}/stages`, { request }),
|
||||
apiFetch(`/runs/${params.id}/graph`, { request }),
|
||||
]);
|
||||
const stages: Stage[] = apiStages.map((s) => ({
|
||||
const stages: Stage[] = (stagesResult?.data ?? []).map((s) => ({
|
||||
id: s.id,
|
||||
name: s.name,
|
||||
dotId: s.dot_id ?? s.id,
|
||||
|
|
|
|||
|
|
@ -5,10 +5,9 @@ import { CheckCircleIcon, ArrowPathIcon, PauseCircleIcon, XCircleIcon } from "@h
|
|||
import { DocumentTextIcon, MapIcon } from "@heroicons/react/24/outline";
|
||||
import { useTheme } from "../lib/theme";
|
||||
import { getGraphTheme } from "../lib/graph-theme";
|
||||
import { apiJson } from "../api";
|
||||
import { apiJsonOrNull } from "../api";
|
||||
import { formatDurationSecs } from "../lib/format";
|
||||
import type { PaginatedRunStageList, PaginatedRunList } from "@qltysh/fabro-api-client";
|
||||
import type { WorkflowDetailResponse } from "../lib/workflow-api";
|
||||
import type { PaginatedRunStageList } from "@qltysh/fabro-api-client";
|
||||
|
||||
export const handle = { wide: true };
|
||||
|
||||
|
|
@ -22,27 +21,17 @@ interface Stage {
|
|||
}
|
||||
|
||||
export async function loader({ request, params }: any) {
|
||||
const [{ data: apiStages }, response] = await Promise.all([
|
||||
apiJson<PaginatedRunStageList>(`/runs/${params.id}/stages`, { request }),
|
||||
apiJson<PaginatedRunList>("/boards/runs", { request }),
|
||||
]);
|
||||
const stages: Stage[] = apiStages.map((s) => ({
|
||||
const stagesResult = await apiJsonOrNull<PaginatedRunStageList>(
|
||||
`/runs/${params.id}/stages`,
|
||||
{ request },
|
||||
);
|
||||
const stages: Stage[] = (stagesResult?.data ?? []).map((s) => ({
|
||||
id: s.id,
|
||||
name: s.name,
|
||||
status: s.status as StageStatus,
|
||||
duration: s.duration_secs != null ? formatDurationSecs(s.duration_secs) : "--",
|
||||
}));
|
||||
const run = response.data.find((r) => r.id === params.id);
|
||||
let graphDot: string | null = null;
|
||||
if (run) {
|
||||
try {
|
||||
const workflow = await apiJson<WorkflowDetailResponse>(`/workflows/${run.workflow}`, { request });
|
||||
graphDot = workflow.graph;
|
||||
} catch {
|
||||
// workflow not found — leave graphDot null
|
||||
}
|
||||
}
|
||||
return { stages, graphDot };
|
||||
return { stages, graphDot: null };
|
||||
}
|
||||
|
||||
const statusConfig: Record<StageStatus, { icon: typeof CheckCircleIcon; color: string }> = {
|
||||
|
|
|
|||
|
|
@ -1,19 +1,21 @@
|
|||
import { useEffect, useMemo, useState } from "react";
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { AuthLayout } from "../components/auth-layout";
|
||||
|
||||
type SetupState = "registering" | "restart_required" | "ready" | "error";
|
||||
type SetupState = "registering" | "done" | "error";
|
||||
|
||||
export default function SetupComplete() {
|
||||
const code = useMemo(() => new URLSearchParams(window.location.search).get("code"), []);
|
||||
const [state, setState] = useState<SetupState>(code ? "registering" : "restart_required");
|
||||
const [state, setState] = useState<SetupState>(code ? "registering" : "done");
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const registeredRef = useRef(false);
|
||||
|
||||
useEffect(() => {
|
||||
let cancelled = false;
|
||||
if (registeredRef.current) return;
|
||||
registeredRef.current = true;
|
||||
|
||||
async function register() {
|
||||
if (!code) {
|
||||
setState("restart_required");
|
||||
setState("done");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -26,48 +28,18 @@ export default function SetupComplete() {
|
|||
|
||||
if (!response.ok) {
|
||||
const payload = await response.json().catch(() => ({}));
|
||||
if (!cancelled) {
|
||||
setError(payload.error ?? "Setup registration failed.");
|
||||
setState("error");
|
||||
}
|
||||
setError(payload.error ?? "Setup registration failed.");
|
||||
setState("error");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!cancelled) {
|
||||
setState("restart_required");
|
||||
window.history.replaceState({}, "", "/setup/complete");
|
||||
}
|
||||
setState("done");
|
||||
window.history.replaceState({}, "", "/setup/complete");
|
||||
}
|
||||
|
||||
void register();
|
||||
|
||||
return () => {
|
||||
cancelled = true;
|
||||
};
|
||||
}, [code]);
|
||||
|
||||
useEffect(() => {
|
||||
if (state !== "restart_required") {
|
||||
return;
|
||||
}
|
||||
|
||||
const timer = window.setInterval(async () => {
|
||||
const response = await fetch("/api/v1/setup/status", { credentials: "include" });
|
||||
if (!response.ok) {
|
||||
return;
|
||||
}
|
||||
|
||||
const payload = await response.json().catch(() => ({ configured: false }));
|
||||
if (payload.configured) {
|
||||
setState("ready");
|
||||
}
|
||||
}, 2000);
|
||||
|
||||
return () => {
|
||||
window.clearInterval(timer);
|
||||
};
|
||||
}, [state]);
|
||||
|
||||
return (
|
||||
<AuthLayout>
|
||||
{state === "registering" && (
|
||||
|
|
@ -81,30 +53,13 @@ export default function SetupComplete() {
|
|||
</>
|
||||
)}
|
||||
|
||||
{state === "restart_required" && (
|
||||
{state === "done" && (
|
||||
<>
|
||||
<h1 className="text-center text-lg font-semibold text-fg">
|
||||
Setup complete
|
||||
</h1>
|
||||
<p className="mt-2 text-center text-sm text-fg-3">
|
||||
Fabro loads auth configuration at process start, so a restart is required before sign-in.
|
||||
</p>
|
||||
<pre className="mt-6 rounded-lg border border-line bg-panel/80 px-4 py-3 text-center font-mono text-sm text-fg">
|
||||
fabro server start
|
||||
</pre>
|
||||
<p className="mt-4 text-center text-xs text-fg-muted">
|
||||
Waiting for the restarted server to come back...
|
||||
</p>
|
||||
</>
|
||||
)}
|
||||
|
||||
{state === "ready" && (
|
||||
<>
|
||||
<h1 className="text-center text-lg font-semibold text-fg">
|
||||
Restart detected
|
||||
</h1>
|
||||
<p className="mt-2 text-center text-sm text-fg-3">
|
||||
Authentication is ready.
|
||||
Your GitHub App has been registered and configured.
|
||||
</p>
|
||||
<a
|
||||
href="/login"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ export default function Setup() {
|
|||
const suffix = Math.random().toString(16).slice(2, 8);
|
||||
return JSON.stringify({
|
||||
name: `Fabro-${suffix}`,
|
||||
url: baseUrl,
|
||||
url: "https://fabro.sh",
|
||||
redirect_url: `${baseUrl}/setup/complete`,
|
||||
callback_urls: [`${baseUrl}/auth/callback/github`],
|
||||
setup_url: `${baseUrl}/setup/complete`,
|
||||
|
|
|
|||
2
apps/fabro-web/dist/assets/app.css
vendored
2
apps/fabro-web/dist/assets/app.css
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-019jygp1.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-019jygp1.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-02n7dnxd.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-02n7dnxd.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-05s0gc93.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-05s0gc93.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-06fm9b6d.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-06fm9b6d.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-07en1qh1.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-07en1qh1.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "B2B8C7571ED9C9F664756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "A6C25A91CA86528764756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-0nc05j52.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-0nc05j52.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-0pazjatd.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-0pazjatd.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "2BADFA3D6582DF5E64756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-0tq24xt3.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-0tq24xt3.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-11c3h1xt.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-11c3h1xt.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-11vzjswv.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-11vzjswv.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-17r63emm.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-17r63emm.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "404DC8C86C76ABB464756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "B3D290E5FB496EF464756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-1jb7a4x7.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-1jb7a4x7.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "0D1B315872C84EA364756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-1xpescw2.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-1xpescw2.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-1z6jks96.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-1z6jks96.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-207mkg9t.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-207mkg9t.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/git-commit.mjs"],
|
||||
"sourcesContent": [
|
||||
"import diff from './diff.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Git Commit Message\\\",\\\"name\\\":\\\"git-commit\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=^diff --git)\\\",\\\"contentName\\\":\\\"source.diff\\\",\\\"end\\\":\\\"\\\\\\\\z\\\",\\\"name\\\":\\\"meta.embedded.diff.git-commit\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.diff\\\"}]},{\\\"begin\\\":\\\"^(?!#)\\\",\\\"end\\\":\\\"^(?=#)\\\",\\\"name\\\":\\\"meta.scope.message.git-commit\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.deprecated.line-too-long.git-commit\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.line-too-long.git-commit\\\"}},\\\"match\\\":\\\"\\\\\\\\G.{0,50}(.{0,22}(.*))$\\\",\\\"name\\\":\\\"meta.scope.subject.git-commit\\\"}]},{\\\"begin\\\":\\\"^(?=#)\\\",\\\"contentName\\\":\\\"comment.line.number-sign.git-commit\\\",\\\"end\\\":\\\"^(?!#)\\\",\\\"name\\\":\\\"meta.scope.metadata.git-commit\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"markup.changed.git-commit\\\"}},\\\"match\\\":\\\"^#\\\\\\\\t((modified|renamed):.*)$\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"markup.inserted.git-commit\\\"}},\\\"match\\\":\\\"^#\\\\\\\\t(new file:.*)$\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"markup.deleted.git-commit\\\"}},\\\"match\\\":\\\"^#\\\\\\\\t(deleted.*)$\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.file-type.git-commit\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.filename.git-commit\\\"}},\\\"match\\\":\\\"^#\\\\\\\\t([^:]+): *(.*)$\\\"}]}],\\\"scopeName\\\":\\\"text.git-commit\\\",\\\"embeddedLangs\\\":[\\\"diff\\\"]}\"))\n\nexport default [\n...diff,\nlang\n]\n"
|
||||
],
|
||||
"mappings": "0EAEA,FAAM,EAAO,OAAO,OAAO,KAAK,MAAM,umCAA2vC,CAAC,EAEnxC,GACf,GAAG,EACH,CACA",
|
||||
"debugId": "FF6F1DB5E1831DE564756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-2cjhppva.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2cjhppva.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/fluent.mjs"],
|
||||
"sourcesContent": [
|
||||
"const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Fluent\\\",\\\"name\\\":\\\"fluent\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#message\\\"},{\\\"include\\\":\\\"#wrong-line\\\"}],\\\"repository\\\":{\\\"attributes\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\.[A-Za-z][-0-9A-Z_a-z]*\\\\\\\\s*=\\\\\\\\s*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.class.attribute-begin.fluent\\\"}},\\\"end\\\":\\\"^(?=\\\\\\\\s*[^.])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#placeable\\\"}]},\\\"comment\\\":{\\\"match\\\":\\\"^##?#?\\\\\\\\s.*$\\\",\\\"name\\\":\\\"comment.fluent\\\"},\\\"function-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"support.function.function-comma.fluent\\\"},\\\"function-named-argument\\\":{\\\"begin\\\":\\\"([0-9A-Za-z]+:)\\\\\\\\s*([\\\\\\\"0-9A-Za-z]+)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.named-argument.name.fluent\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.named-argument.value.fluent\\\"}},\\\"end\\\":\\\"(?=[),\\\\\\\\s])\\\",\\\"name\\\":\\\"variable.other.named-argument.fluent\\\"},\\\"function-positional-argument\\\":{\\\"match\\\":\\\"\\\\\\\\$[-0-9A-Z_a-z]+\\\",\\\"name\\\":\\\"variable.other.function.positional-argument.fluent\\\"},\\\"invalid-placeable-string-missing-end-quote\\\":{\\\"match\\\":\\\"\\\\\\\"[^\\\\\\\"]+$\\\",\\\"name\\\":\\\"invalid.illegal.wrong-placeable-missing-end-quote.fluent\\\"},\\\"invalid-placeable-wrong-placeable-missing-end\\\":{\\\"match\\\":\\\"([^A-Z}]*|[^-][^>])$\\\\\\\\b\\\",\\\"name\\\":\\\"invalid.illegal.wrong-placeable-missing-end.fluent\\\"},\\\"message\\\":{\\\"begin\\\":\\\"^(-?[A-Za-z][-0-9A-Z_a-z]*\\\\\\\\s*=\\\\\\\\s*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.class.message-identifier.fluent\\\"}},\\\"contentName\\\":\\\"string.fluent\\\",\\\"end\\\":\\\"^(?=\\\\\\\\S)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attributes\\\"},{\\\"include\\\":\\\"#placeable\\\"}]},\\\"placeable\\\":{\\\"begin\\\":\\\"(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.placeable.begin.fluent\\\"}},\\\"contentName\\\":\\\"variable.other.placeable.content.fluent\\\",\\\"end\\\":\\\"(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.placeable.end.fluent\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#placeable-string\\\"},{\\\"include\\\":\\\"#placeable-function\\\"},{\\\"include\\\":\\\"#placeable-reference-or-number\\\"},{\\\"include\\\":\\\"#selector\\\"},{\\\"include\\\":\\\"#invalid-placeable-wrong-placeable-missing-end\\\"},{\\\"include\\\":\\\"#invalid-placeable-string-missing-end-quote\\\"},{\\\"include\\\":\\\"#invalid-placeable-wrong-function-name\\\"}]},\\\"placeable-function\\\":{\\\"begin\\\":\\\"([A-Z][-0-9A-Z_]*\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.placeable-function.call.begin.fluent\\\"}},\\\"contentName\\\":\\\"string.placeable-function.fluent\\\",\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.placeable-function.call.end.fluent\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function-comma\\\"},{\\\"include\\\":\\\"#function-positional-argument\\\"},{\\\"include\\\":\\\"#function-named-argument\\\"}]},\\\"placeable-reference-or-number\\\":{\\\"match\\\":\\\"(([-$])[-0-9A-Z_a-z]+|[A-Za-z][-0-9A-Z_a-z]*|[0-9]+)\\\",\\\"name\\\":\\\"variable.other.placeable.reference-or-number.fluent\\\"},\\\"placeable-string\\\":{\\\"begin\\\":\\\"(\\\\\\\")(?=[^\\\\\\\\n]*\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.placeable-string-begin.fluent\\\"}},\\\"contentName\\\":\\\"string.placeable-string-content.fluent\\\",\\\"end\\\":\\\"(\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.placeable-string-end.fluent\\\"}}},\\\"selector\\\":{\\\"begin\\\":\\\"(->)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.selector.begin.fluent\\\"}},\\\"contentName\\\":\\\"string.selector.content.fluent\\\",\\\"end\\\":\\\"^(?=\\\\\\\\s*})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#selector-item\\\"}]},\\\"selector-item\\\":{\\\"begin\\\":\\\"(\\\\\\\\s*\\\\\\\\*?\\\\\\\\[)([-0-9A-Z_a-z]+)(]\\\\\\\\s*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.selector-item.begin.fluent\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.selector-item.begin.fluent\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.function.selector-item.begin.fluent\\\"}},\\\"contentName\\\":\\\"string.selector-item.content.fluent\\\",\\\"end\\\":\\\"^(?=(\\\\\\\\s*})|(\\\\\\\\s*\\\\\\\\[)|(\\\\\\\\s*\\\\\\\\*))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#placeable\\\"}]},\\\"wrong-line\\\":{\\\"match\\\":\\\".*\\\",\\\"name\\\":\\\"invalid.illegal.wrong-line.fluent\\\"}},\\\"scopeName\\\":\\\"source.ftl\\\",\\\"aliases\\\":[\\\"ftl\\\"]}\"))\n\nexport default [\nlang\n]\n"
|
||||
],
|
||||
"mappings": "4BAAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,09GAAo2H,CAAC,EAE53H,GACf,CACA",
|
||||
"debugId": "ECEE1DD8C17D275564756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-2d0xan0e.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2d0xan0e.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-2eh3eq47.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2eh3eq47.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-2ndh3q6f.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2ndh3q6f.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-2rnptd9f.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2rnptd9f.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-2t67c0zp.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2t67c0zp.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-2v5x7cyg.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2v5x7cyg.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-2xqt91k6.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2xqt91k6.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-2z02c7x4.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-2z02c7x4.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-36rb0g8e.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-36rb0g8e.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-3bn8ccxt.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-3bn8ccxt.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/logo.mjs"],
|
||||
"sourcesContent": [
|
||||
"const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Logo\\\",\\\"fileTypes\\\":[],\\\"name\\\":\\\"logo\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^to [.\\\\\\\\w]+\\\",\\\"name\\\":\\\"entity.name.function.logo\\\"},{\\\"match\\\":\\\"continue|do\\\\\\\\.until|do\\\\\\\\.while|end|for(each)?|if(else|falsetrue|)|repeat|stop|until\\\",\\\"name\\\":\\\"keyword.control.logo\\\"},{\\\"match\\\":\\\"\\\\\\\\b(\\\\\\\\.defmacro|\\\\\\\\.eq|\\\\\\\\.macro|\\\\\\\\.maybeoutput|\\\\\\\\.setbf|\\\\\\\\.setfirst|\\\\\\\\.setitem|\\\\\\\\.setsegmentsize|allopen|allowgetset|and|apply|arc|arctan|arity|arrayp??|arraytolist|ascii|ashift|back|background|backslashedp|beforep|bitand|bitnot|bitor|bitxor|buriedp??|bury|buryall|buryname|butfirsts??|butlast|bye|cascade|case|caseignoredp|catch|char|clean|clearscreen|cleartext|close|closeall|combine|cond|contents|copydef|cos|count|crossmap|cursor|define|definedp|dequeue|difference|dribble|edall|edit|editfile|edns??|edpls??|edps|emptyp|eofp|epspict|equalp|erall|erase|erasefile|erns??|erpls??|erps|erract|error|exp|fence|filep|fill|filter|find|firsts??|forever|form|forward|fput|fullprintp|fullscreen|fulltext|gc|gensym|global|goto|gprop|greaterp|heading|help|hideturtle|home|ignore|int|invoke|iseq|item|keyp|label|last|left|lessp|listp??|listtoarray|ln|load|loadnoisily|loadpict|local|localmake|log10|lowercase|lput|lshift|macroexpand|macrop|make|map|map.se|mdarray|mditem|mdsetitem|memberp??|minus|modulo|name|namelist|namep|names|nodes|nodribble|norefresh|not|numberp|openappend|openread|openupdate|openwrite|or|output|palette|parse|pause|pen|pencolor|pendownp??|penerase|penmode|penpaint|penreverse|pensize|penup|pick|plistp??|plists|pllist|po|poall|pons??|popl??|popls|pops|pos|pots??|power|pprop|prefix|primitivep|print|printdepthlimit|printwidthlimit|procedurep|procedures|product|push|queue|quoted|quotient|radarctan|radcos|radsin|random|rawascii|readchars??|reader|readlist|readpos|readrawline|readword|redefp|reduce|refresh|remainder|remdup|remove|remprop|repcount|rerandom|reverse|right|round|rseq|run|runparse|runresult|savel??|savepict|screenmode|scrunch|sentence|setbackground|setcursor|seteditor|setheading|sethelploc|setitem|setlibloc|setmargins|setpalette|setpen|setpencolor|setpensize|setpos|setprefix|setread|setreadpos|setscrunch|settemploc|settextcolor|setwrite|setwritepos|setxy??|sety|shell|show|shownp|showturtle|sin|splitscreen|sqrt|standout|startup|step|steppedp??|substringp|sum|tag|test|text|textscreen|thing|throw|towards|traced??|tracedp|transfer|turtlemode|type|unbury|unburyall|unburyname|unburyonedit|unstep|untrace|uppercase|usealternatenam|wait|while|window|wordp??|wrap|writepos|writer|xcor|ycor)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.other.logo\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.logo\\\"}},\\\"match\\\":\\\"(:)(?:\\\\\\\\|[^|]*\\\\\\\\||[-.\\\\\\\\w]*)+\\\",\\\"name\\\":\\\"variable.parameter.logo\\\"},{\\\"match\\\":\\\"\\\\\\\"(?:\\\\\\\\|[^|]*\\\\\\\\||[-.\\\\\\\\w]*)+\\\",\\\"name\\\":\\\"string.other.word.logo\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=;)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.logo\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\";\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.logo\\\"}},\\\"end\\\":\\\"\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.semicolon.logo\\\"}]}],\\\"scopeName\\\":\\\"source.logo\\\"}\"))\n\nexport default [\nlang\n]\n"
|
||||
],
|
||||
"mappings": "4BAAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,u/FAA8lG,CAAC,EAEtnG,GACf,CACA",
|
||||
"debugId": "2ECDFE87FCB33F3664756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-3g84zxfd.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-3g84zxfd.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-3m9zvayn.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-3m9zvayn.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-3my0wjn6.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-3my0wjn6.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-3nbmjrwz.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-3nbmjrwz.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "A9845377EBA21FA764756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-3rchmqge.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-3rchmqge.js.map
vendored
File diff suppressed because one or more lines are too long
11
apps/fabro-web/dist/assets/chunk-3tfe6c9b.js.map
vendored
11
apps/fabro-web/dist/assets/chunk-3tfe6c9b.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-457408mh.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-457408mh.js.map
vendored
File diff suppressed because one or more lines are too long
11
apps/fabro-web/dist/assets/chunk-4833vrwm.js.map
vendored
11
apps/fabro-web/dist/assets/chunk-4833vrwm.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "A93D7704B874887E64756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-4bp68sr2.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-4bp68sr2.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-4g4hkb7x.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-4g4hkb7x.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-4h0ks3v3.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-4h0ks3v3.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-4j8a65qz.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-4j8a65qz.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-4v5fshv2.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-4v5fshv2.js.map
vendored
File diff suppressed because one or more lines are too long
12
apps/fabro-web/dist/assets/chunk-50s79t1q.js.map
vendored
12
apps/fabro-web/dist/assets/chunk-50s79t1q.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-551b9h9v.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-551b9h9v.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-56hr8ze6.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-56hr8ze6.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-56ztj47e.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-56ztj47e.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "02F875873A3E61E564756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-5bdrk519.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-5bdrk519.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-5exp5fdx.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-5exp5fdx.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-5gqhakby.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-5gqhakby.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-5w2bs93r.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-5w2bs93r.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-61ctvdht.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-61ctvdht.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-63fds60w.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-63fds60w.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-65xe94t7.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-65xe94t7.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-6h2erjze.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6h2erjze.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-6jf76z88.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6jf76z88.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-6jy2cvk9.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6jy2cvk9.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/wenyan.mjs"],
|
||||
"sourcesContent": [
|
||||
"const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Wenyan\\\",\\\"name\\\":\\\"wenyan\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#constants\\\"},{\\\"include\\\":\\\"#operators\\\"},{\\\"include\\\":\\\"#symbols\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#comment-blocks\\\"},{\\\"include\\\":\\\"#comment-lines\\\"}],\\\"repository\\\":{\\\"comment-blocks\\\":{\\\"begin\\\":\\\"([批注疏]曰)。?(「「|『)\\\",\\\"end\\\":\\\"(」」|』)\\\",\\\"name\\\":\\\"comment.block\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character\\\"}]},\\\"comment-lines\\\":{\\\"begin\\\":\\\"[批注疏]曰\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"comment.line\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character\\\"}]},\\\"constants\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"[·〇一七三九二五京億兆八六分十千又四垓埃塵微忽極正毫沙渺溝漠澗百秭穰絲纖萬負載釐零]\\\",\\\"name\\\":\\\"constant.numeric\\\"},{\\\"match\\\":\\\"[其陰陽]\\\",\\\"name\\\":\\\"constant.language\\\"},{\\\"begin\\\":\\\"「「|『\\\",\\\"end\\\":\\\"」」|』\\\",\\\"name\\\":\\\"string.quoted\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#variables\\\"}]},\\\"keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"[元列數爻物術言]\\\",\\\"name\\\":\\\"storage.type\\\"},{\\\"match\\\":\\\"乃行是術曰|若其不然者|乃歸空無|欲行是術|乃止是遍|若其然者|其物如是|乃得矣|之術也|必先得|是術曰|恆為是|之物也|乃得|是謂|云云|中之|為是|乃止|若非|或若|之長|其餘\\\",\\\"name\\\":\\\"keyword.control\\\"},{\\\"match\\\":\\\"或云|蓋謂\\\",\\\"name\\\":\\\"keyword.control\\\"},{\\\"match\\\":\\\"中有陽乎|中無陰乎|所餘幾何|不等於|不大於|不小於|等於|大於|小於|[乘以加於減變除]\\\",\\\"name\\\":\\\"keyword.operator\\\"},{\\\"match\\\":\\\"不知何禍歟|不復存矣|姑妄行此|如事不諧|名之曰|吾嘗觀|之禍歟|乃作罷|吾有|今有|物之|書之|以施|昔之|是矣|之書|方悟|之義|嗚呼|之禍|[中今取噫夫施曰有豈]\\\",\\\"name\\\":\\\"keyword.other\\\"},{\\\"match\\\":\\\"[之也充凡者若遍銜]\\\",\\\"name\\\":\\\"keyword.control\\\"}]},\\\"symbols\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"[、。]\\\",\\\"name\\\":\\\"punctuation.separator\\\"}]},\\\"variables\\\":{\\\"begin\\\":\\\"「\\\",\\\"end\\\":\\\"」\\\",\\\"name\\\":\\\"variable.other\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character\\\"}]}},\\\"scopeName\\\":\\\"source.wenyan\\\",\\\"aliases\\\":[\\\"文言\\\"]}\"))\n\nexport default [\nlang\n]\n"
|
||||
],
|
||||
"mappings": "4BAAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,kjDAA2xD,CAAC,EAEnzD,GACf,CACA",
|
||||
"debugId": "C31B6B4CB9F7148464756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "6BCBC209959768EC64756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-6ma2q84r.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6ma2q84r.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "03F6F81A09CCAA2A64756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-6v4gpbdm.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6v4gpbdm.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/log.mjs"],
|
||||
"sourcesContent": [
|
||||
"const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Log file\\\",\\\"fileTypes\\\":[\\\"log\\\"],\\\"name\\\":\\\"log\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b([Tt]race|TRACE)\\\\\\\\b:?\\\",\\\"name\\\":\\\"comment log.verbose\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\[(v(?:erbose|erb|rb|b?))]\\\",\\\"name\\\":\\\"comment log.verbose\\\"},{\\\"match\\\":\\\"(?<=^[p\\\\\\\\s\\\\\\\\d]*)\\\\\\\\bV\\\\\\\\b\\\",\\\"name\\\":\\\"comment log.verbose\\\"},{\\\"match\\\":\\\"\\\\\\\\b(D(?:EBUG|ebug))\\\\\\\\b|(?i)\\\\\\\\b(debug):\\\",\\\"name\\\":\\\"markup.changed log.debug\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\[(d(?:ebug|bug|bg|e?))]\\\",\\\"name\\\":\\\"markup.changed log.debug\\\"},{\\\"match\\\":\\\"(?<=^[p\\\\\\\\s\\\\\\\\d]*)\\\\\\\\bD\\\\\\\\b\\\",\\\"name\\\":\\\"markup.changed log.debug\\\"},{\\\"match\\\":\\\"\\\\\\\\b(HINT|INFO|INFORMATION|Info|NOTICE|II)\\\\\\\\b|(?i)\\\\\\\\b(info(?:|rmation)):\\\",\\\"name\\\":\\\"markup.inserted log.info\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\[(i(?:nformation|nfo?|n?))]\\\",\\\"name\\\":\\\"markup.inserted log.info\\\"},{\\\"match\\\":\\\"(?<=^[p\\\\\\\\s\\\\\\\\d]*)\\\\\\\\bI\\\\\\\\b\\\",\\\"name\\\":\\\"markup.inserted log.info\\\"},{\\\"match\\\":\\\"\\\\\\\\b(W(?:ARNING|ARN|arn|W))\\\\\\\\b|(?i)\\\\\\\\b(warning):\\\",\\\"name\\\":\\\"markup.deleted log.warning\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\[(w(?:arning|arn|rn|n?))]\\\",\\\"name\\\":\\\"markup.deleted log.warning\\\"},{\\\"match\\\":\\\"(?<=^[p\\\\\\\\s\\\\\\\\d]*)\\\\\\\\bW\\\\\\\\b\\\",\\\"name\\\":\\\"markup.deleted log.warning\\\"},{\\\"match\\\":\\\"\\\\\\\\b(ALERT|CRITICAL|EMERGENCY|ERROR|FAILURE|FAIL|Fatal|FATAL|Error|EE)\\\\\\\\b|(?i)\\\\\\\\b(error):\\\",\\\"name\\\":\\\"string.regexp, strong log.error\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\[(error|eror|err?|e|fatal|fatl|ftl|fa?)]\\\",\\\"name\\\":\\\"string.regexp, strong log.error\\\"},{\\\"match\\\":\\\"(?<=^[p\\\\\\\\s\\\\\\\\d]*)\\\\\\\\bE\\\\\\\\b\\\",\\\"name\\\":\\\"string.regexp, strong log.error\\\"},{\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d{4}-\\\\\\\\d{2}-\\\\\\\\d{2}(?=T|\\\\\\\\b)\\\",\\\"name\\\":\\\"comment log.date\\\"},{\\\"match\\\":\\\"(?<=(^|\\\\\\\\s))\\\\\\\\d{2}[^\\\\\\\\w\\\\\\\\s]\\\\\\\\d{2}[^\\\\\\\\w\\\\\\\\s]\\\\\\\\d{4}\\\\\\\\b\\\",\\\"name\\\":\\\"comment log.date\\\"},{\\\"match\\\":\\\"T?\\\\\\\\d{1,2}:\\\\\\\\d{2}(:\\\\\\\\d{2}([,.]\\\\\\\\d+)?)?(Z| ?[-+]\\\\\\\\d{1,2}:\\\\\\\\d{2})?\\\\\\\\b\\\",\\\"name\\\":\\\"comment log.date\\\"},{\\\"match\\\":\\\"T\\\\\\\\d{2}\\\\\\\\d{2}(\\\\\\\\d{2}([,.]\\\\\\\\d+)?)?(Z| ?[-+]\\\\\\\\d{1,2}\\\\\\\\d{2})?\\\\\\\\b\\\",\\\"name\\\":\\\"comment log.date\\\"},{\\\"match\\\":\\\"\\\\\\\\b(\\\\\\\\h{40}|\\\\\\\\h{10}|\\\\\\\\h{7})\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language\\\"},{\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\h{8}-?(\\\\\\\\h{4}-?){3}\\\\\\\\h{12}\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language log.constant\\\"},{\\\"match\\\":\\\"\\\\\\\\b(\\\\\\\\h{2,}[-:])+\\\\\\\\h{2,}+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language log.constant\\\"},{\\\"match\\\":\\\"\\\\\\\\b([0-9]+|true|false|null)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language log.constant\\\"},{\\\"match\\\":\\\"\\\\\\\\b(0x\\\\\\\\h+)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language log.constant\\\"},{\\\"match\\\":\\\"\\\\\\\"[^\\\\\\\"]*\\\\\\\"\\\",\\\"name\\\":\\\"string log.string\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)'[^']*'\\\",\\\"name\\\":\\\"string log.string\\\"},{\\\"match\\\":\\\"\\\\\\\\b([.A-Za-z]*Exception)\\\\\\\\b\\\",\\\"name\\\":\\\"string.regexp, emphasis log.exceptiontype\\\"},{\\\"begin\\\":\\\"^[\\\\\\\\t ]*at[\\\\\\\\t ]\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"string.key, emphasis log.exception\\\"},{\\\"match\\\":\\\"\\\\\\\\b[a-z]+://\\\\\\\\S+\\\\\\\\b/?\\\",\\\"name\\\":\\\"constant.language log.constant\\\"},{\\\"match\\\":\\\"(?<![/\\\\\\\\\\\\\\\\\\\\\\\\w])([-\\\\\\\\w]+\\\\\\\\.)+([-\\\\\\\\w])+(?![/\\\\\\\\\\\\\\\\\\\\\\\\w])\\\",\\\"name\\\":\\\"constant.language log.constant\\\"}],\\\"scopeName\\\":\\\"text.log\\\"}\"))\n\nexport default [\nlang\n]\n"
|
||||
],
|
||||
"mappings": "4BAAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,uuFAA6+F,CAAC,EAErgG,GACf,CACA",
|
||||
"debugId": "F7741D1B6F414CDA64756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-6x0cp4ft.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6x0cp4ft.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-6xtve84b.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6xtve84b.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-6z53j5sy.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-6z53j5sy.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/berry.mjs"],
|
||||
"sourcesContent": [
|
||||
"const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Berry\\\",\\\"name\\\":\\\"berry\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#controls\\\"},{\\\"include\\\":\\\"#strings\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#function\\\"},{\\\"include\\\":\\\"#member\\\"},{\\\"include\\\":\\\"#identifier\\\"},{\\\"include\\\":\\\"#number\\\"},{\\\"include\\\":\\\"#operator\\\"}],\\\"repository\\\":{\\\"comment-block\\\":{\\\"begin\\\":\\\"#-\\\",\\\"end\\\":\\\"-#\\\",\\\"name\\\":\\\"comment.berry\\\",\\\"patterns\\\":[{}]},\\\"comments\\\":{\\\"begin\\\":\\\"#\\\",\\\"end\\\":\\\"\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.berry\\\",\\\"patterns\\\":[{}]},\\\"controls\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(if|elif|else|for|while|do|end|break|continue|return|try|except|raise)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.berry\\\"}]},\\\"function\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b([A-Z_a-z][0-9A-Z_a-z]*(?=\\\\\\\\s*\\\\\\\\())\\\",\\\"name\\\":\\\"entity.name.function.berry\\\"}]},\\\"identifier\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b[A-Z_a-z]\\\\\\\\w+\\\\\\\\b\\\",\\\"name\\\":\\\"identifier.berry\\\"}]},\\\"keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(var|static|def|class|true|false|nil|self|super|import|as|_class)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.berry\\\"}]},\\\"member\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.berry\\\"}},\\\"match\\\":\\\"\\\\\\\\.([A-Z_a-z][0-9A-Z_a-z]*)\\\"}]},\\\"number\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"0x\\\\\\\\h+|\\\\\\\\d+|(\\\\\\\\d+\\\\\\\\.?|\\\\\\\\.\\\\\\\\d)\\\\\\\\d*([Ee][-+]?\\\\\\\\d+)?\\\",\\\"name\\\":\\\"constant.numeric.berry\\\"}]},\\\"operator\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"[-\\\\\\\\]!%\\\\\\\\&(-+./:<=>\\\\\\\\[^|~]\\\",\\\"name\\\":\\\"keyword.operator.berry\\\"}]},\\\"strings\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"f(?=[\\\\\\\"'])\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"name\\\":\\\"string.quoted.other.berry\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(\\\\\\\\\\\\\\\\x\\\\\\\\h{2})|(\\\\\\\\\\\\\\\\[0-7]{3})|(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)|(\\\\\\\\\\\\\\\\\\\\\\\")|(\\\\\\\\\\\\\\\\')|(\\\\\\\\\\\\\\\\a)|(\\\\\\\\\\\\\\\\b)|(\\\\\\\\\\\\\\\\f)|(\\\\\\\\\\\\\\\\n)|(\\\\\\\\\\\\\\\\r)|(\\\\\\\\\\\\\\\\t)|(\\\\\\\\\\\\\\\\v)\\\",\\\"name\\\":\\\"constant.character.escape.berry\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\\\\\\{[^}]*}}\\\",\\\"name\\\":\\\"string.quoted.other.berry\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}\\\",\\\"name\\\":\\\"keyword.other.unit.berry\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#numbers\\\"},{\\\"include\\\":\\\"#identifier\\\"},{\\\"include\\\":\\\"#operator\\\"},{\\\"include\\\":\\\"#member\\\"},{\\\"include\\\":\\\"#function\\\"}]}]},{\\\"begin\\\":\\\"'\\\",\\\"end\\\":\\\"'\\\",\\\"name\\\":\\\"string.quoted.other.berry\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(\\\\\\\\\\\\\\\\x\\\\\\\\h{2})|(\\\\\\\\\\\\\\\\[0-7]{3})|(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)|(\\\\\\\\\\\\\\\\\\\\\\\")|(\\\\\\\\\\\\\\\\')|(\\\\\\\\\\\\\\\\a)|(\\\\\\\\\\\\\\\\b)|(\\\\\\\\\\\\\\\\f)|(\\\\\\\\\\\\\\\\n)|(\\\\\\\\\\\\\\\\r)|(\\\\\\\\\\\\\\\\t)|(\\\\\\\\\\\\\\\\v)\\\",\\\"name\\\":\\\"constant.character.escape.berry\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\\\\\\{[^}]*}}\\\",\\\"name\\\":\\\"string.quoted.other.berry\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}\\\",\\\"name\\\":\\\"keyword.other.unit.berry\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#numbers\\\"},{\\\"include\\\":\\\"#identifier\\\"},{\\\"include\\\":\\\"#operator\\\"},{\\\"include\\\":\\\"#member\\\"},{\\\"include\\\":\\\"#function\\\"}]}]}],\\\"while\\\":\\\"\\\\\\\\G|^[\\\\\\\\t ]*(?=[\\\\\\\"'])\\\"},{\\\"begin\\\":\\\"([\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\1\\\",\\\"name\\\":\\\"string.quoted.double.berry\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(\\\\\\\\\\\\\\\\x\\\\\\\\h{2})|(\\\\\\\\\\\\\\\\[0-7]{3})|(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)|(\\\\\\\\\\\\\\\\\\\\\\\")|(\\\\\\\\\\\\\\\\')|(\\\\\\\\\\\\\\\\a)|(\\\\\\\\\\\\\\\\b)|(\\\\\\\\\\\\\\\\f)|(\\\\\\\\\\\\\\\\n)|(\\\\\\\\\\\\\\\\r)|(\\\\\\\\\\\\\\\\t)|(\\\\\\\\\\\\\\\\v)\\\",\\\"name\\\":\\\"constant.character.escape.berry\\\"}]}]}},\\\"scopeName\\\":\\\"source.berry\\\",\\\"aliases\\\":[\\\"be\\\"]}\"))\n\nexport default [\nlang\n]\n"
|
||||
],
|
||||
"mappings": "4BAAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,q4FAAquG,CAAC,EAE7vG,GACf,CACA",
|
||||
"debugId": "FD91107A25BFD36E64756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [
|
||||
],
|
||||
"mappings": "",
|
||||
"debugId": "DBA4FF81F47EFE1764756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-75fy5bdm.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-75fy5bdm.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/genie.mjs"],
|
||||
"sourcesContent": [
|
||||
"const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Genie\\\",\\\"fileTypes\\\":[\\\"gs\\\"],\\\"name\\\":\\\"genie\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#code\\\"}],\\\"repository\\\":{\\\"code\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#constants\\\"},{\\\"include\\\":\\\"#strings\\\"},{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#types\\\"},{\\\"include\\\":\\\"#functions\\\"},{\\\"include\\\":\\\"#variables\\\"}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.vala\\\"}},\\\"match\\\":\\\"/\\\\\\\\*\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.empty.vala\\\"},{\\\"include\\\":\\\"text.html.javadoc\\\"},{\\\"include\\\":\\\"#comments-inline\\\"}]},\\\"comments-inline\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.vala\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.vala\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line.double-slash.vala\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.comment.vala\\\"}},\\\"match\\\":\\\"\\\\\\\\s*((//).*$\\\\\\\\n?)\\\"}]},\\\"constants\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b((0([Xx])\\\\\\\\h*)|(([0-9]+\\\\\\\\.?[0-9]*)|(\\\\\\\\.[0-9]+))(([Ee])([-+])?[0-9]+)?)([DFLUdflu]|UL|ul)?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.vala\\\"},{\\\"match\\\":\\\"\\\\\\\\b([A-Z][0-9A-Z_]+)\\\\\\\\b\\\",\\\"name\\\":\\\"variable.other.constant.vala\\\"}]},\\\"functions\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(\\\\\\\\w+)(?=\\\\\\\\s*(<[.\\\\\\\\s\\\\\\\\w]+>\\\\\\\\s*)?\\\\\\\\()\\\",\\\"name\\\":\\\"entity.name.function.vala\\\"}]},\\\"keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[^.@\\\\\\\\w])(as|do|if|in|is|of|or|to|and|def|for|get|isa|new|not|out|ref|set|try|var|case|dict|else|enum|init|list|lock|null|pass|prop|self|true|uses|void|weak|when|array|async|break|class|const|event|false|final|owned|print|super|raise|while|yield|assert|delete|downto|except|extern|inline|params|public|raises|return|sealed|sizeof|static|struct|typeof|default|dynamic|ensures|finally|private|unowned|virtual|abstract|continue|delegate|internal|override|readonly|requires|volatile|construct|errordomain|interface|namespace|protected|implements)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.vala\\\"},{\\\"match\\\":\\\"(?<=^|[^.@\\\\\\\\w])(bool|double|float|unichar|char|uchar|int|uint|long|ulong|short|ushort|size_t|ssize_t|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.vala\\\"},{\\\"match\\\":\\\"(#(?:if|elif|else|endif))\\\",\\\"name\\\":\\\"keyword.vala\\\"}]},\\\"strings\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\\"end\\\":\\\"\\\\\\\"\\\\\\\"\\\\\\\"\\\",\\\"name\\\":\\\"string.quoted.triple.vala\\\"},{\\\"begin\\\":\\\"@\\\\\\\"\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"name\\\":\\\"string.quoted.interpolated.vala\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.vala\\\"},{\\\"match\\\":\\\"\\\\\\\\$\\\\\\\\w+\\\",\\\"name\\\":\\\"constant.character.escape.vala\\\"},{\\\"match\\\":\\\"\\\\\\\\$\\\\\\\\(([^()]|\\\\\\\\(([^()]|\\\\\\\\([^)]*\\\\\\\\))*\\\\\\\\))*\\\\\\\\)\\\",\\\"name\\\":\\\"constant.character.escape.vala\\\"}]},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"name\\\":\\\"string.quoted.double.vala\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.vala\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"end\\\":\\\"'\\\",\\\"name\\\":\\\"string.quoted.single.vala\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.vala\\\"}]},{\\\"match\\\":\\\"/((\\\\\\\\\\\\\\\\/)|([^/]))*/(?=\\\\\\\\s*[\\\\\\\\n),.;])\\\",\\\"name\\\":\\\"string.regexp.vala\\\"}]},\\\"types\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[^.@\\\\\\\\w])(bool|double|float|unichar|char|uchar|int|uint|long|ulong|short|ushort|size_t|ssize_t|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.primitive.vala\\\"},{\\\"match\\\":\\\"\\\\\\\\b([A-Z]+\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.type.vala\\\"}]},\\\"variables\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b([_a-z]+\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"variable.other.vala\\\"}]}},\\\"scopeName\\\":\\\"source.genie\\\"}\"))\n\nexport default [\nlang\n]\n"
|
||||
],
|
||||
"mappings": "4BAAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,8tGAA0iH,CAAC,EAElkH,GACf,CACA",
|
||||
"debugId": "FEA84DB1E72E4F2A64756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-78zbagrn.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-78zbagrn.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-79ywv1g9.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-79ywv1g9.js.map
vendored
File diff suppressed because one or more lines are too long
15
apps/fabro-web/dist/assets/chunk-7bh2jdae.js.map
vendored
15
apps/fabro-web/dist/assets/chunk-7bh2jdae.js.map
vendored
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/es-tag-css.mjs", "../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/es-tag-glsl.mjs", "../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/es-tag-html.mjs", "../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/es-tag-sql.mjs", "../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/es-tag-xml.mjs", "../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/ts-tags.mjs"],
|
||||
"sourcesContent": [
|
||||
"import typescript from './typescript.mjs'\nimport css from './css.mjs'\nimport javascript from './javascript.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"fileTypes\\\":[\\\"js\\\",\\\"jsx\\\",\\\"ts\\\",\\\"tsx\\\",\\\"html\\\",\\\"vue\\\",\\\"svelte\\\",\\\"php\\\",\\\"res\\\"],\\\"injectTo\\\":[\\\"source.ts\\\",\\\"source.js\\\"],\\\"injectionSelector\\\":\\\"L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string, L:source.vue -comment -string, L:source.svelte -comment -string, L:source.php -comment -string, L:source.rescript -comment -string\\\",\\\"injections\\\":{\\\"L:source\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"<\\\",\\\"name\\\":\\\"invalid.illegal.bad-angle-bracket.html\\\"}]}},\\\"name\\\":\\\"es-tag-css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(\\\\\\\\s?/\\\\\\\\*\\\\\\\\s?((?:|inline-)css)\\\\\\\\s?\\\\\\\\*/\\\\\\\\s?)(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.css\\\"},{\\\"include\\\":\\\"inline.es6-htmlx#template\\\"}]},{\\\"begin\\\":\\\"(?i)(\\\\\\\\s*((?:|inline-)css))(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.css\\\"},{\\\"include\\\":\\\"inline.es6-htmlx#template\\\"},{\\\"include\\\":\\\"string.quoted.other.template.js\\\"}]},{\\\"begin\\\":\\\"(?i)(?<=[(,:=\\\\\\\\s]|\\\\\\\\$\\\\\\\\()\\\\\\\\s*(((/\\\\\\\\*)|(//))\\\\\\\\s?((?:|inline-)css) {0,1000}\\\\\\\\*?/?) {0,1000}$\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line\\\"}},\\\"end\\\":\\\"(`).*\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G()\\\",\\\"end\\\":\\\"(`)\\\"},{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.css\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\$\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"end\\\":\\\"(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.js\\\"}]}],\\\"scopeName\\\":\\\"inline.es6-css\\\",\\\"embeddedLangs\\\":[\\\"typescript\\\",\\\"css\\\",\\\"javascript\\\"]}\"))\n\nexport default [\n...typescript,\n...css,\n...javascript,\nlang\n]\n",
|
||||
"import typescript from './typescript.mjs'\nimport glsl from './glsl.mjs'\nimport javascript from './javascript.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"fileTypes\\\":[\\\"js\\\",\\\"jsx\\\",\\\"ts\\\",\\\"tsx\\\",\\\"html\\\",\\\"vue\\\",\\\"svelte\\\",\\\"php\\\",\\\"res\\\"],\\\"injectTo\\\":[\\\"source.ts\\\",\\\"source.js\\\"],\\\"injectionSelector\\\":\\\"L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string\\\",\\\"injections\\\":{\\\"L:source\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"<\\\",\\\"name\\\":\\\"invalid.illegal.bad-angle-bracket.html\\\"}]}},\\\"name\\\":\\\"es-tag-glsl\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(\\\\\\\\s?/\\\\\\\\*\\\\\\\\s?((?:|inline-)glsl)\\\\\\\\s?\\\\\\\\*/\\\\\\\\s?)(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.glsl\\\"},{\\\"include\\\":\\\"inline.es6-htmlx#template\\\"}]},{\\\"begin\\\":\\\"(?i)(\\\\\\\\s*((?:|inline-)glsl))(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.glsl\\\"},{\\\"include\\\":\\\"inline.es6-htmlx#template\\\"},{\\\"include\\\":\\\"string.quoted.other.template.js\\\"}]},{\\\"begin\\\":\\\"(?i)(?<=[(,:=\\\\\\\\s]|\\\\\\\\$\\\\\\\\()\\\\\\\\s*(((/\\\\\\\\*)|(//))\\\\\\\\s?((?:|inline-)glsl) {0,1000}\\\\\\\\*?/?) {0,1000}$\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line\\\"}},\\\"end\\\":\\\"(`).*\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G()\\\",\\\"end\\\":\\\"(`)\\\"},{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.glsl\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\$\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"end\\\":\\\"(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.js\\\"}]}],\\\"scopeName\\\":\\\"inline.es6-glsl\\\",\\\"embeddedLangs\\\":[\\\"typescript\\\",\\\"glsl\\\",\\\"javascript\\\"]}\"))\n\nexport default [\n...typescript,\n...glsl,\n...javascript,\nlang\n]\n",
|
||||
"import typescript from './typescript.mjs'\nimport html from './html.mjs'\nimport javascript from './javascript.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"fileTypes\\\":[\\\"js\\\",\\\"jsx\\\",\\\"ts\\\",\\\"tsx\\\",\\\"html\\\",\\\"vue\\\",\\\"svelte\\\",\\\"php\\\",\\\"res\\\"],\\\"injectTo\\\":[\\\"source.ts\\\",\\\"source.js\\\"],\\\"injectionSelector\\\":\\\"L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string\\\",\\\"injections\\\":{\\\"L:source\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"<\\\",\\\"name\\\":\\\"invalid.illegal.bad-angle-bracket.html\\\"}]}},\\\"name\\\":\\\"es-tag-html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(\\\\\\\\s?/\\\\\\\\*\\\\\\\\s?(html|template|inline-html|inline-template)\\\\\\\\s?\\\\\\\\*/\\\\\\\\s?)(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"text.html.basic\\\"},{\\\"include\\\":\\\"inline.es6-htmlx#template\\\"}]},{\\\"begin\\\":\\\"(?i)(\\\\\\\\s*(html|template|inline-html|inline-template))(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"text.html.basic\\\"},{\\\"include\\\":\\\"inline.es6-htmlx#template\\\"},{\\\"include\\\":\\\"string.quoted.other.template.js\\\"}]},{\\\"begin\\\":\\\"(?i)(?<=[(,:=\\\\\\\\s]|\\\\\\\\$\\\\\\\\()\\\\\\\\s*(((/\\\\\\\\*)|(//))\\\\\\\\s?(html|template|inline-html|inline-template) {0,1000}\\\\\\\\*?/?) {0,1000}$\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line\\\"}},\\\"end\\\":\\\"(`).*\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G()\\\",\\\"end\\\":\\\"(`)\\\"},{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"text.html.basic\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\$\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"end\\\":\\\"(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.js\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\$\\\\\\\\(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"end\\\":\\\"(`\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.js\\\"}]}],\\\"scopeName\\\":\\\"inline.es6-html\\\",\\\"embeddedLangs\\\":[\\\"typescript\\\",\\\"html\\\",\\\"javascript\\\"]}\"))\n\nexport default [\n...typescript,\n...html,\n...javascript,\nlang\n]\n",
|
||||
"import typescript from './typescript.mjs'\nimport sql from './sql.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"fileTypes\\\":[\\\"js\\\",\\\"jsx\\\",\\\"ts\\\",\\\"tsx\\\",\\\"html\\\",\\\"vue\\\",\\\"svelte\\\",\\\"php\\\",\\\"res\\\"],\\\"injectTo\\\":[\\\"source.ts\\\",\\\"source.js\\\"],\\\"injectionSelector\\\":\\\"L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string\\\",\\\"injections\\\":{\\\"L:source\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"<\\\",\\\"name\\\":\\\"invalid.illegal.bad-angle-bracket.html\\\"}]}},\\\"name\\\":\\\"es-tag-sql\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\b(\\\\\\\\w+\\\\\\\\.sql)\\\\\\\\s*(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.ts#string-character-escape\\\"},{\\\"include\\\":\\\"source.sql\\\"},{\\\"include\\\":\\\"source.plpgsql.postgres\\\"},{\\\"match\\\":\\\".\\\"}]},{\\\"begin\\\":\\\"(?i)(\\\\\\\\s?/?\\\\\\\\*?\\\\\\\\s?((?:|inline-)sql)\\\\\\\\s?\\\\\\\\*?/?\\\\\\\\s?)(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.ts#string-character-escape\\\"},{\\\"include\\\":\\\"source.sql\\\"},{\\\"include\\\":\\\"source.plpgsql.postgres\\\"},{\\\"match\\\":\\\".\\\"}]},{\\\"begin\\\":\\\"(?i)(?<=[(,:=\\\\\\\\s]|\\\\\\\\$\\\\\\\\()\\\\\\\\s*(((/\\\\\\\\*)|(//))\\\\\\\\s?((?:|inline-)sql) {0,1000}\\\\\\\\*?/?) {0,1000}$\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G()\\\",\\\"end\\\":\\\"(`)\\\"},{\\\"include\\\":\\\"source.ts#template-substitution-element\\\"},{\\\"include\\\":\\\"source.ts#string-character-escape\\\"},{\\\"include\\\":\\\"source.sql\\\"},{\\\"include\\\":\\\"source.plpgsql.postgres\\\"},{\\\"match\\\":\\\".\\\"}]}],\\\"scopeName\\\":\\\"inline.es6-sql\\\",\\\"embeddedLangs\\\":[\\\"typescript\\\",\\\"sql\\\"]}\"))\n\nexport default [\n...typescript,\n...sql,\nlang\n]\n",
|
||||
"import xml from './xml.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"fileTypes\\\":[\\\"js\\\",\\\"jsx\\\",\\\"ts\\\",\\\"tsx\\\",\\\"html\\\",\\\"vue\\\",\\\"svelte\\\",\\\"php\\\",\\\"res\\\"],\\\"injectTo\\\":[\\\"source.ts\\\",\\\"source.js\\\"],\\\"injectionSelector\\\":\\\"L:source.js -comment -string, L:source.js -comment -string, L:source.jsx -comment -string, L:source.js.jsx -comment -string, L:source.ts -comment -string, L:source.tsx -comment -string, L:source.rescript -comment -string\\\",\\\"injections\\\":{\\\"L:source\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"<\\\",\\\"name\\\":\\\"invalid.illegal.bad-angle-bracket.html\\\"}]}},\\\"name\\\":\\\"es-tag-xml\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(\\\\\\\\s?/\\\\\\\\*\\\\\\\\s?(xml|svg|inline-svg|inline-xml)\\\\\\\\s?\\\\\\\\*/\\\\\\\\s?)(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.xml\\\"}]},{\\\"begin\\\":\\\"(?i)(\\\\\\\\s*((?:|inline-)xml))(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block\\\"}},\\\"end\\\":\\\"(`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.xml\\\"}]},{\\\"begin\\\":\\\"(?i)(?<=[(,:=\\\\\\\\s]|\\\\\\\\$\\\\\\\\()\\\\\\\\s*(((/\\\\\\\\*)|(//))\\\\\\\\s?(xml|svg|inline-svg|inline-xml) {0,1000}\\\\\\\\*?/?) {0,1000}$\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line\\\"}},\\\"end\\\":\\\"(`).*\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G()\\\",\\\"end\\\":\\\"(`)\\\"},{\\\"include\\\":\\\"text.xml\\\"}]}],\\\"scopeName\\\":\\\"inline.es6-xml\\\",\\\"embeddedLangs\\\":[\\\"xml\\\"]}\"))\n\nexport default [\n...xml,\nlang\n]\n",
|
||||
"import typescript from './typescript.mjs'\nimport es_tag_css from './es-tag-css.mjs'\nimport es_tag_glsl from './es-tag-glsl.mjs'\nimport es_tag_html from './es-tag-html.mjs'\nimport es_tag_sql from './es-tag-sql.mjs'\nimport es_tag_xml from './es-tag-xml.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"TypeScript with Tags\\\",\\\"name\\\":\\\"ts-tags\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts\\\"}],\\\"scopeName\\\":\\\"source.ts.tags\\\",\\\"embeddedLangs\\\":[\\\"typescript\\\",\\\"es-tag-css\\\",\\\"es-tag-glsl\\\",\\\"es-tag-html\\\",\\\"es-tag-sql\\\",\\\"es-tag-xml\\\"],\\\"aliases\\\":[\\\"lit\\\"]}\"))\n\nexport default [\n...typescript,\n...es_tag_css,\n...es_tag_glsl,\n...es_tag_html,\n...es_tag_sql,\n...es_tag_xml,\nlang\n]\n"
|
||||
],
|
||||
"mappings": "kaAIA,FAAM,JAAO,CAAO,CAAO,DAAK,AAAM,wuDAAg7D,LAAC,JAEx8D,GACf,GAAG,EACH,GAAG,EACH,GAAG,EACH,CACA,ECPA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,mnDAAqzD,CAAC,EAE70D,GACf,GAAG,EACH,GAAG,EACH,GAAG,EACH,CACA,ECPA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,g7DAAopE,CAAC,EAE5qE,GACf,GAAG,EACH,GAAG,EACH,GAAG,EACH,CACA,ECRA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,shDAA4sD,CAAC,EAEpuD,GACf,GAAG,EACH,GAAG,EACH,CACA,ECPA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,smCAA0uC,CAAC,EAElwC,GACf,GAAG,EACH,CACA,ECAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,+OAAmR,CAAC,EAE3S,GACf,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,CACA",
|
||||
"debugId": "88C2F7EEC023527164756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
10
apps/fabro-web/dist/assets/chunk-7ehscpxq.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-7ehscpxq.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-7f3p0xqq.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-7f3p0xqq.js.map
vendored
File diff suppressed because one or more lines are too long
10
apps/fabro-web/dist/assets/chunk-7r410k8q.js.map
vendored
10
apps/fabro-web/dist/assets/chunk-7r410k8q.js.map
vendored
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"sources": ["../../../../node_modules/.bun/@shikijs+langs@3.23.0/node_modules/@shikijs/langs/dist/jsonl.mjs"],
|
||||
"sourcesContent": [
|
||||
"const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"JSON Lines\\\",\\\"name\\\":\\\"jsonl\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"}],\\\"repository\\\":{\\\"array\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.begin.json.lines\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.end.json.lines\\\"}},\\\"name\\\":\\\"meta.structure.array.json.lines\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.array.json.lines\\\"},{\\\"match\\\":\\\"[^]\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-array-separator.json.lines\\\"}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json.lines\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.documentation.json.lines\\\"},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json.lines\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.json.lines\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json.lines\\\"}},\\\"match\\\":\\\"(//).*$\\\\\\\\n?\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"}]},\\\"constant\\\":{\\\"match\\\":\\\"\\\\\\\\b(?:true|false|null)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language.json.lines\\\"},\\\"number\\\":{\\\"match\\\":\\\"-?(?:0|[1-9]\\\\\\\\d*)(?:(?:\\\\\\\\.\\\\\\\\d+)?(?:[Ee][-+]?\\\\\\\\d+)?)?\\\",\\\"name\\\":\\\"constant.numeric.json.lines\\\"},\\\"object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dictionary.begin.json.lines\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dictionary.end.json.lines\\\"}},\\\"name\\\":\\\"meta.structure.dictionary.json.lines\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#objectkey\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.dictionary.key-value.json.lines\\\"}},\\\"end\\\":\\\"(,)|(?=})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.dictionary.pair.json.lines\\\"}},\\\"name\\\":\\\"meta.structure.dictionary.value.json.lines\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"},{\\\"match\\\":\\\"[^,\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-dictionary-separator.json.lines\\\"}]},{\\\"match\\\":\\\"[^}\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-dictionary-separator.json.lines\\\"}]},\\\"objectkey\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.support.type.property-name.begin.json.lines\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.support.type.property-name.end.json.lines\\\"}},\\\"name\\\":\\\"string.json.lines support.type.property-name.json.lines\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#stringcontent\\\"}]},\\\"string\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.json.lines\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.json.lines\\\"}},\\\"name\\\":\\\"string.quoted.double.json.lines\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#stringcontent\\\"}]},\\\"stringcontent\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[\\\\\\\"/\\\\\\\\\\\\\\\\bfnrt]|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.escape.json.lines\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"invalid.illegal.unrecognized-string-escape.json.lines\\\"}]},\\\"value\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#constant\\\"},{\\\"include\\\":\\\"#number\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array\\\"},{\\\"include\\\":\\\"#object\\\"},{\\\"include\\\":\\\"#comments\\\"}]}},\\\"scopeName\\\":\\\"source.json.lines\\\"}\"))\n\nexport default [\nlang\n]\n"
|
||||
],
|
||||
"mappings": "4BAAA,IAAM,EAAO,OAAO,OAAO,KAAK,MAAM,m4FAAkvG,CAAC,EAE1wG,GACf,CACA",
|
||||
"debugId": "476FDF8ED7B9E5E864756E2164756E21",
|
||||
"names": []
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue