@glasstrace/sdk 1.3.2 → 1.3.4
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/README.md +126 -0
- package/dist/{chunk-REEU6CNO.js → chunk-3HWBR7XM.js} +3 -3
- package/dist/chunk-3HWBR7XM.js.map +1 -0
- package/dist/{chunk-XS3BO7RY.js → chunk-BQKPRFLF.js} +3 -3
- package/dist/{chunk-GCFOY7T2.js → chunk-E62DL2H4.js} +3 -3
- package/dist/{chunk-UFZEISZB.js → chunk-LQKJ27LO.js} +2 -2
- package/dist/chunk-LQKJ27LO.js.map +1 -0
- package/dist/{chunk-MQHLWSIX.js → chunk-M4ZI7J3N.js} +100 -62
- package/dist/{chunk-MQHLWSIX.js.map → chunk-M4ZI7J3N.js.map} +1 -1
- package/dist/{chunk-JFR42QG5.js → chunk-QJVAKVQJ.js} +2 -2
- package/dist/{chunk-CRM3EYOL.js → chunk-WKOQJCFN.js} +2 -2
- package/dist/{chunk-DQGNUENK.js → chunk-XFNK4YEW.js} +58 -16
- package/dist/chunk-XFNK4YEW.js.map +1 -0
- package/dist/{chunk-3TU62WD6.js → chunk-YG3X7TUI.js} +1 -1
- package/dist/chunk-YG3X7TUI.js.map +1 -0
- package/dist/cli/init.cjs +51 -13
- package/dist/cli/init.cjs.map +1 -1
- package/dist/cli/init.js +6 -6
- package/dist/cli/mcp-add.cjs +49 -11
- package/dist/cli/mcp-add.cjs.map +1 -1
- package/dist/cli/mcp-add.js +2 -2
- package/dist/cli/uninit.cjs.map +1 -1
- package/dist/cli/uninit.js +3 -3
- package/dist/cli/validate.cjs +49 -11
- package/dist/cli/validate.cjs.map +1 -1
- package/dist/cli/validate.js +2 -2
- package/dist/edge-entry.cjs +88 -50
- package/dist/edge-entry.cjs.map +1 -1
- package/dist/edge-entry.js +2 -2
- package/dist/index.cjs +151 -70
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +6 -6
- package/dist/node-entry.cjs +151 -70
- package/dist/node-entry.cjs.map +1 -1
- package/dist/node-entry.js +8 -8
- package/dist/node-subpath.cjs +49 -11
- package/dist/node-subpath.cjs.map +1 -1
- package/dist/node-subpath.js +4 -4
- package/dist/{source-map-uploader-LACAGKIW.js → source-map-uploader-JAD3XM4F.js} +4 -4
- package/package.json +1 -1
- package/dist/chunk-3TU62WD6.js.map +0 -1
- package/dist/chunk-DQGNUENK.js.map +0 -1
- package/dist/chunk-REEU6CNO.js.map +0 -1
- package/dist/chunk-UFZEISZB.js.map +0 -1
- /package/dist/{chunk-XS3BO7RY.js.map → chunk-BQKPRFLF.js.map} +0 -0
- /package/dist/{chunk-GCFOY7T2.js.map → chunk-E62DL2H4.js.map} +0 -0
- /package/dist/{chunk-JFR42QG5.js.map → chunk-QJVAKVQJ.js.map} +0 -0
- /package/dist/{chunk-CRM3EYOL.js.map → chunk-WKOQJCFN.js.map} +0 -0
- /package/dist/{source-map-uploader-LACAGKIW.js.map → source-map-uploader-JAD3XM4F.js.map} +0 -0
package/dist/index.d.cts
CHANGED
|
@@ -351,6 +351,25 @@ declare function waitForReady(timeoutMs?: number): Promise<void>;
|
|
|
351
351
|
/**
|
|
352
352
|
* Simplified public state query for external consumers.
|
|
353
353
|
* Hides implementation details like coexistence scenarios.
|
|
354
|
+
*
|
|
355
|
+
* The returned `tracing` field is the canonical user-observable signal
|
|
356
|
+
* for OTel coexistence outcomes:
|
|
357
|
+
*
|
|
358
|
+
* - `"active"` — the SDK owns the OTel provider and is exporting spans.
|
|
359
|
+
* - `"coexistence"` — another OTel provider was detected and the SDK
|
|
360
|
+
* either auto-attached its span processor or found one already
|
|
361
|
+
* present. Spans are exported through the existing pipeline.
|
|
362
|
+
* - `"degraded"` — the SDK is exporting but the core lifecycle entered
|
|
363
|
+
* `ACTIVE_DEGRADED` (e.g., a non-fatal export failure).
|
|
364
|
+
* - `"not-configured"` — the SDK could not configure tracing. Covers
|
|
365
|
+
* `OtelState.UNCONFIGURED`, `OtelState.CONFIGURING`, and
|
|
366
|
+
* `OtelState.COEXISTENCE_FAILED` (the DISC-1556 Next 16 production
|
|
367
|
+
* "auto-attach returned null" path). When the value is
|
|
368
|
+
* `"not-configured"` after `registerGlasstrace()` has resolved,
|
|
369
|
+
* spans are NOT reaching the Glasstrace exporter and the manual
|
|
370
|
+
* `createGlasstraceSpanProcessor()` workaround should be applied.
|
|
371
|
+
* See `runtime-state.json`'s `lastError` field for the structured
|
|
372
|
+
* failure record.
|
|
354
373
|
*/
|
|
355
374
|
declare function getStatus(): {
|
|
356
375
|
ready: boolean;
|
package/dist/index.d.ts
CHANGED
|
@@ -351,6 +351,25 @@ declare function waitForReady(timeoutMs?: number): Promise<void>;
|
|
|
351
351
|
/**
|
|
352
352
|
* Simplified public state query for external consumers.
|
|
353
353
|
* Hides implementation details like coexistence scenarios.
|
|
354
|
+
*
|
|
355
|
+
* The returned `tracing` field is the canonical user-observable signal
|
|
356
|
+
* for OTel coexistence outcomes:
|
|
357
|
+
*
|
|
358
|
+
* - `"active"` — the SDK owns the OTel provider and is exporting spans.
|
|
359
|
+
* - `"coexistence"` — another OTel provider was detected and the SDK
|
|
360
|
+
* either auto-attached its span processor or found one already
|
|
361
|
+
* present. Spans are exported through the existing pipeline.
|
|
362
|
+
* - `"degraded"` — the SDK is exporting but the core lifecycle entered
|
|
363
|
+
* `ACTIVE_DEGRADED` (e.g., a non-fatal export failure).
|
|
364
|
+
* - `"not-configured"` — the SDK could not configure tracing. Covers
|
|
365
|
+
* `OtelState.UNCONFIGURED`, `OtelState.CONFIGURING`, and
|
|
366
|
+
* `OtelState.COEXISTENCE_FAILED` (the DISC-1556 Next 16 production
|
|
367
|
+
* "auto-attach returned null" path). When the value is
|
|
368
|
+
* `"not-configured"` after `registerGlasstrace()` has resolved,
|
|
369
|
+
* spans are NOT reaching the Glasstrace exporter and the manual
|
|
370
|
+
* `createGlasstraceSpanProcessor()` workaround should be applied.
|
|
371
|
+
* See `runtime-state.json`'s `lastError` field for the structured
|
|
372
|
+
* failure record.
|
|
354
373
|
*/
|
|
355
374
|
declare function getStatus(): {
|
|
356
375
|
ready: boolean;
|
package/dist/index.js
CHANGED
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
registerGlasstrace,
|
|
13
13
|
waitForReady,
|
|
14
14
|
withGlasstraceConfig
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XFNK4YEW.js";
|
|
16
16
|
import {
|
|
17
17
|
GlasstraceSpanProcessor,
|
|
18
18
|
SdkError,
|
|
19
19
|
captureCorrelationId
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-WKOQJCFN.js";
|
|
21
21
|
import "./chunk-DQ25VOKK.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-YG3X7TUI.js";
|
|
23
23
|
import {
|
|
24
24
|
getActiveConfig,
|
|
25
25
|
getLinkedAccountId,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
performInit,
|
|
28
28
|
saveCachedConfig,
|
|
29
29
|
sendInitRequest
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-3HWBR7XM.js";
|
|
31
31
|
import {
|
|
32
32
|
isAnonymousMode,
|
|
33
33
|
isProductionDisabled,
|
|
@@ -37,10 +37,10 @@ import {
|
|
|
37
37
|
import {
|
|
38
38
|
getOrCreateAnonKey,
|
|
39
39
|
readAnonKey
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-LQKJ27LO.js";
|
|
41
41
|
import {
|
|
42
42
|
deriveSessionId
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-M4ZI7J3N.js";
|
|
44
44
|
import "./chunk-NSBPE2FW.js";
|
|
45
45
|
export {
|
|
46
46
|
GlasstraceExporter,
|
package/dist/node-entry.cjs
CHANGED
|
@@ -14566,7 +14566,7 @@ function deriveSessionId(apiKey, origin, date5, windowIndex) {
|
|
|
14566
14566
|
const digest = sha256Hex(input).slice(0, 16);
|
|
14567
14567
|
return SessionIdSchema.parse(digest);
|
|
14568
14568
|
}
|
|
14569
|
-
var DevApiKeySchema, AnonApiKeySchema, SessionIdSchema, BuildHashSchema, SdkDiagnosticCodeSchema, CaptureConfigSchema, SdkCachedConfigSchema, GlasstraceOptionsSchema, GlasstraceEnvVarsSchema, ImportGraphPayloadSchema, SdkHealthReportSchema, TierLimitsSchema, SdkInitResponseSchema, DiscoveryResponseSchema, SourceMapUploadResponseSchema, PresignedUploadRequestSchema, PresignedUploadResponseSchema, SourceMapManifestRequestSchema, SourceMapManifestResponseSchema,
|
|
14569
|
+
var DevApiKeySchema, AnonApiKeySchema, SessionIdSchema, BuildHashSchema, SdkDiagnosticCodeSchema, CaptureConfigSchema, SdkCachedConfigSchema, GlasstraceOptionsSchema, GlasstraceEnvVarsSchema, GLASSTRACE_ATTRIBUTE_NAMES, DEFAULT_CAPTURE_CONFIG, MAX_SOURCE_MAP_FILE_PATH_LENGTH, MAX_SOURCE_MAP_FILE_SIZE, MAX_SOURCE_MAP_FILE_COUNT, MAX_PRESIGNED_CLIENT_TOKEN_LENGTH, MAX_PRESIGNED_PATHNAME_LENGTH, ImportGraphPayloadSchema, SdkHealthReportSchema, TierLimitsSchema, SdkInitResponseSchema, DiscoveryResponseSchema, SourceMapUploadResponseSchema, PresignedUploadRequestSchema, PresignedUploadResponseSchema, SourceMapManifestRequestSchema, SourceMapManifestResponseSchema, K;
|
|
14570
14570
|
var init_dist = __esm({
|
|
14571
14571
|
"../protocol/dist/index.js"() {
|
|
14572
14572
|
"use strict";
|
|
@@ -14617,6 +14617,59 @@ var init_dist = __esm({
|
|
|
14617
14617
|
NODE_ENV: external_exports.string().optional(),
|
|
14618
14618
|
VERCEL_ENV: external_exports.string().optional()
|
|
14619
14619
|
});
|
|
14620
|
+
GLASSTRACE_ATTRIBUTE_NAMES = {
|
|
14621
|
+
// Server-side attributes
|
|
14622
|
+
TRACE_TYPE: "glasstrace.trace.type",
|
|
14623
|
+
SESSION_ID: "glasstrace.session.id",
|
|
14624
|
+
CORRELATION_ID: "glasstrace.correlation.id",
|
|
14625
|
+
ENVIRONMENT: "glasstrace.environment",
|
|
14626
|
+
ROUTE: "glasstrace.route",
|
|
14627
|
+
HTTP_METHOD: "glasstrace.http.method",
|
|
14628
|
+
HTTP_STATUS_CODE: "glasstrace.http.status_code",
|
|
14629
|
+
HTTP_DURATION_MS: "glasstrace.http.duration_ms",
|
|
14630
|
+
ERROR_MESSAGE: "glasstrace.error.message",
|
|
14631
|
+
ERROR_CODE: "glasstrace.error.code",
|
|
14632
|
+
ERROR_CATEGORY: "glasstrace.error.category",
|
|
14633
|
+
ERROR_FIELD: "glasstrace.error.field",
|
|
14634
|
+
ORM_PROVIDER: "glasstrace.orm.provider",
|
|
14635
|
+
ORM_MODEL: "glasstrace.orm.model",
|
|
14636
|
+
ORM_OPERATION: "glasstrace.orm.operation",
|
|
14637
|
+
ORM_DURATION_MS: "glasstrace.orm.duration_ms",
|
|
14638
|
+
FETCH_URL: "glasstrace.fetch.url",
|
|
14639
|
+
FETCH_METHOD: "glasstrace.fetch.method",
|
|
14640
|
+
FETCH_STATUS_CODE: "glasstrace.fetch.status_code",
|
|
14641
|
+
FETCH_DURATION_MS: "glasstrace.fetch.duration_ms",
|
|
14642
|
+
FETCH_TARGET: "glasstrace.fetch.target",
|
|
14643
|
+
ENV_REFERENCED: "glasstrace.env.referenced",
|
|
14644
|
+
BUILD_HASH: "glasstrace.build.hash",
|
|
14645
|
+
SOURCE_FILE: "glasstrace.source.file",
|
|
14646
|
+
SOURCE_LINE: "glasstrace.source.line",
|
|
14647
|
+
SOURCE_MAPPED: "glasstrace.source.mapped",
|
|
14648
|
+
TRPC_PROCEDURE: "glasstrace.trpc.procedure",
|
|
14649
|
+
ERROR_RESPONSE_BODY: "glasstrace.error.response_body",
|
|
14650
|
+
NEXT_ACTION_DETECTED: "glasstrace.next.action.detected",
|
|
14651
|
+
// Client-side attributes
|
|
14652
|
+
PLATFORM: "glasstrace.platform",
|
|
14653
|
+
GESTURE_TYPE: "glasstrace.gesture.type",
|
|
14654
|
+
TRIGGER_TYPE: "glasstrace.trigger.type",
|
|
14655
|
+
ELEMENT_FINGERPRINT: "glasstrace.element.fingerprint",
|
|
14656
|
+
ELEMENT_CONFIDENCE: "glasstrace.element.confidence",
|
|
14657
|
+
TAB_ID: "glasstrace.tab.id"
|
|
14658
|
+
};
|
|
14659
|
+
DEFAULT_CAPTURE_CONFIG = {
|
|
14660
|
+
requestBodies: false,
|
|
14661
|
+
queryParamValues: false,
|
|
14662
|
+
envVarValues: false,
|
|
14663
|
+
fullConsoleOutput: false,
|
|
14664
|
+
importGraph: false,
|
|
14665
|
+
consoleErrors: false,
|
|
14666
|
+
errorResponseBodies: false
|
|
14667
|
+
};
|
|
14668
|
+
MAX_SOURCE_MAP_FILE_PATH_LENGTH = 512;
|
|
14669
|
+
MAX_SOURCE_MAP_FILE_SIZE = 50 * 1024 * 1024;
|
|
14670
|
+
MAX_SOURCE_MAP_FILE_COUNT = 100;
|
|
14671
|
+
MAX_PRESIGNED_CLIENT_TOKEN_LENGTH = 2048;
|
|
14672
|
+
MAX_PRESIGNED_PATHNAME_LENGTH = 1024;
|
|
14620
14673
|
ImportGraphPayloadSchema = external_exports.object({
|
|
14621
14674
|
buildHash: BuildHashSchema,
|
|
14622
14675
|
graph: external_exports.record(external_exports.string(), external_exports.array(external_exports.string()))
|
|
@@ -14663,35 +14716,68 @@ var init_dist = __esm({
|
|
|
14663
14716
|
buildHash: BuildHashSchema,
|
|
14664
14717
|
files: external_exports.array(
|
|
14665
14718
|
external_exports.object({
|
|
14666
|
-
filePath: external_exports.string().min(1)
|
|
14667
|
-
|
|
14719
|
+
filePath: external_exports.string().min(1).max(
|
|
14720
|
+
MAX_SOURCE_MAP_FILE_PATH_LENGTH,
|
|
14721
|
+
`filePath length exceeds maximum of ${MAX_SOURCE_MAP_FILE_PATH_LENGTH} characters`
|
|
14722
|
+
),
|
|
14723
|
+
sizeBytes: external_exports.number().int().positive().max(
|
|
14724
|
+
MAX_SOURCE_MAP_FILE_SIZE,
|
|
14725
|
+
`sizeBytes exceeds maximum of ${MAX_SOURCE_MAP_FILE_SIZE} bytes (${MAX_SOURCE_MAP_FILE_SIZE / (1024 * 1024)} MiB)`
|
|
14726
|
+
)
|
|
14668
14727
|
})
|
|
14669
|
-
).min(1).max(
|
|
14728
|
+
).min(1).max(
|
|
14729
|
+
MAX_SOURCE_MAP_FILE_COUNT,
|
|
14730
|
+
`files array exceeds maximum of ${MAX_SOURCE_MAP_FILE_COUNT} entries`
|
|
14731
|
+
)
|
|
14670
14732
|
});
|
|
14671
14733
|
PresignedUploadResponseSchema = external_exports.object({
|
|
14672
14734
|
uploadId: external_exports.string().uuid(),
|
|
14673
14735
|
expiresAt: external_exports.number().int().nonnegative(),
|
|
14674
14736
|
files: external_exports.array(
|
|
14675
14737
|
external_exports.object({
|
|
14676
|
-
filePath: external_exports.string().min(1)
|
|
14677
|
-
|
|
14678
|
-
|
|
14679
|
-
|
|
14738
|
+
filePath: external_exports.string().min(1).max(
|
|
14739
|
+
MAX_SOURCE_MAP_FILE_PATH_LENGTH,
|
|
14740
|
+
`filePath length exceeds maximum of ${MAX_SOURCE_MAP_FILE_PATH_LENGTH} characters`
|
|
14741
|
+
),
|
|
14742
|
+
clientToken: external_exports.string().min(1).max(
|
|
14743
|
+
MAX_PRESIGNED_CLIENT_TOKEN_LENGTH,
|
|
14744
|
+
`clientToken length exceeds maximum of ${MAX_PRESIGNED_CLIENT_TOKEN_LENGTH} characters`
|
|
14745
|
+
),
|
|
14746
|
+
pathname: external_exports.string().min(1).max(
|
|
14747
|
+
MAX_PRESIGNED_PATHNAME_LENGTH,
|
|
14748
|
+
`pathname length exceeds maximum of ${MAX_PRESIGNED_PATHNAME_LENGTH} characters`
|
|
14749
|
+
),
|
|
14750
|
+
maxBytes: external_exports.number().int().positive().max(
|
|
14751
|
+
MAX_SOURCE_MAP_FILE_SIZE,
|
|
14752
|
+
`maxBytes exceeds maximum of ${MAX_SOURCE_MAP_FILE_SIZE} bytes (${MAX_SOURCE_MAP_FILE_SIZE / (1024 * 1024)} MiB)`
|
|
14753
|
+
),
|
|
14680
14754
|
/** Vercel Blob access mode — explicit in the contract per DISC-756. */
|
|
14681
14755
|
access: external_exports.enum(["public"])
|
|
14682
14756
|
})
|
|
14683
|
-
).min(1).max(
|
|
14757
|
+
).min(1).max(
|
|
14758
|
+
MAX_SOURCE_MAP_FILE_COUNT,
|
|
14759
|
+
`files array exceeds maximum of ${MAX_SOURCE_MAP_FILE_COUNT} entries`
|
|
14760
|
+
)
|
|
14684
14761
|
});
|
|
14685
14762
|
SourceMapManifestRequestSchema = external_exports.object({
|
|
14686
14763
|
uploadId: external_exports.string().uuid(),
|
|
14687
14764
|
buildHash: BuildHashSchema,
|
|
14688
14765
|
files: external_exports.array(
|
|
14689
14766
|
external_exports.object({
|
|
14690
|
-
filePath: external_exports.string().min(1)
|
|
14691
|
-
|
|
14767
|
+
filePath: external_exports.string().min(1).max(
|
|
14768
|
+
MAX_SOURCE_MAP_FILE_PATH_LENGTH,
|
|
14769
|
+
`filePath length exceeds maximum of ${MAX_SOURCE_MAP_FILE_PATH_LENGTH} characters`
|
|
14770
|
+
),
|
|
14771
|
+
sizeBytes: external_exports.number().int().positive().max(
|
|
14772
|
+
MAX_SOURCE_MAP_FILE_SIZE,
|
|
14773
|
+
`sizeBytes exceeds maximum of ${MAX_SOURCE_MAP_FILE_SIZE} bytes (${MAX_SOURCE_MAP_FILE_SIZE / (1024 * 1024)} MiB)`
|
|
14774
|
+
),
|
|
14692
14775
|
blobUrl: external_exports.string().url()
|
|
14693
14776
|
})
|
|
14694
|
-
).min(1).max(
|
|
14777
|
+
).min(1).max(
|
|
14778
|
+
MAX_SOURCE_MAP_FILE_COUNT,
|
|
14779
|
+
`files array exceeds maximum of ${MAX_SOURCE_MAP_FILE_COUNT} entries`
|
|
14780
|
+
)
|
|
14695
14781
|
});
|
|
14696
14782
|
SourceMapManifestResponseSchema = external_exports.object({
|
|
14697
14783
|
success: external_exports.literal(true),
|
|
@@ -14700,54 +14786,6 @@ var init_dist = __esm({
|
|
|
14700
14786
|
totalSizeBytes: external_exports.number().int().nonnegative(),
|
|
14701
14787
|
activatedAt: external_exports.number().int().positive()
|
|
14702
14788
|
});
|
|
14703
|
-
GLASSTRACE_ATTRIBUTE_NAMES = {
|
|
14704
|
-
// Server-side attributes
|
|
14705
|
-
TRACE_TYPE: "glasstrace.trace.type",
|
|
14706
|
-
SESSION_ID: "glasstrace.session.id",
|
|
14707
|
-
CORRELATION_ID: "glasstrace.correlation.id",
|
|
14708
|
-
ENVIRONMENT: "glasstrace.environment",
|
|
14709
|
-
ROUTE: "glasstrace.route",
|
|
14710
|
-
HTTP_METHOD: "glasstrace.http.method",
|
|
14711
|
-
HTTP_STATUS_CODE: "glasstrace.http.status_code",
|
|
14712
|
-
HTTP_DURATION_MS: "glasstrace.http.duration_ms",
|
|
14713
|
-
ERROR_MESSAGE: "glasstrace.error.message",
|
|
14714
|
-
ERROR_CODE: "glasstrace.error.code",
|
|
14715
|
-
ERROR_CATEGORY: "glasstrace.error.category",
|
|
14716
|
-
ERROR_FIELD: "glasstrace.error.field",
|
|
14717
|
-
ORM_PROVIDER: "glasstrace.orm.provider",
|
|
14718
|
-
ORM_MODEL: "glasstrace.orm.model",
|
|
14719
|
-
ORM_OPERATION: "glasstrace.orm.operation",
|
|
14720
|
-
ORM_DURATION_MS: "glasstrace.orm.duration_ms",
|
|
14721
|
-
FETCH_URL: "glasstrace.fetch.url",
|
|
14722
|
-
FETCH_METHOD: "glasstrace.fetch.method",
|
|
14723
|
-
FETCH_STATUS_CODE: "glasstrace.fetch.status_code",
|
|
14724
|
-
FETCH_DURATION_MS: "glasstrace.fetch.duration_ms",
|
|
14725
|
-
FETCH_TARGET: "glasstrace.fetch.target",
|
|
14726
|
-
ENV_REFERENCED: "glasstrace.env.referenced",
|
|
14727
|
-
BUILD_HASH: "glasstrace.build.hash",
|
|
14728
|
-
SOURCE_FILE: "glasstrace.source.file",
|
|
14729
|
-
SOURCE_LINE: "glasstrace.source.line",
|
|
14730
|
-
SOURCE_MAPPED: "glasstrace.source.mapped",
|
|
14731
|
-
TRPC_PROCEDURE: "glasstrace.trpc.procedure",
|
|
14732
|
-
ERROR_RESPONSE_BODY: "glasstrace.error.response_body",
|
|
14733
|
-
NEXT_ACTION_DETECTED: "glasstrace.next.action.detected",
|
|
14734
|
-
// Client-side attributes
|
|
14735
|
-
PLATFORM: "glasstrace.platform",
|
|
14736
|
-
GESTURE_TYPE: "glasstrace.gesture.type",
|
|
14737
|
-
TRIGGER_TYPE: "glasstrace.trigger.type",
|
|
14738
|
-
ELEMENT_FINGERPRINT: "glasstrace.element.fingerprint",
|
|
14739
|
-
ELEMENT_CONFIDENCE: "glasstrace.element.confidence",
|
|
14740
|
-
TAB_ID: "glasstrace.tab.id"
|
|
14741
|
-
};
|
|
14742
|
-
DEFAULT_CAPTURE_CONFIG = {
|
|
14743
|
-
requestBodies: false,
|
|
14744
|
-
queryParamValues: false,
|
|
14745
|
-
envVarValues: false,
|
|
14746
|
-
fullConsoleOutput: false,
|
|
14747
|
-
importGraph: false,
|
|
14748
|
-
consoleErrors: false,
|
|
14749
|
-
errorResponseBodies: false
|
|
14750
|
-
};
|
|
14751
14789
|
K = new Uint32Array([
|
|
14752
14790
|
1116352408,
|
|
14753
14791
|
1899447441,
|
|
@@ -18432,15 +18470,32 @@ function prepareErrorResponseBody(body) {
|
|
|
18432
18470
|
}
|
|
18433
18471
|
|
|
18434
18472
|
// src/build-info.ts
|
|
18473
|
+
init_console_capture();
|
|
18435
18474
|
var UNSET = "";
|
|
18475
|
+
var SHA_SHAPE = /^[0-9a-f]{7,64}$/i;
|
|
18476
|
+
function redactBuildHash(value) {
|
|
18477
|
+
const sanitize2 = (s) => s.replace(/[\x00-\x1F\x7F]/g, "?");
|
|
18478
|
+
if (value.length <= 12) return sanitize2(value.slice(0, 4)) + "...";
|
|
18479
|
+
return sanitize2(value.slice(0, 8)) + "..." + sanitize2(value.slice(-4));
|
|
18480
|
+
}
|
|
18436
18481
|
function readBuildHashFromEnv() {
|
|
18437
18482
|
const raw = process.env.GLASSTRACE_BUILD_HASH;
|
|
18438
18483
|
if (typeof raw !== "string") return UNSET;
|
|
18439
18484
|
const trimmed = raw.trim();
|
|
18440
|
-
|
|
18485
|
+
if (trimmed.length === 0) return UNSET;
|
|
18486
|
+
if (!SHA_SHAPE.test(trimmed)) {
|
|
18487
|
+
sdkLog(
|
|
18488
|
+
"warn",
|
|
18489
|
+
`[glasstrace] warning: GLASSTRACE_BUILD_HASH=${redactBuildHash(trimmed)} does not match expected SHA shape (7-64 hex characters); source-map enrichment may not work as expected.`
|
|
18490
|
+
);
|
|
18491
|
+
}
|
|
18492
|
+
return trimmed;
|
|
18441
18493
|
}
|
|
18442
|
-
var cachedBuildHash =
|
|
18494
|
+
var cachedBuildHash = null;
|
|
18443
18495
|
function getBuildHash() {
|
|
18496
|
+
if (cachedBuildHash === null) {
|
|
18497
|
+
cachedBuildHash = readBuildHashFromEnv();
|
|
18498
|
+
}
|
|
18444
18499
|
return cachedBuildHash === UNSET ? void 0 : cachedBuildHash;
|
|
18445
18500
|
}
|
|
18446
18501
|
|
|
@@ -22057,9 +22112,11 @@ This message will not appear once Glasstrace is added to your provider config.`
|
|
|
22057
22112
|
}
|
|
22058
22113
|
function emitGuidanceMessage() {
|
|
22059
22114
|
const isSentry = detectSentry();
|
|
22115
|
+
const isProduction = typeof process !== "undefined" && process.env?.NODE_ENV === "production";
|
|
22116
|
+
const level = isProduction ? "error" : "warn";
|
|
22060
22117
|
if (isSentry) {
|
|
22061
22118
|
sdkLog(
|
|
22062
|
-
|
|
22119
|
+
level,
|
|
22063
22120
|
`[glasstrace] An existing OTel TracerProvider is registered but Glasstrace could not auto-attach its span processor.
|
|
22064
22121
|
Add Glasstrace to your Sentry config:
|
|
22065
22122
|
|
|
@@ -22072,7 +22129,7 @@ Add Glasstrace to your Sentry config:
|
|
|
22072
22129
|
);
|
|
22073
22130
|
} else {
|
|
22074
22131
|
sdkLog(
|
|
22075
|
-
|
|
22132
|
+
level,
|
|
22076
22133
|
`[glasstrace] An existing OTel TracerProvider is registered but Glasstrace could not auto-attach its span processor.
|
|
22077
22134
|
Add Glasstrace to your provider configuration:
|
|
22078
22135
|
|
|
@@ -22199,11 +22256,27 @@ async function runCoexistencePath(existingProvider, config2) {
|
|
|
22199
22256
|
setOtelState(OtelState.COEXISTENCE_FAILED);
|
|
22200
22257
|
emitLifecycleEvent("otel:configured", { state: OtelState.COEXISTENCE_FAILED, scenario: "C/F" });
|
|
22201
22258
|
emitLifecycleEvent("otel:injection_failed", { reason: "provider internals inaccessible" });
|
|
22259
|
+
emitLifecycleEvent("otel:failed", {
|
|
22260
|
+
category: "auto-attach-returned-null",
|
|
22261
|
+
message: "tryAutoAttachGlasstraceProcessor returned null \u2014 the existing OTel TracerProvider exposed no injection point. Spans are not reaching the Glasstrace exporter. Apply the manual createGlasstraceSpanProcessor() workaround documented in the SDK README.",
|
|
22262
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
22263
|
+
providerClass: readProviderClass(existingProvider)
|
|
22264
|
+
});
|
|
22202
22265
|
const coreState = getCoreState();
|
|
22203
22266
|
if (coreState === CoreState.ACTIVE || coreState === CoreState.KEY_RESOLVED) {
|
|
22204
22267
|
setCoreState(CoreState.ACTIVE_DEGRADED);
|
|
22205
22268
|
}
|
|
22206
22269
|
}
|
|
22270
|
+
function readProviderClass(tracerProvider) {
|
|
22271
|
+
try {
|
|
22272
|
+
const proxy = tracerProvider;
|
|
22273
|
+
const delegate = typeof proxy.getDelegate === "function" ? proxy.getDelegate() : tracerProvider;
|
|
22274
|
+
const name = delegate?.constructor?.name;
|
|
22275
|
+
return typeof name === "string" && name.length > 0 ? name : void 0;
|
|
22276
|
+
} catch {
|
|
22277
|
+
return void 0;
|
|
22278
|
+
}
|
|
22279
|
+
}
|
|
22207
22280
|
async function runRegistrationPath(config2, sessionManager) {
|
|
22208
22281
|
const exporterUrl = `${config2.endpoint}/v1/traces`;
|
|
22209
22282
|
const createOtlpExporter = (url2, headers) => new OTLPTraceExporter({ url: url2, headers });
|
|
@@ -22506,6 +22579,7 @@ init_console_capture();
|
|
|
22506
22579
|
var _projectRoot = null;
|
|
22507
22580
|
var _sdkVersion = "unknown";
|
|
22508
22581
|
var _lastScenario;
|
|
22582
|
+
var _lastError;
|
|
22509
22583
|
var _debounceTimer = null;
|
|
22510
22584
|
var _started = false;
|
|
22511
22585
|
function startRuntimeStateWriter(options) {
|
|
@@ -22528,6 +22602,10 @@ function startRuntimeStateWriter(options) {
|
|
|
22528
22602
|
_lastScenario = scenario;
|
|
22529
22603
|
debouncedWrite();
|
|
22530
22604
|
});
|
|
22605
|
+
onLifecycleEvent("otel:failed", (payload) => {
|
|
22606
|
+
_lastError = { ...payload };
|
|
22607
|
+
debouncedWrite();
|
|
22608
|
+
});
|
|
22531
22609
|
onLifecycleEvent("auth:key_resolved", () => debouncedWrite());
|
|
22532
22610
|
onLifecycleEvent("auth:claim_started", () => debouncedWrite());
|
|
22533
22611
|
onLifecycleEvent("auth:claim_completed", () => debouncedWrite());
|
|
@@ -22555,6 +22633,9 @@ function writeStateNow() {
|
|
|
22555
22633
|
auth: { state: state.auth },
|
|
22556
22634
|
otel: { state: state.otel, scenario: _lastScenario }
|
|
22557
22635
|
};
|
|
22636
|
+
if (_lastError) {
|
|
22637
|
+
runtimeState.lastError = _lastError;
|
|
22638
|
+
}
|
|
22558
22639
|
const dir = (0, import_node_path.join)(_projectRoot, ".glasstrace");
|
|
22559
22640
|
const filePath = (0, import_node_path.join)(dir, "runtime-state.json");
|
|
22560
22641
|
(0, import_node_fs.mkdirSync)(dir, { recursive: true, mode: 448 });
|
|
@@ -22599,7 +22680,7 @@ function registerGlasstrace(options) {
|
|
|
22599
22680
|
setCoreState(CoreState.REGISTERING);
|
|
22600
22681
|
startRuntimeStateWriter({
|
|
22601
22682
|
projectRoot: process.cwd(),
|
|
22602
|
-
sdkVersion: "1.3.
|
|
22683
|
+
sdkVersion: "1.3.4"
|
|
22603
22684
|
});
|
|
22604
22685
|
const config2 = resolveConfig(options);
|
|
22605
22686
|
if (config2.verbose) {
|
|
@@ -22765,8 +22846,8 @@ async function backgroundInit(config2, anonKeyForInit, generation) {
|
|
|
22765
22846
|
if (config2.verbose) {
|
|
22766
22847
|
console.info("[glasstrace] Background init firing.");
|
|
22767
22848
|
}
|
|
22768
|
-
const healthReport = collectHealthReport("1.3.
|
|
22769
|
-
const initResult = await performInit(config2, anonKeyForInit, "1.3.
|
|
22849
|
+
const healthReport = collectHealthReport("1.3.4");
|
|
22850
|
+
const initResult = await performInit(config2, anonKeyForInit, "1.3.4", healthReport);
|
|
22770
22851
|
if (generation !== registrationGeneration) return;
|
|
22771
22852
|
const currentState = getCoreState();
|
|
22772
22853
|
if (currentState === CoreState.SHUTTING_DOWN || currentState === CoreState.SHUTDOWN) {
|
|
@@ -22789,7 +22870,7 @@ async function backgroundInit(config2, anonKeyForInit, generation) {
|
|
|
22789
22870
|
}
|
|
22790
22871
|
maybeInstallConsoleCapture();
|
|
22791
22872
|
if (didLastInitSucceed()) {
|
|
22792
|
-
startHeartbeat(config2, anonKeyForInit, "1.3.
|
|
22873
|
+
startHeartbeat(config2, anonKeyForInit, "1.3.4", generation, (newApiKey, accountId) => {
|
|
22793
22874
|
setAuthState(AuthState.CLAIMING);
|
|
22794
22875
|
emitLifecycleEvent("auth:claim_started", { accountId });
|
|
22795
22876
|
setResolvedApiKey(newApiKey);
|
|
@@ -22951,8 +23032,8 @@ init_dist();
|
|
|
22951
23032
|
init_error_nudge();
|
|
22952
23033
|
|
|
22953
23034
|
// src/stack-frame.ts
|
|
22954
|
-
var PAREN_FRAME = /^\s*at\s+(?:[^()]+\s+)?\(([^()\s]+):(\d+):(\d+)\)\s*$/;
|
|
22955
|
-
var BARE_FRAME = /^\s*at\s+(?:async\s+)?([^()\s]+):(\d+):(\d+)\s*$/;
|
|
23035
|
+
var PAREN_FRAME = /^\s*at\s+(?!eval\s+\(eval\s+at\b)(?:[^()]+\s+)?\(([^()\s]+(?:\([A-Za-z0-9_.-]+\)[^()\s]*)*):(\d+):(\d+)\)\s*$/;
|
|
23036
|
+
var BARE_FRAME = /^\s*at\s+(?:async\s+)?([^()\s]+(?:\([A-Za-z0-9_.-]+\)[^()\s]*)*):(\d+):(\d+)\s*$/;
|
|
22956
23037
|
var INTERNAL_FRAME_PATTERNS = [
|
|
22957
23038
|
/^node:/,
|
|
22958
23039
|
/^node:internal\//,
|