theokit 0.5.1 → 0.5.3
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/dist/{actions-virtual-module-IY46EEEX.js → actions-virtual-module-DL74V6SR.js} +2 -2
- package/dist/actions-virtual-module-DL74V6SR.js.map +1 -0
- package/dist/{actions-virtual-module-XNHDNCZ6.js → actions-virtual-module-ZDD54ZZE.js} +2 -2
- package/dist/actions-virtual-module-ZDD54ZZE.js.map +1 -0
- package/dist/{app-typed-client-OUJO3V5J.js → app-typed-client-4GIKUKRT.js} +4 -4
- package/dist/app-typed-client-4GIKUKRT.js.map +1 -0
- package/dist/{app-typed-client-YOMWSA3F.js → app-typed-client-4M4NVSK3.js} +3 -3
- package/dist/app-typed-client-4M4NVSK3.js.map +1 -0
- package/dist/{aws-lambda-GKSTX6HD.js → aws-lambda-SCRGTGF5.js} +5 -5
- package/dist/aws-lambda-SCRGTGF5.js.map +1 -0
- package/dist/{build-2WZ6XXVY.js → build-R74EU6BP.js} +11 -11
- package/dist/build-R74EU6BP.js.map +1 -0
- package/dist/{bun-ISHSNFIO.js → bun-FURRCQMS.js} +7 -7
- package/dist/bun-FURRCQMS.js.map +1 -0
- package/dist/{chunk-FI7MPTJW.js → chunk-3IOFTG3L.js} +1 -1
- package/dist/chunk-3IOFTG3L.js.map +1 -0
- package/dist/{chunk-U6TPSW4L.js → chunk-DUKXQNM7.js} +2 -2
- package/dist/{chunk-4S2UCILN.js → chunk-FGOX37NB.js} +8 -8
- package/dist/chunk-FGOX37NB.js.map +1 -0
- package/dist/{chunk-MR7OLIC6.js → chunk-GPF64ENM.js} +2 -2
- package/dist/{chunk-4S6YHNG2.js → chunk-GUUWDMR2.js} +2 -2
- package/dist/chunk-GUUWDMR2.js.map +1 -0
- package/dist/{chunk-WEGALZEU.js → chunk-HDA6M7P4.js} +3 -3
- package/dist/{chunk-K4M64WD6.js → chunk-IZQN5CDS.js} +4 -4
- package/dist/chunk-IZQN5CDS.js.map +1 -0
- package/dist/{chunk-M2EY7KDR.js → chunk-JD7AQNJS.js} +15 -15
- package/dist/chunk-JD7AQNJS.js.map +1 -0
- package/dist/{chunk-5Z2727GV.js → chunk-KJLECZWQ.js} +1 -1
- package/dist/chunk-KJLECZWQ.js.map +1 -0
- package/dist/{chunk-LC5PYNJP.js → chunk-MWYSRZI4.js} +7 -7
- package/dist/chunk-MWYSRZI4.js.map +1 -0
- package/dist/{chunk-VBZCVFSA.js → chunk-P2RS3WWY.js} +2 -2
- package/dist/{chunk-R7OC6UDK.js → chunk-P3SGM4NR.js} +1 -1
- package/dist/chunk-P3SGM4NR.js.map +1 -0
- package/dist/{chunk-ABVITXFH.js → chunk-S74FECKW.js} +1 -1
- package/dist/{chunk-ABVITXFH.js.map → chunk-S74FECKW.js.map} +1 -1
- package/dist/{chunk-COXLEZCN.js → chunk-UVHRD33F.js} +1 -1
- package/dist/chunk-UVHRD33F.js.map +1 -0
- package/dist/{chunk-27LWMYNK.js → chunk-X32KQH5C.js} +2 -2
- package/dist/chunk-X32KQH5C.js.map +1 -0
- package/dist/{chunk-2F4FROEQ.js → chunk-X3VNROZ7.js} +17 -17
- package/dist/chunk-X3VNROZ7.js.map +1 -0
- package/dist/{chunk-Y4H3JNVK.js → chunk-YB5DJJ4U.js} +1 -1
- package/dist/chunk-YB5DJJ4U.js.map +1 -0
- package/dist/cli/index.js +8 -8
- package/dist/{cloudflare-OJGJ7R2D.js → cloudflare-IZ6VJ2OU.js} +7 -7
- package/dist/cloudflare-IZ6VJ2OU.js.map +1 -0
- package/dist/{deno-deploy-BHWKFTOW.js → deno-deploy-O73NBXIW.js} +6 -6
- package/dist/deno-deploy-O73NBXIW.js.map +1 -0
- package/dist/{dev-U4UDZFDB.js → dev-ZU46C5AZ.js} +8 -8
- package/dist/{dev-emit-HHP2XJXE.js → dev-emit-66FCOS7V.js} +4 -4
- package/dist/{dev-emit-5VPRCHOD.js → dev-emit-JBVINGHU.js} +3 -3
- package/dist/devtools/entry.js +5 -4
- package/dist/devtools/entry.js.map +1 -1
- package/dist/{docker-EZDA5FT7.js → docker-AZSJFLP2.js} +3 -3
- package/dist/docker-AZSJFLP2.js.map +1 -0
- package/dist/{index-DWWEdFh5.d.ts → index-CuHICqb9.d.ts} +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/{info-47VB62MV.js → info-CORLCPEJ.js} +4 -4
- package/dist/{netlify-GSNSJGMN.js → netlify-O7G3RLK4.js} +3 -3
- package/dist/netlify-O7G3RLK4.js.map +1 -0
- package/dist/{node-6I5B6RL3.js → node-LXPQLMVB.js} +3 -3
- package/dist/{openapi-NFLSNNVQ.js → openapi-TEOUOIJ2.js} +7 -7
- package/dist/registry-KW4F4D2L.js +25 -0
- package/dist/{routes-3A4XGIEJ.js → routes-GAXVWJUK.js} +6 -6
- package/dist/{schema-KZVOV333.js → schema-Z5VJ2I76.js} +3 -3
- package/dist/server/cron/index.js +2 -2
- package/dist/server/http/index.d.ts +1 -1
- package/dist/server/http/index.js +2 -2
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +18 -11
- package/dist/server/index.js.map +1 -1
- package/dist/server/jobs/index.d.ts +1 -1
- package/dist/server/jobs/index.js +2 -2
- package/dist/server/scan/index.d.ts +1 -1
- package/dist/server/scan/index.js +2 -2
- package/dist/{services-json-Z2QNGVPW.js → services-json-6SHWMYJH.js} +1 -1
- package/dist/services-json-6SHWMYJH.js.map +1 -0
- package/dist/{services-typed-client-T7M5VPBP.js → services-typed-client-ASZL7FQV.js} +2 -2
- package/dist/{start-QDRSRNXK.js → start-HGUNNF5X.js} +10 -10
- package/dist/start-HGUNNF5X.js.map +1 -0
- package/dist/{static-QI5NQT2X.js → static-EO73I4C7.js} +6 -6
- package/dist/static-EO73I4C7.js.map +1 -0
- package/dist/{theo-cloud-RSQCBNXL.js → theo-cloud-HBCYEODQ.js} +2 -2
- package/dist/theo-cloud-HBCYEODQ.js.map +1 -0
- package/dist/{vercel-TKPZK62A.js → vercel-GSFDMF7K.js} +4 -4
- package/dist/vercel-GSFDMF7K.js.map +1 -0
- package/dist/vite-plugin/index.js +3 -3
- package/dist/{vite-plugin-CR4JDFUQ.js → vite-plugin-TX5H4MB6.js} +8 -8
- package/package.json +1 -1
- package/dist/actions-virtual-module-IY46EEEX.js.map +0 -1
- package/dist/actions-virtual-module-XNHDNCZ6.js.map +0 -1
- package/dist/app-typed-client-OUJO3V5J.js.map +0 -1
- package/dist/app-typed-client-YOMWSA3F.js.map +0 -1
- package/dist/aws-lambda-GKSTX6HD.js.map +0 -1
- package/dist/build-2WZ6XXVY.js.map +0 -1
- package/dist/bun-ISHSNFIO.js.map +0 -1
- package/dist/chunk-27LWMYNK.js.map +0 -1
- package/dist/chunk-2F4FROEQ.js.map +0 -1
- package/dist/chunk-4S2UCILN.js.map +0 -1
- package/dist/chunk-4S6YHNG2.js.map +0 -1
- package/dist/chunk-5Z2727GV.js.map +0 -1
- package/dist/chunk-COXLEZCN.js.map +0 -1
- package/dist/chunk-FI7MPTJW.js.map +0 -1
- package/dist/chunk-K4M64WD6.js.map +0 -1
- package/dist/chunk-LC5PYNJP.js.map +0 -1
- package/dist/chunk-M2EY7KDR.js.map +0 -1
- package/dist/chunk-R7OC6UDK.js.map +0 -1
- package/dist/chunk-Y4H3JNVK.js.map +0 -1
- package/dist/cloudflare-OJGJ7R2D.js.map +0 -1
- package/dist/deno-deploy-BHWKFTOW.js.map +0 -1
- package/dist/docker-EZDA5FT7.js.map +0 -1
- package/dist/netlify-GSNSJGMN.js.map +0 -1
- package/dist/registry-QHEZ3BWB.js +0 -25
- package/dist/services-json-Z2QNGVPW.js.map +0 -1
- package/dist/start-QDRSRNXK.js.map +0 -1
- package/dist/static-QI5NQT2X.js.map +0 -1
- package/dist/theo-cloud-RSQCBNXL.js.map +0 -1
- package/dist/vercel-TKPZK62A.js.map +0 -1
- /package/dist/{chunk-U6TPSW4L.js.map → chunk-DUKXQNM7.js.map} +0 -0
- /package/dist/{chunk-MR7OLIC6.js.map → chunk-GPF64ENM.js.map} +0 -0
- /package/dist/{chunk-WEGALZEU.js.map → chunk-HDA6M7P4.js.map} +0 -0
- /package/dist/{chunk-VBZCVFSA.js.map → chunk-P2RS3WWY.js.map} +0 -0
- /package/dist/{dev-U4UDZFDB.js.map → dev-ZU46C5AZ.js.map} +0 -0
- /package/dist/{dev-emit-HHP2XJXE.js.map → dev-emit-66FCOS7V.js.map} +0 -0
- /package/dist/{dev-emit-5VPRCHOD.js.map → dev-emit-JBVINGHU.js.map} +0 -0
- /package/dist/{info-47VB62MV.js.map → info-CORLCPEJ.js.map} +0 -0
- /package/dist/{node-6I5B6RL3.js.map → node-LXPQLMVB.js.map} +0 -0
- /package/dist/{openapi-NFLSNNVQ.js.map → openapi-TEOUOIJ2.js.map} +0 -0
- /package/dist/{registry-QHEZ3BWB.js.map → registry-KW4F4D2L.js.map} +0 -0
- /package/dist/{routes-3A4XGIEJ.js.map → routes-GAXVWJUK.js.map} +0 -0
- /package/dist/{schema-KZVOV333.js.map → schema-Z5VJ2I76.js.map} +0 -0
- /package/dist/{services-typed-client-T7M5VPBP.js.map → services-typed-client-ASZL7FQV.js.map} +0 -0
- /package/dist/{vite-plugin-CR4JDFUQ.js.map → vite-plugin-TX5H4MB6.js.map} +0 -0
package/dist/cli/index.js
CHANGED
|
@@ -6,12 +6,12 @@ import "../chunk-KT3MWNZG.js";
|
|
|
6
6
|
import cac from "cac";
|
|
7
7
|
var cli = cac("theokit");
|
|
8
8
|
cli.command("dev", "Start development server").option("--port <port>", "Port number").action(async (options) => {
|
|
9
|
-
const { devCommand } = await import("../dev-
|
|
9
|
+
const { devCommand } = await import("../dev-ZU46C5AZ.js");
|
|
10
10
|
await devCommand({ port: options.port ? Number(options.port) : void 0 });
|
|
11
11
|
});
|
|
12
12
|
cli.command("build", "Build for production").option("--target <target>", "Deploy target (node, vercel, cloudflare)").action(async (options) => {
|
|
13
13
|
try {
|
|
14
|
-
const { buildCommand } = await import("../build-
|
|
14
|
+
const { buildCommand } = await import("../build-R74EU6BP.js");
|
|
15
15
|
await buildCommand({ target: options.target });
|
|
16
16
|
} catch (err) {
|
|
17
17
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -23,7 +23,7 @@ cli.command("build", "Build for production").option("--target <target>", "Deploy
|
|
|
23
23
|
});
|
|
24
24
|
cli.command("start", "Start production server").option("--port <port>", "Port number").action(async (options) => {
|
|
25
25
|
try {
|
|
26
|
-
const { startCommand } = await import("../start-
|
|
26
|
+
const { startCommand } = await import("../start-HGUNNF5X.js");
|
|
27
27
|
await startCommand({ port: options.port ? Number(options.port) : void 0 });
|
|
28
28
|
} catch (err) {
|
|
29
29
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -47,7 +47,7 @@ cli.command("generate <type> <name>", "Generate a route, action, page, ws, or co
|
|
|
47
47
|
});
|
|
48
48
|
cli.command("routes", "List all routes, actions, and WebSocket endpoints").action(async () => {
|
|
49
49
|
try {
|
|
50
|
-
const { routesCommand } = await import("../routes-
|
|
50
|
+
const { routesCommand } = await import("../routes-GAXVWJUK.js");
|
|
51
51
|
await routesCommand();
|
|
52
52
|
} catch (err) {
|
|
53
53
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -88,7 +88,7 @@ cli.command("add <package>", "Install a known TheoKit adapter or plugin (whiteli
|
|
|
88
88
|
await addCommand(pkg);
|
|
89
89
|
});
|
|
90
90
|
cli.command("info", "Print environment info (runtime, config, routes)").action(async () => {
|
|
91
|
-
const { infoCommand } = await import("../info-
|
|
91
|
+
const { infoCommand } = await import("../info-CORLCPEJ.js");
|
|
92
92
|
await infoCommand();
|
|
93
93
|
});
|
|
94
94
|
cli.command(
|
|
@@ -96,7 +96,7 @@ cli.command(
|
|
|
96
96
|
"Generate <distDir>/openapi.json from route schemas (opt-in via config.openapi)"
|
|
97
97
|
).option("--dry-run", "Print the document to stdout without writing to disk (EC-3)").action(async (options) => {
|
|
98
98
|
try {
|
|
99
|
-
const { openapiCommand } = await import("../openapi-
|
|
99
|
+
const { openapiCommand } = await import("../openapi-TEOUOIJ2.js");
|
|
100
100
|
await openapiCommand({ dryRun: Boolean(options.dryRun) });
|
|
101
101
|
} catch (err) {
|
|
102
102
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -120,7 +120,7 @@ cli.command(
|
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
122
|
if (kind === "services-json-v1-to-v2" || kind === "services-json") {
|
|
123
|
-
const { servicesJsonMigrateCommand } = await import("../services-json-
|
|
123
|
+
const { servicesJsonMigrateCommand } = await import("../services-json-6SHWMYJH.js");
|
|
124
124
|
await servicesJsonMigrateCommand({
|
|
125
125
|
dryRun: Boolean(options.dryRun),
|
|
126
126
|
name: options.name
|
|
@@ -143,7 +143,7 @@ cli.command(
|
|
|
143
143
|
});
|
|
144
144
|
cli.command("docker", "Generate Dockerfile for production").option("--force", "Overwrite existing Dockerfile").action(async (options) => {
|
|
145
145
|
try {
|
|
146
|
-
const { dockerCommand } = await import("../docker-
|
|
146
|
+
const { dockerCommand } = await import("../docker-AZSJFLP2.js");
|
|
147
147
|
await dockerCommand({ force: options.force });
|
|
148
148
|
} catch (err) {
|
|
149
149
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import "tsx/esm";
|
|
3
3
|
import {
|
|
4
4
|
nodeAdapter
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MWYSRZI4.js";
|
|
6
6
|
import {
|
|
7
7
|
assertServicesUnsupported,
|
|
8
8
|
readManifest
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-X32KQH5C.js";
|
|
10
10
|
import "./chunk-KT3MWNZG.js";
|
|
11
11
|
|
|
12
12
|
// src/adapters/cloudflare.ts
|
|
@@ -89,12 +89,12 @@ function renderWranglerToml() {
|
|
|
89
89
|
return [
|
|
90
90
|
`# Generated by Theo \u2014 Cloudflare Workers`,
|
|
91
91
|
`name = "theo-app"`,
|
|
92
|
-
`main = ".
|
|
92
|
+
`main = ".theokit/cloudflare/worker.mjs"`,
|
|
93
93
|
`compatibility_date = "2025-09-01"`,
|
|
94
94
|
`compatibility_flags = ["nodejs_compat"]`,
|
|
95
95
|
``,
|
|
96
96
|
`[site]`,
|
|
97
|
-
`bucket = ".
|
|
97
|
+
`bucket = ".theokit/client"`,
|
|
98
98
|
``,
|
|
99
99
|
`# Environment variables are set via wrangler secret or dashboard`,
|
|
100
100
|
`# Example: wrangler secret put DATABASE_URL`
|
|
@@ -105,14 +105,14 @@ var cloudflareAdapter = {
|
|
|
105
105
|
async build(config, cwd, ctx) {
|
|
106
106
|
assertServicesUnsupported("cloudflare", readManifest(cwd));
|
|
107
107
|
await nodeAdapter.build(config, cwd, ctx);
|
|
108
|
-
const outputDir = resolve(cwd, ".
|
|
108
|
+
const outputDir = resolve(cwd, ".theokit/cloudflare");
|
|
109
109
|
mkdirSync(outputDir, { recursive: true });
|
|
110
110
|
writeFileSync(
|
|
111
111
|
resolve(outputDir, "worker.mjs"),
|
|
112
112
|
renderCloudflareWorkerEntry({ ssrStreaming: config.ssrStreaming })
|
|
113
113
|
);
|
|
114
114
|
writeFileSync(resolve(cwd, "wrangler.toml"), renderWranglerToml());
|
|
115
|
-
console.log("\n \u2713 Cloudflare output \u2192 .
|
|
115
|
+
console.log("\n \u2713 Cloudflare output \u2192 .theokit/cloudflare/ + wrangler.toml\n");
|
|
116
116
|
}
|
|
117
117
|
};
|
|
118
118
|
export {
|
|
@@ -120,4 +120,4 @@ export {
|
|
|
120
120
|
renderCloudflareWorkerEntry,
|
|
121
121
|
renderWranglerToml
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=cloudflare-
|
|
123
|
+
//# sourceMappingURL=cloudflare-IZ6VJ2OU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapters/cloudflare.ts"],"sourcesContent":["/* eslint-disable security/detect-non-literal-fs-filename --\n * Cloudflare deploy adapter. All write paths are under `cwd/.theokit/cloudflare/`\n * and `cwd/wrangler.toml`. Build-time tool — no HTTP input.\n */\nimport { mkdirSync, writeFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nimport type { TheoConfig } from '../config/schema.js'\nimport { assertServicesUnsupported, readManifest } from '../services/index.js'\n\nimport { nodeAdapter } from './node.js'\nimport type { AdapterBuildContext, DeployAdapter } from './types.js'\n\n/**\n * T2.1 — Cloudflare adapter rewritten to consume `theokit/adapters/web-shim`\n * instead of emitting an inline plain-object Request/Response shim. Reduces\n * template from ~50 lines to ~25 and centralizes maintenance.\n */\n\nexport function renderCloudflareWorkerEntry(opts: { ssrStreaming?: boolean } = {}): string {\n const streamingImport = opts.ssrStreaming\n ? `import { renderStreamingWeb } from '/@theo/entry-server'`\n : `// (ssrStreaming off: renderStreamingWeb not imported)`\n const nonApiBranch = opts.ssrStreaming\n ? ` // T2.3 — streaming SSR for non-API routes\\n return renderStreamingWeb(request)`\n : ` return notFoundResponse()`\n // CR-006: Workers lack `process.cwd()` and the `node:*` import surface\n // is brittle even under `nodejs_compat`. We use the Web Crypto\n // `crypto.randomUUID()` instead of `node:crypto.randomUUID`, and embed\n // the server directory as a build-time literal instead of resolving via\n // `node:path` at runtime.\n return [\n `// Generated by Theo — Cloudflare Workers Adapter`,\n `//`,\n `// REQUIREMENTS (EC-3):`,\n `// - wrangler.toml MUST include compatibility_flags = [\"nodejs_compat\"]`,\n `// (still required for transitive theokit/server deps, e.g. busboy)`,\n `// - package.json MUST list \"theokit\" in dependencies (not devDependencies)`,\n `// so Wrangler bundles theokit and its transitive deps`,\n `// - Deploy: wrangler deploy`,\n ``,\n `import { scanServerRoutes, matchRoute, executeRoute, createProductionLoader, scanWebSocketRoutes } from 'theokit/server'`,\n `import { createWebShim } from 'theokit/adapters/web-shim'`,\n `// T3.4 — WS bridge for Cloudflare Workers`,\n `import { createCloudflareWsBridge } from 'theokit/adapters/ws-shim'`,\n streamingImport,\n ``,\n `// Cold-start cache (avoid scanning routes on every request)`,\n `let routesCache = null`,\n `let wsRoutesCache = null`,\n `let loaderCache = null`,\n `// CR-006: server directory is a build-time literal — Workers cannot`,\n `// call process.cwd() and resolving paths at runtime returned '/server'.`,\n `const serverDir = 'server'`,\n ``,\n `function notFoundResponse() {`,\n ` return new Response(`,\n ` JSON.stringify({ error: { code: 'NOT_FOUND', message: 'Route not found' } }),`,\n ` { status: 404, headers: { 'Content-Type': 'application/json' } },`,\n ` )`,\n `}`,\n ``,\n `export default {`,\n ` async fetch(request, env, ctx) {`,\n ` const url = new URL(request.url)`,\n ``,\n ` // T3.4 — Detect WebSocket upgrade and delegate to the CF bridge`,\n ` if (request.headers.get('upgrade')?.toLowerCase() === 'websocket') {`,\n ` if (!wsRoutesCache) wsRoutesCache = scanWebSocketRoutes(serverDir)`,\n ` if (wsRoutesCache.length === 0) return notFoundResponse()`,\n ` const cfWs = createCloudflareWsBridge({`,\n ` onOpen: () => {},`,\n ` onMessage: (ws, data) => { ws.send(data) },`,\n ` onClose: () => {},`,\n ` })`,\n ` return cfWs.handle(request)`,\n ` }`,\n ``,\n ` if (!url.pathname.startsWith('/api/')) {`,\n nonApiBranch,\n ` }`,\n ``,\n ` if (!routesCache) routesCache = scanServerRoutes(serverDir)`,\n ` if (!loaderCache) loaderCache = createProductionLoader()`,\n ``,\n ` const match = matchRoute(url.pathname, routesCache)`,\n ` if (!match) return notFoundResponse()`,\n ``,\n ` const { req, res, toResponse } = createWebShim(request, { trustedProxy: 'platform' })`,\n ` const requestId = crypto.randomUUID()`,\n ` const method = request.method.toUpperCase()`,\n ` await executeRoute({`,\n ` route: match.route, method, params: match.params,`,\n ` req, res, loadModule: loaderCache, serverDir, requestId,`,\n ` })`,\n ` return toResponse()`,\n ` },`,\n `}`,\n ].join('\\n')\n}\n\nexport function renderWranglerToml(): string {\n return [\n `# Generated by Theo — Cloudflare Workers`,\n `name = \"theo-app\"`,\n `main = \".theokit/cloudflare/worker.mjs\"`,\n `compatibility_date = \"2025-09-01\"`,\n `compatibility_flags = [\"nodejs_compat\"]`,\n ``,\n `[site]`,\n `bucket = \".theokit/client\"`,\n ``,\n `# Environment variables are set via wrangler secret or dashboard`,\n `# Example: wrangler secret put DATABASE_URL`,\n ].join('\\n')\n}\n\nexport const cloudflareAdapter: DeployAdapter = {\n name: 'cloudflare',\n\n async build(config: TheoConfig, cwd: string, ctx?: AdapterBuildContext): Promise<void> {\n // Wave 2 (T2.2) — reject polyglot services on this adapter.\n assertServicesUnsupported('cloudflare', readManifest(cwd))\n\n // 1. Run the standard Node build first (ctx forwarded so nodeAdapter has makeVitePlugins)\n await nodeAdapter.build(config, cwd, ctx)\n\n const outputDir = resolve(cwd, '.theokit/cloudflare')\n mkdirSync(outputDir, { recursive: true })\n\n // 2. Emit Worker entry (now uses the shared web-shim)\n writeFileSync(\n resolve(outputDir, 'worker.mjs'),\n renderCloudflareWorkerEntry({ ssrStreaming: config.ssrStreaming }),\n )\n\n // 3. Emit wrangler.toml (with nodejs_compat enforced)\n writeFileSync(resolve(cwd, 'wrangler.toml'), renderWranglerToml())\n\n // eslint-disable-next-line no-console -- CLI build progress\n console.log('\\n ✓ Cloudflare output → .theokit/cloudflare/ + wrangler.toml\\n')\n },\n}\n"],"mappings":";;;;;;;;;;;;AAIA,SAAS,WAAW,qBAAqB;AACzC,SAAS,eAAe;AAcjB,SAAS,4BAA4B,OAAmC,CAAC,GAAW;AACzF,QAAM,kBAAkB,KAAK,eACzB,6DACA;AACJ,QAAM,eAAe,KAAK,eACtB;AAAA,4CACA;AAMJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,qBAA6B;AAC3C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,IAAM,oBAAmC;AAAA,EAC9C,MAAM;AAAA,EAEN,MAAM,MAAM,QAAoB,KAAa,KAA0C;AAErF,8BAA0B,cAAc,aAAa,GAAG,CAAC;AAGzD,UAAM,YAAY,MAAM,QAAQ,KAAK,GAAG;AAExC,UAAM,YAAY,QAAQ,KAAK,qBAAqB;AACpD,cAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAGxC;AAAA,MACE,QAAQ,WAAW,YAAY;AAAA,MAC/B,4BAA4B,EAAE,cAAc,OAAO,aAAa,CAAC;AAAA,IACnE;AAGA,kBAAc,QAAQ,KAAK,eAAe,GAAG,mBAAmB,CAAC;AAGjE,YAAQ,IAAI,4EAAkE;AAAA,EAChF;AACF;","names":[]}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import "tsx/esm";
|
|
3
3
|
import {
|
|
4
4
|
nodeAdapter
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MWYSRZI4.js";
|
|
6
6
|
import {
|
|
7
7
|
assertServicesUnsupported,
|
|
8
8
|
readManifest
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-X32KQH5C.js";
|
|
10
10
|
import "./chunk-KT3MWNZG.js";
|
|
11
11
|
|
|
12
12
|
// src/adapters/deno-deploy.ts
|
|
@@ -15,7 +15,7 @@ import { resolve } from "path";
|
|
|
15
15
|
function renderDenoEntry(port) {
|
|
16
16
|
return [
|
|
17
17
|
`// Generated by Theo \u2014 Deno Deploy Adapter`,
|
|
18
|
-
`// Deploy: deployctl deploy --project=<name> .
|
|
18
|
+
`// Deploy: deployctl deploy --project=<name> .theokit/deno/server.ts`,
|
|
19
19
|
`// Requires Deno >= 1.40 (Deno.serve + npm: specifier support)`,
|
|
20
20
|
``,
|
|
21
21
|
`// Runtime guard`,
|
|
@@ -84,7 +84,7 @@ async function buildDeno(config, cwd, deps = {}, ctx) {
|
|
|
84
84
|
assertServicesUnsupported("deno-deploy", readManifest(cwd));
|
|
85
85
|
const runNodeBuild = deps.runNodeBuild ?? nodeAdapter.build.bind(nodeAdapter);
|
|
86
86
|
await runNodeBuild(config, cwd, ctx);
|
|
87
|
-
const outputDir = resolve(cwd, ".
|
|
87
|
+
const outputDir = resolve(cwd, ".theokit/deno");
|
|
88
88
|
const ensureDir = deps.ensureDir ?? ((p) => mkdirSync(p, { recursive: true }));
|
|
89
89
|
ensureDir(outputDir);
|
|
90
90
|
const entry = renderDenoEntry(config.port);
|
|
@@ -92,7 +92,7 @@ async function buildDeno(config, cwd, deps = {}, ctx) {
|
|
|
92
92
|
writeFileSync(p, c);
|
|
93
93
|
});
|
|
94
94
|
write(resolve(outputDir, "server.ts"), entry);
|
|
95
|
-
console.log("\n \u2713 Deno Deploy output \u2192 .
|
|
95
|
+
console.log("\n \u2713 Deno Deploy output \u2192 .theokit/deno/server.ts\n");
|
|
96
96
|
}
|
|
97
97
|
var denoDeployAdapter = {
|
|
98
98
|
name: "deno-deploy",
|
|
@@ -105,4 +105,4 @@ export {
|
|
|
105
105
|
denoDeployAdapter,
|
|
106
106
|
renderDenoEntry
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=deno-deploy-
|
|
108
|
+
//# sourceMappingURL=deno-deploy-O73NBXIW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapters/deno-deploy.ts"],"sourcesContent":["/* eslint-disable security/detect-non-literal-fs-filename --\n * Deno Deploy adapter. Writes to `cwd/.theokit/deno-deploy/`. Build-time.\n */\nimport { mkdirSync, writeFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\n\nimport type { TheoConfig } from '../config/schema.js'\nimport { assertServicesUnsupported, readManifest } from '../services/index.js'\n\nimport { nodeAdapter } from './node.js'\nimport type { AdapterBuildContext, DeployAdapter } from './types.js'\n\nexport interface DenoBuildDeps {\n runNodeBuild?: (config: TheoConfig, cwd: string, ctx?: AdapterBuildContext) => Promise<void>\n writeEntry?: (path: string, content: string) => void\n ensureDir?: (path: string) => void\n}\n\nexport function renderDenoEntry(port: number): string {\n return [\n `// Generated by Theo — Deno Deploy Adapter`,\n `// Deploy: deployctl deploy --project=<name> .theokit/deno/server.ts`,\n `// Requires Deno >= 1.40 (Deno.serve + npm: specifier support)`,\n ``,\n `// Runtime guard`,\n `if (typeof Deno === 'undefined') {`,\n ` throw new Error('TheoDenoDeployAdapter must run inside Deno.')`,\n `}`,\n ``,\n `// Use npm: specifier so Deno resolves theokit from the user's package.json`,\n `// equivalent (works in both local 'deno run' and Deno Deploy).`,\n `import { scanServerRoutes, matchRoute, executeRoute, createProductionLoader, scanWebSocketRoutes } from 'npm:theokit/server'`,\n `import { createWebShim } from 'npm:theokit/adapters/web-shim'`,\n `// T3.3 — WS bridge for Deno runtime`,\n `import { createDenoWsBridge } from 'npm:theokit/adapters/ws-shim'`,\n ``,\n `const port = Number(Deno.env.get('PORT') ?? '${port}')`,\n `const cwd = Deno.cwd()`,\n `const serverDir = cwd + '/server'`,\n `let routesCache = null`,\n `let wsRoutesCache = null`,\n `let loaderCache = null`,\n ``,\n `function notFound() {`,\n ` return new Response(JSON.stringify({ error: { code: 'NOT_FOUND' } }), {`,\n ` status: 404,`,\n ` headers: { 'Content-Type': 'application/json' },`,\n ` })`,\n `}`,\n ``,\n `Deno.serve({ port }, async (request) => {`,\n ` const url = new URL(request.url)`,\n ``,\n ` // T3.3 — Detect WebSocket upgrade and delegate to the Deno bridge`,\n ` if (request.headers.get('upgrade')?.toLowerCase() === 'websocket') {`,\n ` if (!wsRoutesCache) wsRoutesCache = scanWebSocketRoutes(serverDir)`,\n ` if (wsRoutesCache.length === 0) return notFound()`,\n ` const denoWs = createDenoWsBridge({`,\n ` onOpen: () => {},`,\n ` onMessage: (ws, data) => { ws.send(data) },`,\n ` onClose: () => {},`,\n ` }, Deno)`,\n ` return denoWs.handle(request)`,\n ` }`,\n ``,\n ` if (!url.pathname.startsWith('/api/')) {`,\n ` // Static + SPA fallback are served by Deno Deploy's static asset handler.`,\n ` return notFound()`,\n ` }`,\n ``,\n ` if (!routesCache) routesCache = scanServerRoutes(serverDir)`,\n ` if (!loaderCache) loaderCache = createProductionLoader()`,\n ``,\n ` const match = matchRoute(url.pathname, routesCache)`,\n ` if (!match) return notFound()`,\n ``,\n ` const { req, res, toResponse } = createWebShim(request)`,\n ` const requestId = crypto.randomUUID()`,\n ` const method = request.method.toUpperCase()`,\n ` await executeRoute({ route: match.route, method, params: match.params, req, res, loadModule: loaderCache, serverDir, requestId })`,\n ` return toResponse()`,\n `})`,\n ``,\n `console.log('Theo (Deno Deploy) listening on :' + port)`,\n ].join('\\n')\n}\n\nexport async function buildDeno(\n config: TheoConfig,\n cwd: string,\n deps: DenoBuildDeps = {},\n ctx?: AdapterBuildContext,\n): Promise<void> {\n // Wave 2 (T2.2) — reject polyglot services on this adapter.\n assertServicesUnsupported('deno-deploy', readManifest(cwd))\n\n const runNodeBuild = deps.runNodeBuild ?? nodeAdapter.build.bind(nodeAdapter)\n await runNodeBuild(config, cwd, ctx)\n\n const outputDir = resolve(cwd, '.theokit/deno')\n const ensureDir = deps.ensureDir ?? ((p: string) => mkdirSync(p, { recursive: true }))\n ensureDir(outputDir)\n\n const entry = renderDenoEntry(config.port)\n const write =\n deps.writeEntry ??\n ((p, c) => {\n writeFileSync(p, c)\n })\n write(resolve(outputDir, 'server.ts'), entry)\n\n // eslint-disable-next-line no-console -- CLI build progress\n console.log('\\n ✓ Deno Deploy output → .theokit/deno/server.ts\\n')\n}\n\nexport const denoDeployAdapter: DeployAdapter = {\n name: 'deno-deploy',\n build(config, cwd, ctx) {\n return buildDeno(config, cwd, {}, ctx)\n },\n}\n"],"mappings":";;;;;;;;;;;;AAGA,SAAS,WAAW,qBAAqB;AACzC,SAAS,eAAe;AAcjB,SAAS,gBAAgB,MAAsB;AACpD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gDAAgD,IAAI;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEA,eAAsB,UACpB,QACA,KACA,OAAsB,CAAC,GACvB,KACe;AAEf,4BAA0B,eAAe,aAAa,GAAG,CAAC;AAE1D,QAAM,eAAe,KAAK,gBAAgB,YAAY,MAAM,KAAK,WAAW;AAC5E,QAAM,aAAa,QAAQ,KAAK,GAAG;AAEnC,QAAM,YAAY,QAAQ,KAAK,eAAe;AAC9C,QAAM,YAAY,KAAK,cAAc,CAAC,MAAc,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AACpF,YAAU,SAAS;AAEnB,QAAM,QAAQ,gBAAgB,OAAO,IAAI;AACzC,QAAM,QACJ,KAAK,eACJ,CAAC,GAAG,MAAM;AACT,kBAAc,GAAG,CAAC;AAAA,EACpB;AACF,QAAM,QAAQ,WAAW,WAAW,GAAG,KAAK;AAG5C,UAAQ,IAAI,gEAAsD;AACpE;AAEO,IAAM,oBAAmC;AAAA,EAC9C,MAAM;AAAA,EACN,MAAM,QAAQ,KAAK,KAAK;AACtB,WAAO,UAAU,QAAQ,KAAK,CAAC,GAAG,GAAG;AAAA,EACvC;AACF;","names":[]}
|
|
@@ -8,20 +8,20 @@ import {
|
|
|
8
8
|
} from "./chunk-HNBWZKIQ.js";
|
|
9
9
|
import {
|
|
10
10
|
theoPluginAsync
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-JD7AQNJS.js";
|
|
12
|
+
import "./chunk-S74FECKW.js";
|
|
13
13
|
import {
|
|
14
14
|
loadConfig,
|
|
15
15
|
loadEnv
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-DUKXQNM7.js";
|
|
17
|
+
import "./chunk-FGOX37NB.js";
|
|
18
18
|
import {
|
|
19
19
|
orchestrateDev
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-X32KQH5C.js";
|
|
21
21
|
import "./chunk-5ODOE6EF.js";
|
|
22
22
|
import "./chunk-CG563V5M.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-P2RS3WWY.js";
|
|
24
|
+
import "./chunk-UVHRD33F.js";
|
|
25
25
|
import "./chunk-KT3MWNZG.js";
|
|
26
26
|
|
|
27
27
|
// src/cli/commands/dev.ts
|
|
@@ -89,4 +89,4 @@ export {
|
|
|
89
89
|
devCommand,
|
|
90
90
|
startDevServer
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=dev-
|
|
92
|
+
//# sourceMappingURL=dev-ZU46C5AZ.js.map
|
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
} from "./chunk-WGHJD6I7.js";
|
|
7
7
|
import {
|
|
8
8
|
generateManifest
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-HDA6M7P4.js";
|
|
10
|
+
import "./chunk-P2RS3WWY.js";
|
|
11
|
+
import "./chunk-UVHRD33F.js";
|
|
12
12
|
import "./chunk-KT3MWNZG.js";
|
|
13
13
|
|
|
14
14
|
// src/vite-plugin/openapi-emit/dev-emit.ts
|
|
@@ -41,4 +41,4 @@ export {
|
|
|
41
41
|
_resetInFlightForTests,
|
|
42
42
|
reEmitOpenApi
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=dev-emit-
|
|
44
|
+
//# sourceMappingURL=dev-emit-66FCOS7V.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateManifest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GPF64ENM.js";
|
|
4
4
|
import "./chunk-OLPB36O2.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-P3SGM4NR.js";
|
|
6
6
|
import "./chunk-WSJKACWB.js";
|
|
7
7
|
import "./chunk-X2VVCJ4V.js";
|
|
8
8
|
import "./chunk-DGUM43GV.js";
|
|
@@ -284,4 +284,4 @@ export {
|
|
|
284
284
|
_resetInFlightForTests,
|
|
285
285
|
reEmitOpenApi
|
|
286
286
|
};
|
|
287
|
-
//# sourceMappingURL=dev-emit-
|
|
287
|
+
//# sourceMappingURL=dev-emit-JBVINGHU.js.map
|
package/dist/devtools/entry.js
CHANGED
|
@@ -447,7 +447,9 @@ function methodColor(method) {
|
|
|
447
447
|
}
|
|
448
448
|
|
|
449
449
|
// src/devtools/assets/logo-data.ts
|
|
450
|
-
var THEO_LOGO_BASE64 = "data:image/
|
|
450
|
+
var THEO_LOGO_BASE64 = "data:image/svg+xml," + encodeURIComponent(
|
|
451
|
+
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="8" fill="#6366f1"/><text x="16" y="22" font-family="system-ui,-apple-system,sans-serif" font-size="20" font-weight="700" fill="white" text-anchor="middle">T</text></svg>'
|
|
452
|
+
);
|
|
451
453
|
|
|
452
454
|
// src/devtools/components/TheoLogo.tsx
|
|
453
455
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -456,13 +458,12 @@ function TheoLogo({ size = 18 }) {
|
|
|
456
458
|
"img",
|
|
457
459
|
{
|
|
458
460
|
src: THEO_LOGO_BASE64,
|
|
459
|
-
alt: "
|
|
461
|
+
alt: "TheoKit",
|
|
460
462
|
width: size,
|
|
461
463
|
height: size,
|
|
462
464
|
style: {
|
|
463
465
|
display: "inline-block",
|
|
464
|
-
flexShrink: 0
|
|
465
|
-
imageRendering: "pixelated"
|
|
466
|
+
flexShrink: 0
|
|
466
467
|
}
|
|
467
468
|
}
|
|
468
469
|
);
|