miniflare 0.0.0-e1d2fd668 → 0.0.0-e2b3306e1

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.
@@ -8632,7 +8632,7 @@ var PerformanceTimer = class {
8632
8632
 
8633
8633
  // ../workers-shared/utils/sentry.ts
8634
8634
  var import_toucan_js = __toESM(require_index_cjs());
8635
- function setupSentry(request, context, dsn, clientId, clientSecret) {
8635
+ function setupSentry(request, context, dsn, clientId, clientSecret, coloMetadata, accountId, scriptId) {
8636
8636
  if (!(dsn && clientId && clientSecret))
8637
8637
  return;
8638
8638
  let sentry = new import_toucan_js.Toucan({
@@ -8659,27 +8659,58 @@ function setupSentry(request, context, dsn, clientId, clientSecret) {
8659
8659
  "CF-Access-Client-Secret": clientSecret
8660
8660
  }
8661
8661
  }
8662
- }), colo = request.cf?.colo ?? "UNKNOWN";
8663
- sentry.setTag("colo", colo);
8664
- let userAgent = request.headers.get("user-agent") ?? "UA UNKNOWN";
8665
- return sentry.setUser({ userAgent, colo }), sentry;
8662
+ });
8663
+ return coloMetadata && (sentry.setTag("colo", coloMetadata.coloId), sentry.setTag("metal", coloMetadata.metalId)), accountId && scriptId && (sentry.setTag("accountId", accountId), sentry.setTag("scriptId", scriptId)), sentry.setUser({ id: accountId?.toString() }), sentry;
8664
+ }
8665
+
8666
+ // ../workers-shared/utils/tracing.ts
8667
+ function mockJaegerBindingSpan() {
8668
+ return {
8669
+ addLogs: () => {
8670
+ },
8671
+ setTags: () => {
8672
+ },
8673
+ end: () => {
8674
+ },
8675
+ isRecording: !0
8676
+ };
8677
+ }
8678
+ function mockJaegerBinding() {
8679
+ return {
8680
+ enterSpan: (_, span, ...args) => span(mockJaegerBindingSpan(), ...args),
8681
+ getSpanContext: () => ({
8682
+ traceId: "test-trace",
8683
+ spanId: "test-span",
8684
+ parentSpanId: "test-parent-span",
8685
+ traceFlags: 0
8686
+ }),
8687
+ runWithSpanContext: (_, callback, ...args) => callback(...args),
8688
+ traceId: "test-trace",
8689
+ spanId: "test-span",
8690
+ parentSpanId: "test-parent-span",
8691
+ cfTraceIdHeader: "test-trace:test-span:0"
8692
+ };
8666
8693
  }
8667
8694
 
8668
8695
  // ../workers-shared/router-worker/src/analytics.ts
8669
8696
  var Analytics = class {
8670
8697
  data = {};
8698
+ readyAnalytics;
8699
+ hasWritten = !1;
8700
+ constructor(readyAnalytics) {
8701
+ this.readyAnalytics = readyAnalytics;
8702
+ }
8671
8703
  setData(newData) {
8672
8704
  this.data = { ...this.data, ...newData };
8673
8705
  }
8674
8706
  getData(key) {
8675
8707
  return this.data[key];
8676
8708
  }
8677
- write(env, readyAnalytics, hostname) {
8678
- readyAnalytics && readyAnalytics.logEvent({
8709
+ write() {
8710
+ this.hasWritten || this.readyAnalytics && (this.hasWritten = !0, this.readyAnalytics.logEvent({
8679
8711
  version: 1,
8680
- accountId: 0,
8681
- // TODO: need to plumb through
8682
- indexId: hostname,
8712
+ accountId: this.data.accountId,
8713
+ indexId: this.data.scriptId?.toString(),
8683
8714
  doubles: [
8684
8715
  this.data.requestTime ?? -1,
8685
8716
  // double1
@@ -8687,8 +8718,9 @@ var Analytics = class {
8687
8718
  // double2
8688
8719
  this.data.metalId ?? -1,
8689
8720
  // double3
8690
- this.data.coloTier ?? -1
8721
+ this.data.coloTier ?? -1,
8691
8722
  // double4
8723
+ this.data.userWorkerAhead === void 0 ? -1 : Number(this.data.userWorkerAhead)
8692
8724
  ],
8693
8725
  blobs: [
8694
8726
  this.data.hostname?.substring(0, 256),
@@ -8702,37 +8734,65 @@ var Analytics = class {
8702
8734
  this.data.coloRegion
8703
8735
  // blob5
8704
8736
  ]
8705
- });
8737
+ }));
8706
8738
  }
8707
8739
  };
8708
8740
 
8709
8741
  // ../workers-shared/router-worker/src/index.ts
8710
8742
  var src_default = {
8711
8743
  async fetch(request, env, ctx) {
8712
- let sentry, analytics = new Analytics(), performance = new PerformanceTimer(env.UNSAFE_PERFORMANCE), startTimeMs = performance.now();
8744
+ let sentry, userWorkerInvocation = !1, analytics = new Analytics(env.ANALYTICS), performance = new PerformanceTimer(env.UNSAFE_PERFORMANCE), startTimeMs = performance.now();
8713
8745
  try {
8714
- sentry = setupSentry(
8746
+ env.JAEGER || (env.JAEGER = mockJaegerBinding()), sentry = setupSentry(
8715
8747
  request,
8716
8748
  ctx,
8717
8749
  env.SENTRY_DSN,
8718
8750
  env.SENTRY_ACCESS_CLIENT_ID,
8719
- env.SENTRY_ACCESS_CLIENT_SECRET
8751
+ env.SENTRY_ACCESS_CLIENT_SECRET,
8752
+ env.COLO_METADATA,
8753
+ env.CONFIG?.account_id,
8754
+ env.CONFIG?.script_id
8720
8755
  );
8721
8756
  let url = new URL(request.url);
8722
- sentry && (sentry.setUser({ username: url.hostname }), sentry.setTag("colo", env.COLO_METADATA.coloId), sentry.setTag("metal", env.COLO_METADATA.metalId)), env.COLO_METADATA && env.VERSION_METADATA && analytics.setData({
8757
+ env.COLO_METADATA && env.VERSION_METADATA && env.CONFIG && analytics.setData({
8758
+ accountId: env.CONFIG.account_id,
8759
+ scriptId: env.CONFIG.script_id,
8723
8760
  coloId: env.COLO_METADATA.coloId,
8724
8761
  metalId: env.COLO_METADATA.metalId,
8725
8762
  coloTier: env.COLO_METADATA.coloTier,
8726
8763
  coloRegion: env.COLO_METADATA.coloRegion,
8727
8764
  hostname: url.hostname,
8728
- version: env.VERSION_METADATA.id
8765
+ version: env.VERSION_METADATA.id,
8766
+ userWorkerAhead: env.CONFIG.invoke_user_worker_ahead_of_assets
8729
8767
  });
8730
8768
  let maybeSecondRequest = request.clone();
8731
- return env.CONFIG.has_user_worker ? await env.ASSET_WORKER.unstable_canFetch(request) ? (analytics.setData({ dispatchtype: "asset" /* ASSETS */ }), await env.ASSET_WORKER.fetch(maybeSecondRequest)) : (analytics.setData({ dispatchtype: "worker" /* WORKER */ }), env.USER_WORKER.fetch(maybeSecondRequest)) : (analytics.setData({ dispatchtype: "asset" /* ASSETS */ }), await env.ASSET_WORKER.fetch(request));
8769
+ if (env.CONFIG.invoke_user_worker_ahead_of_assets) {
8770
+ if (!env.CONFIG.has_user_worker)
8771
+ throw new Error(
8772
+ "Fetch for user worker without having a user worker binding"
8773
+ );
8774
+ return analytics.setData({ dispatchtype: "worker" /* WORKER */ }), await env.JAEGER.enterSpan("dispatch_worker", async (span) => (span.setTags({
8775
+ hasUserWorker: !0,
8776
+ asset: "ignored",
8777
+ dispatchType: "worker" /* WORKER */
8778
+ }), userWorkerInvocation = !0, env.USER_WORKER.fetch(maybeSecondRequest)));
8779
+ }
8780
+ let assetsExist = await env.ASSET_WORKER.unstable_canFetch(request);
8781
+ return env.CONFIG.has_user_worker && !assetsExist ? (analytics.setData({ dispatchtype: "worker" /* WORKER */ }), await env.JAEGER.enterSpan("dispatch_worker", async (span) => (span.setTags({
8782
+ hasUserWorker: env.CONFIG.has_user_worker || !1,
8783
+ asset: assetsExist,
8784
+ dispatchType: "worker" /* WORKER */
8785
+ }), userWorkerInvocation = !0, env.USER_WORKER.fetch(maybeSecondRequest)))) : (analytics.setData({ dispatchtype: "asset" /* ASSETS */ }), await env.JAEGER.enterSpan("dispatch_assets", async (span) => (span.setTags({
8786
+ hasUserWorker: env.CONFIG.has_user_worker || !1,
8787
+ asset: assetsExist,
8788
+ dispatchType: "asset" /* ASSETS */
8789
+ }), env.ASSET_WORKER.fetch(maybeSecondRequest))));
8732
8790
  } catch (err) {
8791
+ if (userWorkerInvocation)
8792
+ return;
8733
8793
  throw err instanceof Error && analytics.setData({ error: err.message }), sentry && sentry.captureException(err), err;
8734
8794
  } finally {
8735
- analytics.setData({ requestTime: performance.now() - startTimeMs }), analytics.write(env.ENVIRONMENT, env.ANALYTICS);
8795
+ analytics.setData({ requestTime: performance.now() - startTimeMs }), analytics.write();
8736
8796
  }
8737
8797
  }
8738
8798
  };