UNPKG

1.8 kBJavaScriptView Raw
1import { isProxyable, wrap } from '../wrap.js';
2import { instrumentDOBinding } from './do.js';
3import { instrumentKV } from './kv.js';
4import { instrumentQueueSender } from './queue.js';
5import { instrumentServiceBinding } from './service.js';
6import { instrumentAnalyticsEngineDataset } from './analytics-engine';
7const isKVNamespace = (item) => {
8 return !!item?.getWithMetadata;
9};
10const isQueue = (item) => {
11 return !!item?.sendBatch;
12};
13const isDurableObject = (item) => {
14 return !!item?.idFromName;
15};
16const isServiceBinding = (item) => {
17 const binding = item;
18 return !!binding.connect || !!binding.fetch || binding.queue || binding.scheduled;
19};
20const isAnalyticsEngineDataset = (item) => {
21 return !!item?.writeDataPoint;
22};
23const instrumentEnv = (env) => {
24 const envHandler = {
25 get: (target, prop, receiver) => {
26 const item = Reflect.get(target, prop, receiver);
27 if (!isProxyable(item)) {
28 return item;
29 }
30 if (isKVNamespace(item)) {
31 return instrumentKV(item, String(prop));
32 }
33 else if (isQueue(item)) {
34 return instrumentQueueSender(item, String(prop));
35 }
36 else if (isDurableObject(item)) {
37 return instrumentDOBinding(item, String(prop));
38 }
39 else if (isServiceBinding(item)) {
40 return instrumentServiceBinding(item, String(prop));
41 }
42 else if (isAnalyticsEngineDataset(item)) {
43 return instrumentAnalyticsEngineDataset(item, String(prop));
44 }
45 else {
46 return item;
47 }
48 },
49 };
50 return wrap(env, envHandler);
51};
52export { instrumentEnv };
53//# sourceMappingURL=env.js.map
\No newline at end of file