miniflare 0.0.0-e4fe35cc5 → 0.0.0-e7ea6005c

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.
@@ -8654,20 +8654,85 @@ function setupSentry(request, context, dsn, clientId, clientSecret) {
8654
8654
  return sentry.setUser({ userAgent, colo }), sentry;
8655
8655
  }
8656
8656
 
8657
+ // ../workers-shared/router-worker/src/analytics.ts
8658
+ var Analytics = class {
8659
+ data = {};
8660
+ setData(newData) {
8661
+ this.data = { ...this.data, ...newData };
8662
+ }
8663
+ getData(key) {
8664
+ return this.data[key];
8665
+ }
8666
+ write(env, readyAnalytics, hostname) {
8667
+ readyAnalytics && readyAnalytics.logEvent({
8668
+ version: 1,
8669
+ accountId: 0,
8670
+ // TODO: need to plumb through
8671
+ indexId: hostname,
8672
+ doubles: [
8673
+ this.data.requestTime ?? -1,
8674
+ // double1
8675
+ this.data.coloId ?? -1,
8676
+ // double2
8677
+ this.data.metalId ?? -1,
8678
+ // double3
8679
+ this.data.coloTier ?? -1
8680
+ // double4
8681
+ ],
8682
+ blobs: [
8683
+ this.data.hostname?.substring(0, 256),
8684
+ // blob1 - trim to 256 bytes
8685
+ this.data.dispatchtype,
8686
+ // blob2
8687
+ this.data.error?.substring(0, 256),
8688
+ // blob3 - trim to 256 bytes
8689
+ this.data.version,
8690
+ // blob4
8691
+ this.data.coloRegion
8692
+ // blob5
8693
+ ]
8694
+ });
8695
+ }
8696
+ };
8697
+
8698
+ // ../workers-shared/router-worker/src/performance.ts
8699
+ var PerformanceTimer = class {
8700
+ performanceTimer;
8701
+ constructor(performanceTimer) {
8702
+ this.performanceTimer = performanceTimer;
8703
+ }
8704
+ now() {
8705
+ return this.performanceTimer ? this.performanceTimer.timeOrigin + this.performanceTimer.now() : Date.now();
8706
+ }
8707
+ };
8708
+
8657
8709
  // ../workers-shared/router-worker/src/index.ts
8658
8710
  var src_default = {
8659
8711
  async fetch(request, env, ctx) {
8660
- let sentry, maybeSecondRequest = request.clone();
8712
+ let sentry, analytics = new Analytics(), performance = new PerformanceTimer(env.UNSAFE_PERFORMANCE), startTimeMs = performance.now();
8661
8713
  try {
8662
- return sentry = setupSentry(
8714
+ sentry = setupSentry(
8663
8715
  request,
8664
8716
  ctx,
8665
8717
  env.SENTRY_DSN,
8666
8718
  env.SENTRY_ACCESS_CLIENT_ID,
8667
8719
  env.SENTRY_ACCESS_CLIENT_SECRET
8668
- ), env.CONFIG.has_user_worker ? await env.ASSET_WORKER.unstable_canFetch(request) ? await env.ASSET_WORKER.fetch(maybeSecondRequest) : env.USER_WORKER.fetch(maybeSecondRequest) : await env.ASSET_WORKER.fetch(request);
8720
+ );
8721
+ 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({
8723
+ coloId: env.COLO_METADATA.coloId,
8724
+ metalId: env.COLO_METADATA.metalId,
8725
+ coloTier: env.COLO_METADATA.coloTier,
8726
+ coloRegion: env.COLO_METADATA.coloRegion,
8727
+ hostname: url.hostname,
8728
+ version: env.VERSION_METADATA.id
8729
+ });
8730
+ 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));
8669
8732
  } catch (err) {
8670
- throw sentry && sentry.captureException(err), err;
8733
+ throw err instanceof Error && analytics.setData({ error: err.message }), sentry && sentry.captureException(err), err;
8734
+ } finally {
8735
+ analytics.setData({ requestTime: performance.now() - startTimeMs }), analytics.write(env.ENVIRONMENT, env.ANALYTICS);
8671
8736
  }
8672
8737
  }
8673
8738
  };