covara 0.10.3 → 0.10.5

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.
@@ -0,0 +1,3 @@
1
+ import type { ScaffoldOptions } from "../options.js";
2
+ export declare const renderAgents: (options: ScaffoldOptions) => string;
3
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMrD,eAAO,MAAM,YAAY,GAAI,SAAS,eAAe,KAAG,MAqGvD,CAAC"}
@@ -0,0 +1,129 @@
1
+ const DOCS_URL = "https://kahveciderin.github.io/covara/";
2
+ const LLMS_TXT_URL = "https://kahveciderin.github.io/covara/llms.txt";
3
+ const LLMS_FULL_TXT_URL = "https://kahveciderin.github.io/covara/llms-full.txt";
4
+ export const renderAgents = (options) => {
5
+ const react = options.frontend === "react";
6
+ const cloudflare = options.template === "cloudflare";
7
+ const entry = cloudflare ? "src/worker.ts" : "src/index.ts";
8
+ const runtime = cloudflare
9
+ ? "Cloudflare Workers (via `wrangler`)"
10
+ : "Node (via `@hono/node-server`)";
11
+ const dbLine = options.db === "sqlite"
12
+ ? cloudflare
13
+ ? "SQLite on Cloudflare D1 (Drizzle `drizzle-orm/d1`)."
14
+ : "SQLite via `@libsql/client` — defaults to `./dev.db` (`DB_FILE_NAME`)."
15
+ : "PostgreSQL via `postgres` (`DATABASE_URL`).";
16
+ const structure = [
17
+ `- \`src/schema.ts\` — Drizzle table definitions. **This is the source of truth.** Adding or changing a column here changes the API.`,
18
+ `- \`${entry}\` — app entry. Builds the Covara app with \`createCovara(...)\` and mounts each table with \`.resource(table, { ... })\`.`,
19
+ react
20
+ ? `- \`frontend/\` — the React SPA. \`frontend/src/generated/api-types.ts\` is generated from the running API — do not edit it by hand.`
21
+ : undefined,
22
+ `- \`drizzle.config.ts\` — Drizzle Kit config used by \`db:generate\` / \`db:push\`.`,
23
+ cloudflare
24
+ ? `- \`wrangler.toml\` — Workers bindings (${options.db === "sqlite" ? "the `DB` D1 database, " : ""}the \`COVARA_KV\` Durable Object).`
25
+ : undefined,
26
+ ]
27
+ .filter((line) => Boolean(line))
28
+ .join("\n");
29
+ const commands = renderCommands(options);
30
+ const devNote = cloudflare
31
+ ? `\`npm run dev\` runs \`wrangler dev\`. Apply schema changes with \`npm run db:push\`${options.db === "sqlite" ? " (or generate + apply D1 migrations)" : ""}.`
32
+ : `\`npm run dev\` runs \`covara dev\` — a single dev loop that handles everything: it **live-reloads the server** on code changes${react ? ", **hot-reloads the frontend** (Vite HMR) and regenerates the typed client" : ""}, and watches \`src/schema.ts\` to keep the database in sync. **Additive schema changes are applied automatically** (tables are created on first run). Destructive changes — dropping or narrowing columns, etc. — are detected but *not* applied automatically: the loop prints the SQL it would run and waits for you to apply it deliberately with \`covara push --force\` (or \`npm run db:push\`).`;
33
+ const reactSection = react
34
+ ? `
35
+
36
+ ## Frontend
37
+
38
+ The React app lives in \`frontend/\`. It talks to the API with the Covara client (\`covara/client\`, hooks in \`covara/client/react\` such as \`useLiveList\`). Types come from \`npm run types\`, which introspects the running API into \`frontend/src/generated/api-types.ts\`. Regenerate them after changing \`src/schema.ts\` or resource config.`
39
+ : "";
40
+ return `# AGENTS.md
41
+
42
+ Guidance for AI coding agents working in this repository.
43
+
44
+ ## What this is
45
+
46
+ \`${options.name}\` is a real-time resource API built with [Covara](https://github.com/kahveciderin/covara) on [Hono](https://hono.dev). Covara auto-generates REST + real-time (SSE) endpoints from [Drizzle ORM](https://orm.drizzle.team) table schemas, so you mostly describe data and access rules rather than write route handlers.
47
+
48
+ Runtime: ${runtime}.
49
+ Database: ${dbLine}
50
+
51
+ ## Project layout
52
+
53
+ ${structure}
54
+
55
+ ## How it works
56
+
57
+ Every table mounted with \`.resource(table, config)\` automatically exposes (under \`/api/<resource>\`):
58
+
59
+ - \`GET /\`, \`GET /:id\` — list (filtering, cursor pagination, projections) and read.
60
+ - \`POST /\`, \`PATCH /:id\`, \`PUT /:id\`, \`DELETE /:id\` — write.
61
+ - \`GET /subscribe\` — real-time SSE subscription to the filtered set.
62
+ - \`POST /batch\`, \`GET /count\`, \`GET /aggregate\`, \`POST /rpc/:name\`, and more.
63
+
64
+ So the workflow for a new feature is usually: edit \`src/schema.ts\`, then add or adjust the \`.resource(...)\` call in \`${entry}\`. Reach for filters, relations, hooks, procedures, and auth scopes via resource config before writing custom routes.
65
+
66
+ Admin UI is served at \`/__covara/ui\`.
67
+
68
+ ## Auth
69
+
70
+ The starter mounts the \`todos\` resource with **fully public CRUD** so it works out of the box. This is not safe for production — lock resources down with auth scopes (e.g. \`ownerOnly()\`, RSQL scopes) before deploying. See the auth docs below.
71
+
72
+ ## Commands
73
+
74
+ \`\`\`bash
75
+ ${commands}
76
+ \`\`\`
77
+
78
+ ${devNote}${reactSection}
79
+
80
+ ## Conventions
81
+
82
+ - TypeScript, strict. Prefer self-explanatory code over comments.
83
+ - The Drizzle schema drives everything — keep \`src/schema.ts\` the single source of truth and let Covara generate the surface area.
84
+ - Don't hand-edit generated files${react ? " (e.g. `frontend/src/generated/api-types.ts`)" : ""}.
85
+
86
+ ## Documentation
87
+
88
+ When you need to know how a Covara feature works, consult the docs rather than guessing:
89
+
90
+ - Docs site: ${DOCS_URL}
91
+ - LLM-readable index (links to every page as Markdown): ${LLMS_TXT_URL}
92
+ - LLM-readable full text (all docs concatenated): ${LLMS_FULL_TXT_URL}
93
+ - Source & README: https://github.com/kahveciderin/covara
94
+
95
+ For agents, start from \`llms.txt\` to find the relevant page, then fetch that page's \`.md\`, or pull \`llms-full.txt\` for the complete corpus (around 500KB).
96
+ `;
97
+ };
98
+ const renderCommands = (options) => {
99
+ const react = options.frontend === "react";
100
+ const lines = [];
101
+ if (options.template === "node") {
102
+ lines.push(react
103
+ ? "npm run dev # server + frontend HMR + schema sync (covara dev)"
104
+ : "npm run dev # server live-reload + schema sync (covara dev)");
105
+ lines.push("npm run build # build for production");
106
+ lines.push("npm start # run the production build");
107
+ lines.push("npm test # run tests (vitest)");
108
+ lines.push("npm run lint # typecheck");
109
+ if (react) {
110
+ lines.push("npm run types # regenerate frontend API types");
111
+ }
112
+ lines.push("npm run db:push # apply schema to the database");
113
+ lines.push("npm run db:generate # generate SQL migrations");
114
+ }
115
+ else {
116
+ lines.push("npm run dev # wrangler dev");
117
+ if (react) {
118
+ lines.push("npm run dev:web # Vite dev server (HMR) for the frontend");
119
+ lines.push("npm run types # regenerate frontend API types");
120
+ }
121
+ lines.push("npm run deploy # deploy to Cloudflare Workers");
122
+ lines.push("npm run typecheck # typecheck");
123
+ lines.push("npm run cf-typegen # generate Worker binding types");
124
+ lines.push("npm run db:push # apply schema to the database");
125
+ lines.push("npm run db:generate # generate SQL migrations");
126
+ }
127
+ return lines.join("\n");
128
+ };
129
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/cli/templates/agents.ts"],"names":[],"mappings":"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"}
@@ -150,7 +150,7 @@ database_id = "REPLACE_WITH_YOUR_D1_DATABASE_ID"
150
150
  };
151
151
  export const renderGitignore = (options) => {
152
152
  const lines = ["node_modules/", "dist/", ".env", ".env.*", "!.env.example"];
153
- if (options.frontend === "react") {
153
+ if (options.frontend === "react" && options.template === "cloudflare") {
154
154
  lines.push("public/");
155
155
  }
156
156
  if (options.db === "sqlite") {
@@ -1 +1 @@
1
- {"version":3,"file":"configs.js","sourceRoot":"","sources":["../../../src/cli/templates/configs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configs.js","sourceRoot":"","sources":["../../../src/cli/templates/configs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ScaffoldOptions } from "../options.js";
2
- export declare const renderDockerfile: (options: ScaffoldOptions) => string;
2
+ export declare const renderDockerfile: () => string;
3
3
  export declare const renderDockerignore: () => string;
4
4
  export declare const renderDockerCompose: (options: ScaffoldOptions) => string;
5
5
  export declare const renderCiWorkflow: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,gBAAgB,GAAI,SAAS,eAAe,KAAG,MA4C3D,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,MAgBrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,SAAS,eAAe,KAAG,MA4E9D,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,MAuBnC,CAAC"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,gBAAgB,QAAO,MAsCnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,MAgBrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,SAAS,eAAe,KAAG,MA4E9D,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,MAuBnC,CAAC"}
@@ -1,9 +1,4 @@
1
- export const renderDockerfile = (options) => {
2
- // The React variant's `npm run build` emits the SPA to ./public; the runtime
3
- // stage must copy it so serveStatic can find it.
4
- const copyPublic = options.frontend === "react"
5
- ? "COPY --from=build --chown=covara:covara /app/public ./public\n"
6
- : "";
1
+ export const renderDockerfile = () => {
7
2
  return `# syntax=docker/dockerfile:1
8
3
 
9
4
  FROM node:22-slim AS build
@@ -35,7 +30,7 @@ RUN groupadd --system --gid 1001 covara && \\
35
30
  COPY --chown=covara:covara package.json ./
36
31
  COPY --from=deps --chown=covara:covara /app/node_modules ./node_modules
37
32
  COPY --from=build --chown=covara:covara /app/dist ./dist
38
- ${copyPublic}USER covara
33
+ USER covara
39
34
  EXPOSE 3000
40
35
  HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \\
41
36
  CMD node -e "fetch('http://127.0.0.1:'+(process.env.PORT||3000)+'/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/templates/deploy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAU,EAAE;IACnE,6EAA6E;IAC7E,iDAAiD;IACjD,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BP,UAAU;;;;;CAKX,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAC7C;;;;;;;;;;;;;;;CAeD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAwB,EAAU,EAAE;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAa;QACvB,oBAAoB;QACpB,uCAAuC;KACxC,CAAC;IACF,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,+DAA+D,MAAM,GAAG,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GACd,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,MAAM,SAAS,GACb,OAAO,CAAC,EAAE,KAAK,QAAQ;QACrB,CAAC,CAAC;;;CAGP;QACK,CAAC,CAAC;;;;;CAKP,CAAC;IAEA,MAAM,eAAe,GACnB,OAAO,CAAC,EAAE,KAAK,UAAU;QACvB,CAAC,CAAC;;;;;;;qBAOa,MAAM;;;;;;qDAM0B,MAAM;;;;CAI1D;QACK,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,OAAO,GAAa,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEhE,OAAO;;;;;;;EAOP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;EACjB,UAAU,GAAG,SAAS;;;;;;;;EAQtB,eAAe;;EAEf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;CACnB,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuB7C,CAAC"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/cli/templates/deploy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCR,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAC7C;;;;;;;;;;;;;;;CAeD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAwB,EAAU,EAAE;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAa;QACvB,oBAAoB;QACpB,uCAAuC;KACxC,CAAC;IACF,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,+DAA+D,MAAM,GAAG,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GACd,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,MAAM,SAAS,GACb,OAAO,CAAC,EAAE,KAAK,QAAQ;QACrB,CAAC,CAAC;;;CAGP;QACK,CAAC,CAAC;;;;;CAKP,CAAC;IAEA,MAAM,eAAe,GACnB,OAAO,CAAC,EAAE,KAAK,UAAU;QACvB,CAAC,CAAC;;;;;;;qBAOa,MAAM;;;;;;qDAM0B,MAAM;;;;CAI1D;QACK,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,OAAO,GAAa,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEhE,OAAO;;;;;;;EAOP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;EACjB,UAAU,GAAG,SAAS;;;;;;;;EAQtB,eAAe;;EAEf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;CACnB,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuB7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/frontend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUrD,eAAO,MAAM,gBAAgB,GAAI,SAAS,eAAe,KAAG,MAqB3D,CAAC;AAEF,eAAO,MAAM,iBAAiB,+aAgB7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,eAAe,KAAG,MAalE,CAAC;AAEF,eAAO,MAAM,aAAa,0QAUzB,CAAC;AAEF,eAAO,MAAM,YAAY,spFAiFxB,CAAC;AAEF,eAAO,MAAM,eAAe,m6CAmF3B,CAAC;AAIF,eAAO,MAAM,uBAAuB,wYAUnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,MAG1C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,eAAe,KACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAQtB,CAAC"}
1
+ {"version":3,"file":"frontend.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/frontend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUrD,eAAO,MAAM,gBAAgB,GAAI,SAAS,eAAe,KAAG,MA0B3D,CAAC;AAEF,eAAO,MAAM,iBAAiB,+aAgB7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,eAAe,KAAG,MAalE,CAAC;AAEF,eAAO,MAAM,aAAa,0QAUzB,CAAC;AAEF,eAAO,MAAM,YAAY,spFAiFxB,CAAC;AAEF,eAAO,MAAM,eAAe,m6CAmF3B,CAAC;AAIF,eAAO,MAAM,uBAAuB,wYAUnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,MAG1C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,eAAe,KACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAQtB,CAAC"}
@@ -4,7 +4,12 @@
4
4
  const proxyTarget = (options) => options.template === "cloudflare"
5
5
  ? "http://localhost:8787"
6
6
  : "http://localhost:3000";
7
- export const renderViteConfig = (options) => `import { defineConfig } from "vite";
7
+ export const renderViteConfig = (options) => {
8
+ // Node serves the SPA itself, so the build goes inside ./dist to keep the
9
+ // server artifact self-contained (ship dist/, the SPA travels with it).
10
+ // Cloudflare serves it via wrangler [assets], which points at a top-level dir.
11
+ const outDir = options.template === "cloudflare" ? "../public" : "../dist/public";
12
+ return `import { defineConfig } from "vite";
8
13
  import react from "@vitejs/plugin-react";
9
14
 
10
15
  // The node template embeds this Vite server in-process during \`covara dev\`
@@ -14,7 +19,7 @@ export default defineConfig({
14
19
  root: __dirname,
15
20
  plugins: [react()],
16
21
  build: {
17
- outDir: "../public",
22
+ outDir: "${outDir}",
18
23
  emptyOutDir: true,
19
24
  },
20
25
  server: {
@@ -25,6 +30,7 @@ export default defineConfig({
25
30
  },
26
31
  });
27
32
  `;
33
+ };
28
34
  export const FRONTEND_TSCONFIG = `{
29
35
  "compilerOptions": {
30
36
  "target": "ES2020",
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../../src/cli/templates/frontend.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,WAAW,GAAG,CAAC,OAAwB,EAAU,EAAE,CACvD,OAAO,CAAC,QAAQ,KAAK,YAAY;IAC/B,CAAC,CAAC,uBAAuB;IACzB,CAAC,CAAC,uBAAuB,CAAC;AAE9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAU,EAAE,CACnE;;;;;;;;;;;;;;;iBAee,WAAW,CAAC,OAAO,CAAC;sBACf,WAAW,CAAC,OAAO,CAAC;;;;CAIzC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;CAgBhC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAwB,EAAU,EAAE,CAC1E;;;;;aAKW,OAAO,CAAC,IAAI;;;;;;;CAOxB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;CAU5B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiF3B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmF9B,CAAC;AAEF,+EAA+E;AAC/E,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;CAUtC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAW,EAAE,CAAC;;;CAGpD,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAwB,EACA,EAAE,CAAC,CAAC;IAC5B,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACpD,wBAAwB,EAAE,iBAAiB;IAC3C,qBAAqB,EAAE,uBAAuB,CAAC,OAAO,CAAC;IACvD,uBAAuB,EAAE,aAAa;IACtC,sBAAsB,EAAE,YAAY;IACpC,yBAAyB,EAAE,eAAe;IAC1C,qCAAqC,EAAE,uBAAuB;CAC/D,CAAC,CAAC"}
1
+ {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../../src/cli/templates/frontend.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,WAAW,GAAG,CAAC,OAAwB,EAAU,EAAE,CACvD,OAAO,CAAC,QAAQ,KAAK,YAAY;IAC/B,CAAC,CAAC,uBAAuB;IACzB,CAAC,CAAC,uBAAuB,CAAC;AAE9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAU,EAAE;IACnE,0EAA0E;IAC1E,wEAAwE;IACxE,+EAA+E;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAClF,OAAO;;;;;;;;;;eAUM,MAAM;;;;;iBAKJ,WAAW,CAAC,OAAO,CAAC;sBACf,WAAW,CAAC,OAAO,CAAC;;;;CAIzC,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;CAgBhC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAwB,EAAU,EAAE,CAC1E;;;;;aAKW,OAAO,CAAC,IAAI;;;;;;;CAOxB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;CAU5B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiF3B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmF9B,CAAC;AAEF,+EAA+E;AAC/E,kFAAkF;AAClF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;CAUtC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAW,EAAE,CAAC;;;CAGpD,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAwB,EACA,EAAE,CAAC,CAAC;IAC5B,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACpD,wBAAwB,EAAE,iBAAiB;IAC3C,qBAAqB,EAAE,uBAAuB,CAAC,OAAO,CAAC;IACvD,uBAAuB,EAAE,aAAa;IACtC,sBAAsB,EAAE,YAAY;IACpC,yBAAyB,EAAE,eAAe;IAC1C,qCAAqC,EAAE,uBAAuB;CAC/D,CAAC,CAAC"}
@@ -4,6 +4,7 @@ export { NODE_TSCONFIG, CLOUDFLARE_TSCONFIG, renderDrizzleConfig, renderWrangler
4
4
  export { renderPackageJson } from "./package-json.js";
5
5
  export { renderSchema, renderNodeIndex, renderWorker } from "./source.js";
6
6
  export { renderReadme } from "./readme.js";
7
+ export { renderAgents } from "./agents.js";
7
8
  export { renderDockerfile, renderDockerignore, renderDockerCompose, renderCiWorkflow, } from "./deploy.js";
8
9
  export { buildFrontendFiles } from "./frontend.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAoBrD,eAAO,MAAM,iBAAiB,GAC5B,SAAS,eAAe,KACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CA4BvB,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAqBrD,eAAO,MAAM,iBAAiB,GAC5B,SAAS,eAAe,KACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CA6BvB,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -2,6 +2,7 @@ import { renderPackageJson } from "./package-json.js";
2
2
  import { NODE_TSCONFIG, CLOUDFLARE_TSCONFIG, renderDrizzleConfig, renderWranglerToml, renderGitignore, renderEnvExample, } from "./configs.js";
3
3
  import { renderSchema, renderNodeIndex, renderWorker } from "./source.js";
4
4
  import { renderReadme } from "./readme.js";
5
+ import { renderAgents } from "./agents.js";
5
6
  import { renderDockerfile, renderDockerignore, renderDockerCompose, renderCiWorkflow, } from "./deploy.js";
6
7
  import { buildFrontendFiles } from "./frontend.js";
7
8
  export const buildProjectFiles = (options) => {
@@ -10,6 +11,7 @@ export const buildProjectFiles = (options) => {
10
11
  "drizzle.config.ts": renderDrizzleConfig(options),
11
12
  "src/schema.ts": renderSchema(options),
12
13
  "README.md": renderReadme(options),
14
+ "AGENTS.md": renderAgents(options),
13
15
  ".gitignore": renderGitignore(options),
14
16
  ".env.example": renderEnvExample(options),
15
17
  ".github/workflows/ci.yml": renderCiWorkflow(),
@@ -17,7 +19,7 @@ export const buildProjectFiles = (options) => {
17
19
  if (options.template === "node") {
18
20
  files["tsconfig.json"] = NODE_TSCONFIG;
19
21
  files["src/index.ts"] = renderNodeIndex(options);
20
- files["Dockerfile"] = renderDockerfile(options);
22
+ files["Dockerfile"] = renderDockerfile();
21
23
  files[".dockerignore"] = renderDockerignore();
22
24
  files["docker-compose.yml"] = renderDockerCompose(options);
23
25
  }
@@ -35,6 +37,7 @@ export { NODE_TSCONFIG, CLOUDFLARE_TSCONFIG, renderDrizzleConfig, renderWrangler
35
37
  export { renderPackageJson } from "./package-json.js";
36
38
  export { renderSchema, renderNodeIndex, renderWorker } from "./source.js";
37
39
  export { renderReadme } from "./readme.js";
40
+ export { renderAgents } from "./agents.js";
38
41
  export { renderDockerfile, renderDockerignore, renderDockerCompose, renderCiWorkflow, } from "./deploy.js";
39
42
  export { buildFrontendFiles } from "./frontend.js";
40
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAwB,EACA,EAAE;IAC1B,MAAM,KAAK,GAA2B;QACpC,cAAc,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAC1C,mBAAmB,EAAE,mBAAmB,CAAC,OAAO,CAAC;QACjD,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC;QACtC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC;QAClC,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;QACtC,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACzC,0BAA0B,EAAE,gBAAgB,EAAE;KAC/C,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;QACvC,KAAK,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,KAAK,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,EAAE,CAAC;QAC9C,KAAK,CAAC,oBAAoB,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,eAAe,CAAC,GAAG,mBAAmB,CAAC;QAC7C,KAAK,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAwB,EACA,EAAE;IAC1B,MAAM,KAAK,GAA2B;QACpC,cAAc,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAC1C,mBAAmB,EAAE,mBAAmB,CAAC,OAAO,CAAC;QACjD,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC;QACtC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC;QAClC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC;QAClC,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;QACtC,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACzC,0BAA0B,EAAE,gBAAgB,EAAE;KAC/C,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;QACvC,KAAK,CAAC,cAAc,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,KAAK,CAAC,YAAY,CAAC,GAAG,gBAAgB,EAAE,CAAC;QACzC,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,EAAE,CAAC;QAC9C,KAAK,CAAC,oBAAoB,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,eAAe,CAAC,GAAG,mBAAmB,CAAC;QAC7C,KAAK,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,KAAK,CAAC,eAAe,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,aAAa,scAYzB,CAAC;AAEF,eAAO,MAAM,eAAe,2XAU3B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,eAAe,KAAG,MACG,CAAC;AAE5D,eAAO,MAAM,iBAAiB,mkCA4B7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,4mCA8B/B,CAAC;AAmFF,eAAO,MAAM,eAAe,GAAI,SAAS,eAAe,KAAG,MAG1D,CAAC;AAEF,eAAO,MAAM,oBAAoB,opCA0ChC,CAAC;AAEF,eAAO,MAAM,0BAA0B,qxCA4CtC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,eAAe,KAAG,MACqB,CAAC"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,aAAa,scAYzB,CAAC;AAEF,eAAO,MAAM,eAAe,2XAU3B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,eAAe,KAAG,MACG,CAAC;AAE5D,eAAO,MAAM,iBAAiB,mkCA4B7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,4mCA8B/B,CAAC;AAoFF,eAAO,MAAM,eAAe,GAAI,SAAS,eAAe,KAAG,MAG1D,CAAC;AAEF,eAAO,MAAM,oBAAoB,opCA0ChC,CAAC;AAEF,eAAO,MAAM,0BAA0B,qxCA4CtC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,eAAe,KAAG,MACqB,CAAC"}
@@ -86,7 +86,7 @@ console.log(\`List: curl http://localhost:\${server.port}/api/todos\`);
86
86
  // Node entry for the React-frontend variant: one process serves the SPA (with
87
87
  // Vite HMR in dev) AND the API/admin. In dev it embeds Vite in middleware mode
88
88
  // and routes /api + /__covara to the Hono app; in production it serves the
89
- // built SPA from ../public with an SPA fallback.
89
+ // built SPA from dist/public with an SPA fallback.
90
90
  const NODE_REACT_DB_SETUP_SQLITE = `import { createClient } from "@libsql/client";
91
91
  import { drizzle } from "drizzle-orm/libsql";
92
92
  import { createCovara } from "covara";
@@ -149,8 +149,9 @@ if (process.env.NODE_ENV === "development") {
149
149
  console.log(\`Admin UI: http://localhost:\${port}/__covara/ui\`);
150
150
  });
151
151
  } else {
152
- // Production: serve the built SPA (../public) and fall through to the API.
153
- const publicDir = path.join(here, "../public");
152
+ // Production: serve the built SPA (bundled into dist/public by vite build)
153
+ // and fall through to the API.
154
+ const publicDir = path.join(here, "public");
154
155
  app.use("*", serveStatic({ root: publicDir }));
155
156
  const spa = serveStatic({ root: publicDir, path: "index.html" });
156
157
  app.get("*", (c, next) => (isApi(c.req.path) ? next() : spa(c, next)));
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/templates/source.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;CAY5B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;CAU9B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAU,EAAE,CAC/D,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BhC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BlC,CAAC;AAEF,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,iDAAiD;AACjD,MAAM,0BAA0B,GAAG;;;;;;;;4BAQP,CAAC;AAE7B,MAAM,4BAA4B,GAAG;;;;;;;;;;4BAUT,CAAC;AAE7B,MAAM,oBAAoB,GAAG,CAAC,OAAwB,EAAU,EAAE;IAChE,MAAM,OAAO,GACX,OAAO,CAAC,EAAE,KAAK,QAAQ;QACrB,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,4BAA4B,CAAC;IAEnC,OAAO,GAAG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8ClB,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAU,EAAE;IAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CzC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAU,EAAE,CAC/D,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,0BAA0B,CAAC"}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/templates/source.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;CAY5B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;CAU9B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAU,EAAE,CAC/D,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BhC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BlC,CAAC;AAEF,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,mDAAmD;AACnD,MAAM,0BAA0B,GAAG;;;;;;;;4BAQP,CAAC;AAE7B,MAAM,4BAA4B,GAAG;;;;;;;;;;4BAUT,CAAC;AAE7B,MAAM,oBAAoB,GAAG,CAAC,OAAwB,EAAU,EAAE;IAChE,MAAM,OAAO,GACX,OAAO,CAAC,EAAE,KAAK,QAAQ;QACrB,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,4BAA4B,CAAC;IAEnC,OAAO,GAAG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ClB,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAU,EAAE;IAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CzC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAU,EAAE,CAC/D,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "covara",
3
- "version": "0.10.3",
3
+ "version": "0.10.5",
4
4
  "description": "Real-time resource API framework built on Hono — runs standalone (Node) and on Cloudflare Workers, with a TypeScript client",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",