devflare 0.0.0 → 1.0.0-next.0
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/README.md +737 -1
- package/bin/devflare.js +14 -0
- package/dist/account-rvrj687w.js +397 -0
- package/dist/ai-dx4fr9jh.js +107 -0
- package/dist/bridge/client.d.ts +82 -0
- package/dist/bridge/client.d.ts.map +1 -0
- package/dist/bridge/index.d.ts +7 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/miniflare.d.ts +70 -0
- package/dist/bridge/miniflare.d.ts.map +1 -0
- package/dist/bridge/protocol.d.ts +146 -0
- package/dist/bridge/protocol.d.ts.map +1 -0
- package/dist/bridge/proxy.d.ts +49 -0
- package/dist/bridge/proxy.d.ts.map +1 -0
- package/dist/bridge/serialization.d.ts +83 -0
- package/dist/bridge/serialization.d.ts.map +1 -0
- package/dist/bridge/server.d.ts +8 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/browser-shim/binding-worker.d.ts +7 -0
- package/dist/browser-shim/binding-worker.d.ts.map +1 -0
- package/dist/browser-shim/handler.d.ts +21 -0
- package/dist/browser-shim/handler.d.ts.map +1 -0
- package/dist/browser-shim/index.d.ts +3 -0
- package/dist/browser-shim/index.d.ts.map +1 -0
- package/dist/browser-shim/server.d.ts +25 -0
- package/dist/browser-shim/server.d.ts.map +1 -0
- package/dist/browser-shim/worker.d.ts +14 -0
- package/dist/browser-shim/worker.d.ts.map +1 -0
- package/dist/build-mnf6v8gd.js +53 -0
- package/dist/bundler/do-bundler.d.ts +42 -0
- package/dist/bundler/do-bundler.d.ts.map +1 -0
- package/dist/bundler/index.d.ts +2 -0
- package/dist/bundler/index.d.ts.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/colors.d.ts +11 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/commands/account.d.ts +4 -0
- package/dist/cli/commands/account.d.ts.map +1 -0
- package/dist/cli/commands/ai.d.ts +3 -0
- package/dist/cli/commands/ai.d.ts.map +1 -0
- package/dist/cli/commands/build.d.ts +4 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/deploy.d.ts +4 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/dev.d.ts +4 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/doctor.d.ts +4 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/remote.d.ts +4 -0
- package/dist/cli/commands/remote.d.ts.map +1 -0
- package/dist/cli/commands/types.d.ts +4 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/dependencies.d.ts +90 -0
- package/dist/cli/dependencies.d.ts.map +1 -0
- package/dist/cli/index.d.ts +23 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/wrangler-auth.d.ts +36 -0
- package/dist/cli/wrangler-auth.d.ts.map +1 -0
- package/dist/cloudflare/account.d.ts +65 -0
- package/dist/cloudflare/account.d.ts.map +1 -0
- package/dist/cloudflare/api.d.ts +51 -0
- package/dist/cloudflare/api.d.ts.map +1 -0
- package/dist/cloudflare/auth.d.ts +35 -0
- package/dist/cloudflare/auth.d.ts.map +1 -0
- package/dist/cloudflare/index.d.ts +107 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +13 -0
- package/dist/cloudflare/preferences.d.ts +46 -0
- package/dist/cloudflare/preferences.d.ts.map +1 -0
- package/dist/cloudflare/pricing.d.ts +15 -0
- package/dist/cloudflare/pricing.d.ts.map +1 -0
- package/dist/cloudflare/remote-config.d.ts +37 -0
- package/dist/cloudflare/remote-config.d.ts.map +1 -0
- package/dist/cloudflare/types.d.ts +161 -0
- package/dist/cloudflare/types.d.ts.map +1 -0
- package/dist/cloudflare/usage.d.ts +77 -0
- package/dist/cloudflare/usage.d.ts.map +1 -0
- package/dist/config/compiler.d.ts +146 -0
- package/dist/config/compiler.d.ts.map +1 -0
- package/dist/config/define.d.ts +44 -0
- package/dist/config/define.d.ts.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/loader.d.ts +52 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/ref.d.ts +160 -0
- package/dist/config/ref.d.ts.map +1 -0
- package/dist/config/schema.d.ts +3318 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/decorators/durable-object.d.ts +59 -0
- package/dist/decorators/durable-object.d.ts.map +1 -0
- package/dist/decorators/index.d.ts +3 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +9 -0
- package/dist/deploy-nhceck39.js +70 -0
- package/dist/dev-qnxet3j9.js +2096 -0
- package/dist/dev-server/index.d.ts +2 -0
- package/dist/dev-server/index.d.ts.map +1 -0
- package/dist/dev-server/server.d.ts +30 -0
- package/dist/dev-server/server.d.ts.map +1 -0
- package/dist/doctor-e8fy6fj5.js +186 -0
- package/dist/durable-object-t4kbb0yt.js +13 -0
- package/dist/env.d.ts +48 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/index-07q6yxyc.js +168 -0
- package/dist/index-1xpj0m4r.js +57 -0
- package/dist/index-37x76zdn.js +4 -0
- package/dist/index-3t6rypgc.js +13 -0
- package/dist/index-67qcae0f.js +183 -0
- package/dist/index-a855bdsx.js +18 -0
- package/dist/index-d8bdkx2h.js +109 -0
- package/dist/index-ep3445yc.js +2225 -0
- package/dist/index-gz1gndna.js +307 -0
- package/dist/index-hcex3rgh.js +266 -0
- package/dist/index-m2q41jwa.js +462 -0
- package/dist/index-n7rs26ft.js +77 -0
- package/dist/index-pf5s73n9.js +1413 -0
- package/dist/index-rbht7m9r.js +36 -0
- package/dist/index-tfyxa77h.js +850 -0
- package/dist/index-tk6ej9dj.js +94 -0
- package/dist/index-z14anrqp.js +226 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +298 -0
- package/dist/init-f9mgmew3.js +186 -0
- package/dist/remote-q59qk463.js +97 -0
- package/dist/runtime/context.d.ts +46 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/exports.d.ts +118 -0
- package/dist/runtime/exports.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +111 -0
- package/dist/runtime/middleware.d.ts +82 -0
- package/dist/runtime/middleware.d.ts.map +1 -0
- package/dist/runtime/validation.d.ts +37 -0
- package/dist/runtime/validation.d.ts.map +1 -0
- package/dist/sveltekit/index.d.ts +2 -0
- package/dist/sveltekit/index.d.ts.map +1 -0
- package/dist/sveltekit/index.js +182 -0
- package/dist/sveltekit/platform.d.ts +141 -0
- package/dist/sveltekit/platform.d.ts.map +1 -0
- package/dist/test/bridge-context.d.ts +73 -0
- package/dist/test/bridge-context.d.ts.map +1 -0
- package/dist/test/cf.d.ts +130 -0
- package/dist/test/cf.d.ts.map +1 -0
- package/dist/test/email.d.ts +75 -0
- package/dist/test/email.d.ts.map +1 -0
- package/dist/test/index.d.ts +22 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +71 -0
- package/dist/test/multi-worker-context.d.ts +114 -0
- package/dist/test/multi-worker-context.d.ts.map +1 -0
- package/dist/test/queue.d.ts +74 -0
- package/dist/test/queue.d.ts.map +1 -0
- package/dist/test/remote-ai.d.ts +6 -0
- package/dist/test/remote-ai.d.ts.map +1 -0
- package/dist/test/remote-vectorize.d.ts +6 -0
- package/dist/test/remote-vectorize.d.ts.map +1 -0
- package/dist/test/resolve-service-bindings.d.ts +68 -0
- package/dist/test/resolve-service-bindings.d.ts.map +1 -0
- package/dist/test/scheduled.d.ts +58 -0
- package/dist/test/scheduled.d.ts.map +1 -0
- package/dist/test/should-skip.d.ts +50 -0
- package/dist/test/should-skip.d.ts.map +1 -0
- package/dist/test/simple-context.d.ts +43 -0
- package/dist/test/simple-context.d.ts.map +1 -0
- package/dist/test/tail.d.ts +86 -0
- package/dist/test/tail.d.ts.map +1 -0
- package/dist/test/utilities.d.ts +99 -0
- package/dist/test/utilities.d.ts.map +1 -0
- package/dist/test/worker.d.ts +76 -0
- package/dist/test/worker.d.ts.map +1 -0
- package/dist/transform/durable-object.d.ts +46 -0
- package/dist/transform/durable-object.d.ts.map +1 -0
- package/dist/transform/index.d.ts +3 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/worker-entrypoint.d.ts +66 -0
- package/dist/transform/worker-entrypoint.d.ts.map +1 -0
- package/dist/types-5nyrz1sz.js +454 -0
- package/dist/utils/entrypoint-discovery.d.ts +29 -0
- package/dist/utils/entrypoint-discovery.d.ts.map +1 -0
- package/dist/utils/glob.d.ts +33 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/resolve-package.d.ts +10 -0
- package/dist/utils/resolve-package.d.ts.map +1 -0
- package/dist/vite/index.d.ts +3 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +339 -0
- package/dist/vite/plugin.d.ts +138 -0
- package/dist/vite/plugin.d.ts.map +1 -0
- package/dist/worker-entrypoint-m9th0rg0.js +13 -0
- package/dist/workerName.d.ts +17 -0
- package/dist/workerName.d.ts.map +1 -0
- package/package.json +111 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { createTestContext, env, type DevflareEnv, type TestEnv } from './simple-context';
|
|
2
|
+
export { cf } from './cf';
|
|
3
|
+
export { email } from './email';
|
|
4
|
+
export { queue } from './queue';
|
|
5
|
+
export { scheduled } from './scheduled';
|
|
6
|
+
export { worker } from './worker';
|
|
7
|
+
export { tail } from './tail';
|
|
8
|
+
export type { EmailSendOptions, ReceivedEmail, EmailReceiveCallback } from './email';
|
|
9
|
+
export type { QueueMessageOptions, QueueTriggerResult } from './queue';
|
|
10
|
+
export type { ScheduledTriggerOptions, ScheduledTriggerResult } from './scheduled';
|
|
11
|
+
export type { WorkerFetchOptions } from './worker';
|
|
12
|
+
export type { TraceItemOptions, TailTriggerResult } from './tail';
|
|
13
|
+
export { hasServiceBindings, resolveServiceBindings, hasCrossWorkerDOs, resolveDOBindings, clearBundleCache, type ResolvedWorker, type ServiceBindingResolution, type DOBindingResolution } from './resolve-service-bindings';
|
|
14
|
+
export {
|
|
15
|
+
/** @deprecated Use createTestContext() instead */
|
|
16
|
+
createMultiWorkerContext,
|
|
17
|
+
/** @deprecated Use worker.ts pattern instead */
|
|
18
|
+
createEntrypointScript, type WorkerConfig, type MultiWorkerContextOptions, type MultiWorkerContext } from './multi-worker-context';
|
|
19
|
+
export { shouldSkip, isRemoteModeEnabled } from './should-skip';
|
|
20
|
+
export { createMockTestContext, createMockKV, createMockD1, createMockR2, createMockQueue, createMockEnv, withTestContext, type TestContext, type TestContextOptions, type MockEnvOptions } from './utilities';
|
|
21
|
+
export { createBridgeTestContext, stopBridgeTestContext, getBridgeTestContext, testEnv, type BridgeTestContext, type BridgeTestContextOptions } from './bridge-context';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,iBAAiB,EACjB,GAAG,EACH,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAG7B,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AACpF,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACtE,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAClF,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAClD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAGjE,OAAO,EACN,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,MAAM,4BAA4B,CAAA;AAInC,OAAO;AACN,kDAAkD;AAClD,wBAAwB;AACxB,gDAAgD;AAChD,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAG/D,OAAO,EACN,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACN,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cf,
|
|
3
|
+
clearBundleCache,
|
|
4
|
+
createBridgeTestContext,
|
|
5
|
+
createEntrypointScript,
|
|
6
|
+
createMockD1,
|
|
7
|
+
createMockEnv,
|
|
8
|
+
createMockKV,
|
|
9
|
+
createMockQueue,
|
|
10
|
+
createMockR2,
|
|
11
|
+
createMockTestContext,
|
|
12
|
+
createMultiWorkerContext,
|
|
13
|
+
createTestContext,
|
|
14
|
+
email,
|
|
15
|
+
env,
|
|
16
|
+
getBridgeTestContext,
|
|
17
|
+
hasCrossWorkerDOs,
|
|
18
|
+
hasServiceBindings,
|
|
19
|
+
isRemoteModeEnabled,
|
|
20
|
+
queue,
|
|
21
|
+
resolveDOBindings,
|
|
22
|
+
resolveServiceBindings,
|
|
23
|
+
scheduled,
|
|
24
|
+
shouldSkip,
|
|
25
|
+
stopBridgeTestContext,
|
|
26
|
+
tail,
|
|
27
|
+
testEnv,
|
|
28
|
+
withTestContext,
|
|
29
|
+
worker
|
|
30
|
+
} from "../index-ep3445yc.js";
|
|
31
|
+
import"../index-z14anrqp.js";
|
|
32
|
+
import"../index-tk6ej9dj.js";
|
|
33
|
+
import"../index-d8bdkx2h.js";
|
|
34
|
+
import"../index-rbht7m9r.js";
|
|
35
|
+
import"../index-gz1gndna.js";
|
|
36
|
+
import"../index-pf5s73n9.js";
|
|
37
|
+
import"../index-07q6yxyc.js";
|
|
38
|
+
import"../index-67qcae0f.js";
|
|
39
|
+
import"../index-hcex3rgh.js";
|
|
40
|
+
import"../index-tfyxa77h.js";
|
|
41
|
+
import"../index-37x76zdn.js";
|
|
42
|
+
export {
|
|
43
|
+
worker,
|
|
44
|
+
withTestContext,
|
|
45
|
+
testEnv,
|
|
46
|
+
tail,
|
|
47
|
+
stopBridgeTestContext,
|
|
48
|
+
shouldSkip,
|
|
49
|
+
scheduled,
|
|
50
|
+
resolveServiceBindings,
|
|
51
|
+
resolveDOBindings,
|
|
52
|
+
queue,
|
|
53
|
+
isRemoteModeEnabled,
|
|
54
|
+
hasServiceBindings,
|
|
55
|
+
hasCrossWorkerDOs,
|
|
56
|
+
getBridgeTestContext,
|
|
57
|
+
env,
|
|
58
|
+
email,
|
|
59
|
+
createTestContext,
|
|
60
|
+
createMultiWorkerContext,
|
|
61
|
+
createMockTestContext,
|
|
62
|
+
createMockR2,
|
|
63
|
+
createMockQueue,
|
|
64
|
+
createMockKV,
|
|
65
|
+
createMockEnv,
|
|
66
|
+
createMockD1,
|
|
67
|
+
createEntrypointScript,
|
|
68
|
+
createBridgeTestContext,
|
|
69
|
+
clearBundleCache,
|
|
70
|
+
cf
|
|
71
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { Miniflare } from 'miniflare';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for a worker in a multi-worker test
|
|
4
|
+
*/
|
|
5
|
+
export interface WorkerConfig {
|
|
6
|
+
/** Worker name (used for service binding references) */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Worker script code as string */
|
|
9
|
+
script: string;
|
|
10
|
+
/** Whether the script uses ES modules (default: true) */
|
|
11
|
+
modules?: boolean;
|
|
12
|
+
/** Compatibility date (default: '2025-01-01') */
|
|
13
|
+
compatibilityDate?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Service bindings to other workers
|
|
16
|
+
* Key: binding name, Value: worker name or { name, entrypoint }
|
|
17
|
+
*/
|
|
18
|
+
serviceBindings?: Record<string, string | {
|
|
19
|
+
name: string;
|
|
20
|
+
entrypoint: string;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Options for creating a multi-worker test context
|
|
25
|
+
*/
|
|
26
|
+
export interface MultiWorkerContextOptions {
|
|
27
|
+
/** Array of worker configurations */
|
|
28
|
+
workers: WorkerConfig[];
|
|
29
|
+
/**
|
|
30
|
+
* Name of the primary worker (receives HTTP requests)
|
|
31
|
+
* Defaults to first worker in the array
|
|
32
|
+
*/
|
|
33
|
+
primary?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Result of creating a multi-worker test context
|
|
37
|
+
*/
|
|
38
|
+
export interface MultiWorkerContext<TEnv = Record<string, unknown>> {
|
|
39
|
+
/** Miniflare instance */
|
|
40
|
+
mf: Miniflare;
|
|
41
|
+
/** Environment bindings from the primary worker */
|
|
42
|
+
env: TEnv;
|
|
43
|
+
/** Dispatch a fetch request to the primary worker */
|
|
44
|
+
fetch: (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
45
|
+
/** Dispose of the context (cleanup) */
|
|
46
|
+
dispose: () => Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated Use `createTestContext()` instead. It now automatically detects service bindings
|
|
50
|
+
* from `ref()` metadata in your devflare.config.ts and sets up multi-worker Miniflare.
|
|
51
|
+
*
|
|
52
|
+
* Create a multi-worker test context for testing RPC between workers.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const gatewayScript = `
|
|
57
|
+
* export default {
|
|
58
|
+
* async fetch(request, env) {
|
|
59
|
+
* const sum = await env.MATH.add(1, 2)
|
|
60
|
+
* return Response.json({ sum })
|
|
61
|
+
* }
|
|
62
|
+
* }
|
|
63
|
+
* `
|
|
64
|
+
*
|
|
65
|
+
* const mathScript = `
|
|
66
|
+
* import { WorkerEntrypoint } from 'cloudflare:workers'
|
|
67
|
+
* export class MathService extends WorkerEntrypoint {
|
|
68
|
+
* add(a, b) { return a + b }
|
|
69
|
+
* }
|
|
70
|
+
* `
|
|
71
|
+
*
|
|
72
|
+
* const ctx = await createMultiWorkerContext({
|
|
73
|
+
* workers: [
|
|
74
|
+
* { name: 'gateway', script: gatewayScript, serviceBindings: { MATH: { name: 'math', entrypoint: 'MathService' } } },
|
|
75
|
+
* { name: 'math', script: mathScript }
|
|
76
|
+
* ],
|
|
77
|
+
* primary: 'gateway'
|
|
78
|
+
* })
|
|
79
|
+
*
|
|
80
|
+
* // Direct RPC test
|
|
81
|
+
* const sum = await ctx.env.MATH.add(1, 2)
|
|
82
|
+
* expect(sum).toBe(3)
|
|
83
|
+
*
|
|
84
|
+
* // HTTP test (gateway using RPC internally)
|
|
85
|
+
* const response = await ctx.fetch('http://localhost/')
|
|
86
|
+
* const data = await response.json()
|
|
87
|
+
* expect(data.sum).toBe(3)
|
|
88
|
+
*
|
|
89
|
+
* await ctx.dispose()
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function createMultiWorkerContext<TEnv = Record<string, unknown>>(options: MultiWorkerContextOptions): Promise<MultiWorkerContext<TEnv>>;
|
|
93
|
+
/**
|
|
94
|
+
* @deprecated Use `worker.ts` files with exported functions instead. devflare automatically
|
|
95
|
+
* transforms these into WorkerEntrypoint classes during bundling.
|
|
96
|
+
*
|
|
97
|
+
* Helper to create a WorkerEntrypoint class script from exported functions.
|
|
98
|
+
* Use this when you want to test against the transformed version of a worker.ts file.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* const script = createEntrypointScript('MathService', {
|
|
103
|
+
* add: '(a, b) { return a + b }',
|
|
104
|
+
* multiply: '(a, b) { return a * b }'
|
|
105
|
+
* })
|
|
106
|
+
* // Result: import { WorkerEntrypoint } from 'cloudflare:workers'
|
|
107
|
+
* // export class MathService extends WorkerEntrypoint {
|
|
108
|
+
* // add(a, b) { return a + b }
|
|
109
|
+
* // multiply(a, b) { return a * b }
|
|
110
|
+
* // }
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function createEntrypointScript(className: string, methods: Record<string, string>): string;
|
|
114
|
+
//# sourceMappingURL=multi-worker-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-worker-context.d.ts","sourceRoot":"","sources":["../../src/test/multi-worker-context.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAM1C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IAEZ,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IAEd,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC,qCAAqC;IACrC,OAAO,EAAE,YAAY,EAAE,CAAA;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,yBAAyB;IACzB,EAAE,EAAE,SAAS,CAAA;IAEb,mDAAmD;IACnD,GAAG,EAAE,IAAI,CAAA;IAET,qDAAqD;IACrD,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAE/E,uCAAuC;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5E,OAAO,EAAE,yBAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAiEnC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAWR"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export interface QueueMessageOptions<T = unknown> {
|
|
2
|
+
/** Unique message ID (auto-generated if not provided) */
|
|
3
|
+
id?: string;
|
|
4
|
+
/** Message body */
|
|
5
|
+
body: T;
|
|
6
|
+
/** Timestamp when message was enqueued (defaults to now) */
|
|
7
|
+
timestamp?: Date;
|
|
8
|
+
/** Number of times this message has been retried */
|
|
9
|
+
attempts?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface QueueTriggerResult {
|
|
12
|
+
/** Messages that were acknowledged */
|
|
13
|
+
acked: string[];
|
|
14
|
+
/** Messages that were retried */
|
|
15
|
+
retried: string[];
|
|
16
|
+
/** Messages that were explicitly failed with noRetry */
|
|
17
|
+
failed: string[];
|
|
18
|
+
/** Total messages processed */
|
|
19
|
+
total: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Configure the queue test helper
|
|
23
|
+
* @internal Called by createTestContext to set up handler path and env
|
|
24
|
+
*/
|
|
25
|
+
export declare function configureQueue(options: {
|
|
26
|
+
handlerPath: string | null;
|
|
27
|
+
configDir: string;
|
|
28
|
+
getEnv: () => Record<string, unknown>;
|
|
29
|
+
}): void;
|
|
30
|
+
/**
|
|
31
|
+
* Reset queue helper state
|
|
32
|
+
* @internal Called when test context is disposed
|
|
33
|
+
*/
|
|
34
|
+
export declare function resetQueueState(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Trigger the queue handler with a batch of messages.
|
|
37
|
+
* This directly invokes the queue handler function from your config.
|
|
38
|
+
*
|
|
39
|
+
* @param messages - Array of message options or bodies
|
|
40
|
+
* @returns Result object with acked/retried/failed message IDs
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* // Trigger with message bodies (IDs auto-generated)
|
|
45
|
+
* const result = await cf.queue.trigger([
|
|
46
|
+
* { type: 'process', data: { x: 1 } },
|
|
47
|
+
* { type: 'cleanup', data: {} }
|
|
48
|
+
* ])
|
|
49
|
+
*
|
|
50
|
+
* // Trigger with full message options
|
|
51
|
+
* const result = await cf.queue.trigger([
|
|
52
|
+
* { id: 'msg-1', body: { type: 'process' }, attempts: 2 }
|
|
53
|
+
* ])
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
declare function trigger<T = unknown>(messages: Array<QueueMessageOptions<T> | T>): Promise<QueueTriggerResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Convenience method to trigger the queue handler with a single message.
|
|
59
|
+
*
|
|
60
|
+
* @param message - Message body or options
|
|
61
|
+
* @returns Result object
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* await cf.queue.send({ type: 'process', data: { x: 1 } })
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
declare function send<T = unknown>(message: QueueMessageOptions<T> | T): Promise<QueueTriggerResult>;
|
|
69
|
+
export declare const queue: {
|
|
70
|
+
trigger: typeof trigger;
|
|
71
|
+
send: typeof send;
|
|
72
|
+
};
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/test/queue.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC/C,yDAAyD;IACzD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,mBAAmB;IACnB,IAAI,EAAE,CAAC,CAAA;IACP,4DAA4D;IAC5D,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,kBAAkB;IAClC,sCAAsC;IACtC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,wDAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;CACb;AAcD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,GAAG,IAAI,CAIP;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AA+DD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,iBAAe,OAAO,CAAC,CAAC,GAAG,OAAO,EACjC,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAuF7B;AAED;;;;;;;;;;GAUG;AACH,iBAAe,IAAI,CAAC,CAAC,GAAG,OAAO,EAC9B,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAMD,eAAO,MAAM,KAAK;;;CAGjB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-ai.d.ts","sourceRoot":"","sources":["../../src/test/remote-ai.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,EAAE,CAqErD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a remote Vectorize binding that calls Cloudflare's REST API.
|
|
3
|
+
* Matches the Workers Vectorize binding interface.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createRemoteVectorize(indexName: string, accountId?: string): VectorizeIndex;
|
|
6
|
+
//# sourceMappingURL=remote-vectorize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-vectorize.d.ts","sourceRoot":"","sources":["../../src/test/remote-vectorize.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAyJ3F"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { type DevflareConfig } from '../config';
|
|
2
|
+
/**
|
|
3
|
+
* Clear the bundle cache (useful between test suites)
|
|
4
|
+
*/
|
|
5
|
+
export declare function clearBundleCache(): void;
|
|
6
|
+
/**
|
|
7
|
+
* Resolved worker configuration for Miniflare
|
|
8
|
+
*/
|
|
9
|
+
export interface ResolvedWorker {
|
|
10
|
+
/** Worker name */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Bundled script code */
|
|
13
|
+
script: string;
|
|
14
|
+
/** Whether the script uses ES modules */
|
|
15
|
+
modules: boolean;
|
|
16
|
+
/** Compatibility date */
|
|
17
|
+
compatibilityDate: string;
|
|
18
|
+
/** Service bindings to other workers */
|
|
19
|
+
serviceBindings?: Record<string, {
|
|
20
|
+
name: string;
|
|
21
|
+
entrypoint?: string;
|
|
22
|
+
}>;
|
|
23
|
+
/** Durable Object bindings (className → wrapperClassName) */
|
|
24
|
+
durableObjects?: Record<string, string>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Result of resolving service bindings
|
|
28
|
+
*/
|
|
29
|
+
export interface ServiceBindingResolution {
|
|
30
|
+
/** All resolved workers (including primary) */
|
|
31
|
+
workers: ResolvedWorker[];
|
|
32
|
+
/** Service bindings for the primary worker */
|
|
33
|
+
primaryServiceBindings: Record<string, {
|
|
34
|
+
name: string;
|
|
35
|
+
entrypoint?: string;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a config has service bindings that need multi-worker setup
|
|
40
|
+
*/
|
|
41
|
+
export declare function hasServiceBindings(config: DevflareConfig): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve service bindings from a config
|
|
44
|
+
* Returns the workers array and service bindings for Miniflare setup
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveServiceBindings(config: DevflareConfig, configDir: string): Promise<ServiceBindingResolution>;
|
|
47
|
+
/**
|
|
48
|
+
* Result of resolving cross-worker DO bindings
|
|
49
|
+
*/
|
|
50
|
+
export interface DOBindingResolution {
|
|
51
|
+
/** Workers that host cross-worker DOs */
|
|
52
|
+
workers: ResolvedWorker[];
|
|
53
|
+
/** DO bindings for the primary worker (pointing to cross-worker DO hosting workers) */
|
|
54
|
+
crossWorkerDOBindings: Record<string, {
|
|
55
|
+
className: string;
|
|
56
|
+
scriptName: string;
|
|
57
|
+
}>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a config has cross-worker DO bindings
|
|
61
|
+
*/
|
|
62
|
+
export declare function hasCrossWorkerDOs(config: DevflareConfig): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve cross-worker DO bindings
|
|
65
|
+
* Returns workers to set up and DO bindings for the primary worker
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolveDOBindings(config: DevflareConfig, configDir: string): Promise<DOBindingResolution>;
|
|
68
|
+
//# sourceMappingURL=resolve-service-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-service-bindings.d.ts","sourceRoot":"","sources":["../../src/test/resolve-service-bindings.ts"],"names":[],"mappings":"AASA,OAAO,EAAsB,KAAK,cAAc,EAAgD,MAAM,WAAW,CAAA;AAgFjH;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,+DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,+CAA+C;IAC/C,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,8CAA8C;IAC9C,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7E;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAIlE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC,CAkDnC;AAwLD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,yCAAyC;IACzC,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,uFAAuF;IACvF,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAQjE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAgD9B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export interface ScheduledTriggerOptions {
|
|
2
|
+
/** Cron expression that triggered this event */
|
|
3
|
+
cron?: string;
|
|
4
|
+
/** Scheduled time (defaults to now) */
|
|
5
|
+
scheduledTime?: number | Date;
|
|
6
|
+
}
|
|
7
|
+
export interface ScheduledTriggerResult {
|
|
8
|
+
/** Whether the handler completed successfully */
|
|
9
|
+
success: boolean;
|
|
10
|
+
/** Error message if handler threw */
|
|
11
|
+
error?: string;
|
|
12
|
+
/** Cron expression used */
|
|
13
|
+
cron: string;
|
|
14
|
+
/** Scheduled time */
|
|
15
|
+
scheduledTime: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Configure the scheduled test helper
|
|
19
|
+
* @internal Called by createTestContext to set up handler path and env
|
|
20
|
+
*/
|
|
21
|
+
export declare function configureScheduled(options: {
|
|
22
|
+
handlerPath: string | null;
|
|
23
|
+
configDir: string;
|
|
24
|
+
getEnv: () => Record<string, unknown>;
|
|
25
|
+
}): void;
|
|
26
|
+
/**
|
|
27
|
+
* Reset scheduled helper state
|
|
28
|
+
* @internal Called when test context is disposed
|
|
29
|
+
*/
|
|
30
|
+
export declare function resetScheduledState(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Trigger the scheduled handler.
|
|
33
|
+
* This directly invokes the scheduled handler function from your config.
|
|
34
|
+
*
|
|
35
|
+
* @param cronOrOptions - Cron expression string or options object
|
|
36
|
+
* @returns Result object with success status
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* // Trigger with specific cron expression (every 6 hours)
|
|
40
|
+
* await cf.scheduled.trigger('0 0,6,12,18 * * *')
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* // Trigger with options (Weekly Monday at midnight)
|
|
44
|
+
* await cf.scheduled.trigger({
|
|
45
|
+
* cron: '0 0 * * 1',
|
|
46
|
+
* scheduledTime: new Date('2026-01-13T00:00:00Z')
|
|
47
|
+
* })
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* // Trigger without cron (just scheduled time)
|
|
51
|
+
* await cf.scheduled.trigger()
|
|
52
|
+
*/
|
|
53
|
+
declare function trigger(cronOrOptions?: string | ScheduledTriggerOptions): Promise<ScheduledTriggerResult>;
|
|
54
|
+
export declare const scheduled: {
|
|
55
|
+
trigger: typeof trigger;
|
|
56
|
+
};
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=scheduled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled.d.ts","sourceRoot":"","sources":["../../src/test/scheduled.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,uBAAuB;IACvC,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACtC,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAA;IAChB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAA;CACrB;AAcD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,GAAG,IAAI,CAIP;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAe,OAAO,CACrB,aAAa,CAAC,EAAE,MAAM,GAAG,uBAAuB,GAC9C,OAAO,CAAC,sBAAsB,CAAC,CAkFjC;AAMD,eAAO,MAAM,SAAS;;CAErB,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if remote mode is explicitly enabled via environment variable.
|
|
3
|
+
* Supports DEVFLARE_REMOTE=1, true, yes
|
|
4
|
+
*
|
|
5
|
+
* @deprecated Use isRemoteModeActive() instead, which also checks stored config.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { isRemoteModeEnabled } from 'devflare/test'
|
|
10
|
+
*
|
|
11
|
+
* if (isRemoteModeEnabled()) {
|
|
12
|
+
* // Use real remote bindings
|
|
13
|
+
* } else {
|
|
14
|
+
* // Use local emulation or skip
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function isRemoteModeEnabled(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Skip helper with property-based access for each service.
|
|
21
|
+
* Each property returns a Promise<boolean> where true = SKIP the tests.
|
|
22
|
+
*
|
|
23
|
+
* Usage:
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { shouldSkip } from 'devflare/test'
|
|
26
|
+
*
|
|
27
|
+
* describe.skipIf(shouldSkip.ai)('AI tests', () => {
|
|
28
|
+
* // These tests only run when authenticated and within limits
|
|
29
|
+
* })
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare const shouldSkip: {
|
|
33
|
+
/** Skip AI tests if not authenticated or over limits */
|
|
34
|
+
readonly ai: Promise<boolean>;
|
|
35
|
+
/** Skip Vectorize tests if not authenticated or over limits */
|
|
36
|
+
readonly vectorize: Promise<boolean>;
|
|
37
|
+
/** Skip Workers tests if not authenticated or over limits */
|
|
38
|
+
readonly workers: Promise<boolean>;
|
|
39
|
+
/** Skip KV tests if not authenticated or over limits */
|
|
40
|
+
readonly kv: Promise<boolean>;
|
|
41
|
+
/** Skip D1 tests if not authenticated or over limits */
|
|
42
|
+
readonly d1: Promise<boolean>;
|
|
43
|
+
/** Skip R2 tests if not authenticated or over limits */
|
|
44
|
+
readonly r2: Promise<boolean>;
|
|
45
|
+
/** Skip Queues tests if not authenticated or over limits */
|
|
46
|
+
readonly queues: Promise<boolean>;
|
|
47
|
+
/** Skip Durable Objects tests if not authenticated or over limits */
|
|
48
|
+
readonly durableObjects: Promise<boolean>;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=should-skip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"should-skip.d.ts","sourceRoot":"","sources":["../../src/test/should-skip.ts"],"names":[],"mappings":"AA6BA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAmID;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU;IACtB,wDAAwD;;IAKxD,+DAA+D;;IAK/D,6DAA6D;;IAK7D,wDAAwD;;IAKxD,wDAAwD;;IAKxD,wDAAwD;;IAKxD,4DAA4D;;IAK5D,qEAAqE;;CAI5D,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a test context from a devflare config file.
|
|
3
|
+
* This starts Miniflare with the configured bindings and sets up the bridge.
|
|
4
|
+
*
|
|
5
|
+
* @param configPath - Optional path to config file. If not provided, searches
|
|
6
|
+
* upward from the test file for devflare.config.ts.
|
|
7
|
+
* If provided, path is resolved relative to the test file.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createTestContext(configPath?: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Test environment interface - extend this in your project's env.d.ts
|
|
12
|
+
* The generated env.d.ts declares `interface Env { ... }` in global scope
|
|
13
|
+
*/
|
|
14
|
+
export interface TestEnv {
|
|
15
|
+
dispose(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Base environment type - augmented by user's env.d.ts via module augmentation.
|
|
19
|
+
* Projects should run `devflare types` to generate env.d.ts which extends
|
|
20
|
+
* this interface with proper binding types.
|
|
21
|
+
*
|
|
22
|
+
* @example Generated env.d.ts:
|
|
23
|
+
* ```ts
|
|
24
|
+
* declare global {
|
|
25
|
+
* interface DevflareEnv {
|
|
26
|
+
* COUNTER: DurableObjectNamespace
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export interface DevflareEnv {
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated Use `import { env } from 'devflare'` instead.
|
|
35
|
+
* This export is kept for backwards compatibility.
|
|
36
|
+
*
|
|
37
|
+
* The unified env from 'devflare' works everywhere:
|
|
38
|
+
* - Inside request handlers (uses request context)
|
|
39
|
+
* - In tests (after createTestContext())
|
|
40
|
+
* - In dev mode scripts (uses bridge)
|
|
41
|
+
*/
|
|
42
|
+
export { env } from '../env';
|
|
43
|
+
//# sourceMappingURL=simple-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-context.d.ts","sourceRoot":"","sources":["../../src/test/simple-context.ts"],"names":[],"mappings":"AAiKA;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAse1E;AA+BD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,WAAW;CAAI;AAEhC;;;;;;;;GAQG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { TraceItem, TraceLog, TraceException } from '@cloudflare/workers-types';
|
|
2
|
+
export interface TraceItemOptions {
|
|
3
|
+
/** Name of the worker that produced this trace */
|
|
4
|
+
scriptName?: string;
|
|
5
|
+
/** Outcome of the event */
|
|
6
|
+
outcome?: 'ok' | 'exception' | 'exceededCpu' | 'exceededMemory' | 'unknown';
|
|
7
|
+
/** Timestamp of the event */
|
|
8
|
+
eventTimestamp?: number;
|
|
9
|
+
/** Logs produced during the event */
|
|
10
|
+
logs?: TraceLog[];
|
|
11
|
+
/** Exceptions thrown during the event */
|
|
12
|
+
exceptions?: TraceException[];
|
|
13
|
+
/** Event details (request, scheduled, etc.) */
|
|
14
|
+
event?: TraceItem['event'];
|
|
15
|
+
/** Script version info */
|
|
16
|
+
scriptVersion?: {
|
|
17
|
+
id: string;
|
|
18
|
+
};
|
|
19
|
+
/** Dispatch namespace (for namespaced workers) */
|
|
20
|
+
dispatchNamespace?: string;
|
|
21
|
+
/** Script tags */
|
|
22
|
+
scriptTags?: string[];
|
|
23
|
+
/** Diagnostics channel events */
|
|
24
|
+
diagnosticsChannelEvents?: unknown[];
|
|
25
|
+
}
|
|
26
|
+
export interface TailTriggerResult {
|
|
27
|
+
/** Whether the handler completed successfully */
|
|
28
|
+
success: boolean;
|
|
29
|
+
/** Error message if handler threw */
|
|
30
|
+
error?: string;
|
|
31
|
+
/** Number of trace items processed */
|
|
32
|
+
itemCount: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Configure the tail test helper
|
|
36
|
+
* @internal Called by createTestContext to set up handler path and env
|
|
37
|
+
*/
|
|
38
|
+
export declare function configureTail(options: {
|
|
39
|
+
handlerPath: string | null;
|
|
40
|
+
configDir: string;
|
|
41
|
+
getEnv: () => Record<string, unknown>;
|
|
42
|
+
}): void;
|
|
43
|
+
/**
|
|
44
|
+
* Reset tail helper state
|
|
45
|
+
* @internal Called when test context is disposed
|
|
46
|
+
*/
|
|
47
|
+
export declare function resetTailState(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Trigger the tail handler with trace items.
|
|
50
|
+
* This directly invokes the tail handler function from your config.
|
|
51
|
+
*
|
|
52
|
+
* @param items - Array of trace items or trace item options
|
|
53
|
+
* @returns Result object with success status
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* // Trigger with full trace items
|
|
58
|
+
* await cf.tail.trigger([
|
|
59
|
+
* {
|
|
60
|
+
* scriptName: 'my-worker',
|
|
61
|
+
* outcome: 'ok',
|
|
62
|
+
* logs: [{ level: 'log', message: ['Request processed'], timestamp: Date.now() }]
|
|
63
|
+
* }
|
|
64
|
+
* ])
|
|
65
|
+
*
|
|
66
|
+
* // Trigger with minimal options (defaults applied)
|
|
67
|
+
* await cf.tail.trigger([
|
|
68
|
+
* { logs: [{ level: 'error', message: ['Something failed'], timestamp: Date.now() }] }
|
|
69
|
+
* ])
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
declare function trigger(items: Array<TraceItem | TraceItemOptions>): Promise<TailTriggerResult>;
|
|
73
|
+
/**
|
|
74
|
+
* Create a TraceItem with sensible defaults.
|
|
75
|
+
* Useful for building test data.
|
|
76
|
+
*
|
|
77
|
+
* @param options - Partial trace item options
|
|
78
|
+
* @returns Complete TraceItem
|
|
79
|
+
*/
|
|
80
|
+
declare function create(options?: TraceItemOptions): TraceItem;
|
|
81
|
+
export declare const tail: {
|
|
82
|
+
trigger: typeof trigger;
|
|
83
|
+
create: typeof create;
|
|
84
|
+
};
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=tail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/test/tail.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAOpF,MAAM,WAAW,gBAAgB;IAChC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAAA;IAC3E,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qCAAqC;IACrC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA;IACjB,yCAAyC;IACzC,UAAU,CAAC,EAAE,cAAc,EAAE,CAAA;IAC7B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IAC1B,0BAA0B;IAC1B,aAAa,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9B,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,iCAAiC;IACjC,wBAAwB,CAAC,EAAE,OAAO,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,iBAAiB;IACjC,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAA;IAChB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;CACjB;AAcD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,GAAG,IAAI,CAIP;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAiCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,iBAAe,OAAO,CACrB,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC,GACxC,OAAO,CAAC,iBAAiB,CAAC,CAoE5B;AAED;;;;;;GAMG;AACH,iBAAS,MAAM,CAAC,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAEzD;AAMD,eAAO,MAAM,IAAI;;;CAGhB,CAAA"}
|