devflare 1.0.0-next.1 → 1.0.0-next.10
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/LLM.md +775 -637
- package/R2.md +200 -0
- package/README.md +285 -514
- package/bin/devflare.js +8 -8
- package/dist/{account-rvrj687w.js → account-8psavtg6.js} +27 -4
- package/dist/bridge/miniflare.d.ts +6 -0
- package/dist/bridge/miniflare.d.ts.map +1 -1
- package/dist/bridge/proxy.d.ts +5 -6
- package/dist/bridge/proxy.d.ts.map +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/browser.d.ts +50 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/{build-mnf6v8gd.js → build-k36xrzvy.js} +26 -7
- package/dist/bundler/do-bundler.d.ts +7 -0
- package/dist/bundler/do-bundler.d.ts.map +1 -1
- package/dist/cli/commands/account.d.ts.map +1 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/config-path.d.ts +5 -0
- package/dist/cli/config-path.d.ts.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/package-metadata.d.ts +16 -0
- package/dist/cli/package-metadata.d.ts.map +1 -0
- package/dist/config/compiler.d.ts +7 -0
- package/dist/config/compiler.d.ts.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/schema.d.ts +2575 -1221
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/{deploy-nhceck39.js → deploy-dbvfq8vq.js} +33 -15
- package/dist/{dev-qnxet3j9.js → dev-rk8p6pse.js} +900 -234
- package/dist/dev-server/miniflare-log.d.ts +12 -0
- package/dist/dev-server/miniflare-log.d.ts.map +1 -0
- package/dist/dev-server/runtime-stdio.d.ts +8 -0
- package/dist/dev-server/runtime-stdio.d.ts.map +1 -0
- package/dist/dev-server/server.d.ts +2 -0
- package/dist/dev-server/server.d.ts.map +1 -1
- package/dist/dev-server/vite-utils.d.ts +37 -0
- package/dist/dev-server/vite-utils.d.ts.map +1 -0
- package/dist/{doctor-e8fy6fj5.js → doctor-06y8nxd4.js} +73 -50
- package/dist/{durable-object-t4kbb0yt.js → durable-object-yt8v1dyn.js} +1 -1
- package/dist/index-05fyzwne.js +195 -0
- package/dist/index-1p814k7s.js +227 -0
- package/dist/{index-hcex3rgh.js → index-1phx14av.js} +84 -7
- package/dist/{index-tk6ej9dj.js → index-2q3pmzrx.js} +12 -16
- package/dist/{index-pf5s73n9.js → index-59df49vn.js} +11 -281
- package/dist/index-5yxg30va.js +304 -0
- package/dist/index-62b3gt2g.js +12 -0
- package/dist/index-6h8xbs75.js +44 -0
- package/dist/{index-67qcae0f.js → index-6v3wjg1r.js} +16 -1
- package/dist/index-8gtqgb3q.js +529 -0
- package/dist/{index-gz1gndna.js → index-9wt9x09k.js} +42 -62
- package/dist/index-fef08w43.js +231 -0
- package/dist/{index-ep3445yc.js → index-jht2j546.js} +393 -170
- package/dist/index-k7r18na8.js +0 -0
- package/dist/{index-m2q41jwa.js → index-n932ytmq.js} +9 -1
- package/dist/index-pwgyy2q9.js +39 -0
- package/dist/{index-07q6yxyc.js → index-v8vvsn9x.js} +1 -0
- package/dist/index-vky23txa.js +70 -0
- package/dist/index-vs49yxn4.js +322 -0
- package/dist/{index-z14anrqp.js → index-wfbfz02q.js} +14 -15
- package/dist/index-ws68xvq2.js +311 -0
- package/dist/index-y1d8za14.js +196 -0
- package/dist/{init-f9mgmew3.js → init-na2atvz2.js} +42 -55
- package/dist/router/types.d.ts +24 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/runtime/context.d.ts +249 -8
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/exports.d.ts +50 -55
- package/dist/runtime/exports.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +8 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/middleware.d.ts +77 -60
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/runtime/router.d.ts +7 -0
- package/dist/runtime/router.d.ts.map +1 -0
- package/dist/runtime/validation.d.ts +1 -1
- package/dist/runtime/validation.d.ts.map +1 -1
- package/dist/src/browser.js +150 -0
- package/dist/src/cli/index.js +10 -0
- package/dist/{cloudflare → src/cloudflare}/index.js +3 -3
- package/dist/{decorators → src/decorators}/index.js +2 -2
- package/dist/src/index.js +132 -0
- package/dist/src/runtime/index.js +111 -0
- package/dist/{sveltekit → src/sveltekit}/index.js +14 -6
- package/dist/{test → src/test}/index.js +22 -13
- package/dist/{vite → src/vite}/index.js +128 -59
- package/dist/sveltekit/platform.d.ts.map +1 -1
- package/dist/test/bridge-context.d.ts +5 -2
- package/dist/test/bridge-context.d.ts.map +1 -1
- package/dist/test/cf.d.ts +25 -11
- package/dist/test/cf.d.ts.map +1 -1
- package/dist/test/email.d.ts +16 -7
- package/dist/test/email.d.ts.map +1 -1
- package/dist/test/queue.d.ts.map +1 -1
- package/dist/test/resolve-service-bindings.d.ts.map +1 -1
- package/dist/test/scheduled.d.ts.map +1 -1
- package/dist/test/simple-context.d.ts +1 -1
- package/dist/test/simple-context.d.ts.map +1 -1
- package/dist/test/tail.d.ts +2 -1
- package/dist/test/tail.d.ts.map +1 -1
- package/dist/test/worker.d.ts +6 -0
- package/dist/test/worker.d.ts.map +1 -1
- package/dist/transform/durable-object.d.ts.map +1 -1
- package/dist/transform/worker-entrypoint.d.ts.map +1 -1
- package/dist/{types-5nyrz1sz.js → types-x9q7t491.js} +30 -16
- package/dist/utils/entrypoint-discovery.d.ts +6 -3
- package/dist/utils/entrypoint-discovery.d.ts.map +1 -1
- package/dist/utils/send-email.d.ts +15 -0
- package/dist/utils/send-email.d.ts.map +1 -0
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/worker-entry/composed-worker.d.ts +13 -0
- package/dist/worker-entry/composed-worker.d.ts.map +1 -0
- package/dist/worker-entry/routes.d.ts +22 -0
- package/dist/worker-entry/routes.d.ts.map +1 -0
- package/dist/{worker-entrypoint-m9th0rg0.js → worker-entrypoint-c259fmfs.js} +1 -1
- package/package.json +21 -19
- package/dist/index.js +0 -298
- package/dist/runtime/index.js +0 -111
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface MiniflareCompatibilityLogger {
|
|
2
|
+
info(message: string): void;
|
|
3
|
+
}
|
|
4
|
+
interface MiniflareLogLike {
|
|
5
|
+
warn(message: string): void;
|
|
6
|
+
info(message: string): void;
|
|
7
|
+
}
|
|
8
|
+
type MiniflareLogConstructor = new (level?: number) => MiniflareLogLike;
|
|
9
|
+
export declare function formatCompatibilityDateFallbackNotice(message: string): string | null;
|
|
10
|
+
export declare function createCompatibilityAwareMiniflareLog<TBase extends MiniflareLogConstructor>(BaseLog: TBase, level: number, logger?: MiniflareCompatibilityLogger): InstanceType<TBase>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=miniflare-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miniflare-log.d.ts","sourceRoot":"","sources":["../../src/dev-server/miniflare-log.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,4BAA4B;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,UAAU,gBAAgB;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,KAAK,uBAAuB,GAAG,KAAK,KAAK,CAAC,EAAE,MAAM,KAAK,gBAAgB,CAAA;AASvE,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUpF;AAED,wBAAgB,oCAAoC,CAAC,KAAK,SAAS,uBAAuB,EACzF,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,4BAA4B,GACnC,YAAY,CAAC,KAAK,CAAC,CAsBrB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
export interface RuntimeStdioLogger {
|
|
3
|
+
log?(message: string): void;
|
|
4
|
+
info?(message: string): void;
|
|
5
|
+
error?(message: string): void;
|
|
6
|
+
}
|
|
7
|
+
export declare function createRuntimeStdioForwarder(logger?: RuntimeStdioLogger): (stdout: Readable, stderr: Readable) => void;
|
|
8
|
+
//# sourceMappingURL=runtime-stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-stdio.d.ts","sourceRoot":"","sources":["../../src/dev-server/runtime-stdio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,WAAW,kBAAkB;IAClC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAyBD,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,kBAAkB,gDAUtE"}
|
|
@@ -9,6 +9,8 @@ export interface DevServerOptions {
|
|
|
9
9
|
vitePort?: number;
|
|
10
10
|
/** Miniflare port for gateway (default: 8787) */
|
|
11
11
|
miniflarePort?: number;
|
|
12
|
+
/** Whether to start Vite for this package */
|
|
13
|
+
enableVite?: boolean;
|
|
12
14
|
/** Persist storage data */
|
|
13
15
|
persist?: boolean;
|
|
14
16
|
/** Logger instance */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dev-server/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dev-server/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,WAAW,CAAA;AAmB3D,MAAM,WAAW,gBAAgB;IAChC,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,sBAAsB;IACtB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,SAAS;IACzB,2BAA2B;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,0BAA0B;IAC1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,yCAAyC;IACzC,YAAY,IAAI,aAAa,GAAG,IAAI,CAAA;CACpC;AAmtBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA64BpE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const VITE_CONFIG_FILES: readonly ["vite.config.ts", "vite.config.js", "vite.config.mts", "vite.config.mjs", "vite.config.cts", "vite.config.cjs"];
|
|
2
|
+
export interface ViteProjectFileSystem {
|
|
3
|
+
access(path: string): Promise<void>;
|
|
4
|
+
readFile(path: string, encoding: BufferEncoding): Promise<string>;
|
|
5
|
+
}
|
|
6
|
+
export interface ViteProjectDetection {
|
|
7
|
+
viteConfigPath: string | null;
|
|
8
|
+
hasLocalViteDependency: boolean;
|
|
9
|
+
hasLocalCloudflareVitePluginDependency: boolean;
|
|
10
|
+
shouldStartVite: boolean;
|
|
11
|
+
wantsViteIntegration: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface SpawnedLikeProcess {
|
|
14
|
+
pid?: number;
|
|
15
|
+
stdout: NodeJS.ReadableStream | null;
|
|
16
|
+
stderr: NodeJS.ReadableStream | null;
|
|
17
|
+
readonly killed: boolean;
|
|
18
|
+
kill(signal?: NodeJS.Signals): boolean;
|
|
19
|
+
on(event: 'exit', handler: (code: number | null, signal: NodeJS.Signals | null) => void): SpawnedLikeProcess;
|
|
20
|
+
on(event: 'error', handler: (error: Error) => void): SpawnedLikeProcess;
|
|
21
|
+
}
|
|
22
|
+
export interface WaitForViteReadyOptions {
|
|
23
|
+
timeoutMs?: number;
|
|
24
|
+
onStdout?: (chunk: string | Buffer) => void;
|
|
25
|
+
onStderr?: (chunk: string | Buffer) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface StopProcessTreeOptions {
|
|
28
|
+
platform?: NodeJS.Platform;
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
runCommand?: (command: string, args: string[]) => Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare function detectViteProject(cwd: string, fs?: ViteProjectFileSystem): Promise<ViteProjectDetection>;
|
|
33
|
+
export declare function stripAnsi(value: string): string;
|
|
34
|
+
export declare function extractViteReadyUrl(output: string): string | null;
|
|
35
|
+
export declare function waitForViteReady(process: SpawnedLikeProcess, options?: WaitForViteReadyOptions): Promise<string | null>;
|
|
36
|
+
export declare function stopSpawnedProcessTree(process: Pick<SpawnedLikeProcess, 'pid' | 'kill' | 'killed' | 'on'>, options?: StopProcessTreeOptions): Promise<void>;
|
|
37
|
+
//# sourceMappingURL=vite-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-utils.d.ts","sourceRoot":"","sources":["../../src/dev-server/vite-utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,2HAOpB,CAAA;AAEV,MAAM,WAAW,qBAAqB;IACrC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,oBAAoB;IACpC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,sCAAsC,EAAE,OAAO,CAAA;IAC/C,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACtC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,kBAAkB,CAAA;IAC5G,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,kBAAkB,CAAA;CACvE;AAED,MAAM,WAAW,uBAAuB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;CAC3C;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D;AAwBD,wBAAsB,iBAAiB,CACtC,GAAG,EAAE,MAAM,EACX,EAAE,CAAC,EAAE,qBAAqB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAoC/B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBjE;AAED,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE,uBAA4B,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuDxB;AA2CD,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,EACnE,OAAO,GAAE,sBAA2B,GAClC,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -1,29 +1,41 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
detectViteProject
|
|
3
|
+
} from "./index-y1d8za14.js";
|
|
4
|
+
import {
|
|
5
|
+
formatSupportedConfigFilenames,
|
|
6
|
+
resolveConfigCandidatePath
|
|
7
|
+
} from "./index-pwgyy2q9.js";
|
|
5
8
|
import {
|
|
6
9
|
getDependencies
|
|
7
10
|
} from "./index-1xpj0m4r.js";
|
|
11
|
+
import {
|
|
12
|
+
loadConfig
|
|
13
|
+
} from "./index-1phx14av.js";
|
|
8
14
|
import"./index-37x76zdn.js";
|
|
9
15
|
|
|
10
16
|
// src/cli/commands/doctor.ts
|
|
11
|
-
import { resolve } from "pathe";
|
|
17
|
+
import { basename, dirname, relative, resolve } from "pathe";
|
|
12
18
|
async function runDoctorCommand(parsed, logger, options) {
|
|
13
19
|
const cwd = options.cwd || process.cwd();
|
|
20
|
+
const requestedConfigOption = parsed.options.config;
|
|
21
|
+
const requestedConfigPath = requestedConfigOption ? resolve(cwd, requestedConfigOption) : cwd;
|
|
14
22
|
const checks = [];
|
|
15
23
|
const { fs } = await getDependencies();
|
|
24
|
+
const viteProject = await detectViteProject(cwd, fs);
|
|
16
25
|
logger.info(`Running diagnostics...
|
|
17
26
|
`);
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
const configPath = await resolveConfigCandidatePath(requestedConfigPath);
|
|
28
|
+
if (configPath) {
|
|
20
29
|
checks.push({
|
|
21
30
|
name: "Config File",
|
|
22
31
|
status: "pass",
|
|
23
32
|
message: `Found: ${configPath}`
|
|
24
33
|
});
|
|
25
34
|
try {
|
|
26
|
-
const config = await loadConfig({
|
|
35
|
+
const config = requestedConfigOption ? await loadConfig({
|
|
36
|
+
cwd: dirname(configPath),
|
|
37
|
+
configFile: basename(configPath)
|
|
38
|
+
}) : await loadConfig({ cwd });
|
|
27
39
|
checks.push({
|
|
28
40
|
name: "Config Valid",
|
|
29
41
|
status: "pass",
|
|
@@ -36,11 +48,11 @@ async function runDoctorCommand(parsed, logger, options) {
|
|
|
36
48
|
message: error instanceof Error ? error.message : "Unknown error"
|
|
37
49
|
});
|
|
38
50
|
}
|
|
39
|
-
}
|
|
51
|
+
} else {
|
|
40
52
|
checks.push({
|
|
41
53
|
name: "Config File",
|
|
42
54
|
status: "fail",
|
|
43
|
-
message:
|
|
55
|
+
message: `${formatSupportedConfigFilenames()} not found. Run \`devflare init\` to create one.`
|
|
44
56
|
});
|
|
45
57
|
}
|
|
46
58
|
const packageJsonPath = resolve(cwd, "package.json");
|
|
@@ -67,63 +79,63 @@ async function runDoctorCommand(parsed, logger, options) {
|
|
|
67
79
|
message: "devflare not in dependencies"
|
|
68
80
|
});
|
|
69
81
|
}
|
|
70
|
-
|
|
82
|
+
} catch {
|
|
83
|
+
checks.push({
|
|
84
|
+
name: "package.json",
|
|
85
|
+
status: "fail",
|
|
86
|
+
message: "package.json not found"
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (viteProject.wantsViteIntegration) {
|
|
90
|
+
checks.push({
|
|
91
|
+
name: "Vite Integration",
|
|
92
|
+
status: "pass",
|
|
93
|
+
message: "Enabled for this package"
|
|
94
|
+
});
|
|
95
|
+
if (viteProject.hasLocalViteDependency) {
|
|
71
96
|
checks.push({
|
|
72
97
|
name: "vite dep",
|
|
73
98
|
status: "pass",
|
|
74
|
-
message:
|
|
99
|
+
message: "Found in package.json"
|
|
75
100
|
});
|
|
76
101
|
} else {
|
|
77
102
|
checks.push({
|
|
78
103
|
name: "vite dep",
|
|
79
|
-
status: "
|
|
80
|
-
message: "
|
|
104
|
+
status: "warn",
|
|
105
|
+
message: "Not declared in this package.json (workspace-hoisted installs may still work)"
|
|
81
106
|
});
|
|
82
107
|
}
|
|
83
|
-
if (
|
|
108
|
+
if (viteProject.hasLocalCloudflareVitePluginDependency) {
|
|
84
109
|
checks.push({
|
|
85
110
|
name: "@cloudflare/vite-plugin",
|
|
86
111
|
status: "pass",
|
|
87
|
-
message:
|
|
112
|
+
message: "Found in package.json"
|
|
88
113
|
});
|
|
89
114
|
} else {
|
|
90
115
|
checks.push({
|
|
91
116
|
name: "@cloudflare/vite-plugin",
|
|
92
|
-
status: "
|
|
93
|
-
message: "
|
|
117
|
+
status: "warn",
|
|
118
|
+
message: "Not declared in this package.json"
|
|
94
119
|
});
|
|
95
120
|
}
|
|
96
|
-
|
|
97
|
-
checks.push({
|
|
98
|
-
name: "package.json",
|
|
99
|
-
status: "fail",
|
|
100
|
-
message: "package.json not found"
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
const viteConfigPaths = [
|
|
104
|
-
"vite.config.ts",
|
|
105
|
-
"vite.config.js",
|
|
106
|
-
"vite.config.mts",
|
|
107
|
-
"vite.config.mjs"
|
|
108
|
-
];
|
|
109
|
-
let viteConfigFound = false;
|
|
110
|
-
for (const configName of viteConfigPaths) {
|
|
111
|
-
try {
|
|
112
|
-
await fs.access(resolve(cwd, configName));
|
|
113
|
-
viteConfigFound = true;
|
|
121
|
+
if (viteProject.viteConfigPath) {
|
|
114
122
|
checks.push({
|
|
115
123
|
name: "Vite Config",
|
|
116
124
|
status: "pass",
|
|
117
|
-
message: `Found: ${
|
|
125
|
+
message: `Found: ${viteProject.viteConfigPath}`
|
|
118
126
|
});
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
127
|
+
} else {
|
|
128
|
+
checks.push({
|
|
129
|
+
name: "Vite Config",
|
|
130
|
+
status: "warn",
|
|
131
|
+
message: "No vite.config found. Create one with @cloudflare/vite-plugin"
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
} else {
|
|
123
135
|
checks.push({
|
|
124
|
-
name: "Vite
|
|
125
|
-
status: "
|
|
126
|
-
message: "
|
|
136
|
+
name: "Vite Integration",
|
|
137
|
+
status: "pass",
|
|
138
|
+
message: "Not enabled for this package (worker-only mode)"
|
|
127
139
|
});
|
|
128
140
|
}
|
|
129
141
|
try {
|
|
@@ -141,18 +153,29 @@ async function runDoctorCommand(parsed, logger, options) {
|
|
|
141
153
|
});
|
|
142
154
|
}
|
|
143
155
|
try {
|
|
144
|
-
|
|
156
|
+
const projectWranglerPath = resolve(cwd, "wrangler.jsonc");
|
|
157
|
+
await fs.access(projectWranglerPath);
|
|
145
158
|
checks.push({
|
|
146
159
|
name: "wrangler.jsonc",
|
|
147
160
|
status: "pass",
|
|
148
|
-
message:
|
|
161
|
+
message: `Found: ${relative(cwd, projectWranglerPath) || "wrangler.jsonc"}`
|
|
149
162
|
});
|
|
150
163
|
} catch {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
164
|
+
try {
|
|
165
|
+
const viteWranglerPath = resolve(cwd, ".devflare", "wrangler.jsonc");
|
|
166
|
+
await fs.access(viteWranglerPath);
|
|
167
|
+
checks.push({
|
|
168
|
+
name: "wrangler.jsonc",
|
|
169
|
+
status: "pass",
|
|
170
|
+
message: `Found: ${relative(cwd, viteWranglerPath)} (Vite-generated)`
|
|
171
|
+
});
|
|
172
|
+
} catch {
|
|
173
|
+
checks.push({
|
|
174
|
+
name: "wrangler.jsonc",
|
|
175
|
+
status: "warn",
|
|
176
|
+
message: "Not found. Run `devflare build` or `devflare deploy` to generate `wrangler.jsonc`, or use `devflare/vite` to populate `.devflare/wrangler.jsonc`."
|
|
177
|
+
});
|
|
178
|
+
}
|
|
156
179
|
}
|
|
157
180
|
let hasFailures = false;
|
|
158
181
|
let hasWarnings = false;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getPackageVersion
|
|
3
|
+
} from "./index-6h8xbs75.js";
|
|
4
|
+
import {
|
|
5
|
+
__require
|
|
6
|
+
} from "./index-37x76zdn.js";
|
|
7
|
+
|
|
8
|
+
// src/cli/index.ts
|
|
9
|
+
import { createConsola } from "consola";
|
|
10
|
+
var COMMANDS = ["init", "dev", "build", "deploy", "types", "doctor", "account", "ai", "remote", "help", "version"];
|
|
11
|
+
function parseArgs(argv) {
|
|
12
|
+
const args = [];
|
|
13
|
+
const options = {};
|
|
14
|
+
let command = "help";
|
|
15
|
+
let unknownCommand;
|
|
16
|
+
let i = 0;
|
|
17
|
+
while (i < argv.length) {
|
|
18
|
+
const arg = argv[i];
|
|
19
|
+
if (arg === "--help" || arg === "-h") {
|
|
20
|
+
return { command: "help", args: [], options: {} };
|
|
21
|
+
}
|
|
22
|
+
if (arg === "--version" || arg === "-v") {
|
|
23
|
+
return { command: "version", args: [], options: {} };
|
|
24
|
+
}
|
|
25
|
+
if (arg.startsWith("-") && !/^-\d/.test(arg)) {
|
|
26
|
+
const isLongFlag = arg.startsWith("--");
|
|
27
|
+
const key = isLongFlag ? arg.slice(2) : arg.slice(1);
|
|
28
|
+
const nextArg = argv[i + 1];
|
|
29
|
+
if (nextArg && !nextArg.startsWith("-")) {
|
|
30
|
+
options[key] = nextArg;
|
|
31
|
+
i += 2;
|
|
32
|
+
} else {
|
|
33
|
+
options[key] = true;
|
|
34
|
+
i++;
|
|
35
|
+
}
|
|
36
|
+
} else if (!command || command === "help") {
|
|
37
|
+
if (COMMANDS.includes(arg)) {
|
|
38
|
+
command = arg;
|
|
39
|
+
} else {
|
|
40
|
+
command = "help";
|
|
41
|
+
unknownCommand = arg;
|
|
42
|
+
}
|
|
43
|
+
i++;
|
|
44
|
+
} else {
|
|
45
|
+
args.push(arg);
|
|
46
|
+
i++;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return { command, args, options, unknownCommand };
|
|
50
|
+
}
|
|
51
|
+
function getHelpText() {
|
|
52
|
+
return `
|
|
53
|
+
devflare - Config compiler + CLI orchestrator for Cloudflare Workers
|
|
54
|
+
|
|
55
|
+
Usage:
|
|
56
|
+
devflare <command> [options]
|
|
57
|
+
|
|
58
|
+
Commands:
|
|
59
|
+
init [name] Create a new devflare project
|
|
60
|
+
dev Start the development server
|
|
61
|
+
build Build for production
|
|
62
|
+
deploy Deploy to Cloudflare
|
|
63
|
+
types Generate TypeScript types
|
|
64
|
+
doctor Check project configuration
|
|
65
|
+
account View Cloudflare account info
|
|
66
|
+
ai View AI models and pricing
|
|
67
|
+
remote Manage remote test mode (AI, Vectorize)
|
|
68
|
+
help Show command overview
|
|
69
|
+
version Show the installed devflare version
|
|
70
|
+
|
|
71
|
+
Common Options:
|
|
72
|
+
--config <path> Used by dev, build, deploy, types, and doctor
|
|
73
|
+
--debug Enable debug output for supported commands
|
|
74
|
+
-h, --help Show help
|
|
75
|
+
-v, --version Show version
|
|
76
|
+
|
|
77
|
+
Dev Options:
|
|
78
|
+
--port <port> Preferred Vite dev server port (default: 5173)
|
|
79
|
+
--persist Persist Miniflare storage data
|
|
80
|
+
--verbose Enable verbose logging
|
|
81
|
+
--log Log all output to a timestamped .log-* file and the terminal
|
|
82
|
+
--log-temp Log all output to .log (overwritten) and the terminal
|
|
83
|
+
|
|
84
|
+
Build / Deploy:
|
|
85
|
+
build --env <name> Use config.env[name]
|
|
86
|
+
deploy --env <name> Use config.env[name]
|
|
87
|
+
deploy --dry-run Print the generated Wrangler config without deploying
|
|
88
|
+
|
|
89
|
+
Types / Doctor:
|
|
90
|
+
types --output <path> Write generated types to a custom path
|
|
91
|
+
doctor --config <path> Check a specific devflare config file
|
|
92
|
+
|
|
93
|
+
Account / Remote:
|
|
94
|
+
account --account <id> Use a specific Cloudflare account
|
|
95
|
+
remote status Show current remote-mode status
|
|
96
|
+
remote enable [minutes] Enable remote mode (default: 30 minutes)
|
|
97
|
+
remote disable Disable remote mode
|
|
98
|
+
|
|
99
|
+
Notes:
|
|
100
|
+
• Worker-only mode is the default when the current package has no local vite.config.*
|
|
101
|
+
• Vite is started only when the current package provides a local vite.config.*
|
|
102
|
+
• Higher-level build flows currently synthesize a composed worker entry when worker surfaces are discovered
|
|
103
|
+
|
|
104
|
+
Examples:
|
|
105
|
+
devflare init my-app
|
|
106
|
+
devflare dev # Start worker-only or unified dev server
|
|
107
|
+
devflare dev --port 3000 # Custom Vite port when Vite is enabled
|
|
108
|
+
devflare dev --persist # Persist storage between restarts
|
|
109
|
+
devflare dev --log-temp # Log output to .log file
|
|
110
|
+
devflare build
|
|
111
|
+
devflare deploy --env production
|
|
112
|
+
`.trim();
|
|
113
|
+
}
|
|
114
|
+
async function runCli(argv, options = {}) {
|
|
115
|
+
const logger = createConsola({
|
|
116
|
+
level: options.silent ? -999 : 3,
|
|
117
|
+
formatOptions: {
|
|
118
|
+
date: false
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
const parsed = parseArgs(argv);
|
|
122
|
+
if (parsed.unknownCommand) {
|
|
123
|
+
logger.error(`Unknown command: ${parsed.unknownCommand}`);
|
|
124
|
+
logger.info("Run `devflare --help` for available commands");
|
|
125
|
+
return { exitCode: 1 };
|
|
126
|
+
}
|
|
127
|
+
switch (parsed.command) {
|
|
128
|
+
case "help":
|
|
129
|
+
logger.info(getHelpText());
|
|
130
|
+
return { exitCode: 0, output: getHelpText() };
|
|
131
|
+
case "version":
|
|
132
|
+
const version = await getPackageVersion();
|
|
133
|
+
logger.info(`devflare v${version}`);
|
|
134
|
+
return { exitCode: 0, output: version };
|
|
135
|
+
case "init":
|
|
136
|
+
return runInit(parsed, logger, options);
|
|
137
|
+
case "dev":
|
|
138
|
+
return runDev(parsed, logger, options);
|
|
139
|
+
case "build":
|
|
140
|
+
return runBuild(parsed, logger, options);
|
|
141
|
+
case "deploy":
|
|
142
|
+
return runDeploy(parsed, logger, options);
|
|
143
|
+
case "types":
|
|
144
|
+
return runTypes(parsed, logger, options);
|
|
145
|
+
case "doctor":
|
|
146
|
+
return runDoctor(parsed, logger, options);
|
|
147
|
+
case "account":
|
|
148
|
+
return runAccount(parsed, logger, options);
|
|
149
|
+
case "ai":
|
|
150
|
+
return runAI();
|
|
151
|
+
case "remote":
|
|
152
|
+
return runRemote(parsed, logger, options);
|
|
153
|
+
default:
|
|
154
|
+
logger.error(`Unknown command: ${parsed.command}`);
|
|
155
|
+
return { exitCode: 1 };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async function runInit(parsed, logger, options) {
|
|
159
|
+
const { runInitCommand } = await import("./init-na2atvz2.js");
|
|
160
|
+
return runInitCommand(parsed, logger, options);
|
|
161
|
+
}
|
|
162
|
+
async function runDev(parsed, logger, options) {
|
|
163
|
+
const { runDevCommand } = await import("./dev-rk8p6pse.js");
|
|
164
|
+
return runDevCommand(parsed, logger, options);
|
|
165
|
+
}
|
|
166
|
+
async function runBuild(parsed, logger, options) {
|
|
167
|
+
const { runBuildCommand } = await import("./build-k36xrzvy.js");
|
|
168
|
+
return runBuildCommand(parsed, logger, options);
|
|
169
|
+
}
|
|
170
|
+
async function runDeploy(parsed, logger, options) {
|
|
171
|
+
const { runDeployCommand } = await import("./deploy-dbvfq8vq.js");
|
|
172
|
+
return runDeployCommand(parsed, logger, options);
|
|
173
|
+
}
|
|
174
|
+
async function runTypes(parsed, logger, options) {
|
|
175
|
+
const { runTypesCommand } = await import("./types-x9q7t491.js");
|
|
176
|
+
return runTypesCommand(parsed, logger, options);
|
|
177
|
+
}
|
|
178
|
+
async function runDoctor(parsed, logger, options) {
|
|
179
|
+
const { runDoctorCommand } = await import("./doctor-06y8nxd4.js");
|
|
180
|
+
return runDoctorCommand(parsed, logger, options);
|
|
181
|
+
}
|
|
182
|
+
async function runAccount(parsed, logger, options) {
|
|
183
|
+
const { runAccountCommand } = await import("./account-8psavtg6.js");
|
|
184
|
+
return runAccountCommand(parsed, logger, options);
|
|
185
|
+
}
|
|
186
|
+
async function runAI() {
|
|
187
|
+
const { runAICommand } = await import("./ai-dx4fr9jh.js");
|
|
188
|
+
return runAICommand();
|
|
189
|
+
}
|
|
190
|
+
async function runRemote(parsed, logger, options) {
|
|
191
|
+
const { runRemoteCommand } = await import("./remote-q59qk463.js");
|
|
192
|
+
return runRemoteCommand(parsed, logger, options);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export { parseArgs, runCli };
|