@zuplo/cli 7.7.7 → 7.7.9
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/node_modules/@posthog/core/dist/error-tracking/index.d.ts +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/parsers/base.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/parsers/base.js +19 -2
- package/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs +19 -2
- package/node_modules/@posthog/core/dist/index.d.ts +7 -0
- package/node_modules/@posthog/core/dist/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/index.js +82 -21
- package/node_modules/@posthog/core/dist/index.mjs +4 -0
- package/node_modules/@posthog/core/dist/logs/index.d.ts +3 -2
- package/node_modules/@posthog/core/dist/logs/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/logs/index.js +28 -22
- package/node_modules/@posthog/core/dist/logs/index.mjs +29 -23
- package/node_modules/@posthog/core/dist/logs/logs-utils.js +1 -1
- package/node_modules/@posthog/core/dist/logs/logs-utils.mjs +2 -2
- package/node_modules/@posthog/core/dist/logs/types.d.ts +2 -2
- package/node_modules/@posthog/core/dist/metrics/index.d.ts +5 -2
- package/node_modules/@posthog/core/dist/metrics/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/metrics/index.js +28 -14
- package/node_modules/@posthog/core/dist/metrics/index.mjs +29 -15
- package/node_modules/@posthog/core/dist/metrics/metrics-utils.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/metrics/metrics-utils.js +1 -2
- package/node_modules/@posthog/core/dist/metrics/metrics-utils.mjs +2 -3
- package/node_modules/@posthog/core/dist/metrics/types.d.ts +7 -0
- package/node_modules/@posthog/core/dist/metrics/types.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/posthog-core-stateless.d.ts +32 -4
- package/node_modules/@posthog/core/dist/posthog-core-stateless.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/posthog-core-stateless.js +68 -20
- package/node_modules/@posthog/core/dist/posthog-core-stateless.mjs +68 -20
- package/node_modules/@posthog/core/dist/traces/config.d.ts +13 -0
- package/node_modules/@posthog/core/dist/traces/config.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/config.js +101 -0
- package/node_modules/@posthog/core/dist/traces/config.mjs +63 -0
- package/node_modules/@posthog/core/dist/traces/context.d.ts +18 -0
- package/node_modules/@posthog/core/dist/traces/context.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/context.js +53 -0
- package/node_modules/@posthog/core/dist/traces/context.mjs +15 -0
- package/node_modules/@posthog/core/dist/traces/ids.d.ts +12 -0
- package/node_modules/@posthog/core/dist/traces/ids.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/ids.js +92 -0
- package/node_modules/@posthog/core/dist/traces/ids.mjs +42 -0
- package/node_modules/@posthog/core/dist/traces/index.d.ts +150 -0
- package/node_modules/@posthog/core/dist/traces/index.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/index.js +551 -0
- package/node_modules/@posthog/core/dist/traces/index.mjs +513 -0
- package/node_modules/@posthog/core/dist/traces/otlp.d.ts +24 -0
- package/node_modules/@posthog/core/dist/traces/otlp.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/otlp.js +158 -0
- package/node_modules/@posthog/core/dist/traces/otlp.mjs +108 -0
- package/node_modules/@posthog/core/dist/traces/sanitize.d.ts +32 -0
- package/node_modules/@posthog/core/dist/traces/sanitize.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/sanitize.js +93 -0
- package/node_modules/@posthog/core/dist/traces/sanitize.mjs +43 -0
- package/node_modules/@posthog/core/dist/traces/span.d.ts +189 -0
- package/node_modules/@posthog/core/dist/traces/span.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/span.js +533 -0
- package/node_modules/@posthog/core/dist/traces/span.mjs +462 -0
- package/node_modules/@posthog/core/dist/traces/traceparent.d.ts +51 -0
- package/node_modules/@posthog/core/dist/traces/traceparent.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/traceparent.js +116 -0
- package/node_modules/@posthog/core/dist/traces/traceparent.mjs +63 -0
- package/node_modules/@posthog/core/dist/traces/types.d.ts +114 -0
- package/node_modules/@posthog/core/dist/traces/types.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/traces/types.js +18 -0
- package/node_modules/@posthog/core/dist/traces/types.mjs +1 -0
- package/node_modules/@posthog/core/dist/utils/backoff.d.ts +23 -0
- package/node_modules/@posthog/core/dist/utils/backoff.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/utils/backoff.js +65 -0
- package/node_modules/@posthog/core/dist/utils/backoff.mjs +14 -0
- package/node_modules/@posthog/core/dist/utils/flush-timer.d.ts +26 -0
- package/node_modules/@posthog/core/dist/utils/flush-timer.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/utils/flush-timer.js +67 -0
- package/node_modules/@posthog/core/dist/utils/flush-timer.mjs +29 -0
- package/node_modules/@posthog/core/dist/utils/json-utils.d.ts +7 -0
- package/node_modules/@posthog/core/dist/utils/json-utils.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/utils/json-utils.js +27 -0
- package/node_modules/@posthog/core/dist/utils/json-utils.mjs +25 -1
- package/node_modules/@posthog/core/dist/utils/otlp-resource.d.ts +13 -2
- package/node_modules/@posthog/core/dist/utils/otlp-resource.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/utils/otlp-resource.js +34 -7
- package/node_modules/@posthog/core/dist/utils/otlp-resource.mjs +26 -2
- package/node_modules/@posthog/core/dist/utils/retry-after.d.ts +55 -0
- package/node_modules/@posthog/core/dist/utils/retry-after.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/utils/retry-after.js +95 -0
- package/node_modules/@posthog/core/dist/utils/retry-after.mjs +50 -0
- package/node_modules/@posthog/core/package.json +3 -3
- package/node_modules/@posthog/core/src/error-tracking/index.ts +24 -1
- package/node_modules/@posthog/core/src/error-tracking/parsers/base.spec.ts +77 -7
- package/node_modules/@posthog/core/src/error-tracking/parsers/base.ts +42 -19
- package/node_modules/@posthog/core/src/index.ts +18 -0
- package/node_modules/@posthog/core/src/logs/index.spec.ts +490 -2
- package/node_modules/@posthog/core/src/logs/index.ts +63 -31
- package/node_modules/@posthog/core/src/logs/logs-utils.ts +2 -2
- package/node_modules/@posthog/core/src/logs/types.ts +2 -2
- package/node_modules/@posthog/core/src/metrics/index.spec.ts +304 -0
- package/node_modules/@posthog/core/src/metrics/index.ts +53 -16
- package/node_modules/@posthog/core/src/metrics/metrics-utils.ts +2 -3
- package/node_modules/@posthog/core/src/metrics/types.ts +10 -2
- package/node_modules/@posthog/core/src/posthog-core-stateless.ts +157 -38
- package/node_modules/@posthog/core/src/traces/config.spec.ts +271 -0
- package/node_modules/@posthog/core/src/traces/config.ts +142 -0
- package/node_modules/@posthog/core/src/traces/context.ts +30 -0
- package/node_modules/@posthog/core/src/traces/ids.spec.ts +115 -0
- package/node_modules/@posthog/core/src/traces/ids.ts +75 -0
- package/node_modules/@posthog/core/src/traces/index.spec.ts +3187 -0
- package/node_modules/@posthog/core/src/traces/index.ts +1060 -0
- package/node_modules/@posthog/core/src/traces/live-spans.spec.ts +69 -0
- package/node_modules/@posthog/core/src/traces/otlp.spec.ts +368 -0
- package/node_modules/@posthog/core/src/traces/otlp.ts +191 -0
- package/node_modules/@posthog/core/src/traces/sanitize.ts +116 -0
- package/node_modules/@posthog/core/src/traces/span.spec.ts +1122 -0
- package/node_modules/@posthog/core/src/traces/span.ts +822 -0
- package/node_modules/@posthog/core/src/traces/traceparent.spec.ts +184 -0
- package/node_modules/@posthog/core/src/traces/traceparent.ts +172 -0
- package/node_modules/@posthog/core/src/traces/types.ts +140 -0
- package/node_modules/@posthog/core/src/utils/backoff.ts +44 -0
- package/node_modules/@posthog/core/src/utils/flush-timer.ts +50 -0
- package/node_modules/@posthog/core/src/utils/json-utils.ts +33 -0
- package/node_modules/@posthog/core/src/utils/otlp-resource.spec.ts +55 -9
- package/node_modules/@posthog/core/src/utils/otlp-resource.ts +45 -4
- package/node_modules/@posthog/core/src/utils/retry-after.ts +135 -0
- package/node_modules/@posthog/types/dist/index.d.ts +1 -0
- package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/posthog-config.d.ts +10 -5
- package/node_modules/@posthog/types/dist/posthog-config.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/traces.d.ts +387 -0
- package/node_modules/@posthog/types/dist/traces.d.ts.map +1 -0
- package/node_modules/@posthog/types/dist/traces.js +18 -0
- package/node_modules/@posthog/types/dist/traces.mjs +1 -0
- package/node_modules/@posthog/types/package.json +1 -1
- package/node_modules/@posthog/types/src/index.ts +19 -0
- package/node_modules/@posthog/types/src/posthog-config.ts +10 -5
- package/node_modules/@posthog/types/src/traces.ts +429 -0
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/out/esm/{chunk-FEB2VFS7.js → chunk-KNAYKBEE.js} +96 -96
- package/node_modules/@zuplo/runtime/out/esm/chunk-KNAYKBEE.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/package.json +11 -11
- package/node_modules/@zuplo/runtime/out/esm/chunk-FEB2VFS7.js.map +0 -1
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-FEB2VFS7.js.LEGAL.txt → chunk-KNAYKBEE.js.LEGAL.txt} +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// Client-side validity.
|
|
2
|
+
//
|
|
3
|
+
// The ingestion service 400s the *entire request* when one span fails row
|
|
4
|
+
// conversion — a timestamp outside signed 64-bit nanoseconds, say — and a 400 is
|
|
5
|
+
// non-retriable, so one bad span destroys every other span in the batch.
|
|
6
|
+
|
|
7
|
+
import type { Logger } from '../types'
|
|
8
|
+
import type { SpanAttributes, SpanTimeInput } from '@posthog/types'
|
|
9
|
+
|
|
10
|
+
const FALLBACK_SPAN_NAME = 'unknown'
|
|
11
|
+
|
|
12
|
+
// OTLP declares the timestamp fields `fixed64`, but the service parses them as
|
|
13
|
+
// signed 64-bit, so a negative (pre-epoch) value is as invalid as an overflow.
|
|
14
|
+
const MAX_TIMESTAMP_MS = 9223372036854 // floor(i64::MAX nanoseconds / 1e6)
|
|
15
|
+
const MIN_TIMESTAMP_MS = 0
|
|
16
|
+
|
|
17
|
+
// The server clamps timestamps more than 24h from receive time to now, keeping
|
|
18
|
+
// the original in `$originalTimestamp`.
|
|
19
|
+
const DEEP_BACKDATE_WARNING_MS = 24 * 60 * 60 * 1000
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Span and event names must be non-empty. An empty or non-string name is
|
|
23
|
+
* replaced rather than dropped, so a mis-instrumented call site loses its name,
|
|
24
|
+
* not its span. `label` names what is being sanitized in the warning.
|
|
25
|
+
*/
|
|
26
|
+
export function sanitizeName(name: unknown, label: string, maxLength: number, logger?: Logger): string {
|
|
27
|
+
if (typeof name === 'string' && name.trim()) {
|
|
28
|
+
// Bounded like a status message and an attribute value: a name built from a
|
|
29
|
+
// URL or a payload is caller-controlled too, and one large enough takes the
|
|
30
|
+
// span past the ingestion body limit, which drops it whole.
|
|
31
|
+
return name.length > maxLength ? name.slice(0, maxLength) : name
|
|
32
|
+
}
|
|
33
|
+
logger?.debug(`${label} must be a non-empty string; using "${FALLBACK_SPAN_NAME}"`)
|
|
34
|
+
return FALLBACK_SPAN_NAME
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Normalizes a caller-supplied time to a millisecond epoch.
|
|
39
|
+
*
|
|
40
|
+
* Returns `undefined` for anything unusable — the wrong type, `NaN`, or outside
|
|
41
|
+
* the representable range — leaving the caller to fall back to a derived time.
|
|
42
|
+
*/
|
|
43
|
+
export function toEpochMs(value: SpanTimeInput | undefined): number | undefined {
|
|
44
|
+
if (value === undefined || value === null) {
|
|
45
|
+
return undefined
|
|
46
|
+
}
|
|
47
|
+
let ms: unknown = value
|
|
48
|
+
if (value instanceof Date) {
|
|
49
|
+
try {
|
|
50
|
+
ms = value.getTime()
|
|
51
|
+
} catch {
|
|
52
|
+
// `Object.create(Date.prototype)` passes `instanceof` without a Date slot.
|
|
53
|
+
return undefined
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (typeof ms !== 'number' || !Number.isFinite(ms)) {
|
|
57
|
+
return undefined
|
|
58
|
+
}
|
|
59
|
+
if (ms < MIN_TIMESTAMP_MS || ms > MAX_TIMESTAMP_MS) {
|
|
60
|
+
return undefined
|
|
61
|
+
}
|
|
62
|
+
return ms
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Resolves a caller-supplied start time, warning when it is deep enough in the
|
|
67
|
+
* past that the server will clamp it.
|
|
68
|
+
*/
|
|
69
|
+
export function resolveStartTime(value: SpanTimeInput | undefined, now: number, logger?: Logger): number {
|
|
70
|
+
const supplied = toEpochMs(value)
|
|
71
|
+
if (supplied === undefined) {
|
|
72
|
+
if (value !== undefined) {
|
|
73
|
+
logger?.debug('Span startTime is out of range or not a valid time; using the current time')
|
|
74
|
+
}
|
|
75
|
+
return now
|
|
76
|
+
}
|
|
77
|
+
if (now - supplied > DEEP_BACKDATE_WARNING_MS) {
|
|
78
|
+
logger?.debug(
|
|
79
|
+
'Span startTime is more than 24 hours in the past; the server will clamp it to receive time and keep the original in $originalTimestamp'
|
|
80
|
+
)
|
|
81
|
+
} else if (supplied > now) {
|
|
82
|
+
// Warned rather than clamped, matching the deep-backdate rule: the value is
|
|
83
|
+
// the caller's. The duration is what suffers, since the end clamps to it.
|
|
84
|
+
logger?.debug('Span startTime is in the future; the span may export with a zero duration')
|
|
85
|
+
}
|
|
86
|
+
return supplied
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Corrects an end time that precedes its start, producing a zero-duration span
|
|
91
|
+
* rather than a negative one the server would reject.
|
|
92
|
+
*/
|
|
93
|
+
export function clampEndTime(endTime: number, startTime: number): number {
|
|
94
|
+
return endTime < startTime ? startTime : endTime
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Keeps a caller-supplied end or event time inside the representable range,
|
|
99
|
+
* falling back to the span's own clock basis when it is unusable. `label` names
|
|
100
|
+
* what is being sanitized in the warning.
|
|
101
|
+
*/
|
|
102
|
+
export function resolveSuppliedTime(
|
|
103
|
+
value: SpanTimeInput | undefined,
|
|
104
|
+
derived: number,
|
|
105
|
+
label: string,
|
|
106
|
+
logger?: Logger
|
|
107
|
+
): number {
|
|
108
|
+
const supplied = toEpochMs(value)
|
|
109
|
+
if (supplied === undefined) {
|
|
110
|
+
if (value !== undefined) {
|
|
111
|
+
logger?.debug(`Span ${label} is out of range or not a valid time; using the derived time`)
|
|
112
|
+
}
|
|
113
|
+
return derived
|
|
114
|
+
}
|
|
115
|
+
return supplied
|
|
116
|
+
}
|