@rocicorp/zero 0.22.2025071101 → 0.22.2025072500

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 (189) hide show
  1. package/out/{chunk-4FQJO7OM.js → chunk-CPTFADYI.js} +26 -7
  2. package/out/{chunk-4FQJO7OM.js.map → chunk-CPTFADYI.js.map} +2 -2
  3. package/out/{chunk-INLOZBST.js → chunk-P5M53J4D.js} +2 -3
  4. package/out/{chunk-INLOZBST.js.map → chunk-P5M53J4D.js.map} +2 -2
  5. package/out/{chunk-5A6QECBY.js → chunk-ROYQ5GXF.js} +230 -137
  6. package/out/chunk-ROYQ5GXF.js.map +7 -0
  7. package/out/{inspector-HDOYOVMS.js → inspector-TFZBDN6K.js} +2 -2
  8. package/out/otel/src/enabled.d.ts +5 -0
  9. package/out/otel/src/enabled.d.ts.map +1 -0
  10. package/out/otel/src/enabled.js +16 -0
  11. package/out/otel/src/enabled.js.map +1 -0
  12. package/out/react.js +2 -2
  13. package/out/replicache/src/kv/idb-store.d.ts.map +1 -1
  14. package/out/shared/src/options.d.ts +4 -1
  15. package/out/shared/src/options.d.ts.map +1 -1
  16. package/out/shared/src/options.js +1 -1
  17. package/out/shared/src/options.js.map +1 -1
  18. package/out/solid.js +7 -3
  19. package/out/solid.js.map +1 -1
  20. package/out/zero/package.json +161 -0
  21. package/out/zero-cache/src/config/normalize.d.ts +1 -0
  22. package/out/zero-cache/src/config/normalize.d.ts.map +1 -1
  23. package/out/zero-cache/src/config/normalize.js +10 -1
  24. package/out/zero-cache/src/config/normalize.js.map +1 -1
  25. package/out/zero-cache/src/config/zero-config.d.ts +44 -6
  26. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  27. package/out/zero-cache/src/config/zero-config.js +48 -54
  28. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  29. package/out/zero-cache/src/custom/fetch.d.ts +14 -1
  30. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  31. package/out/zero-cache/src/custom/fetch.js +56 -1
  32. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  33. package/out/zero-cache/src/custom-queries/transform-query.d.ts +1 -1
  34. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  35. package/out/zero-cache/src/custom-queries/transform-query.js +2 -1
  36. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  37. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +9 -0
  38. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -0
  39. package/out/zero-cache/src/server/anonymous-otel-start.js +293 -0
  40. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -0
  41. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  42. package/out/zero-cache/src/server/logging.js +3 -3
  43. package/out/zero-cache/src/server/logging.js.map +1 -1
  44. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  45. package/out/zero-cache/src/server/main.js +1 -5
  46. package/out/zero-cache/src/server/main.js.map +1 -1
  47. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  48. package/out/zero-cache/src/server/otel-start.js +24 -18
  49. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  50. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  51. package/out/zero-cache/src/server/runner/zero-dispatcher.js +2 -2
  52. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  53. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  54. package/out/zero-cache/src/server/syncer.js +7 -4
  55. package/out/zero-cache/src/server/syncer.js.map +1 -1
  56. package/out/zero-cache/src/server/worker-dispatcher.js +3 -3
  57. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  58. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -7
  59. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  60. package/out/zero-cache/src/services/change-source/pg/change-source.js +43 -32
  61. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  62. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  63. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +24 -12
  64. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  65. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
  66. package/out/zero-cache/src/services/change-source/pg/schema/init.js +12 -1
  67. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  68. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +10 -0
  69. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +21 -2
  71. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  72. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +1 -1
  73. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  74. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +4 -2
  75. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  76. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  77. package/out/zero-cache/src/services/litestream/commands.js +50 -23
  78. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  79. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  80. package/out/zero-cache/src/services/mutagen/mutagen.js +4 -0
  81. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  82. package/out/zero-cache/src/services/mutagen/pusher.d.ts +45 -6
  83. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  84. package/out/zero-cache/src/services/mutagen/pusher.js +22 -6
  85. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  86. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  87. package/out/zero-cache/src/services/view-syncer/client-handler.js +28 -0
  88. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  89. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +11 -8
  90. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  91. package/out/zero-cache/src/services/view-syncer/cvr-store.js +14 -13
  92. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  93. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +9 -16
  94. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  95. package/out/zero-cache/src/services/view-syncer/cvr.js +71 -28
  96. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  97. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  98. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +3 -0
  99. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  100. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +3 -2
  101. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  102. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  103. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +11 -11
  104. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  105. package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -2
  106. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  107. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +10 -0
  108. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +1 -0
  109. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -0
  110. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -0
  111. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +14 -13
  112. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  113. package/out/zero-cache/src/services/view-syncer/view-syncer.js +81 -124
  114. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  115. package/out/zero-cache/src/types/processes.d.ts +6 -6
  116. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  117. package/out/zero-cache/src/types/processes.js +2 -2
  118. package/out/zero-cache/src/types/processes.js.map +1 -1
  119. package/out/zero-cache/src/types/websocket-handoff.d.ts +2 -2
  120. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  121. package/out/zero-cache/src/types/websocket-handoff.js +4 -4
  122. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  123. package/out/zero-cache/src/workers/connection.d.ts +1 -1
  124. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  125. package/out/zero-cache/src/workers/connection.js +2 -0
  126. package/out/zero-cache/src/workers/connection.js.map +1 -1
  127. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  128. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +6 -1
  129. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  130. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  131. package/out/zero-cache/src/workers/syncer.js +3 -1
  132. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  133. package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
  134. package/out/zero-client/src/client/mutation-tracker.d.ts +7 -2
  135. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  136. package/out/zero-client/src/client/options.d.ts +9 -4
  137. package/out/zero-client/src/client/options.d.ts.map +1 -1
  138. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  139. package/out/zero-client/src/client/zero-poke-handler.d.ts +6 -2
  140. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  141. package/out/zero-client/src/client/zero.d.ts +2 -2
  142. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  143. package/out/zero-client/src/mod.d.ts +1 -1
  144. package/out/zero-client/src/mod.d.ts.map +1 -1
  145. package/out/zero-protocol/src/connect.d.ts +24 -2
  146. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  147. package/out/zero-protocol/src/connect.js +17 -2
  148. package/out/zero-protocol/src/connect.js.map +1 -1
  149. package/out/zero-protocol/src/down.d.ts +18 -0
  150. package/out/zero-protocol/src/down.d.ts.map +1 -1
  151. package/out/zero-protocol/src/mutations-patch.d.ts +65 -0
  152. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -0
  153. package/out/zero-protocol/src/mutations-patch.js +16 -0
  154. package/out/zero-protocol/src/mutations-patch.js.map +1 -0
  155. package/out/zero-protocol/src/poke.d.ts +36 -0
  156. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  157. package/out/zero-protocol/src/poke.js +3 -0
  158. package/out/zero-protocol/src/poke.js.map +1 -1
  159. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  160. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  161. package/out/zero-protocol/src/protocol-version.js +4 -1
  162. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  163. package/out/zero-protocol/src/push.d.ts +8 -3
  164. package/out/zero-protocol/src/push.d.ts.map +1 -1
  165. package/out/zero-protocol/src/push.js +7 -3
  166. package/out/zero-protocol/src/push.js.map +1 -1
  167. package/out/zero-protocol/src/up.d.ts +9 -1
  168. package/out/zero-protocol/src/up.d.ts.map +1 -1
  169. package/out/zero-protocol/src/up.js +2 -2
  170. package/out/zero-protocol/src/up.js.map +1 -1
  171. package/out/zero-server/src/queries/process-queries.d.ts +1 -1
  172. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  173. package/out/zero-server/src/queries/process-queries.js +1 -1
  174. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  175. package/out/zero-solid/src/mod.d.ts +2 -2
  176. package/out/zero-solid/src/mod.d.ts.map +1 -1
  177. package/out/zero.js +9 -7
  178. package/out/zql/src/query/named.d.ts +11 -11
  179. package/out/zql/src/query/named.d.ts.map +1 -1
  180. package/out/zql/src/query/named.js +20 -2
  181. package/out/zql/src/query/named.js.map +1 -1
  182. package/out/zql/src/query/query-impl.js +1 -1
  183. package/out/zql/src/query/query-impl.js.map +1 -1
  184. package/out/zql/src/query/query.d.ts +12 -3
  185. package/out/zql/src/query/query.d.ts.map +1 -1
  186. package/out/zql/src/query/query.js.map +1 -1
  187. package/package.json +2 -2
  188. package/out/chunk-5A6QECBY.js.map +0 -7
  189. /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
+ enableTelemetry: {
517
+ type: v.boolean().default(true),
518
+ desc: [
519
+ `Set to false to opt out of telemetry collection.`,
520
+ ``,
521
+ `This helps us improve Zero by collecting anonymous usage data.`,
522
+ `Setting the DO_NOT_TRACK environment variable also disables telemetry.`,
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":"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"}
@@ -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;AAiWxE,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,293 @@
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
+ this.#lc = lc;
41
+ if (!config) {
42
+ try {
43
+ config = getZeroConfig();
44
+ }
45
+ catch (e) {
46
+ this.#lc?.info?.('telemetry: disabled - unable to parse config', e);
47
+ return;
48
+ }
49
+ }
50
+ if (process.env.DO_NOT_TRACK) {
51
+ this.#lc?.info?.('telemetry: disabled - DO_NOT_TRACK environment variable is set');
52
+ return;
53
+ }
54
+ if (!config.enableTelemetry) {
55
+ this.#lc?.info?.('telemetry: disabled - enableTelemetry is false');
56
+ return;
57
+ }
58
+ if (this.#starting) {
59
+ return;
60
+ }
61
+ this.#starting = true;
62
+ this.#config = config;
63
+ this.#viewSyncerCount = config.numSyncWorkers ?? 1;
64
+ this.#cachedAttributes = undefined;
65
+ this.#lc?.info?.(`telemetry: starting in 1 minute`);
66
+ // Delay telemetry startup by 1 minute to avoid potential boot loop issues
67
+ setTimeout(() => this.#run(), 60000);
68
+ }
69
+ #run() {
70
+ if (this.#stopped) {
71
+ return;
72
+ }
73
+ const resource = resourceFromAttributes(this.#getAttributes());
74
+ const metricReader = new PeriodicExportingMetricReader({
75
+ exportIntervalMillis: 60000 * this.#viewSyncerCount,
76
+ exporter: new OTLPMetricExporter({
77
+ url: 'https://metrics.rocicorp.dev',
78
+ }),
79
+ });
80
+ this.#meterProvider = new MeterProvider({
81
+ resource,
82
+ readers: [metricReader],
83
+ });
84
+ this.#meter = this.#meterProvider.getMeter('zero-anonymous-telemetry');
85
+ this.#setupMetrics();
86
+ this.#lc?.info?.(`telemetry: started (exports every ${60 * this.#viewSyncerCount} seconds for ${this.#viewSyncerCount} view-syncers)`);
87
+ }
88
+ #setupMetrics() {
89
+ // Observable gauges
90
+ const uptimeGauge = this.#meter.createObservableGauge('zero.uptime', {
91
+ description: 'System uptime in seconds',
92
+ unit: 'seconds',
93
+ });
94
+ // Observable counters
95
+ const uptimeCounter = this.#meter.createObservableCounter('zero.uptime_counter', {
96
+ description: 'System uptime in seconds',
97
+ unit: 'seconds',
98
+ });
99
+ const mutationsCounter = this.#meter.createObservableCounter('zero.mutations_processed', {
100
+ description: 'Total number of mutations processed',
101
+ });
102
+ const rowsSyncedCounter = this.#meter.createObservableCounter('zero.rows_synced', {
103
+ description: 'Total number of rows synced',
104
+ });
105
+ // Observable counters for connections
106
+ const connectionsSuccessCounter = this.#meter.createObservableCounter('zero.connections_success', {
107
+ description: 'Total number of successful connections',
108
+ });
109
+ const connectionsAttemptedCounter = this.#meter.createObservableCounter('zero.connections_attempted', {
110
+ description: 'Total number of attempted connections',
111
+ });
112
+ // Callbacks
113
+ const attrs = this.#getAttributes();
114
+ uptimeGauge.addCallback((result) => {
115
+ const uptimeSeconds = Math.floor(process.uptime());
116
+ result.observe(uptimeSeconds, attrs);
117
+ this.#lc?.debug?.(`telemetry: uptime=${uptimeSeconds}s`);
118
+ });
119
+ uptimeCounter.addCallback((result) => {
120
+ const uptimeSeconds = Math.floor(process.uptime());
121
+ result.observe(uptimeSeconds, attrs);
122
+ this.#lc?.debug?.(`telemetry: uptime_counter=${uptimeSeconds}s`);
123
+ });
124
+ mutationsCounter.addCallback((result) => {
125
+ result.observe(this.#totalMutations, attrs);
126
+ this.#lc?.debug?.(`telemetry: mutations=${this.#totalMutations}`);
127
+ });
128
+ rowsSyncedCounter.addCallback((result) => {
129
+ result.observe(this.#totalRowsSynced, attrs);
130
+ this.#lc?.debug?.(`telemetry: rows_synced=${this.#totalRowsSynced}`);
131
+ });
132
+ connectionsSuccessCounter.addCallback((result) => {
133
+ result.observe(this.#totalConnectionsSuccess, attrs);
134
+ this.#lc?.debug?.(`telemetry: connections_success=${this.#totalConnectionsSuccess}`);
135
+ });
136
+ connectionsAttemptedCounter.addCallback((result) => {
137
+ result.observe(this.#totalConnectionsAttempted, attrs);
138
+ this.#lc?.debug?.(`telemetry: connections_attempted=${this.#totalConnectionsAttempted}`);
139
+ });
140
+ }
141
+ recordMutation(count = 1) {
142
+ this.#totalMutations += count;
143
+ }
144
+ recordRowsSynced(count) {
145
+ this.#totalRowsSynced += count;
146
+ }
147
+ recordConnectionSuccess() {
148
+ this.#totalConnectionsSuccess++;
149
+ }
150
+ recordConnectionAttempted() {
151
+ this.#totalConnectionsAttempted++;
152
+ }
153
+ shutdown() {
154
+ this.#stopped = true;
155
+ if (this.#meterProvider) {
156
+ this.#lc?.info?.('telemetry: shutting down');
157
+ void this.#meterProvider.shutdown();
158
+ }
159
+ }
160
+ #getAttributes() {
161
+ if (!this.#cachedAttributes) {
162
+ this.#cachedAttributes = {
163
+ 'zero.app.id': h64(this.#config?.upstream.db || 'unknown').toString(),
164
+ 'zero.machine.os': platform(),
165
+ 'zero.telemetry.type': 'anonymous',
166
+ 'zero.infra.platform': this.#getPlatform(),
167
+ 'zero.version': this.#config?.serverVersion ?? packageJson.version,
168
+ 'zero.task.id': this.#config?.taskID || 'unknown',
169
+ 'zero.project.id': this.#getGitProjectId(),
170
+ 'zero.process.id': this.#processId,
171
+ 'zero.fs.id': this.#getOrSetFsID(),
172
+ };
173
+ this.#lc?.debug?.(`telemetry: cached attributes=${JSON.stringify(this.#cachedAttributes)}`);
174
+ }
175
+ return this.#cachedAttributes;
176
+ }
177
+ #getPlatform() {
178
+ if (process.env.FLY_APP_NAME || process.env.FLY_REGION)
179
+ return 'fly.io';
180
+ if (process.env.ECS_CONTAINER_METADATA_URI_V4 ||
181
+ process.env.ECS_CONTAINER_METADATA_URI ||
182
+ process.env.AWS_EXECUTION_ENV)
183
+ return 'aws';
184
+ if (process.env.RAILWAY_ENV || process.env.RAILWAY_STATIC_URL)
185
+ return 'railway';
186
+ if (process.env.RENDER || process.env.RENDER_SERVICE_ID)
187
+ return 'render';
188
+ if (process.env.GCP_PROJECT ||
189
+ process.env.GCLOUD_PROJECT ||
190
+ process.env.GOOGLE_CLOUD_PROJECT)
191
+ return 'gcp';
192
+ if (process.env.COOLIFY_URL || process.env.COOLIFY_CONTAINER_NAME)
193
+ return 'coolify';
194
+ return 'unknown';
195
+ }
196
+ #findUp(startDir, target) {
197
+ let dir = startDir;
198
+ while (dir !== dirname(dir)) {
199
+ if (existsSync(join(dir, target)))
200
+ return dir;
201
+ dir = dirname(dir);
202
+ }
203
+ return null;
204
+ }
205
+ #getGitProjectId() {
206
+ try {
207
+ const cwd = process.cwd();
208
+ const gitRoot = this.#findUp(cwd, '.git');
209
+ if (!gitRoot) {
210
+ return 'unknown';
211
+ }
212
+ const rootCommitHash = execSync('git rev-list --max-parents=0 HEAD -1', {
213
+ cwd: gitRoot,
214
+ encoding: 'utf8',
215
+ timeout: 1000,
216
+ stdio: ['ignore', 'pipe', 'ignore'], // Suppress stderr
217
+ }).trim();
218
+ return rootCommitHash.length === 40 ? rootCommitHash : 'unknown';
219
+ }
220
+ catch (error) {
221
+ this.#lc?.debug?.('telemetry: unable to get Git root commit:', error);
222
+ return 'unknown';
223
+ }
224
+ }
225
+ #getOrSetFsID() {
226
+ try {
227
+ if (this.#isInContainer()) {
228
+ return 'container';
229
+ }
230
+ const fsidPath = join(homedir(), '.rocicorp', 'fsid');
231
+ const fsidDir = dirname(fsidPath);
232
+ mkdirSync(fsidDir, { recursive: true });
233
+ // Always try atomic file creation first - this eliminates any race conditions
234
+ const newId = randomUUID();
235
+ try {
236
+ writeFileSync(fsidPath, newId, { encoding: 'utf8', flag: 'wx' });
237
+ return newId;
238
+ }
239
+ catch (writeError) {
240
+ if (writeError.code === 'EEXIST') {
241
+ const existingId = readFileSync(fsidPath, 'utf8').trim();
242
+ return existingId;
243
+ }
244
+ throw writeError;
245
+ }
246
+ }
247
+ catch (error) {
248
+ this.#lc?.debug?.('telemetry: unable to get or set filesystem ID:', error);
249
+ return 'unknown';
250
+ }
251
+ }
252
+ #isInContainer() {
253
+ try {
254
+ if (process.env.ZERO_IN_CONTAINER) {
255
+ return true;
256
+ }
257
+ if (existsSync('/.dockerenv')) {
258
+ return true;
259
+ }
260
+ if (existsSync('/usr/local/bin/docker-entrypoint.sh')) {
261
+ return true;
262
+ }
263
+ if (process.env.KUBERNETES_SERVICE_HOST) {
264
+ return true;
265
+ }
266
+ if (process.env.DOCKER_CONTAINER_ID ||
267
+ process.env.HOSTNAME?.match(/^[a-f0-9]{12}$/)) {
268
+ return true;
269
+ }
270
+ if (existsSync('/proc/1/cgroup')) {
271
+ const cgroup = readFileSync('/proc/1/cgroup', 'utf8');
272
+ if (cgroup.includes('docker') ||
273
+ cgroup.includes('kubepods') ||
274
+ cgroup.includes('containerd')) {
275
+ return true;
276
+ }
277
+ }
278
+ return false;
279
+ }
280
+ catch (error) {
281
+ this.#lc?.debug?.('telemetry: unable to detect container environment:', error);
282
+ return false;
283
+ }
284
+ }
285
+ }
286
+ const manager = () => AnonymousTelemetryManager.getInstance();
287
+ export const startAnonymousTelemetry = (lc, config) => manager().start(lc, config);
288
+ export const recordMutation = (count = 1) => manager().recordMutation(count);
289
+ export const recordRowsSynced = (count) => manager().recordRowsSynced(count);
290
+ export const recordConnectionSuccess = () => manager().recordConnectionSuccess();
291
+ export const recordConnectionAttempted = () => manager().recordConnectionAttempted();
292
+ export const shutdownAnonymousTelemetry = () => manager().shutdown();
293
+ //# sourceMappingURL=anonymous-otel-start.js.map