@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.
- package/out/{chunk-4FQJO7OM.js → chunk-A6LHZQIK.js} +26 -7
- package/out/{chunk-4FQJO7OM.js.map → chunk-A6LHZQIK.js.map} +2 -2
- package/out/{chunk-5A6QECBY.js → chunk-IQCMHXK7.js} +42 -16
- package/out/chunk-IQCMHXK7.js.map +7 -0
- package/out/{chunk-INLOZBST.js → chunk-P5M53J4D.js} +2 -3
- package/out/{chunk-INLOZBST.js.map → chunk-P5M53J4D.js.map} +2 -2
- package/out/{inspector-HDOYOVMS.js → inspector-TFZBDN6K.js} +2 -2
- package/out/react.js +2 -2
- package/out/replicache/src/kv/idb-store.d.ts.map +1 -1
- package/out/shared/src/options.d.ts +4 -1
- package/out/shared/src/options.d.ts.map +1 -1
- package/out/shared/src/options.js +1 -1
- package/out/shared/src/options.js.map +1 -1
- package/out/solid.js +7 -3
- package/out/solid.js.map +1 -1
- package/out/zero/package.json +161 -0
- package/out/zero-cache/src/config/normalize.d.ts +1 -0
- package/out/zero-cache/src/config/normalize.d.ts.map +1 -1
- package/out/zero-cache/src/config/normalize.js +10 -1
- package/out/zero-cache/src/config/normalize.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +44 -6
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +48 -54
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts +14 -1
- package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +56 -1
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js +2 -1
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts +9 -0
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -0
- package/out/zero-cache/src/server/anonymous-otel-start.js +289 -0
- package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -0
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +1 -5
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.js +2 -2
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +6 -3
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.js +3 -3
- package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -7
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +43 -32
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +24 -12
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +4 -0
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +4 -4
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +8 -5
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +11 -8
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +14 -13
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts +9 -16
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +25 -28
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js +3 -0
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +3 -2
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +11 -11
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -2
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +10 -0
- package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -0
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +14 -13
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +92 -124
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/processes.d.ts +6 -6
- package/out/zero-cache/src/types/processes.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.js +2 -2
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.d.ts +2 -2
- package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +4 -4
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +1 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +2 -0
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +3 -1
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/options.d.ts +9 -4
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +2 -2
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +1 -1
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.d.ts +24 -2
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js +17 -2
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +2 -1
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +5 -0
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +1 -1
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-solid/src/mod.d.ts +2 -2
- package/out/zero-solid/src/mod.d.ts.map +1 -1
- package/out/zero.js +9 -7
- package/out/zql/src/query/named.d.ts +11 -11
- package/out/zql/src/query/named.d.ts.map +1 -1
- package/out/zql/src/query/named.js +20 -2
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-impl.js +1 -1
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query.d.ts +12 -3
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/query.js.map +1 -1
- package/package.json +2 -2
- package/out/chunk-5A6QECBY.js.map +0 -7
- /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
|
-
|
|
173
|
-
|
|
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
|
-
|
|
509
|
-
'
|
|
510
|
-
'
|
|
511
|
-
'
|
|
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,
|
|
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;
|
|
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":"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;
|
|
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;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
|