@proofkit/cli 2.0.0-beta.22 → 2.0.0-beta.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/add-DrcID6d6.js +57 -0
- package/dist/add-DrcID6d6.js.map +1 -0
- package/dist/addPackageDependency-BGZl7xc5.js +4 -0
- package/dist/addPackageDependency-BGZl7xc5.js.map +1 -0
- package/dist/consts-BZnOMxpW.js +10 -0
- package/dist/consts-BZnOMxpW.js.map +1 -0
- package/dist/deploy-D25sPO7K.js +34 -0
- package/dist/deploy-D25sPO7K.js.map +1 -0
- package/dist/fmdapi-BO4QL0F8.js +2 -0
- package/dist/fmdapi-BO4QL0F8.js.map +1 -0
- package/dist/fmdapi-DyRYZWzI.js +3 -0
- package/dist/fmdapi-DyRYZWzI.js.map +1 -0
- package/dist/getUserPkgManager-Cph_6l1P.js +2 -0
- package/dist/getUserPkgManager-Cph_6l1P.js.map +1 -0
- package/dist/globalOptions-CkqEi9uC.js +2 -0
- package/dist/globalOptions-CkqEi9uC.js.map +1 -0
- package/dist/index-DALPpGd1.d.ts +366 -0
- package/dist/index-DALPpGd1.d.ts.map +1 -0
- package/dist/index.js +10 -159
- package/dist/index.js.map +1 -1
- package/dist/logger-DCEXcH26.js +2 -0
- package/dist/logger-DCEXcH26.js.map +1 -0
- package/dist/parseSettings-DJ2m9sgJ.js +2 -0
- package/dist/parseSettings-DJ2m9sgJ.js.map +1 -0
- package/dist/proofkit-webviewer-73IB1OBU.js +2 -0
- package/dist/proofkit-webviewer-73IB1OBU.js.map +1 -0
- package/dist/remove-BOCU6In3.js +2 -0
- package/dist/remove-BOCU6In3.js.map +1 -0
- package/dist/state-BVEcvFT3.js +41 -0
- package/dist/state-BVEcvFT3.js.map +1 -0
- package/dist/typegen-DyXaif5O.js +2 -0
- package/dist/typegen-DyXaif5O.js.map +1 -0
- package/dist/update-FX71y5b3.js +7 -0
- package/dist/update-FX71y5b3.js.map +1 -0
- package/dist/utils-DymV7zmv.js +3 -0
- package/dist/utils-DymV7zmv.js.map +1 -0
- package/package.json +18 -8
- package/template/fm-addon/ProofKitWV/de.xml +517 -20
- package/template/fm-addon/ProofKitWV/en.xml +517 -20
- package/template/fm-addon/ProofKitWV/es.xml +517 -20
- package/template/fm-addon/ProofKitWV/fr.xml +517 -20
- package/template/fm-addon/ProofKitWV/icon.png +0 -0
- package/template/fm-addon/ProofKitWV/icon@2x.png +0 -0
- package/template/fm-addon/ProofKitWV/info.json +9 -6
- package/template/fm-addon/ProofKitWV/info_de.json +12 -5
- package/template/fm-addon/ProofKitWV/info_en.json +16 -5
- package/template/fm-addon/ProofKitWV/info_es.json +12 -5
- package/template/fm-addon/ProofKitWV/info_fr.json +12 -5
- package/template/fm-addon/ProofKitWV/info_it.json +12 -5
- package/template/fm-addon/ProofKitWV/info_ja.json +12 -5
- package/template/fm-addon/ProofKitWV/info_ko.json +12 -5
- package/template/fm-addon/ProofKitWV/info_nl.json +12 -5
- package/template/fm-addon/ProofKitWV/info_pt.json +12 -5
- package/template/fm-addon/ProofKitWV/info_sv.json +12 -5
- package/template/fm-addon/ProofKitWV/info_zh.json +12 -5
- package/template/fm-addon/ProofKitWV/it.xml +517 -20
- package/template/fm-addon/ProofKitWV/ja.xml +517 -20
- package/template/fm-addon/ProofKitWV/ko.xml +517 -20
- package/template/fm-addon/ProofKitWV/nl.xml +517 -20
- package/template/fm-addon/ProofKitWV/preview.png +0 -0
- package/template/fm-addon/ProofKitWV/pt.xml +517 -20
- package/template/fm-addon/ProofKitWV/records_de.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_en.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_es.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_fr.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_it.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_ja.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_ko.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_nl.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_pt.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_sv.xml +0 -0
- package/template/fm-addon/ProofKitWV/records_zh.xml +0 -0
- package/template/fm-addon/ProofKitWV/sv.xml +517 -20
- package/template/fm-addon/ProofKitWV/template.xml +0 -0
- package/template/fm-addon/ProofKitWV/zh.xml +517 -20
- package/template/nextjs-mantine/AGENTS.md +1 -0
- package/template/nextjs-mantine/package.json +2 -3
- package/template/nextjs-shadcn/AGENTS.md +1 -0
- package/template/nextjs-shadcn/package.json +3 -4
- package/template/vite-wv/.claude/launch.json +18 -0
- package/template/vite-wv/AGENTS.md +1 -0
- package/template/vite-wv/package.json +5 -3
- package/template/vite-wv/proofkit-typegen.config.jsonc +1 -1
- package/template/vite-wv/scripts/filemaker.js +6 -6
- package/template/vite-wv/scripts/launch-fm.js +1 -1
- package/template/vite-wv/scripts/upload.js +1 -1
- package/template/vite-wv/src/App.tsx +4 -4
- package/template/vite-wv/src/main.tsx +8 -2
- package/template/vite-wv/src/router.tsx +57 -0
- package/template/vite-wv/src/routes/query-demo.tsx +37 -0
- package/dist/index-JtcdNmdz.d.ts +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__AGENT_INSTRUCTIONS__
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"dev": "next dev --turbopack",
|
|
7
7
|
"build": "next build",
|
|
8
8
|
"start": "next start",
|
|
9
|
-
"lint": "
|
|
10
|
-
"format": "
|
|
9
|
+
"lint": "ultracite check .",
|
|
10
|
+
"format": "ultracite fix .",
|
|
11
11
|
"proofkit": "proofkit",
|
|
12
12
|
"typegen": "proofkit typegen",
|
|
13
13
|
"deploy": "proofkit deploy"
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
"@types/node": "^20",
|
|
36
36
|
"@types/react": "npm:types-react@19.0.12",
|
|
37
37
|
"@types/react-dom": "npm:types-react-dom@19.0.4",
|
|
38
|
-
"@biomejs/biome": "2.3.11",
|
|
39
38
|
"postcss": "^8.4.41",
|
|
40
39
|
"ultracite": "7.0.8",
|
|
41
40
|
"postcss-preset-mantine": "^1.17.0",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__AGENT_INSTRUCTIONS__
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
"build": "next build --turbopack",
|
|
8
8
|
"proofkit": "proofkit",
|
|
9
9
|
"start": "next start",
|
|
10
|
-
"lint": "
|
|
11
|
-
"format": "
|
|
10
|
+
"lint": "ultracite check .",
|
|
11
|
+
"format": "ultracite fix ."
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@radix-ui/react-slot": "^1.2.3",
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
"tailwind-merge": "^3.3.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@biomejs/biome": "2.3.11",
|
|
29
28
|
"@tailwindcss/postcss": "^4",
|
|
30
29
|
"@types/node": "^22",
|
|
31
30
|
"@types/react": "^19",
|
|
@@ -33,6 +32,6 @@
|
|
|
33
32
|
"tailwindcss": "^4",
|
|
34
33
|
"tw-animate-css": "^1.3.7",
|
|
35
34
|
"typescript": "^5",
|
|
36
|
-
"ultracite": "
|
|
35
|
+
"ultracite": "7.0.8"
|
|
37
36
|
}
|
|
38
37
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"configurations": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Preview",
|
|
5
|
+
"runtimeExecutable": "__PACKAGE_MANAGER__",
|
|
6
|
+
"runtimeArgs": ["run", "dev"],
|
|
7
|
+
"cwd": "${workspaceFolder}",
|
|
8
|
+
"autoPort": true,
|
|
9
|
+
"port": 5175
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "Typegen",
|
|
13
|
+
"runtimeExecutable": "__PACKAGE_MANAGER__",
|
|
14
|
+
"runtimeArgs": ["run", "typegen"],
|
|
15
|
+
"cwd": "${workspaceFolder}"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__AGENT_INSTRUCTIONS__
|
|
@@ -14,15 +14,16 @@
|
|
|
14
14
|
"typegen": "typegen",
|
|
15
15
|
"typegen:ui": "typegen ui",
|
|
16
16
|
"upload": "node ./scripts/upload.js",
|
|
17
|
-
"lint": "
|
|
18
|
-
"format": "
|
|
17
|
+
"lint": "ultracite check .",
|
|
18
|
+
"format": "ultracite fix ."
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
+
"@tanstack/react-query": "^5.90.21",
|
|
22
|
+
"@tanstack/react-router": "^1.167.4",
|
|
21
23
|
"react": "^19.2.4",
|
|
22
24
|
"react-dom": "^19.2.4"
|
|
23
25
|
},
|
|
24
26
|
"devDependencies": {
|
|
25
|
-
"@biomejs/biome": "2.4.7",
|
|
26
27
|
"@proofkit/typegen": "^1.1.0-beta.16",
|
|
27
28
|
"@types/react": "^19.2.14",
|
|
28
29
|
"@types/react-dom": "^19.2.3",
|
|
@@ -30,6 +31,7 @@
|
|
|
30
31
|
"dotenv": "^17.3.1",
|
|
31
32
|
"open": "^11.0.0",
|
|
32
33
|
"typescript": "^5.9.3",
|
|
34
|
+
"ultracite": "7.0.8",
|
|
33
35
|
"vite": "^7.3.1",
|
|
34
36
|
"vite-plugin-singlefile": "^2.3.2"
|
|
35
37
|
}
|
|
@@ -7,13 +7,13 @@ const envPath = resolve(currentDirectory, "../.env");
|
|
|
7
7
|
|
|
8
8
|
dotenv.config({ path: envPath });
|
|
9
9
|
|
|
10
|
-
const
|
|
10
|
+
const defaultFmMcpBaseUrl = process.env.FM_MCP_BASE_URL ?? "http://127.0.0.1:1365";
|
|
11
11
|
|
|
12
12
|
function stripFileExtension(fileName) {
|
|
13
13
|
return fileName.replace(/\.fmp12$/i, "");
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
async function getConnectedFiles(baseUrl =
|
|
16
|
+
async function getConnectedFiles(baseUrl = defaultFmMcpBaseUrl) {
|
|
17
17
|
const healthResponse = await fetch(`${baseUrl}/health`).catch(() => null);
|
|
18
18
|
if (!healthResponse?.ok) {
|
|
19
19
|
return [];
|
|
@@ -40,13 +40,13 @@ export async function resolveFileMakerTarget() {
|
|
|
40
40
|
return {
|
|
41
41
|
fileName: stripFileExtension(matches[0]),
|
|
42
42
|
host: "$",
|
|
43
|
-
source: "fm-
|
|
43
|
+
source: "fm-mcp",
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
if (connectedFiles.length > 0) {
|
|
48
48
|
throw new Error(
|
|
49
|
-
`FM_DATABASE is set to "${process.env.FM_DATABASE}" but no matching connected file was found via FM
|
|
49
|
+
`FM_DATABASE is set to "${process.env.FM_DATABASE}" but no matching connected file was found via FM MCP.`,
|
|
50
50
|
);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -55,13 +55,13 @@ export async function resolveFileMakerTarget() {
|
|
|
55
55
|
return {
|
|
56
56
|
fileName: stripFileExtension(connectedFiles[0]),
|
|
57
57
|
host: "$",
|
|
58
|
-
source: "fm-
|
|
58
|
+
source: "fm-mcp",
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
if (connectedFiles.length > 1) {
|
|
63
63
|
throw new Error(
|
|
64
|
-
`Multiple FileMaker files are connected via FM
|
|
64
|
+
`Multiple FileMaker files are connected via FM MCP (${connectedFiles.join(", ")}). Set FM_DATABASE to choose one.`,
|
|
65
65
|
);
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -5,7 +5,7 @@ const target = await resolveFileMakerTarget();
|
|
|
5
5
|
|
|
6
6
|
if (!target) {
|
|
7
7
|
console.error(
|
|
8
|
-
"Could not resolve a FileMaker file. Start the local FM
|
|
8
|
+
"Could not resolve a FileMaker file. Start the local FM MCP proxy with a connected file, or set FM_SERVER and FM_DATABASE in .env.",
|
|
9
9
|
);
|
|
10
10
|
process.exit(1);
|
|
11
11
|
}
|
|
@@ -9,7 +9,7 @@ const target = await resolveFileMakerTarget();
|
|
|
9
9
|
|
|
10
10
|
if (!target) {
|
|
11
11
|
console.error(
|
|
12
|
-
"Could not resolve a FileMaker file. Start the local FM
|
|
12
|
+
"Could not resolve a FileMaker file. Start the local FM MCP proxy with a connected file, or set FM_SERVER and FM_DATABASE in .env.",
|
|
13
13
|
);
|
|
14
14
|
process.exit(1);
|
|
15
15
|
}
|
|
@@ -14,7 +14,7 @@ const steps: readonly Step[] = [
|
|
|
14
14
|
{
|
|
15
15
|
icon: Database,
|
|
16
16
|
title: "Connect FileMaker later",
|
|
17
|
-
body: "This starter renders safely in a normal browser. When you are ready, wire in FM
|
|
17
|
+
body: "This starter renders safely in a normal browser. When you are ready, wire in FM MCP or hosted FileMaker setup with ProofKit commands.",
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
icon: Layers,
|
|
@@ -30,7 +30,7 @@ const steps: readonly Step[] = [
|
|
|
30
30
|
|
|
31
31
|
export default function App() {
|
|
32
32
|
return (
|
|
33
|
-
<main
|
|
33
|
+
<main>
|
|
34
34
|
<div className="mx-auto flex min-h-screen w-full max-w-5xl flex-col px-6 py-10 sm:px-10">
|
|
35
35
|
<div className="mb-10 flex-1">
|
|
36
36
|
<div className="inline-flex items-center gap-2 rounded-full border border-border bg-card px-3 py-1 text-sm text-muted-foreground shadow-sm">
|
|
@@ -48,7 +48,7 @@ export default function App() {
|
|
|
48
48
|
</h1>
|
|
49
49
|
<p className="mt-6 max-w-2xl text-lg leading-8 text-muted-foreground">
|
|
50
50
|
This starter stays intentionally small, but it is already ready for Tailwind v4, shadcn component
|
|
51
|
-
installs, and later ProofKit typegen output.
|
|
51
|
+
installs, hash-based TanStack Router navigation, React Query, and later ProofKit typegen output.
|
|
52
52
|
</p>
|
|
53
53
|
|
|
54
54
|
<div className="mt-8 flex flex-wrap gap-3 text-sm">
|
|
@@ -63,7 +63,7 @@ export default function App() {
|
|
|
63
63
|
<div className="mt-5 space-y-4 text-sm text-muted-foreground">
|
|
64
64
|
<p>Update the default WebViewer name in <code>src/App.tsx</code> to match your FileMaker layout object.</p>
|
|
65
65
|
<p>When the app runs inside FileMaker, you can start using <code>fmFetch</code> or generated clients right away.</p>
|
|
66
|
-
<p>The local helper scripts prefer FM
|
|
66
|
+
<p>The local helper scripts prefer FM MCP connected files before falling back to hosted server env vars.</p>
|
|
67
67
|
</div>
|
|
68
68
|
</aside>
|
|
69
69
|
</div>
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
2
|
+
import { RouterProvider } from "@tanstack/react-router";
|
|
1
3
|
import React from "react";
|
|
2
4
|
import ReactDOM from "react-dom/client";
|
|
3
|
-
import App from "./App";
|
|
4
5
|
import "./index.css";
|
|
6
|
+
import { router } from "./router";
|
|
7
|
+
|
|
8
|
+
const queryClient = new QueryClient();
|
|
5
9
|
|
|
6
10
|
const rootElement = document.getElementById("root");
|
|
7
11
|
if (!rootElement) {
|
|
@@ -10,6 +14,8 @@ if (!rootElement) {
|
|
|
10
14
|
|
|
11
15
|
ReactDOM.createRoot(rootElement).render(
|
|
12
16
|
<React.StrictMode>
|
|
13
|
-
<
|
|
17
|
+
<QueryClientProvider client={queryClient}>
|
|
18
|
+
<RouterProvider router={router} />
|
|
19
|
+
</QueryClientProvider>
|
|
14
20
|
</React.StrictMode>,
|
|
15
21
|
);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Link,
|
|
3
|
+
Outlet,
|
|
4
|
+
createHashHistory,
|
|
5
|
+
createRootRoute,
|
|
6
|
+
createRoute,
|
|
7
|
+
createRouter,
|
|
8
|
+
} from "@tanstack/react-router";
|
|
9
|
+
import App from "./App";
|
|
10
|
+
import { QueryDemoPage } from "./routes/query-demo";
|
|
11
|
+
|
|
12
|
+
const rootRoute = createRootRoute({
|
|
13
|
+
component: RootLayout,
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const indexRoute = createRoute({
|
|
17
|
+
getParentRoute: () => rootRoute,
|
|
18
|
+
path: "/",
|
|
19
|
+
component: App,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const queryDemoRoute = createRoute({
|
|
23
|
+
getParentRoute: () => rootRoute,
|
|
24
|
+
path: "/query",
|
|
25
|
+
component: QueryDemoPage,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const routeTree = rootRoute.addChildren([indexRoute, queryDemoRoute]);
|
|
29
|
+
|
|
30
|
+
export const router = createRouter({
|
|
31
|
+
routeTree,
|
|
32
|
+
history: createHashHistory(),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
declare module "@tanstack/react-router" {
|
|
36
|
+
interface Register {
|
|
37
|
+
router: typeof router;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function RootLayout() {
|
|
42
|
+
return (
|
|
43
|
+
<div className="min-h-screen bg-background text-foreground">
|
|
44
|
+
<header className="border-b border-border bg-card/80">
|
|
45
|
+
<nav className="mx-auto flex w-full max-w-5xl items-center gap-4 px-6 py-3 sm:px-10">
|
|
46
|
+
<Link className="[&.active]:text-primary text-sm font-medium text-muted-foreground" to="/">
|
|
47
|
+
Starter
|
|
48
|
+
</Link>
|
|
49
|
+
<Link className="[&.active]:text-primary text-sm font-medium text-muted-foreground" to="/query">
|
|
50
|
+
Query Demo
|
|
51
|
+
</Link>
|
|
52
|
+
</nav>
|
|
53
|
+
</header>
|
|
54
|
+
<Outlet />
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { Link } from "@tanstack/react-router";
|
|
3
|
+
|
|
4
|
+
const getConnectionHint = async (): Promise<string> => {
|
|
5
|
+
await new Promise((resolve) => setTimeout(resolve, 180));
|
|
6
|
+
return "Use fmFetch or generated clients once your FileMaker file is ready.";
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export function QueryDemoPage() {
|
|
10
|
+
const hintQuery = useQuery({
|
|
11
|
+
queryKey: ["starter-connection-hint"],
|
|
12
|
+
queryFn: getConnectionHint,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<main className="mx-auto w-full max-w-5xl px-6 py-10 sm:px-10">
|
|
17
|
+
<section className="rounded-3xl border border-border bg-card p-8 shadow-sm">
|
|
18
|
+
<p className="text-sm font-medium uppercase tracking-[0.2em] text-muted-foreground">React Query ready</p>
|
|
19
|
+
<h1 className="mt-4 text-3xl font-semibold tracking-tight">TanStack Query is preconfigured</h1>
|
|
20
|
+
<p className="mt-4 text-muted-foreground">
|
|
21
|
+
This route is rendered by TanStack Router using hash history, which is recommended for FileMaker WebViewer
|
|
22
|
+
apps.
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
<div className="mt-6 rounded-xl border border-border bg-background p-4 text-sm">
|
|
26
|
+
{hintQuery.isLoading ? "Loading starter data..." : hintQuery.data}
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
<div className="mt-6">
|
|
30
|
+
<Link className="inline-flex rounded-full border border-border bg-card px-4 py-2 text-sm font-medium" to="/">
|
|
31
|
+
Back to starter
|
|
32
|
+
</Link>
|
|
33
|
+
</div>
|
|
34
|
+
</section>
|
|
35
|
+
</main>
|
|
36
|
+
);
|
|
37
|
+
}
|
package/dist/index-JtcdNmdz.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|