devflare 1.0.0-next.5 → 1.0.0-next.6
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 +7 -2
- package/README.md +4 -2
- package/dist/browser.d.ts +50 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +149 -0
- package/dist/{dev-b9dmrj7b.js → dev-7agn9g5s.js} +1 -0
- package/dist/dev-server/server.d.ts.map +1 -1
- package/dist/index-62b3gt2g.js +12 -0
- package/dist/index-9ats0s83.js +70 -0
- package/dist/{index-pf5s73n9.js → index-ccrh4w3t.js} +1 -281
- package/dist/index-k7r18na8.js +0 -0
- package/dist/{index-m2q41jwa.js → index-n3np2d6t.js} +1 -1
- package/dist/index-npc1c8jx.js +44 -0
- package/dist/index-p7g30wd2.js +281 -0
- package/dist/{index-ep3445yc.js → index-rprrn24p.js} +25 -97
- package/dist/{index-07q6yxyc.js → index-v8vvsn9x.js} +1 -0
- package/dist/index.js +25 -26
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +73 -0
- package/dist/sveltekit/index.js +5 -3
- package/dist/test/index.js +10 -5
- package/dist/{types-5nyrz1sz.js → types-vss6vrz7.js} +5 -4
- package/package.json +3 -2
- package/dist/{build-mnf6v8gd.js → build-nz5yrj7f.js} +3 -3
- package/dist/{deploy-nhceck39.js → deploy-a5pcxd5w.js} +3 -3
- package/dist/{doctor-fmgb3d28.js → doctor-v7jy4s3r.js} +3 -3
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// src/runtime/context.ts
|
|
2
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
|
+
var storage = new AsyncLocalStorage;
|
|
4
|
+
function runWithContext(env, ctx, request, fn, type = "fetch") {
|
|
5
|
+
const context = {
|
|
6
|
+
env,
|
|
7
|
+
ctx,
|
|
8
|
+
request,
|
|
9
|
+
locals: {},
|
|
10
|
+
type
|
|
11
|
+
};
|
|
12
|
+
return storage.run(context, fn);
|
|
13
|
+
}
|
|
14
|
+
function getContext() {
|
|
15
|
+
const context = storage.getStore();
|
|
16
|
+
if (!context) {
|
|
17
|
+
throw new ContextUnavailableError;
|
|
18
|
+
}
|
|
19
|
+
return context;
|
|
20
|
+
}
|
|
21
|
+
function getContextOrNull() {
|
|
22
|
+
const context = storage.getStore();
|
|
23
|
+
return context ?? null;
|
|
24
|
+
}
|
|
25
|
+
function hasContext() {
|
|
26
|
+
return storage.getStore() !== undefined;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
class ContextUnavailableError extends Error {
|
|
30
|
+
code = "CONTEXT_UNAVAILABLE";
|
|
31
|
+
constructor() {
|
|
32
|
+
super(`Context not available. This usually means one of:
|
|
33
|
+
|
|
34
|
+
` + `1. Accessing context at module top-level (runs at cold start, not per-request)
|
|
35
|
+
` + `2. Accessing context in setTimeout/setInterval callbacks
|
|
36
|
+
` + `3. Missing 'nodejs_compat' compatibility flag in your worker config
|
|
37
|
+
|
|
38
|
+
` + `Fix: Move the access inside your fetch handler or middleware.
|
|
39
|
+
` + `Learn more: https://devflare.dev/docs/context-errors`);
|
|
40
|
+
this.name = "ContextUnavailableError";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { runWithContext, getContext, getContextOrNull, hasContext, ContextUnavailableError };
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeDOBinding
|
|
3
|
+
} from "./index-hcex3rgh.js";
|
|
4
|
+
import {
|
|
5
|
+
__require
|
|
6
|
+
} from "./index-37x76zdn.js";
|
|
7
|
+
|
|
8
|
+
// src/bridge/miniflare.ts
|
|
9
|
+
function generateGatewayScript() {
|
|
10
|
+
return `
|
|
11
|
+
// Gateway Worker — Provides RPC access to all bindings
|
|
12
|
+
export default {
|
|
13
|
+
async fetch(request, env, ctx) {
|
|
14
|
+
const url = new URL(request.url)
|
|
15
|
+
|
|
16
|
+
// Health check
|
|
17
|
+
if (url.pathname === '/_devflare/health') {
|
|
18
|
+
return new Response(JSON.stringify({ status: 'ok', bindings: Object.keys(env) }), {
|
|
19
|
+
headers: { 'Content-Type': 'application/json' }
|
|
20
|
+
})
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// RPC endpoint
|
|
24
|
+
if (url.pathname === '/_devflare/rpc' && request.method === 'POST') {
|
|
25
|
+
try {
|
|
26
|
+
const { method, params } = await request.json()
|
|
27
|
+
const result = await executeRpc(env, method, params)
|
|
28
|
+
return new Response(JSON.stringify({ ok: true, result }), {
|
|
29
|
+
headers: { 'Content-Type': 'application/json' }
|
|
30
|
+
})
|
|
31
|
+
} catch (error) {
|
|
32
|
+
return new Response(JSON.stringify({
|
|
33
|
+
ok: false,
|
|
34
|
+
error: { code: 'RPC_ERROR', message: error.message }
|
|
35
|
+
}), {
|
|
36
|
+
status: 500,
|
|
37
|
+
headers: { 'Content-Type': 'application/json' }
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return new Response('Devflare Gateway', { status: 200 })
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function executeRpc(env, method, params) {
|
|
47
|
+
const [bindingName, ...methodPath] = method.split('.')
|
|
48
|
+
const binding = env[bindingName]
|
|
49
|
+
|
|
50
|
+
if (!binding) {
|
|
51
|
+
throw new Error(\`Binding "\${bindingName}" not found\`)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const methodName = methodPath.join('.')
|
|
55
|
+
|
|
56
|
+
// KV operations
|
|
57
|
+
if (methodName === 'get') return binding.get(params[0], params[1])
|
|
58
|
+
if (methodName === 'put') return binding.put(params[0], params[1], params[2])
|
|
59
|
+
if (methodName === 'delete') return binding.delete(params[0])
|
|
60
|
+
if (methodName === 'list') return binding.list(params[0])
|
|
61
|
+
if (methodName === 'getWithMetadata') return binding.getWithMetadata(params[0], params[1])
|
|
62
|
+
|
|
63
|
+
// R2 operations
|
|
64
|
+
if (methodName === 'head') return binding.head(params[0])
|
|
65
|
+
if (methodName === 'r2.get') return serializeR2Object(await binding.get(params[0], params[1]))
|
|
66
|
+
if (methodName === 'r2.put') return serializeR2Object(await binding.put(params[0], params[1], params[2]))
|
|
67
|
+
if (methodName === 'r2.delete') return binding.delete(params[0])
|
|
68
|
+
if (methodName === 'r2.list') return serializeR2Objects(await binding.list(params[0]))
|
|
69
|
+
|
|
70
|
+
// D1 operations
|
|
71
|
+
if (methodName === 'exec') return binding.exec(params[0])
|
|
72
|
+
if (methodName === 'batch') {
|
|
73
|
+
const statements = params[0].map(s => binding.prepare(s.sql).bind(...(s.bindings || [])))
|
|
74
|
+
return binding.batch(statements)
|
|
75
|
+
}
|
|
76
|
+
if (methodName.startsWith('stmt.')) {
|
|
77
|
+
const [, stmtMethod] = methodName.split('.')
|
|
78
|
+
const [sql, ...bindings] = params
|
|
79
|
+
const stmt = binding.prepare(sql).bind(...bindings.slice(0, -1))
|
|
80
|
+
|
|
81
|
+
if (stmtMethod === 'first') return stmt.first(bindings[bindings.length - 1])
|
|
82
|
+
if (stmtMethod === 'all') return stmt.all()
|
|
83
|
+
if (stmtMethod === 'run') return stmt.run()
|
|
84
|
+
if (stmtMethod === 'raw') return stmt.raw(bindings[bindings.length - 1])
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// DO operations
|
|
88
|
+
if (methodName === 'idFromName') {
|
|
89
|
+
const id = binding.idFromName(params[0])
|
|
90
|
+
return { __type: 'DOId', hex: id.toString() }
|
|
91
|
+
}
|
|
92
|
+
if (methodName === 'idFromString') {
|
|
93
|
+
const id = binding.idFromString(params[0])
|
|
94
|
+
return { __type: 'DOId', hex: id.toString() }
|
|
95
|
+
}
|
|
96
|
+
if (methodName === 'newUniqueId') {
|
|
97
|
+
const id = binding.newUniqueId(params[0])
|
|
98
|
+
return { __type: 'DOId', hex: id.toString() }
|
|
99
|
+
}
|
|
100
|
+
if (methodName === 'stub.fetch') {
|
|
101
|
+
const [, doId, serializedReq] = params
|
|
102
|
+
const id = binding.idFromString(doId.hex)
|
|
103
|
+
const stub = binding.get(id)
|
|
104
|
+
const response = await stub.fetch(new Request(serializedReq.url, {
|
|
105
|
+
method: serializedReq.method,
|
|
106
|
+
headers: serializedReq.headers,
|
|
107
|
+
body: serializedReq.body?.type === 'bytes' ? atob(serializedReq.body.data) : undefined
|
|
108
|
+
}))
|
|
109
|
+
return serializeResponse(response)
|
|
110
|
+
}
|
|
111
|
+
if (methodName === 'stub.rpc') {
|
|
112
|
+
// DO RPC: Call a method on the DO instance
|
|
113
|
+
const [, doId, rpcMethod, rpcParams] = params
|
|
114
|
+
const id = binding.idFromString(doId.hex)
|
|
115
|
+
const stub = binding.get(id)
|
|
116
|
+
|
|
117
|
+
// Use fetch to call the RPC endpoint
|
|
118
|
+
const response = await stub.fetch(new Request('http://do/_rpc', {
|
|
119
|
+
method: 'POST',
|
|
120
|
+
headers: { 'Content-Type': 'application/json' },
|
|
121
|
+
body: JSON.stringify({ method: rpcMethod, params: rpcParams })
|
|
122
|
+
}))
|
|
123
|
+
|
|
124
|
+
const result = await response.json()
|
|
125
|
+
if (!result.ok) throw new Error(result.error?.message || 'RPC failed')
|
|
126
|
+
return result.result
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Queue operations
|
|
130
|
+
if (methodName === 'send') return binding.send(params[0], params[1])
|
|
131
|
+
if (methodName === 'sendBatch') return binding.sendBatch(params[0], params[1])
|
|
132
|
+
|
|
133
|
+
// Generic fallback
|
|
134
|
+
if (typeof binding[methodName] === 'function') {
|
|
135
|
+
return binding[methodName](...params)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
throw new Error(\`Unknown method: \${method}\`)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function serializeResponse(response) {
|
|
142
|
+
return {
|
|
143
|
+
status: response.status,
|
|
144
|
+
statusText: response.statusText,
|
|
145
|
+
headers: [...response.headers.entries()],
|
|
146
|
+
body: null // Will be streamed separately for large bodies
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function serializeR2Object(obj) {
|
|
151
|
+
if (!obj) return null
|
|
152
|
+
return {
|
|
153
|
+
key: obj.key,
|
|
154
|
+
version: obj.version,
|
|
155
|
+
size: obj.size,
|
|
156
|
+
etag: obj.etag,
|
|
157
|
+
httpEtag: obj.httpEtag,
|
|
158
|
+
uploaded: obj.uploaded?.toISOString(),
|
|
159
|
+
httpMetadata: obj.httpMetadata,
|
|
160
|
+
customMetadata: obj.customMetadata
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function serializeR2Objects(result) {
|
|
165
|
+
if (!result) return null
|
|
166
|
+
return {
|
|
167
|
+
objects: result.objects.map(serializeR2Object),
|
|
168
|
+
truncated: result.truncated,
|
|
169
|
+
cursor: result.cursor,
|
|
170
|
+
delimitedPrefixes: result.delimitedPrefixes
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
async function startMiniflare(options = {}) {
|
|
176
|
+
const { Miniflare, Log, LogLevel } = await import("miniflare");
|
|
177
|
+
const port = options.port ?? 8787;
|
|
178
|
+
const persistPath = options.persistPath ?? ".devflare/data";
|
|
179
|
+
const mfConfig = {
|
|
180
|
+
modules: true,
|
|
181
|
+
script: generateGatewayScript(),
|
|
182
|
+
port,
|
|
183
|
+
host: "127.0.0.1",
|
|
184
|
+
log: options.verbose ? new Log(LogLevel.DEBUG) : new Log(LogLevel.WARN),
|
|
185
|
+
compatibilityDate: options.compatibilityDate ?? "2024-01-01",
|
|
186
|
+
compatibilityFlags: options.compatibilityFlags ?? []
|
|
187
|
+
};
|
|
188
|
+
const hasBindings = (val) => {
|
|
189
|
+
if (!val)
|
|
190
|
+
return false;
|
|
191
|
+
if (Array.isArray(val))
|
|
192
|
+
return val.length > 0;
|
|
193
|
+
return Object.keys(val).length > 0;
|
|
194
|
+
};
|
|
195
|
+
if (hasBindings(options.kvNamespaces)) {
|
|
196
|
+
mfConfig.kvNamespaces = options.kvNamespaces;
|
|
197
|
+
if (options.persist) {
|
|
198
|
+
mfConfig.kvPersist = `${persistPath}/kv`;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (hasBindings(options.r2Buckets)) {
|
|
202
|
+
mfConfig.r2Buckets = options.r2Buckets;
|
|
203
|
+
if (options.persist) {
|
|
204
|
+
mfConfig.r2Persist = `${persistPath}/r2`;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (hasBindings(options.d1Databases)) {
|
|
208
|
+
mfConfig.d1Databases = options.d1Databases;
|
|
209
|
+
if (options.persist) {
|
|
210
|
+
mfConfig.d1Persist = `${persistPath}/d1`;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (options.durableObjects) {
|
|
214
|
+
mfConfig.durableObjects = options.durableObjects;
|
|
215
|
+
if (options.persist) {
|
|
216
|
+
mfConfig.durableObjectsPersist = `${persistPath}/do`;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (options.bindings) {
|
|
220
|
+
mfConfig.bindings = options.bindings;
|
|
221
|
+
}
|
|
222
|
+
if (options.queues?.length) {
|
|
223
|
+
mfConfig.queueProducers = Object.fromEntries(options.queues.map((q) => [q, { queueName: q }]));
|
|
224
|
+
}
|
|
225
|
+
const mf = new Miniflare(mfConfig);
|
|
226
|
+
await mf.ready;
|
|
227
|
+
return {
|
|
228
|
+
ready: Promise.resolve(),
|
|
229
|
+
async dispose() {
|
|
230
|
+
await mf.dispose();
|
|
231
|
+
},
|
|
232
|
+
async getBindings() {
|
|
233
|
+
return mf.getBindings();
|
|
234
|
+
},
|
|
235
|
+
getKVNamespace: mf.getKVNamespace.bind(mf),
|
|
236
|
+
getR2Bucket: mf.getR2Bucket.bind(mf),
|
|
237
|
+
getD1Database: mf.getD1Database.bind(mf),
|
|
238
|
+
getDurableObjectNamespace: mf.getDurableObjectNamespace.bind(mf),
|
|
239
|
+
dispatchFetch: mf.dispatchFetch.bind(mf),
|
|
240
|
+
_mf: mf
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
async function startMiniflareFromConfig(config, options = {}) {
|
|
244
|
+
const bindings = config.bindings ?? {};
|
|
245
|
+
const mfOptions = {
|
|
246
|
+
...options,
|
|
247
|
+
compatibilityDate: config.compatibilityDate,
|
|
248
|
+
compatibilityFlags: config.compatibilityFlags,
|
|
249
|
+
kvNamespaces: bindings.kv ? bindings.kv : undefined,
|
|
250
|
+
r2Buckets: bindings.r2 ? bindings.r2 : undefined,
|
|
251
|
+
d1Databases: bindings.d1 ? bindings.d1 : undefined,
|
|
252
|
+
queues: bindings.queues?.consumers?.map((c) => c.queue),
|
|
253
|
+
bindings: config.vars,
|
|
254
|
+
durableObjects: bindings.durableObjects ? Object.fromEntries(Object.entries(bindings.durableObjects).map(([bindingName, doConfig]) => {
|
|
255
|
+
const normalized = normalizeDOBinding(doConfig);
|
|
256
|
+
return [
|
|
257
|
+
bindingName,
|
|
258
|
+
{
|
|
259
|
+
className: normalized.className,
|
|
260
|
+
scriptPath: normalized.scriptName
|
|
261
|
+
}
|
|
262
|
+
];
|
|
263
|
+
})) : undefined
|
|
264
|
+
};
|
|
265
|
+
return startMiniflare(mfOptions);
|
|
266
|
+
}
|
|
267
|
+
var globalMiniflare = null;
|
|
268
|
+
async function getMiniflare(options) {
|
|
269
|
+
if (!globalMiniflare) {
|
|
270
|
+
globalMiniflare = await startMiniflare(options);
|
|
271
|
+
}
|
|
272
|
+
return globalMiniflare;
|
|
273
|
+
}
|
|
274
|
+
async function stopMiniflare() {
|
|
275
|
+
if (globalMiniflare) {
|
|
276
|
+
await globalMiniflare.dispose();
|
|
277
|
+
globalMiniflare = null;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export { startMiniflare, startMiniflareFromConfig, getMiniflare, stopMiniflare };
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getRemoteModeStatus,
|
|
3
|
+
isRemoteModeActive
|
|
4
|
+
} from "./index-d8bdkx2h.js";
|
|
1
5
|
import {
|
|
2
6
|
transformWorkerEntrypoint
|
|
3
7
|
} from "./index-z14anrqp.js";
|
|
@@ -6,9 +10,12 @@ import {
|
|
|
6
10
|
resolvePackageSpecifier
|
|
7
11
|
} from "./index-tk6ej9dj.js";
|
|
8
12
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from "./index-
|
|
13
|
+
__clearTestContext,
|
|
14
|
+
__setTestContext
|
|
15
|
+
} from "./index-9ats0s83.js";
|
|
16
|
+
import {
|
|
17
|
+
runWithContext
|
|
18
|
+
} from "./index-npc1c8jx.js";
|
|
12
19
|
import {
|
|
13
20
|
DEFAULT_DO_PATTERN,
|
|
14
21
|
findFiles,
|
|
@@ -18,13 +25,14 @@ import {
|
|
|
18
25
|
findDurableObjectClasses
|
|
19
26
|
} from "./index-gz1gndna.js";
|
|
20
27
|
import {
|
|
21
|
-
BridgeClient,
|
|
22
|
-
bridgeEnv,
|
|
23
|
-
createEnvProxy,
|
|
24
|
-
setBindingHints,
|
|
25
28
|
startMiniflare,
|
|
26
29
|
startMiniflareFromConfig
|
|
27
|
-
} from "./index-
|
|
30
|
+
} from "./index-p7g30wd2.js";
|
|
31
|
+
import {
|
|
32
|
+
BridgeClient,
|
|
33
|
+
createEnvProxy,
|
|
34
|
+
setBindingHints
|
|
35
|
+
} from "./index-ccrh4w3t.js";
|
|
28
36
|
import {
|
|
29
37
|
loadConfig,
|
|
30
38
|
normalizeDOBinding
|
|
@@ -574,86 +582,6 @@ export default {
|
|
|
574
582
|
}
|
|
575
583
|
}
|
|
576
584
|
|
|
577
|
-
// src/runtime/context.ts
|
|
578
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
579
|
-
var storage = new AsyncLocalStorage;
|
|
580
|
-
function runWithContext(env, ctx, request, fn, type = "fetch") {
|
|
581
|
-
const context = {
|
|
582
|
-
env,
|
|
583
|
-
ctx,
|
|
584
|
-
request,
|
|
585
|
-
locals: {},
|
|
586
|
-
type
|
|
587
|
-
};
|
|
588
|
-
return storage.run(context, fn);
|
|
589
|
-
}
|
|
590
|
-
function getContextOrNull() {
|
|
591
|
-
const context = storage.getStore();
|
|
592
|
-
return context ?? null;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
// src/env.ts
|
|
596
|
-
var testContextEnv = null;
|
|
597
|
-
var testContextDispose = null;
|
|
598
|
-
function __setTestContext(envBindings, dispose) {
|
|
599
|
-
testContextEnv = envBindings;
|
|
600
|
-
testContextDispose = dispose;
|
|
601
|
-
}
|
|
602
|
-
function __clearTestContext() {
|
|
603
|
-
testContextEnv = null;
|
|
604
|
-
testContextDispose = null;
|
|
605
|
-
}
|
|
606
|
-
var env = new Proxy({}, {
|
|
607
|
-
get(_target, prop) {
|
|
608
|
-
if (prop === "dispose") {
|
|
609
|
-
return async () => {
|
|
610
|
-
if (testContextDispose) {
|
|
611
|
-
await testContextDispose();
|
|
612
|
-
__clearTestContext();
|
|
613
|
-
}
|
|
614
|
-
};
|
|
615
|
-
}
|
|
616
|
-
const ctx = getContextOrNull();
|
|
617
|
-
if (ctx?.env) {
|
|
618
|
-
return ctx.env[prop];
|
|
619
|
-
}
|
|
620
|
-
if (testContextEnv) {
|
|
621
|
-
return testContextEnv[prop];
|
|
622
|
-
}
|
|
623
|
-
return bridgeEnv[prop];
|
|
624
|
-
},
|
|
625
|
-
has(_target, prop) {
|
|
626
|
-
if (prop === "dispose")
|
|
627
|
-
return true;
|
|
628
|
-
const ctx = getContextOrNull();
|
|
629
|
-
if (ctx?.env) {
|
|
630
|
-
return prop in ctx.env;
|
|
631
|
-
}
|
|
632
|
-
if (testContextEnv) {
|
|
633
|
-
return prop in testContextEnv;
|
|
634
|
-
}
|
|
635
|
-
return prop in bridgeEnv;
|
|
636
|
-
},
|
|
637
|
-
ownKeys(_target) {
|
|
638
|
-
const ctx = getContextOrNull();
|
|
639
|
-
if (ctx?.env) {
|
|
640
|
-
return Reflect.ownKeys(ctx.env);
|
|
641
|
-
}
|
|
642
|
-
if (testContextEnv) {
|
|
643
|
-
return Reflect.ownKeys(testContextEnv);
|
|
644
|
-
}
|
|
645
|
-
return Reflect.ownKeys(bridgeEnv);
|
|
646
|
-
},
|
|
647
|
-
getOwnPropertyDescriptor(_target, prop) {
|
|
648
|
-
if (prop === "dispose") {
|
|
649
|
-
return { configurable: true, enumerable: false, writable: false };
|
|
650
|
-
}
|
|
651
|
-
const ctx = getContextOrNull();
|
|
652
|
-
const source = ctx?.env ?? testContextEnv ?? bridgeEnv;
|
|
653
|
-
return Reflect.getOwnPropertyDescriptor(source, prop);
|
|
654
|
-
}
|
|
655
|
-
});
|
|
656
|
-
|
|
657
585
|
// src/test/queue.ts
|
|
658
586
|
import { join as join2 } from "path";
|
|
659
587
|
var queueHandlerPath = null;
|
|
@@ -740,8 +668,8 @@ Or: export async function queue(batch, env, ctx) { ... }`);
|
|
|
740
668
|
passThroughOnException() {},
|
|
741
669
|
props: {}
|
|
742
670
|
};
|
|
743
|
-
const
|
|
744
|
-
await queueHandler(batch,
|
|
671
|
+
const env = testEnvGetter();
|
|
672
|
+
await queueHandler(batch, env, ctx);
|
|
745
673
|
await Promise.all(waitUntilPromises);
|
|
746
674
|
const acked = [];
|
|
747
675
|
const retried = [];
|
|
@@ -820,9 +748,9 @@ Or: export async function scheduled(controller, env, ctx) { ... }`);
|
|
|
820
748
|
passThroughOnException() {},
|
|
821
749
|
props: {}
|
|
822
750
|
};
|
|
823
|
-
const
|
|
751
|
+
const env = testEnvGetter2();
|
|
824
752
|
try {
|
|
825
|
-
await scheduledHandler(controller,
|
|
753
|
+
await scheduledHandler(controller, env, ctx);
|
|
826
754
|
await Promise.all(waitUntilPromises);
|
|
827
755
|
return {
|
|
828
756
|
success: true,
|
|
@@ -903,8 +831,8 @@ Or: export async function fetch(request, env, ctx) { ... }`);
|
|
|
903
831
|
passThroughOnException() {},
|
|
904
832
|
props: {}
|
|
905
833
|
};
|
|
906
|
-
const
|
|
907
|
-
const response = await fetchHandler(req,
|
|
834
|
+
const env = testEnvGetter3();
|
|
835
|
+
const response = await fetchHandler(req, env, ctx);
|
|
908
836
|
return response;
|
|
909
837
|
}
|
|
910
838
|
async function get(path, headers) {
|
|
@@ -994,9 +922,9 @@ Or: export async function tail(events, env, ctx) { ... }`);
|
|
|
994
922
|
passThroughOnException() {},
|
|
995
923
|
props: {}
|
|
996
924
|
};
|
|
997
|
-
const
|
|
925
|
+
const env = testEnvGetter4();
|
|
998
926
|
try {
|
|
999
|
-
await tailHandler(traceItems,
|
|
927
|
+
await tailHandler(traceItems, env, ctx);
|
|
1000
928
|
await Promise.all(waitUntilPromises);
|
|
1001
929
|
return {
|
|
1002
930
|
success: true,
|
|
@@ -2222,4 +2150,4 @@ var testEnv = new Proxy({}, {
|
|
|
2222
2150
|
function isKVNamespace(binding) {
|
|
2223
2151
|
return typeof binding === "object" && binding !== null && "get" in binding && "put" in binding && "delete" in binding && "list" in binding;
|
|
2224
2152
|
}
|
|
2225
|
-
export {
|
|
2153
|
+
export { clearBundleCache, hasServiceBindings, resolveServiceBindings, hasCrossWorkerDOs, resolveDOBindings, queue, scheduled, worker, tail, email, createTestContext, cf, createMultiWorkerContext, createEntrypointScript, isRemoteModeEnabled, shouldSkip, createMockTestContext, withTestContext, createMockKV, createMockD1, createMockR2, createMockQueue, createMockEnv, createBridgeTestContext, stopBridgeTestContext, getBridgeTestContext, testEnv };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
workerName
|
|
3
|
+
} from "./index-62b3gt2g.js";
|
|
1
4
|
import {
|
|
2
5
|
createBridgeTestContext,
|
|
3
6
|
createMockD1,
|
|
@@ -7,12 +10,12 @@ import {
|
|
|
7
10
|
createMockR2,
|
|
8
11
|
createMockTestContext,
|
|
9
12
|
createTestContext,
|
|
10
|
-
env,
|
|
11
13
|
getBridgeTestContext,
|
|
12
14
|
stopBridgeTestContext,
|
|
13
15
|
testEnv,
|
|
14
16
|
withTestContext
|
|
15
|
-
} from "./index-
|
|
17
|
+
} from "./index-rprrn24p.js";
|
|
18
|
+
import"./index-d8bdkx2h.js";
|
|
16
19
|
import {
|
|
17
20
|
findExportedFunctions,
|
|
18
21
|
generateRpcInterface,
|
|
@@ -20,7 +23,10 @@ import {
|
|
|
20
23
|
transformWorkerEntrypoint
|
|
21
24
|
} from "./index-z14anrqp.js";
|
|
22
25
|
import"./index-tk6ej9dj.js";
|
|
23
|
-
import
|
|
26
|
+
import {
|
|
27
|
+
env
|
|
28
|
+
} from "./index-9ats0s83.js";
|
|
29
|
+
import"./index-npc1c8jx.js";
|
|
24
30
|
import"./index-rbht7m9r.js";
|
|
25
31
|
import {
|
|
26
32
|
findDurableObjectClasses,
|
|
@@ -30,24 +36,27 @@ import {
|
|
|
30
36
|
} from "./index-gz1gndna.js";
|
|
31
37
|
import {
|
|
32
38
|
server_default
|
|
33
|
-
} from "./index-
|
|
39
|
+
} from "./index-n3np2d6t.js";
|
|
34
40
|
import {
|
|
35
|
-
BridgeClient,
|
|
36
|
-
createEnvProxy,
|
|
37
|
-
getClient,
|
|
38
41
|
getMiniflare,
|
|
39
|
-
initEnv,
|
|
40
|
-
setBindingHints,
|
|
41
42
|
startMiniflare,
|
|
42
43
|
startMiniflareFromConfig,
|
|
43
44
|
stopMiniflare
|
|
44
|
-
} from "./index-
|
|
45
|
+
} from "./index-p7g30wd2.js";
|
|
46
|
+
import"./index-k7r18na8.js";
|
|
47
|
+
import {
|
|
48
|
+
BridgeClient,
|
|
49
|
+
createEnvProxy,
|
|
50
|
+
getClient,
|
|
51
|
+
initEnv,
|
|
52
|
+
setBindingHints
|
|
53
|
+
} from "./index-ccrh4w3t.js";
|
|
45
54
|
import {
|
|
46
55
|
defineConfig,
|
|
47
56
|
ref,
|
|
48
57
|
resolveRef,
|
|
49
58
|
serviceBinding
|
|
50
|
-
} from "./index-
|
|
59
|
+
} from "./index-v8vvsn9x.js";
|
|
51
60
|
import {
|
|
52
61
|
compileConfig,
|
|
53
62
|
stringifyConfig
|
|
@@ -66,16 +75,6 @@ import {
|
|
|
66
75
|
import {
|
|
67
76
|
__require
|
|
68
77
|
} from "./index-37x76zdn.js";
|
|
69
|
-
// src/workerName.ts
|
|
70
|
-
var workerName = (() => {
|
|
71
|
-
if (typeof __DEVFLARE_WORKER_NAME__ !== "undefined") {
|
|
72
|
-
return __DEVFLARE_WORKER_NAME__;
|
|
73
|
-
}
|
|
74
|
-
if (typeof process !== "undefined" && process.env?.DEVFLARE_WORKER_NAME) {
|
|
75
|
-
return process.env.DEVFLARE_WORKER_NAME;
|
|
76
|
-
}
|
|
77
|
-
return "unknown";
|
|
78
|
-
})();
|
|
79
78
|
// src/cli/index.ts
|
|
80
79
|
import { createConsola } from "consola";
|
|
81
80
|
var COMMANDS = ["init", "dev", "build", "deploy", "types", "doctor", "account", "ai", "remote", "help", "version"];
|
|
@@ -216,23 +215,23 @@ async function runInit(parsed, logger, options) {
|
|
|
216
215
|
return runInitCommand(parsed, logger, options);
|
|
217
216
|
}
|
|
218
217
|
async function runDev(parsed, logger, options) {
|
|
219
|
-
const { runDevCommand } = await import("./dev-
|
|
218
|
+
const { runDevCommand } = await import("./dev-7agn9g5s.js");
|
|
220
219
|
return runDevCommand(parsed, logger, options);
|
|
221
220
|
}
|
|
222
221
|
async function runBuild(parsed, logger, options) {
|
|
223
|
-
const { runBuildCommand } = await import("./build-
|
|
222
|
+
const { runBuildCommand } = await import("./build-nz5yrj7f.js");
|
|
224
223
|
return runBuildCommand(parsed, logger, options);
|
|
225
224
|
}
|
|
226
225
|
async function runDeploy(parsed, logger, options) {
|
|
227
|
-
const { runDeployCommand } = await import("./deploy-
|
|
226
|
+
const { runDeployCommand } = await import("./deploy-a5pcxd5w.js");
|
|
228
227
|
return runDeployCommand(parsed, logger, options);
|
|
229
228
|
}
|
|
230
229
|
async function runTypes(parsed, logger, options) {
|
|
231
|
-
const { runTypesCommand } = await import("./types-
|
|
230
|
+
const { runTypesCommand } = await import("./types-vss6vrz7.js");
|
|
232
231
|
return runTypesCommand(parsed, logger, options);
|
|
233
232
|
}
|
|
234
233
|
async function runDoctor(parsed, logger, options) {
|
|
235
|
-
const { runDoctorCommand } = await import("./doctor-
|
|
234
|
+
const { runDoctorCommand } = await import("./doctor-v7jy4s3r.js");
|
|
236
235
|
return runDoctorCommand(parsed, logger, options);
|
|
237
236
|
}
|
|
238
237
|
async function runAccount(parsed, logger, options) {
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { env, ctx, event, locals, type EventContext } from './exports';
|
|
2
|
+
export { runWithContext, getContext, getContextOrNull, hasContext, ContextUnavailableError, type RequestContext } from './context';
|
|
1
3
|
export { createContextProxy, ContextAccessError } from './validation';
|
|
2
4
|
export { sequence, resolve, pipe, type Middleware, type Handler } from './middleware';
|
|
3
5
|
export { durableObject, getDurableObjectOptions, type DurableObjectOptions } from '../decorators';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACN,GAAG,EACH,GAAG,EACH,KAAK,EACL,MAAM,EACN,KAAK,YAAY,EACjB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACN,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,uBAAuB,EACvB,KAAK,cAAc,EACnB,MAAM,WAAW,CAAA;AAGlB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAGrE,OAAO,EACN,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,MAAM,cAAc,CAAA;AAGrB,OAAO,EACN,aAAa,EACb,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,MAAM,eAAe,CAAA"}
|