@rocicorp/zero 0.22.2025071101 → 0.22.2025071900

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.
Files changed (141) hide show
  1. package/out/{chunk-4FQJO7OM.js → chunk-A6LHZQIK.js} +26 -7
  2. package/out/{chunk-4FQJO7OM.js.map → chunk-A6LHZQIK.js.map} +2 -2
  3. package/out/{chunk-5A6QECBY.js → chunk-IQCMHXK7.js} +42 -16
  4. package/out/chunk-IQCMHXK7.js.map +7 -0
  5. package/out/{chunk-INLOZBST.js → chunk-P5M53J4D.js} +2 -3
  6. package/out/{chunk-INLOZBST.js.map → chunk-P5M53J4D.js.map} +2 -2
  7. package/out/{inspector-HDOYOVMS.js → inspector-TFZBDN6K.js} +2 -2
  8. package/out/react.js +2 -2
  9. package/out/replicache/src/kv/idb-store.d.ts.map +1 -1
  10. package/out/shared/src/options.d.ts +4 -1
  11. package/out/shared/src/options.d.ts.map +1 -1
  12. package/out/shared/src/options.js +1 -1
  13. package/out/shared/src/options.js.map +1 -1
  14. package/out/solid.js +7 -3
  15. package/out/solid.js.map +1 -1
  16. package/out/zero/package.json +161 -0
  17. package/out/zero-cache/src/config/normalize.d.ts +1 -0
  18. package/out/zero-cache/src/config/normalize.d.ts.map +1 -1
  19. package/out/zero-cache/src/config/normalize.js +10 -1
  20. package/out/zero-cache/src/config/normalize.js.map +1 -1
  21. package/out/zero-cache/src/config/zero-config.d.ts +44 -6
  22. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  23. package/out/zero-cache/src/config/zero-config.js +48 -54
  24. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  25. package/out/zero-cache/src/custom/fetch.d.ts +14 -1
  26. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  27. package/out/zero-cache/src/custom/fetch.js +56 -1
  28. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  29. package/out/zero-cache/src/custom-queries/transform-query.d.ts +1 -1
  30. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  31. package/out/zero-cache/src/custom-queries/transform-query.js +2 -1
  32. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  33. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +9 -0
  34. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -0
  35. package/out/zero-cache/src/server/anonymous-otel-start.js +289 -0
  36. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -0
  37. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  38. package/out/zero-cache/src/server/main.js +1 -5
  39. package/out/zero-cache/src/server/main.js.map +1 -1
  40. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  41. package/out/zero-cache/src/server/runner/zero-dispatcher.js +2 -2
  42. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  43. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  44. package/out/zero-cache/src/server/syncer.js +6 -3
  45. package/out/zero-cache/src/server/syncer.js.map +1 -1
  46. package/out/zero-cache/src/server/worker-dispatcher.js +3 -3
  47. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  48. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -7
  49. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  50. package/out/zero-cache/src/services/change-source/pg/change-source.js +43 -32
  51. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  52. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  53. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +24 -12
  54. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  55. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  56. package/out/zero-cache/src/services/mutagen/mutagen.js +4 -0
  57. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  58. package/out/zero-cache/src/services/mutagen/pusher.d.ts +4 -4
  59. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  60. package/out/zero-cache/src/services/mutagen/pusher.js +8 -5
  61. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  62. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +11 -8
  63. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  64. package/out/zero-cache/src/services/view-syncer/cvr-store.js +14 -13
  65. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  66. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +9 -16
  67. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  68. package/out/zero-cache/src/services/view-syncer/cvr.js +25 -28
  69. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  70. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  71. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +3 -0
  72. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  73. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +3 -2
  74. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  75. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  76. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +11 -11
  77. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  78. package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -2
  79. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  80. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +10 -0
  81. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +1 -0
  82. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -0
  83. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -0
  84. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +14 -13
  85. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  86. package/out/zero-cache/src/services/view-syncer/view-syncer.js +92 -124
  87. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  88. package/out/zero-cache/src/types/processes.d.ts +6 -6
  89. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  90. package/out/zero-cache/src/types/processes.js +2 -2
  91. package/out/zero-cache/src/types/processes.js.map +1 -1
  92. package/out/zero-cache/src/types/websocket-handoff.d.ts +2 -2
  93. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  94. package/out/zero-cache/src/types/websocket-handoff.js +4 -4
  95. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  96. package/out/zero-cache/src/workers/connection.d.ts +1 -1
  97. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  98. package/out/zero-cache/src/workers/connection.js +2 -0
  99. package/out/zero-cache/src/workers/connection.js.map +1 -1
  100. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +1 -1
  101. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  102. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  103. package/out/zero-cache/src/workers/syncer.js +3 -1
  104. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  105. package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
  106. package/out/zero-client/src/client/options.d.ts +9 -4
  107. package/out/zero-client/src/client/options.d.ts.map +1 -1
  108. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  109. package/out/zero-client/src/client/zero.d.ts +2 -2
  110. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  111. package/out/zero-client/src/mod.d.ts +1 -1
  112. package/out/zero-client/src/mod.d.ts.map +1 -1
  113. package/out/zero-protocol/src/connect.d.ts +24 -2
  114. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  115. package/out/zero-protocol/src/connect.js +17 -2
  116. package/out/zero-protocol/src/connect.js.map +1 -1
  117. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  118. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  119. package/out/zero-protocol/src/protocol-version.js +2 -1
  120. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  121. package/out/zero-protocol/src/up.d.ts +5 -0
  122. package/out/zero-protocol/src/up.d.ts.map +1 -1
  123. package/out/zero-server/src/queries/process-queries.d.ts +1 -1
  124. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  125. package/out/zero-server/src/queries/process-queries.js +1 -1
  126. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  127. package/out/zero-solid/src/mod.d.ts +2 -2
  128. package/out/zero-solid/src/mod.d.ts.map +1 -1
  129. package/out/zero.js +9 -7
  130. package/out/zql/src/query/named.d.ts +11 -11
  131. package/out/zql/src/query/named.d.ts.map +1 -1
  132. package/out/zql/src/query/named.js +20 -2
  133. package/out/zql/src/query/named.js.map +1 -1
  134. package/out/zql/src/query/query-impl.js +1 -1
  135. package/out/zql/src/query/query-impl.js.map +1 -1
  136. package/out/zql/src/query/query.d.ts +12 -3
  137. package/out/zql/src/query/query.d.ts.map +1 -1
  138. package/out/zql/src/query/query.js.map +1 -1
  139. package/package.json +2 -2
  140. package/out/chunk-5A6QECBY.js.map +0 -7
  141. /package/out/{inspector-HDOYOVMS.js.map → inspector-TFZBDN6K.js.map} +0 -0
@@ -129,6 +129,37 @@ const authOptions = {
129
129
  ],
130
130
  },
131
131
  };
132
+ const makeMutatorQueryOptions = (replacement, suffix) => ({
133
+ url: {
134
+ type: v.array(v.string()).optional(), // optional until we remove CRUD mutations
135
+ desc: [
136
+ replacement ? `DEPRECATED. Use ${replacement} instead.` : ``,
137
+ `The URL of the API server to which zero-cache will ${suffix}.`,
138
+ ``,
139
+ `* is allowed if you would like to allow the client to specify a subdomain to use.`,
140
+ `e.g., *.example.com/api/mutate`,
141
+ `You can specify multiple URLs as well which the client can choose from.`,
142
+ `e.g., ["https://api1.example.com/mutate", "https://api2.example.com/mutate"]`,
143
+ ],
144
+ },
145
+ apiKey: {
146
+ type: v.string().optional(),
147
+ desc: [
148
+ `An optional secret used to authorize zero-cache to call the API server handling writes.`,
149
+ ],
150
+ },
151
+ forwardCookies: {
152
+ type: v.boolean().default(false),
153
+ desc: [
154
+ `If true, zero-cache will forward cookies from the request.`,
155
+ `This is useful for passing authentication cookies to the API server.`,
156
+ `If false, cookies are not forwarded.`,
157
+ ],
158
+ },
159
+ });
160
+ const mutateOptions = makeMutatorQueryOptions(undefined, 'push mutations');
161
+ const pushOptions = makeMutatorQueryOptions('mutate-url', 'push mutations');
162
+ const queryOptions = makeMutatorQueryOptions(undefined, 'send named queries');
132
163
  // Note: --help will list flags in the order in which they are defined here,
133
164
  // so order the fields such that the important (e.g. required) ones are first.
134
165
  // (Exported for testing)
@@ -168,54 +199,9 @@ export const zeroOptions = {
168
199
  hidden: true, // Passed from main thread to sync workers
169
200
  },
170
201
  },
171
- push: {
172
- url: {
173
- type: v.string().optional(), // optional until we remove CRUD mutations
174
- desc: [
175
- `The URL of the API server to which zero-cache will push mutations.`,
176
- ],
177
- },
178
- apiKey: {
179
- type: v.string().optional(),
180
- desc: [
181
- `An optional secret used to authorize zero-cache to call the API server handling writes.`,
182
- ],
183
- },
184
- forwardCookies: {
185
- type: v.boolean().default(false),
186
- desc: [
187
- `If true, zero-cache will forward cookies from the request to the push URL.`,
188
- `This is useful for passing authentication cookies to the API server.`,
189
- `If false, cookies are not forwarded.`,
190
- ``,
191
- `Note that this option is only relevant if the {bold push-url} is set.`,
192
- ],
193
- },
194
- },
195
- pull: {
196
- url: {
197
- type: v.string().optional(),
198
- desc: [
199
- `The URL of the API server to which zero-cache will send named queries.`,
200
- ],
201
- },
202
- apiKey: {
203
- type: v.string().optional(),
204
- desc: [
205
- `An optional secret used to authorize zero-cache to call the API server handling reads.`,
206
- ],
207
- },
208
- forwardCookies: {
209
- type: v.boolean().default(false),
210
- desc: [
211
- `If true, zero-cache will forward cookies from the request to the pull URL.`,
212
- `This is useful for passing authentication cookies to the API server.`,
213
- `If false, cookies are not forwarded.`,
214
- ``,
215
- `Note that this option is only relevant if the {bold pull-url} is set.`,
216
- ],
217
- },
218
- },
202
+ push: pushOptions,
203
+ mutate: mutateOptions,
204
+ query: queryOptions,
219
205
  cvr: {
220
206
  db: {
221
207
  type: v.string().optional(),
@@ -505,13 +491,12 @@ export const zeroOptions = {
505
491
  },
506
492
  targetClientRowCount: {
507
493
  type: v.number().default(20_000),
508
- desc: [
509
- 'The target number of rows to keep per client in the client side cache.',
510
- 'This limit is a soft limit. When the number of rows in the cache exceeds',
511
- 'this limit, zero-cache will evict inactive queries in order of ttl-based expiration.',
512
- 'Active queries, on the other hand, are never evicted and are allowed to use more',
513
- 'rows than the limit.',
494
+ deprecated: [
495
+ 'This option is no longer used and will be removed in a future version.',
496
+ 'The client-side cache no longer enforces a row limit. Instead, TTL-based expiration',
497
+ 'automatically manages cache size to prevent unbounded growth.',
514
498
  ],
499
+ hidden: true,
515
500
  },
516
501
  lazyStartup: {
517
502
  type: v.boolean().default(false),
@@ -528,6 +513,15 @@ export const zeroOptions = {
528
513
  type: v.string().optional(),
529
514
  desc: [`The version string outputted to logs when the server starts up.`],
530
515
  },
516
+ enableUsageAnalytics: {
517
+ type: v.boolean().default(true),
518
+ desc: [
519
+ `Set to false to opt out of telemetry collection. `,
520
+ `This helps us improve Zero Cache by collecting`,
521
+ `anonymous usage statistics. Setting the DO_NOT_TRACK environment variable`,
522
+ `will also disable telemetry collection.`,
523
+ ],
524
+ },
531
525
  };
532
526
  export const ZERO_ENV_VAR_PREFIX = 'ZERO_';
533
527
  let loadedConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"zero-config.js","sourceRoot":"","sources":["../../../../../zero-cache/src/config/zero-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zero-config.js","sourceRoot":"","sources":["../../../../../zero-cache/src/config/zero-config.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,18 @@ export type HeaderOptions = {
5
5
  token?: string | undefined;
6
6
  cookie?: string | undefined;
7
7
  };
8
- export declare function fetchFromAPIServer(url: string, shard: ShardID, headerOptions: HeaderOptions, queryParams: Record<string, string> | undefined, body: ReadonlyJSONValue): Promise<Response>;
8
+ export declare function fetchFromAPIServer(url: string, allowedUrls: string[], shard: ShardID, headerOptions: HeaderOptions, queryParams: Record<string, string> | undefined, body: ReadonlyJSONValue): Promise<Response>;
9
+ /**
10
+ * Returns true if:
11
+ * 1. the url is an exact match with one of the allowedUrls
12
+ * 2. an "allowedUrl" has a wildcard for a subdomain, e.g. "https://*.example.com" and the url matches that pattern
13
+ *
14
+ * Valid wildcard patterns:
15
+ * - "https://*.example.com" matches "https://api.example.com" and "https://www.example.com"
16
+ * - "https://*.example.com" does not match "https://example.com" (no subdomain)
17
+ * - "https://*.example.com" does not match "https://api.example.com/path" (no trailing path)
18
+ * - "https://*.*.example.com" matches "https://api.v1.example.com" and "https://www.v2.example.com"
19
+ * - "https://*.*.example.com" does not match "https://api.example.com" (only one subdomain)
20
+ */
21
+ export declare function urlMatch(url: string, allowedUrls: string[]): boolean;
9
22
  //# sourceMappingURL=fetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/custom/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAKnE,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,IAAI,EAAE,iBAAiB,qBA2DxB"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/custom/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAKnE,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,IAAI,EAAE,iBAAiB,qBAgExB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CA+CpE"}
@@ -3,7 +3,10 @@ import { upstreamSchema } from "../types/shards.js";
3
3
  import { ErrorForClient } from "../types/error-for-client.js";
4
4
  import { ErrorKind } from "../../../zero-protocol/src/error-kind.js";
5
5
  const reservedParams = ['schema', 'appID'];
6
- export async function fetchFromAPIServer(url, shard, headerOptions, queryParams, body) {
6
+ export async function fetchFromAPIServer(url, allowedUrls, shard, headerOptions, queryParams, body) {
7
+ if (!urlMatch(url, allowedUrls)) {
8
+ throw new Error(`URL "${url}" is not allowed by the ZERO_MUTATE/QUERY_URL configuration`);
9
+ }
7
10
  const headers = {
8
11
  'Content-Type': 'application/json',
9
12
  };
@@ -52,4 +55,56 @@ export async function fetchFromAPIServer(url, shard, headerOptions, queryParams,
52
55
  }
53
56
  return response;
54
57
  }
58
+ /**
59
+ * Returns true if:
60
+ * 1. the url is an exact match with one of the allowedUrls
61
+ * 2. an "allowedUrl" has a wildcard for a subdomain, e.g. "https://*.example.com" and the url matches that pattern
62
+ *
63
+ * Valid wildcard patterns:
64
+ * - "https://*.example.com" matches "https://api.example.com" and "https://www.example.com"
65
+ * - "https://*.example.com" does not match "https://example.com" (no subdomain)
66
+ * - "https://*.example.com" does not match "https://api.example.com/path" (no trailing path)
67
+ * - "https://*.*.example.com" matches "https://api.v1.example.com" and "https://www.v2.example.com"
68
+ * - "https://*.*.example.com" does not match "https://api.example.com" (only one subdomain)
69
+ */
70
+ export function urlMatch(url, allowedUrls) {
71
+ assert(url.includes('*') === false, 'Client provided URLs may not include `*`');
72
+ // ignore query parameters in the URL
73
+ url = url.split('?')[0];
74
+ for (let allowedUrl of allowedUrls) {
75
+ // ignore query parameters in the allowed URL
76
+ allowedUrl = allowedUrl.split('?')[0];
77
+ if (url === allowedUrl) {
78
+ return true; // exact match
79
+ }
80
+ const parts = allowedUrl.split('*');
81
+ if (parts.length === 1) {
82
+ continue; // no wildcard, already checked above
83
+ }
84
+ let currentStr = url;
85
+ for (let i = 0; i < parts.length; i++) {
86
+ const part = parts[i];
87
+ if (!currentStr.startsWith(part)) {
88
+ break;
89
+ }
90
+ currentStr = currentStr.slice(part.length);
91
+ if (currentStr === '' && i < parts.length - 1) {
92
+ // if we reach the end of the string but still have more parts to match, it's not a match
93
+ break;
94
+ }
95
+ else if (currentStr === '' && i === parts.length - 1) {
96
+ // if we reach the end of the string and this is the last part, it's a match
97
+ return true;
98
+ }
99
+ // consume the rest of the string up to a .
100
+ const nextDotIndex = currentStr.indexOf('.');
101
+ if (nextDotIndex === -1) {
102
+ // no dot? then the wildcard rules don't apply, so we can stop checking
103
+ break;
104
+ }
105
+ currentStr = currentStr.slice(nextDotIndex);
106
+ }
107
+ }
108
+ return false;
109
+ }
55
110
  //# sourceMappingURL=fetch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../../zero-cache/src/custom/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAC,cAAc,EAAe,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAC,MAAM,0CAA0C,CAAC;AAEnE,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAO3C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,KAAc,EACd,aAA4B,EAC5B,WAA+C,EAC/C,IAAuB;IAEvB,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;IAC9C,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,CACJ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EACrB,yDAAyD,QAAQ,GAAG,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,2EAA2E;QAC3E,kGAAkG;QAClG,QAAQ;QACR,6EAA6E;QAC7E,2EAA2E;QAC3E,EAAE;QACF,0EAA0E;QAC1E,sDAAsD;QACtD,sEAAsE;QACtE,yEAAyE;QACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,cAAc,CAAC;gBACvB,IAAI,EAAE,SAAS,CAAC,eAAe;gBAC/B,OAAO,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../../zero-cache/src/custom/fetch.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ type HttpError = {
25
25
  export declare class CustomQueryTransformer {
26
26
  #private;
27
27
  constructor(config: {
28
- url: string;
28
+ url: string[];
29
29
  forwardCookies: boolean;
30
30
  }, shard: ShardID);
31
31
  transform(headerOptions: HeaderOptions, queries: Iterable<CustomQueryRecord>): Promise<(TransformedAndHashed | ErroredQuery)[] | HttpError>;
@@ -1 +1 @@
1
- {"version":3,"file":"transform-query.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/custom-queries/transform-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAqB,KAAK,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAKhD,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAsB;;gBAS/B,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,cAAc,EAAE,OAAO,CAAC;KACzB,EACD,KAAK,EAAE,OAAO;IAOV,SAAS,CACb,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACnC,OAAO,CAAC,CAAC,oBAAoB,GAAG,YAAY,CAAC,EAAE,GAAG,SAAS,CAAC;CAuEhE"}
1
+ {"version":3,"file":"transform-query.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/custom-queries/transform-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAqB,KAAK,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAMhD,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAsB;;gBAS/B,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,cAAc,EAAE,OAAO,CAAC;KACzB,EACD,KAAK,EAAE,OAAO;IAOV,SAAS,CACb,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACnC,OAAO,CAAC,CAAC,oBAAoB,GAAG,YAAY,CAAC,EAAE,GAAG,SAAS,CAAC;CA2EhE"}
@@ -3,6 +3,7 @@ import { fetchFromAPIServer } from "../custom/fetch.js";
3
3
  import * as v from "../../../shared/src/valita.js";
4
4
  import { hashOfAST } from "../../../zero-protocol/src/query-hash.js";
5
5
  import { TimedCache } from "../../../shared/src/cache.js";
6
+ import { must } from "../../../shared/src/must.js";
6
7
  /**
7
8
  * Transforms a custom query by calling the user's API server.
8
9
  * Caches the transformed queries for 5 seconds to avoid unnecessary API calls.
@@ -53,7 +54,7 @@ export class CustomQueryTransformer {
53
54
  if (request.length === 0) {
54
55
  return cachedResponses;
55
56
  }
56
- const response = await fetchFromAPIServer(this.#config.url, this.#shard, headerOptions, undefined, ['transform', request]);
57
+ const response = await fetchFromAPIServer(must(this.#config.url[0], 'A ZERO_QUERY_URL must be configured for custom queries'), this.#config.url, this.#shard, headerOptions, undefined, ['transform', request]);
57
58
  if (!response.ok) {
58
59
  return {
59
60
  error: 'http',
@@ -1 +1 @@
1
- {"version":3,"file":"transform-query.js","sourceRoot":"","sources":["../../../../../zero-cache/src/custom-queries/transform-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform-query.js","sourceRoot":"","sources":["../../../../../zero-cache/src/custom-queries/transform-query.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,GAI/B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,CAAC,MAAM,+BAA+B,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,0CAA0C,CAAC;AACnE,OAAO,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAC,IAAI,EAAC,MAAM,6BAA6B,CAAC;AAQjD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,sBAAsB;IACxB,MAAM,CAAU;IAChB,MAAM,CAAmC;IACzC,OAAO,CAGd;IAEF,YACE,MAGC,EACD,KAAc;QAEd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB;IAC5D,CAAC;IAED,KAAK,CAAC,SAAS,CACb,aAA4B,EAC5B,OAAoC;QAEpC,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,MAAM,eAAe,GAA2B,EAAE,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACzD,aAAa,GAAG;gBACd,GAAG,aAAa;gBAChB,MAAM,EAAE,SAAS,EAAE,kCAAkC;aACtD,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACvC,IAAI,CACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EACnB,wDAAwD,CACzD,EACD,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB,IAAI,CAAC,MAAM,EACX,aAAa,EACb,SAAS,EACT,CAAC,WAAW,EAAE,OAAO,CAAmC,CACzD,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC/B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;QAE1D,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC5C,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;gBAC3B,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,OAAO;gBACL,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,cAAc,EAAE,WAAW,CAAC,GAAG;gBAC/B,kBAAkB,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;aAChB,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;gBAC3B,+BAA+B;gBAC/B,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,WAAW,CAAC,aAA4B,EAAE,OAAe;IAChE,4DAA4D;IAC5D,yEAAyE;IACzE,kFAAkF;IAClF,OAAO,GAAG,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;AACrE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { LogContext } from '@rocicorp/logger';
2
+ import { type ZeroConfig } from '../config/zero-config.js';
3
+ export declare const startAnonymousTelemetry: (lc?: LogContext, config?: ZeroConfig) => void;
4
+ export declare const recordMutation: (count?: number) => void;
5
+ export declare const recordRowsSynced: (count: number) => void;
6
+ export declare const recordConnectionSuccess: () => void;
7
+ export declare const recordConnectionAttempted: () => void;
8
+ export declare const shutdownAnonymousTelemetry: () => void;
9
+ //# sourceMappingURL=anonymous-otel-start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymous-otel-start.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/anonymous-otel-start.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAgB,KAAK,UAAU,EAAC,MAAM,0BAA0B,CAAC;AA2VxE,eAAO,MAAM,uBAAuB,GAAI,KAAK,UAAU,EAAE,SAAS,UAAU,SAC/C,CAAC;AAC9B,eAAO,MAAM,cAAc,GAAI,cAAS,SAAoC,CAAC;AAC7E,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,SACX,CAAC;AACpC,eAAO,MAAM,uBAAuB,YACC,CAAC;AACtC,eAAO,MAAM,yBAAyB,YACC,CAAC;AACxC,eAAO,MAAM,0BAA0B,YAA6B,CAAC"}
@@ -0,0 +1,289 @@
1
+ import {} from '@opentelemetry/api';
2
+ import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
3
+ import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
4
+ import { MeterProvider } from '@opentelemetry/sdk-metrics';
5
+ import { resourceFromAttributes } from '@opentelemetry/resources';
6
+ import { platform } from 'os';
7
+ import { h64 } from '../../../shared/src/hash.js';
8
+ import packageJson from '../../../zero/package.json' with { type: 'json' };
9
+ import { getZeroConfig } from '../config/zero-config.js';
10
+ import { execSync } from 'child_process';
11
+ import { randomUUID } from 'crypto';
12
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
13
+ import { join, dirname } from 'path';
14
+ import { homedir } from 'os';
15
+ class AnonymousTelemetryManager {
16
+ static #instance;
17
+ #starting = false;
18
+ #stopped = false;
19
+ #meter;
20
+ #meterProvider;
21
+ #totalMutations = 0;
22
+ #totalRowsSynced = 0;
23
+ #totalConnectionsSuccess = 0;
24
+ #totalConnectionsAttempted = 0;
25
+ #lc;
26
+ #config;
27
+ #processId;
28
+ #cachedAttributes;
29
+ #viewSyncerCount = 1;
30
+ constructor() {
31
+ this.#processId = randomUUID();
32
+ }
33
+ static getInstance() {
34
+ if (!AnonymousTelemetryManager.#instance) {
35
+ AnonymousTelemetryManager.#instance = new AnonymousTelemetryManager();
36
+ }
37
+ return AnonymousTelemetryManager.#instance;
38
+ }
39
+ start(lc, config) {
40
+ if (!config) {
41
+ try {
42
+ config = getZeroConfig();
43
+ }
44
+ catch (e) {
45
+ this.#lc?.debug?.('Anonymous telemetry disabled: unable to parse config', e);
46
+ return;
47
+ }
48
+ }
49
+ if (process.env.DO_NOT_TRACK) {
50
+ this.#lc?.debug?.('Anonymous telemetry disabled: DO_NOT_TRACK environment variable is set');
51
+ return;
52
+ }
53
+ if (this.#starting || !config.enableUsageAnalytics) {
54
+ return;
55
+ }
56
+ this.#starting = true;
57
+ this.#lc = lc;
58
+ this.#config = config;
59
+ this.#viewSyncerCount = config.numSyncWorkers ?? 1;
60
+ this.#cachedAttributes = undefined;
61
+ this.#lc?.info?.(`Anonymous telemetry will start in 1 minute`);
62
+ // Delay telemetry startup by 1 minute to avoid potential boot loop issues
63
+ setTimeout(() => this.#run(), 60000);
64
+ }
65
+ #run() {
66
+ if (this.#stopped) {
67
+ return;
68
+ }
69
+ const resource = resourceFromAttributes(this.#getAttributes());
70
+ const metricReader = new PeriodicExportingMetricReader({
71
+ exportIntervalMillis: 60000 * this.#viewSyncerCount,
72
+ exporter: new OTLPMetricExporter({
73
+ url: 'https://metrics.rocicorp.dev',
74
+ }),
75
+ });
76
+ this.#meterProvider = new MeterProvider({
77
+ resource,
78
+ readers: [metricReader],
79
+ });
80
+ this.#meter = this.#meterProvider.getMeter('zero-anonymous-telemetry');
81
+ this.#setupMetrics();
82
+ this.#lc?.info?.(`Anonymous telemetry started (exports every ${60 * this.#viewSyncerCount} seconds, scaled by ${this.#viewSyncerCount} view-syncers)`);
83
+ }
84
+ #setupMetrics() {
85
+ // Observable gauges
86
+ const uptimeGauge = this.#meter.createObservableGauge('zero.uptime', {
87
+ description: 'System uptime in seconds',
88
+ unit: 'seconds',
89
+ });
90
+ // Observable counters
91
+ const uptimeCounter = this.#meter.createObservableCounter('zero.uptime_counter', {
92
+ description: 'System uptime in seconds',
93
+ unit: 'seconds',
94
+ });
95
+ const mutationsCounter = this.#meter.createObservableCounter('zero.mutations_processed', {
96
+ description: 'Total number of mutations processed',
97
+ });
98
+ const rowsSyncedCounter = this.#meter.createObservableCounter('zero.rows_synced', {
99
+ description: 'Total number of rows synced',
100
+ });
101
+ // Observable counters for connections
102
+ const connectionsSuccessCounter = this.#meter.createObservableCounter('zero.connections_success', {
103
+ description: 'Total number of successful connections',
104
+ });
105
+ const connectionsAttemptedCounter = this.#meter.createObservableCounter('zero.connections_attempted', {
106
+ description: 'Total number of attempted connections',
107
+ });
108
+ // Callbacks
109
+ const attrs = this.#getAttributes();
110
+ uptimeGauge.addCallback((result) => {
111
+ const uptimeSeconds = Math.floor(process.uptime());
112
+ result.observe(uptimeSeconds, attrs);
113
+ this.#lc?.debug?.(`Telemetry: uptime=${uptimeSeconds}s`);
114
+ });
115
+ uptimeCounter.addCallback((result) => {
116
+ const uptimeSeconds = Math.floor(process.uptime());
117
+ result.observe(uptimeSeconds, attrs);
118
+ this.#lc?.debug?.(`Telemetry: uptime_counter=${uptimeSeconds}s`);
119
+ });
120
+ mutationsCounter.addCallback((result) => {
121
+ result.observe(this.#totalMutations, attrs);
122
+ this.#lc?.debug?.(`Telemetry: mutations_processed=${this.#totalMutations}`);
123
+ });
124
+ rowsSyncedCounter.addCallback((result) => {
125
+ result.observe(this.#totalRowsSynced, attrs);
126
+ this.#lc?.debug?.(`Telemetry: rows_synced=${this.#totalRowsSynced}`);
127
+ });
128
+ connectionsSuccessCounter.addCallback((result) => {
129
+ result.observe(this.#totalConnectionsSuccess, attrs);
130
+ this.#lc?.debug?.(`Telemetry: connections_success=${this.#totalConnectionsSuccess}`);
131
+ });
132
+ connectionsAttemptedCounter.addCallback((result) => {
133
+ result.observe(this.#totalConnectionsAttempted, attrs);
134
+ this.#lc?.debug?.(`Telemetry: connections_attempted=${this.#totalConnectionsAttempted}`);
135
+ });
136
+ }
137
+ recordMutation(count = 1) {
138
+ this.#totalMutations += count;
139
+ }
140
+ recordRowsSynced(count) {
141
+ this.#totalRowsSynced += count;
142
+ }
143
+ recordConnectionSuccess() {
144
+ this.#totalConnectionsSuccess++;
145
+ }
146
+ recordConnectionAttempted() {
147
+ this.#totalConnectionsAttempted++;
148
+ }
149
+ shutdown() {
150
+ this.#stopped = true;
151
+ if (this.#meterProvider) {
152
+ this.#lc?.info?.('Shutting down anonymous telemetry');
153
+ void this.#meterProvider.shutdown();
154
+ }
155
+ }
156
+ #getAttributes() {
157
+ if (!this.#cachedAttributes) {
158
+ this.#cachedAttributes = {
159
+ 'zero.app.id': h64(this.#config?.upstream.db || 'unknown').toString(),
160
+ 'zero.machine.os': platform(),
161
+ 'zero.telemetry.type': 'anonymous',
162
+ 'zero.infra.platform': this.#getPlatform(),
163
+ 'zero.version': this.#config?.serverVersion ?? packageJson.version,
164
+ 'zero.task.id': this.#config?.taskID || 'unknown',
165
+ 'zero.project.id': this.#getGitProjectId(),
166
+ 'zero.process.id': this.#processId,
167
+ 'zero.fs.id': this.#getOrSetFsID(),
168
+ };
169
+ this.#lc?.debug?.(`Telemetry: cached attributes=${JSON.stringify(this.#cachedAttributes)}`);
170
+ }
171
+ return this.#cachedAttributes;
172
+ }
173
+ #getPlatform() {
174
+ if (process.env.FLY_APP_NAME || process.env.FLY_REGION)
175
+ return 'fly.io';
176
+ if (process.env.ECS_CONTAINER_METADATA_URI_V4 ||
177
+ process.env.ECS_CONTAINER_METADATA_URI ||
178
+ process.env.AWS_EXECUTION_ENV)
179
+ return 'aws';
180
+ if (process.env.RAILWAY_ENV || process.env.RAILWAY_STATIC_URL)
181
+ return 'railway';
182
+ if (process.env.RENDER || process.env.RENDER_SERVICE_ID)
183
+ return 'render';
184
+ if (process.env.GCP_PROJECT ||
185
+ process.env.GCLOUD_PROJECT ||
186
+ process.env.GOOGLE_CLOUD_PROJECT)
187
+ return 'gcp';
188
+ if (process.env.COOLIFY_URL || process.env.COOLIFY_CONTAINER_NAME)
189
+ return 'coolify';
190
+ return 'unknown';
191
+ }
192
+ #findUp(startDir, target) {
193
+ let dir = startDir;
194
+ while (dir !== dirname(dir)) {
195
+ if (existsSync(join(dir, target)))
196
+ return dir;
197
+ dir = dirname(dir);
198
+ }
199
+ return null;
200
+ }
201
+ #getGitProjectId() {
202
+ try {
203
+ const cwd = process.cwd();
204
+ const gitRoot = this.#findUp(cwd, '.git');
205
+ if (!gitRoot) {
206
+ return 'unknown';
207
+ }
208
+ const rootCommitHash = execSync('git rev-list --max-parents=0 HEAD -1', {
209
+ cwd: gitRoot,
210
+ encoding: 'utf8',
211
+ timeout: 1000,
212
+ stdio: ['ignore', 'pipe', 'ignore'], // Suppress stderr
213
+ }).trim();
214
+ return rootCommitHash.length === 40 ? rootCommitHash : 'unknown';
215
+ }
216
+ catch (error) {
217
+ this.#lc?.debug?.('Unable to get Git root commit:', error);
218
+ return 'unknown';
219
+ }
220
+ }
221
+ #getOrSetFsID() {
222
+ try {
223
+ if (this.#isInContainer()) {
224
+ return 'container';
225
+ }
226
+ const fsidPath = join(homedir(), '.rocicorp', 'fsid');
227
+ const fsidDir = dirname(fsidPath);
228
+ mkdirSync(fsidDir, { recursive: true });
229
+ // Always try atomic file creation first - this eliminates any race conditions
230
+ const newId = randomUUID();
231
+ try {
232
+ writeFileSync(fsidPath, newId, { encoding: 'utf8', flag: 'wx' });
233
+ return newId;
234
+ }
235
+ catch (writeError) {
236
+ if (writeError.code === 'EEXIST') {
237
+ const existingId = readFileSync(fsidPath, 'utf8').trim();
238
+ return existingId;
239
+ }
240
+ throw writeError;
241
+ }
242
+ }
243
+ catch (error) {
244
+ this.#lc?.debug?.('Unable to get or set filesystem ID:', error);
245
+ return 'unknown';
246
+ }
247
+ }
248
+ #isInContainer() {
249
+ try {
250
+ if (process.env.ZERO_IN_CONTAINER) {
251
+ return true;
252
+ }
253
+ if (existsSync('/.dockerenv')) {
254
+ return true;
255
+ }
256
+ if (existsSync('/usr/local/bin/docker-entrypoint.sh')) {
257
+ return true;
258
+ }
259
+ if (process.env.KUBERNETES_SERVICE_HOST) {
260
+ return true;
261
+ }
262
+ if (process.env.DOCKER_CONTAINER_ID ||
263
+ process.env.HOSTNAME?.match(/^[a-f0-9]{12}$/)) {
264
+ return true;
265
+ }
266
+ if (existsSync('/proc/1/cgroup')) {
267
+ const cgroup = readFileSync('/proc/1/cgroup', 'utf8');
268
+ if (cgroup.includes('docker') ||
269
+ cgroup.includes('kubepods') ||
270
+ cgroup.includes('containerd')) {
271
+ return true;
272
+ }
273
+ }
274
+ return false;
275
+ }
276
+ catch (error) {
277
+ this.#lc?.debug?.('Unable to detect container environment:', error);
278
+ return false;
279
+ }
280
+ }
281
+ }
282
+ const manager = () => AnonymousTelemetryManager.getInstance();
283
+ export const startAnonymousTelemetry = (lc, config) => manager().start(lc, config);
284
+ export const recordMutation = (count = 1) => manager().recordMutation(count);
285
+ export const recordRowsSynced = (count) => manager().recordRowsSynced(count);
286
+ export const recordConnectionSuccess = () => manager().recordConnectionSuccess();
287
+ export const recordConnectionAttempted = () => manager().recordConnectionAttempted();
288
+ export const shutdownAnonymousTelemetry = () => manager().shutdown();
289
+ //# sourceMappingURL=anonymous-otel-start.js.map