@blyp/core 0.1.2 → 0.1.21
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 +56 -3
- package/dist/astro.js +4602 -0
- package/dist/astro.js.map +1 -0
- package/dist/astro.mjs +4574 -0
- package/dist/astro.mjs.map +1 -0
- package/dist/client.js +7 -0
- package/dist/client.js.map +1 -1
- package/dist/client.mjs +7 -0
- package/dist/client.mjs.map +1 -1
- package/dist/connectors/betterstack.js +24 -0
- package/dist/connectors/betterstack.js.map +1 -1
- package/dist/connectors/betterstack.mjs +24 -0
- package/dist/connectors/betterstack.mjs.map +1 -1
- package/dist/connectors/databuddy/index.d.ts +7 -0
- package/dist/connectors/databuddy/sender.d.ts +5 -0
- package/dist/connectors/databuddy.js +1456 -0
- package/dist/connectors/databuddy.js.map +1 -0
- package/dist/connectors/databuddy.mjs +1451 -0
- package/dist/connectors/databuddy.mjs.map +1 -0
- package/dist/connectors/otlp.js +24 -0
- package/dist/connectors/otlp.js.map +1 -1
- package/dist/connectors/otlp.mjs +24 -0
- package/dist/connectors/otlp.mjs.map +1 -1
- package/dist/connectors/posthog.js +24 -0
- package/dist/connectors/posthog.js.map +1 -1
- package/dist/connectors/posthog.mjs +24 -0
- package/dist/connectors/posthog.mjs.map +1 -1
- package/dist/connectors/sentry.js +24 -0
- package/dist/connectors/sentry.js.map +1 -1
- package/dist/connectors/sentry.mjs +24 -0
- package/dist/connectors/sentry.mjs.map +1 -1
- package/dist/core/config.d.ts +1 -1
- package/dist/core/logger.d.ts +3 -0
- package/dist/elysia.js +455 -30
- package/dist/elysia.js.map +1 -1
- package/dist/elysia.mjs +455 -30
- package/dist/elysia.mjs.map +1 -1
- package/dist/expo.js +7 -0
- package/dist/expo.js.map +1 -1
- package/dist/expo.mjs +7 -0
- package/dist/expo.mjs.map +1 -1
- package/dist/express.js +455 -30
- package/dist/express.js.map +1 -1
- package/dist/express.mjs +455 -30
- package/dist/express.mjs.map +1 -1
- package/dist/fastify.js +455 -30
- package/dist/fastify.js.map +1 -1
- package/dist/fastify.mjs +455 -30
- package/dist/fastify.mjs.map +1 -1
- package/dist/frameworks/astro/index.d.ts +2 -0
- package/dist/frameworks/astro/logger.d.ts +3 -0
- package/dist/frameworks/nitro/index.d.ts +2 -0
- package/dist/frameworks/nitro/logger.d.ts +6 -0
- package/dist/frameworks/nuxt/index.d.ts +2 -0
- package/dist/frameworks/nuxt/logger.d.ts +3 -0
- package/dist/frameworks/react-router/index.d.ts +2 -0
- package/dist/frameworks/react-router/logger.d.ts +3 -0
- package/dist/frameworks/shared/h3.d.ts +19 -0
- package/dist/hono.js +455 -30
- package/dist/hono.js.map +1 -1
- package/dist/hono.mjs +455 -30
- package/dist/hono.mjs.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +1142 -78
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1135 -79
- package/dist/index.mjs.map +1 -1
- package/dist/nestjs.js +455 -30
- package/dist/nestjs.js.map +1 -1
- package/dist/nestjs.mjs +455 -30
- package/dist/nestjs.mjs.map +1 -1
- package/dist/nextjs.js +455 -30
- package/dist/nextjs.js.map +1 -1
- package/dist/nextjs.mjs +455 -30
- package/dist/nextjs.mjs.map +1 -1
- package/dist/nitro.js +4726 -0
- package/dist/nitro.js.map +1 -0
- package/dist/nitro.mjs +4698 -0
- package/dist/nitro.mjs.map +1 -0
- package/dist/nuxt.js +4733 -0
- package/dist/nuxt.js.map +1 -0
- package/dist/nuxt.mjs +4705 -0
- package/dist/nuxt.mjs.map +1 -0
- package/dist/react-router.js +4644 -0
- package/dist/react-router.js.map +1 -0
- package/dist/react-router.mjs +4616 -0
- package/dist/react-router.mjs.map +1 -0
- package/dist/standalone.js +423 -53
- package/dist/standalone.js.map +1 -1
- package/dist/standalone.mjs +423 -53
- package/dist/standalone.mjs.map +1 -1
- package/dist/sveltekit.js +455 -30
- package/dist/sveltekit.js.map +1 -1
- package/dist/sveltekit.mjs +455 -30
- package/dist/sveltekit.mjs.map +1 -1
- package/dist/tanstack-start.js +455 -30
- package/dist/tanstack-start.js.map +1 -1
- package/dist/tanstack-start.mjs +455 -30
- package/dist/tanstack-start.mjs.map +1 -1
- package/dist/types/connectors/databuddy.d.ts +52 -0
- package/dist/types/core/config.d.ts +32 -0
- package/dist/types/core/logger.d.ts +2 -0
- package/dist/types/frameworks/astro.d.ts +32 -0
- package/dist/types/frameworks/nitro.d.ts +62 -0
- package/dist/types/frameworks/nuxt.d.ts +12 -0
- package/dist/types/frameworks/react-router.d.ts +33 -0
- package/dist/types/frameworks/shared.d.ts +24 -0
- package/dist/types/shared/client-log.d.ts +1 -1
- package/exports/connectors/databuddy.js +1 -0
- package/exports/connectors/databuddy.mjs +1 -0
- package/exports/frameworks/astro.js +1 -0
- package/exports/frameworks/astro.mjs +1 -0
- package/exports/frameworks/nitro.js +1 -0
- package/exports/frameworks/nitro.mjs +1 -0
- package/exports/frameworks/nuxt.js +1 -0
- package/exports/frameworks/nuxt.mjs +1 -0
- package/exports/frameworks/react-router.js +1 -0
- package/exports/frameworks/react-router.mjs +1 -0
- package/package.json +59 -2
- package/types/connectors/databuddy.d.ts +1 -0
- package/types/frameworks/astro.d.ts +1 -0
- package/types/frameworks/nitro.d.ts +1 -0
- package/types/frameworks/nuxt.d.ts +1 -0
- package/types/frameworks/react-router.d.ts +1 -0
package/dist/standalone.js
CHANGED
|
@@ -10,6 +10,7 @@ var fflate = require('fflate');
|
|
|
10
10
|
var crypto = require('crypto');
|
|
11
11
|
var Sentry = require('@sentry/node');
|
|
12
12
|
var node = require('@logtail/node');
|
|
13
|
+
var node$1 = require('@databuddy/sdk/node');
|
|
13
14
|
var apiLogs = require('@opentelemetry/api-logs');
|
|
14
15
|
var exporterLogsOtlpHttp = require('@opentelemetry/exporter-logs-otlp-http');
|
|
15
16
|
var resources = require('@opentelemetry/resources');
|
|
@@ -164,6 +165,7 @@ function hasNonEmptyString(value) {
|
|
|
164
165
|
var DEFAULT_CLIENT_LOG_ENDPOINT = "/inngest";
|
|
165
166
|
zod.z.union([
|
|
166
167
|
zod.z.literal("betterstack"),
|
|
168
|
+
zod.z.literal("databuddy"),
|
|
167
169
|
zod.z.literal("posthog"),
|
|
168
170
|
zod.z.literal("sentry"),
|
|
169
171
|
zod.z.undefined(),
|
|
@@ -174,16 +176,16 @@ zod.z.union([
|
|
|
174
176
|
]);
|
|
175
177
|
|
|
176
178
|
// src/shared/once.ts
|
|
177
|
-
function createConsoleOnceLogger(method,
|
|
179
|
+
function createConsoleOnceLogger(method, warnedKeys7 = /* @__PURE__ */ new Set()) {
|
|
178
180
|
return (key, message, error) => {
|
|
179
|
-
if (
|
|
181
|
+
if (warnedKeys7.has(key) || typeof console === "undefined") {
|
|
180
182
|
return;
|
|
181
183
|
}
|
|
182
184
|
const writer = console[method];
|
|
183
185
|
if (typeof writer !== "function") {
|
|
184
186
|
return;
|
|
185
187
|
}
|
|
186
|
-
|
|
188
|
+
warnedKeys7.add(key);
|
|
187
189
|
if (error === void 0) {
|
|
188
190
|
writer.call(console, message);
|
|
189
191
|
return;
|
|
@@ -191,11 +193,11 @@ function createConsoleOnceLogger(method, warnedKeys6 = /* @__PURE__ */ new Set()
|
|
|
191
193
|
writer.call(console, message, error);
|
|
192
194
|
};
|
|
193
195
|
}
|
|
194
|
-
function createWarnOnceLogger(
|
|
195
|
-
return createConsoleOnceLogger("warn",
|
|
196
|
+
function createWarnOnceLogger(warnedKeys7) {
|
|
197
|
+
return createConsoleOnceLogger("warn", warnedKeys7);
|
|
196
198
|
}
|
|
197
|
-
function createErrorOnceLogger(
|
|
198
|
-
return createConsoleOnceLogger("error",
|
|
199
|
+
function createErrorOnceLogger(warnedKeys7) {
|
|
200
|
+
return createConsoleOnceLogger("error", warnedKeys7);
|
|
199
201
|
}
|
|
200
202
|
|
|
201
203
|
// src/core/config.ts
|
|
@@ -561,6 +563,28 @@ function mergePostHogConnectorConfig(base, override) {
|
|
|
561
563
|
}
|
|
562
564
|
};
|
|
563
565
|
}
|
|
566
|
+
function mergeDatabuddyConnectorConfig(base, override) {
|
|
567
|
+
const enabled = override?.enabled ?? base?.enabled ?? false;
|
|
568
|
+
const apiKey = override?.apiKey ?? base?.apiKey;
|
|
569
|
+
const websiteId = override?.websiteId ?? base?.websiteId;
|
|
570
|
+
const ready = enabled && hasNonEmptyString(apiKey) && hasNonEmptyString(websiteId);
|
|
571
|
+
return {
|
|
572
|
+
enabled,
|
|
573
|
+
mode: override?.mode ?? base?.mode ?? "auto",
|
|
574
|
+
apiKey,
|
|
575
|
+
websiteId,
|
|
576
|
+
namespace: override?.namespace ?? base?.namespace,
|
|
577
|
+
source: override?.source ?? base?.source,
|
|
578
|
+
apiUrl: override?.apiUrl ?? base?.apiUrl,
|
|
579
|
+
debug: override?.debug ?? base?.debug ?? false,
|
|
580
|
+
enableBatching: override?.enableBatching ?? base?.enableBatching ?? true,
|
|
581
|
+
batchSize: override?.batchSize ?? base?.batchSize,
|
|
582
|
+
batchTimeout: override?.batchTimeout ?? base?.batchTimeout,
|
|
583
|
+
maxQueueSize: override?.maxQueueSize ?? base?.maxQueueSize,
|
|
584
|
+
ready,
|
|
585
|
+
status: ready ? "enabled" : "missing"
|
|
586
|
+
};
|
|
587
|
+
}
|
|
564
588
|
function mergeBetterStackConnectorConfig(base, override) {
|
|
565
589
|
const sourceToken = override?.sourceToken ?? base?.sourceToken;
|
|
566
590
|
const ingestingHost = override?.ingestingHost ?? base?.ingestingHost;
|
|
@@ -651,6 +675,7 @@ function mergeOTLPConnectorsConfig(base, override) {
|
|
|
651
675
|
function mergeConnectorsConfig(base, override) {
|
|
652
676
|
return {
|
|
653
677
|
betterstack: mergeBetterStackConnectorConfig(base?.betterstack, override?.betterstack),
|
|
678
|
+
databuddy: mergeDatabuddyConnectorConfig(base?.databuddy, override?.databuddy),
|
|
654
679
|
posthog: mergePostHogConnectorConfig(base?.posthog, override?.posthog),
|
|
655
680
|
sentry: mergeSentryConnectorConfig(base?.sentry, override?.sentry),
|
|
656
681
|
otlp: mergeOTLPConnectorsConfig(base?.otlp, override?.otlp)
|
|
@@ -1746,10 +1771,318 @@ function createBetterStackSender(config) {
|
|
|
1746
1771
|
}
|
|
1747
1772
|
};
|
|
1748
1773
|
}
|
|
1749
|
-
var PREVIOUSLY_CAPTURED_ERROR_KEY2 = "__posthog_previously_captured_error";
|
|
1750
1774
|
var warnedKeys3 = /* @__PURE__ */ new Set();
|
|
1775
|
+
var senderCache = /* @__PURE__ */ new Map();
|
|
1751
1776
|
var testHooks2 = {};
|
|
1752
1777
|
var warnOnce4 = createErrorOnceLogger(warnedKeys3);
|
|
1778
|
+
function registerShutdownHooks2(key, shutdown) {
|
|
1779
|
+
const handlers = ["beforeExit", "SIGINT", "SIGTERM"];
|
|
1780
|
+
for (const event of handlers) {
|
|
1781
|
+
process.once(event, () => {
|
|
1782
|
+
void shutdown().catch((error) => {
|
|
1783
|
+
warnOnce4(
|
|
1784
|
+
`${key}:shutdown`,
|
|
1785
|
+
"[Blyp] Failed to flush Databuddy telemetry during shutdown.",
|
|
1786
|
+
error
|
|
1787
|
+
);
|
|
1788
|
+
});
|
|
1789
|
+
});
|
|
1790
|
+
}
|
|
1791
|
+
}
|
|
1792
|
+
function resolveConnectorConfig2(config) {
|
|
1793
|
+
const connector = isBlypConfig(config) ? config.connectors?.databuddy : config;
|
|
1794
|
+
const enabled = connector?.enabled ?? false;
|
|
1795
|
+
const apiKey = connector?.apiKey;
|
|
1796
|
+
const websiteId = connector?.websiteId;
|
|
1797
|
+
const ready = enabled && hasNonEmptyString(apiKey) && hasNonEmptyString(websiteId);
|
|
1798
|
+
return {
|
|
1799
|
+
enabled,
|
|
1800
|
+
mode: connector?.mode ?? "auto",
|
|
1801
|
+
apiKey,
|
|
1802
|
+
websiteId,
|
|
1803
|
+
namespace: connector?.namespace,
|
|
1804
|
+
source: connector?.source,
|
|
1805
|
+
apiUrl: connector?.apiUrl,
|
|
1806
|
+
debug: connector?.debug ?? false,
|
|
1807
|
+
enableBatching: connector?.enableBatching ?? true,
|
|
1808
|
+
batchSize: connector?.batchSize,
|
|
1809
|
+
batchTimeout: connector?.batchTimeout,
|
|
1810
|
+
maxQueueSize: connector?.maxQueueSize,
|
|
1811
|
+
ready,
|
|
1812
|
+
status: ready ? "enabled" : "missing"
|
|
1813
|
+
};
|
|
1814
|
+
}
|
|
1815
|
+
function createDefaultClient2(connector) {
|
|
1816
|
+
return new node$1.Databuddy({
|
|
1817
|
+
apiKey: connector.apiKey ?? "",
|
|
1818
|
+
...connector.websiteId ? { websiteId: connector.websiteId } : {},
|
|
1819
|
+
...connector.namespace ? { namespace: connector.namespace } : {},
|
|
1820
|
+
...connector.source ? { source: connector.source } : {},
|
|
1821
|
+
...connector.apiUrl ? { apiUrl: connector.apiUrl } : {},
|
|
1822
|
+
debug: connector.debug,
|
|
1823
|
+
enableBatching: connector.enableBatching,
|
|
1824
|
+
...connector.batchSize !== void 0 ? { batchSize: connector.batchSize } : {},
|
|
1825
|
+
...connector.batchTimeout !== void 0 ? { batchTimeout: connector.batchTimeout } : {},
|
|
1826
|
+
...connector.maxQueueSize !== void 0 ? { maxQueueSize: connector.maxQueueSize } : {}
|
|
1827
|
+
});
|
|
1828
|
+
}
|
|
1829
|
+
function getDatabuddySenderKey(connector) {
|
|
1830
|
+
return JSON.stringify({
|
|
1831
|
+
enabled: connector.enabled,
|
|
1832
|
+
mode: connector.mode,
|
|
1833
|
+
apiKey: connector.apiKey ?? null,
|
|
1834
|
+
websiteId: connector.websiteId ?? null,
|
|
1835
|
+
namespace: connector.namespace ?? null,
|
|
1836
|
+
source: connector.source ?? null,
|
|
1837
|
+
apiUrl: connector.apiUrl ?? null,
|
|
1838
|
+
debug: connector.debug,
|
|
1839
|
+
enableBatching: connector.enableBatching,
|
|
1840
|
+
batchSize: connector.batchSize ?? null,
|
|
1841
|
+
batchTimeout: connector.batchTimeout ?? null,
|
|
1842
|
+
maxQueueSize: connector.maxQueueSize ?? null
|
|
1843
|
+
});
|
|
1844
|
+
}
|
|
1845
|
+
function getSessionId(record) {
|
|
1846
|
+
const direct = getField(record, "sessionId");
|
|
1847
|
+
if (hasNonEmptyString(direct)) {
|
|
1848
|
+
return direct;
|
|
1849
|
+
}
|
|
1850
|
+
return getClientSessionField(record, "sessionId");
|
|
1851
|
+
}
|
|
1852
|
+
function getAnonymousId(record) {
|
|
1853
|
+
const direct = getField(record, "anonymousId");
|
|
1854
|
+
if (hasNonEmptyString(direct)) {
|
|
1855
|
+
return direct;
|
|
1856
|
+
}
|
|
1857
|
+
const payload = getPrimaryPayload(record);
|
|
1858
|
+
if (isPlainObject(payload.metadata) && hasNonEmptyString(payload.metadata.databuddyAnonymousId)) {
|
|
1859
|
+
return payload.metadata.databuddyAnonymousId;
|
|
1860
|
+
}
|
|
1861
|
+
return void 0;
|
|
1862
|
+
}
|
|
1863
|
+
function getDatabuddyEventName(record) {
|
|
1864
|
+
const recordType = getRecordType(record);
|
|
1865
|
+
if (hasNonEmptyString(recordType)) {
|
|
1866
|
+
return recordType;
|
|
1867
|
+
}
|
|
1868
|
+
return "log";
|
|
1869
|
+
}
|
|
1870
|
+
function buildRecordProperties(record, source) {
|
|
1871
|
+
const properties = {
|
|
1872
|
+
blyp_level: record.level,
|
|
1873
|
+
blyp_source: source,
|
|
1874
|
+
blyp_payload: serializeLogRecord(record),
|
|
1875
|
+
message: typeof record.message === "string" ? record.message : String(record.message)
|
|
1876
|
+
};
|
|
1877
|
+
const caller = typeof record.caller === "string" ? record.caller : void 0;
|
|
1878
|
+
const groupId = getField(record, "groupId");
|
|
1879
|
+
const method = getField(record, "method");
|
|
1880
|
+
const path3 = getField(record, "path");
|
|
1881
|
+
const status = getField(record, "status");
|
|
1882
|
+
const duration = getField(record, "duration");
|
|
1883
|
+
const pagePath = getClientPageField(record, "pathname");
|
|
1884
|
+
const pageUrl = getClientPageField(record, "url");
|
|
1885
|
+
const sessionId = getClientSessionField(record, "sessionId");
|
|
1886
|
+
const pageId = getClientSessionField(record, "pageId");
|
|
1887
|
+
const ifTruthy = [
|
|
1888
|
+
["blyp_type", getRecordType(record)],
|
|
1889
|
+
["caller", caller],
|
|
1890
|
+
["group_id", groupId],
|
|
1891
|
+
["method", method],
|
|
1892
|
+
["path", path3],
|
|
1893
|
+
["page_path", pagePath],
|
|
1894
|
+
["page_url", pageUrl],
|
|
1895
|
+
["session_id", sessionId],
|
|
1896
|
+
["page_id", pageId]
|
|
1897
|
+
];
|
|
1898
|
+
const ifDefined = [
|
|
1899
|
+
["status_code", status],
|
|
1900
|
+
["duration_ms", duration]
|
|
1901
|
+
];
|
|
1902
|
+
for (const [key, value] of ifTruthy) {
|
|
1903
|
+
if (value) {
|
|
1904
|
+
properties[key] = value;
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
for (const [key, value] of ifDefined) {
|
|
1908
|
+
if (value !== void 0) {
|
|
1909
|
+
properties[key] = value;
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
return properties;
|
|
1913
|
+
}
|
|
1914
|
+
function createTrackEvent(record, source) {
|
|
1915
|
+
return {
|
|
1916
|
+
name: getDatabuddyEventName(record),
|
|
1917
|
+
anonymousId: getAnonymousId(record),
|
|
1918
|
+
sessionId: getSessionId(record),
|
|
1919
|
+
properties: buildRecordProperties(record, source)
|
|
1920
|
+
};
|
|
1921
|
+
}
|
|
1922
|
+
function normalizeExceptionProperties(value) {
|
|
1923
|
+
if (!isPlainObject(value)) {
|
|
1924
|
+
return {};
|
|
1925
|
+
}
|
|
1926
|
+
return normalizeLogValue(value);
|
|
1927
|
+
}
|
|
1928
|
+
function normalizeExceptionInput2(value, fallbackMessage) {
|
|
1929
|
+
if (value instanceof Error) {
|
|
1930
|
+
return {
|
|
1931
|
+
message: value.message || fallbackMessage,
|
|
1932
|
+
properties: {
|
|
1933
|
+
error_type: value.name,
|
|
1934
|
+
...value.stack ? { stack: value.stack } : {},
|
|
1935
|
+
...normalizeExceptionProperties(value)
|
|
1936
|
+
}
|
|
1937
|
+
};
|
|
1938
|
+
}
|
|
1939
|
+
if (isPlainObject(value)) {
|
|
1940
|
+
const message = hasNonEmptyString(value.message) ? value.message : hasNonEmptyString(value.error) ? value.error : fallbackMessage;
|
|
1941
|
+
return {
|
|
1942
|
+
message,
|
|
1943
|
+
properties: normalizeExceptionProperties(value)
|
|
1944
|
+
};
|
|
1945
|
+
}
|
|
1946
|
+
if (typeof value === "string") {
|
|
1947
|
+
return {
|
|
1948
|
+
message: value,
|
|
1949
|
+
properties: {
|
|
1950
|
+
message: value
|
|
1951
|
+
}
|
|
1952
|
+
};
|
|
1953
|
+
}
|
|
1954
|
+
return {
|
|
1955
|
+
message: fallbackMessage,
|
|
1956
|
+
properties: {
|
|
1957
|
+
value: normalizeLogValue(value)
|
|
1958
|
+
}
|
|
1959
|
+
};
|
|
1960
|
+
}
|
|
1961
|
+
function createDatabuddySender(config) {
|
|
1962
|
+
const connector = resolveConnectorConfig2(config);
|
|
1963
|
+
const senderKey = getDatabuddySenderKey(connector);
|
|
1964
|
+
const cached = senderCache.get(senderKey);
|
|
1965
|
+
if (cached) {
|
|
1966
|
+
return cached;
|
|
1967
|
+
}
|
|
1968
|
+
const key = `${connector.apiUrl ?? "default"}:${connector.mode}:${connector.apiKey ?? "missing"}`;
|
|
1969
|
+
const client = connector.ready ? testHooks2.createClient?.(connector) ?? createDefaultClient2(connector) : void 0;
|
|
1970
|
+
if (client) {
|
|
1971
|
+
registerShutdownHooks2(key, async () => {
|
|
1972
|
+
await client.flush();
|
|
1973
|
+
});
|
|
1974
|
+
}
|
|
1975
|
+
const emitUnavailableWarning = () => {
|
|
1976
|
+
warnOnce4(
|
|
1977
|
+
`databuddy-unavailable:${key}`,
|
|
1978
|
+
"[Blyp] Databuddy connector is not configured. Databuddy requires both apiKey and websiteId. Skipping Databuddy delivery."
|
|
1979
|
+
);
|
|
1980
|
+
};
|
|
1981
|
+
const emitExceptionUnavailableWarning = () => {
|
|
1982
|
+
warnOnce4(
|
|
1983
|
+
`databuddy-exception-unavailable:${key}`,
|
|
1984
|
+
"[Blyp] Databuddy error tracking is not configured. Databuddy requires both apiKey and websiteId. Skipping Databuddy exception capture."
|
|
1985
|
+
);
|
|
1986
|
+
};
|
|
1987
|
+
const sender = {
|
|
1988
|
+
enabled: connector.enabled,
|
|
1989
|
+
ready: connector.ready,
|
|
1990
|
+
mode: connector.mode,
|
|
1991
|
+
status: connector.status,
|
|
1992
|
+
shouldAutoForwardServerLogs() {
|
|
1993
|
+
return connector.ready && connector.mode === "auto";
|
|
1994
|
+
},
|
|
1995
|
+
shouldAutoCaptureExceptions() {
|
|
1996
|
+
return connector.ready && connector.mode === "auto";
|
|
1997
|
+
},
|
|
1998
|
+
send(record, options = {}) {
|
|
1999
|
+
if (!connector.ready || !client) {
|
|
2000
|
+
if (options.warnIfUnavailable) {
|
|
2001
|
+
emitUnavailableWarning();
|
|
2002
|
+
}
|
|
2003
|
+
return;
|
|
2004
|
+
}
|
|
2005
|
+
try {
|
|
2006
|
+
const result = client.track(createTrackEvent(record, options.source ?? "server"));
|
|
2007
|
+
if (result && typeof result.catch === "function") {
|
|
2008
|
+
void result.catch((error) => {
|
|
2009
|
+
warnOnce4(
|
|
2010
|
+
`databuddy-send:${key}`,
|
|
2011
|
+
"[Blyp] Failed to deliver log to Databuddy.",
|
|
2012
|
+
error
|
|
2013
|
+
);
|
|
2014
|
+
});
|
|
2015
|
+
}
|
|
2016
|
+
} catch (error) {
|
|
2017
|
+
warnOnce4(
|
|
2018
|
+
`databuddy-send:${key}`,
|
|
2019
|
+
"[Blyp] Failed to deliver log to Databuddy.",
|
|
2020
|
+
error
|
|
2021
|
+
);
|
|
2022
|
+
}
|
|
2023
|
+
},
|
|
2024
|
+
captureException(error, options = {}) {
|
|
2025
|
+
if (!connector.ready || !client) {
|
|
2026
|
+
if (options.warnIfUnavailable) {
|
|
2027
|
+
emitExceptionUnavailableWarning();
|
|
2028
|
+
}
|
|
2029
|
+
return;
|
|
2030
|
+
}
|
|
2031
|
+
const normalized = normalizeExceptionInput2(
|
|
2032
|
+
error,
|
|
2033
|
+
options.source === "client" ? "Client error" : "Server error"
|
|
2034
|
+
);
|
|
2035
|
+
try {
|
|
2036
|
+
const result = client.track({
|
|
2037
|
+
name: "error",
|
|
2038
|
+
anonymousId: options.anonymousId,
|
|
2039
|
+
sessionId: options.sessionId,
|
|
2040
|
+
properties: {
|
|
2041
|
+
message: normalized.message,
|
|
2042
|
+
blyp_source: options.source ?? "server",
|
|
2043
|
+
blyp_level: "error",
|
|
2044
|
+
...normalized.properties,
|
|
2045
|
+
...options.properties ?? {}
|
|
2046
|
+
}
|
|
2047
|
+
});
|
|
2048
|
+
if (result && typeof result.catch === "function") {
|
|
2049
|
+
void result.catch((captureError) => {
|
|
2050
|
+
warnOnce4(
|
|
2051
|
+
`databuddy-capture:${key}`,
|
|
2052
|
+
"[Blyp] Failed to capture exception in Databuddy.",
|
|
2053
|
+
captureError
|
|
2054
|
+
);
|
|
2055
|
+
});
|
|
2056
|
+
}
|
|
2057
|
+
} catch (captureError) {
|
|
2058
|
+
warnOnce4(
|
|
2059
|
+
`databuddy-capture:${key}`,
|
|
2060
|
+
"[Blyp] Failed to capture exception in Databuddy.",
|
|
2061
|
+
captureError
|
|
2062
|
+
);
|
|
2063
|
+
}
|
|
2064
|
+
},
|
|
2065
|
+
async flush() {
|
|
2066
|
+
try {
|
|
2067
|
+
if (client) {
|
|
2068
|
+
await client.flush();
|
|
2069
|
+
}
|
|
2070
|
+
} catch (error) {
|
|
2071
|
+
warnOnce4(
|
|
2072
|
+
`databuddy-flush:${key}`,
|
|
2073
|
+
"[Blyp] Failed to flush Databuddy telemetry.",
|
|
2074
|
+
error
|
|
2075
|
+
);
|
|
2076
|
+
}
|
|
2077
|
+
}
|
|
2078
|
+
};
|
|
2079
|
+
senderCache.set(senderKey, sender);
|
|
2080
|
+
return sender;
|
|
2081
|
+
}
|
|
2082
|
+
var PREVIOUSLY_CAPTURED_ERROR_KEY2 = "__posthog_previously_captured_error";
|
|
2083
|
+
var warnedKeys4 = /* @__PURE__ */ new Set();
|
|
2084
|
+
var testHooks3 = {};
|
|
2085
|
+
var warnOnce5 = createErrorOnceLogger(warnedKeys4);
|
|
1753
2086
|
function normalizeHost(host) {
|
|
1754
2087
|
const trimmed = (host || "https://us.i.posthog.com").trim();
|
|
1755
2088
|
return trimmed.replace(/\/+$/, "");
|
|
@@ -1790,7 +2123,7 @@ function buildRecordAttributes(record, source) {
|
|
|
1790
2123
|
for (const [k, v] of ifDefined) if (v !== void 0) attributes[k] = v;
|
|
1791
2124
|
return attributes;
|
|
1792
2125
|
}
|
|
1793
|
-
function
|
|
2126
|
+
function normalizeExceptionProperties2(value) {
|
|
1794
2127
|
if (!isPlainObject(value)) {
|
|
1795
2128
|
return {};
|
|
1796
2129
|
}
|
|
@@ -1822,18 +2155,18 @@ function createSyntheticError(message, source) {
|
|
|
1822
2155
|
assignExceptionField(error, "details", source.details);
|
|
1823
2156
|
return error;
|
|
1824
2157
|
}
|
|
1825
|
-
function
|
|
2158
|
+
function normalizeExceptionInput3(input, fallbackMessage = "Unknown error") {
|
|
1826
2159
|
if (input instanceof Error) {
|
|
1827
2160
|
return {
|
|
1828
2161
|
error: input,
|
|
1829
|
-
properties:
|
|
2162
|
+
properties: normalizeExceptionProperties2(input)
|
|
1830
2163
|
};
|
|
1831
2164
|
}
|
|
1832
2165
|
if (isPlainObject(input)) {
|
|
1833
2166
|
const message = hasNonEmptyString(input.message) ? input.message : hasNonEmptyString(input.error) ? input.error : fallbackMessage;
|
|
1834
2167
|
return {
|
|
1835
2168
|
error: createSyntheticError(message, input),
|
|
1836
|
-
properties:
|
|
2169
|
+
properties: normalizeExceptionProperties2(input)
|
|
1837
2170
|
};
|
|
1838
2171
|
}
|
|
1839
2172
|
if (typeof input === "string") {
|
|
@@ -1906,12 +2239,12 @@ function resolveSeverity(level) {
|
|
|
1906
2239
|
return { text: "info", number: apiLogs.SeverityNumber.INFO };
|
|
1907
2240
|
}
|
|
1908
2241
|
}
|
|
1909
|
-
function
|
|
2242
|
+
function registerShutdownHooks3(key, shutdown) {
|
|
1910
2243
|
const handlers = ["beforeExit", "SIGINT", "SIGTERM"];
|
|
1911
2244
|
for (const event of handlers) {
|
|
1912
2245
|
process.once(event, () => {
|
|
1913
2246
|
void shutdown().catch((error) => {
|
|
1914
|
-
|
|
2247
|
+
warnOnce5(
|
|
1915
2248
|
`${key}:shutdown`,
|
|
1916
2249
|
"[Blyp] Failed to flush PostHog telemetry during shutdown.",
|
|
1917
2250
|
error
|
|
@@ -1965,7 +2298,7 @@ function createDefaultExceptionClient(connector) {
|
|
|
1965
2298
|
}
|
|
1966
2299
|
};
|
|
1967
2300
|
}
|
|
1968
|
-
function
|
|
2301
|
+
function resolveConnectorConfig3(config) {
|
|
1969
2302
|
const connector = isBlypConfig(config) ? config.connectors?.posthog : config;
|
|
1970
2303
|
const enabled = connector?.enabled ?? false;
|
|
1971
2304
|
const projectKey = connector?.projectKey;
|
|
@@ -1988,11 +2321,11 @@ function resolveConnectorConfig2(config) {
|
|
|
1988
2321
|
};
|
|
1989
2322
|
}
|
|
1990
2323
|
function createPostHogSender(config) {
|
|
1991
|
-
const connector =
|
|
2324
|
+
const connector = resolveConnectorConfig3(config);
|
|
1992
2325
|
const key = `${connector.serviceName}:${connector.host}:${connector.mode}`;
|
|
1993
2326
|
const ready = connector.enabled === true && hasNonEmptyString(connector.projectKey);
|
|
1994
|
-
const transport = ready ?
|
|
1995
|
-
const exceptionClient = connector.errorTracking.ready ?
|
|
2327
|
+
const transport = ready ? testHooks3.createTransport?.(connector) ?? createDefaultTransport(connector) : void 0;
|
|
2328
|
+
const exceptionClient = connector.errorTracking.ready ? testHooks3.createExceptionClient?.(connector) ?? createDefaultExceptionClient(connector) : void 0;
|
|
1996
2329
|
const shutdown = async () => {
|
|
1997
2330
|
if (transport?.shutdown) {
|
|
1998
2331
|
await transport.shutdown();
|
|
@@ -2004,16 +2337,16 @@ function createPostHogSender(config) {
|
|
|
2004
2337
|
}
|
|
2005
2338
|
};
|
|
2006
2339
|
if (transport || exceptionClient) {
|
|
2007
|
-
|
|
2340
|
+
registerShutdownHooks3(key, shutdown);
|
|
2008
2341
|
}
|
|
2009
2342
|
const emitUnavailableWarning = () => {
|
|
2010
|
-
|
|
2343
|
+
warnOnce5(
|
|
2011
2344
|
`posthog-unavailable:${key}`,
|
|
2012
2345
|
"[Blyp] PostHog connector is not configured. Skipping PostHog delivery."
|
|
2013
2346
|
);
|
|
2014
2347
|
};
|
|
2015
2348
|
const emitExceptionUnavailableWarning = () => {
|
|
2016
|
-
|
|
2349
|
+
warnOnce5(
|
|
2017
2350
|
`posthog-exception-unavailable:${key}`,
|
|
2018
2351
|
"[Blyp] PostHog error tracking is not configured. Skipping PostHog exception capture."
|
|
2019
2352
|
);
|
|
@@ -2051,7 +2384,7 @@ function createPostHogSender(config) {
|
|
|
2051
2384
|
const result = transport.emit(normalized);
|
|
2052
2385
|
if (result && typeof result.catch === "function") {
|
|
2053
2386
|
void result.catch((error) => {
|
|
2054
|
-
|
|
2387
|
+
warnOnce5(
|
|
2055
2388
|
`posthog-emit:${key}`,
|
|
2056
2389
|
"[Blyp] Failed to deliver log to PostHog.",
|
|
2057
2390
|
error
|
|
@@ -2059,7 +2392,7 @@ function createPostHogSender(config) {
|
|
|
2059
2392
|
});
|
|
2060
2393
|
}
|
|
2061
2394
|
} catch (error) {
|
|
2062
|
-
|
|
2395
|
+
warnOnce5(
|
|
2063
2396
|
`posthog-emit:${key}`,
|
|
2064
2397
|
"[Blyp] Failed to deliver log to PostHog.",
|
|
2065
2398
|
error
|
|
@@ -2076,7 +2409,7 @@ function createPostHogSender(config) {
|
|
|
2076
2409
|
if (isPreviouslyCapturedPostHogError(error)) {
|
|
2077
2410
|
return;
|
|
2078
2411
|
}
|
|
2079
|
-
const normalized =
|
|
2412
|
+
const normalized = normalizeExceptionInput3(
|
|
2080
2413
|
error,
|
|
2081
2414
|
options.source === "client" ? "Client error" : "Server error"
|
|
2082
2415
|
);
|
|
@@ -2095,7 +2428,7 @@ function createPostHogSender(config) {
|
|
|
2095
2428
|
markPostHogCapturedError(normalized.error);
|
|
2096
2429
|
if (result && typeof result.catch === "function") {
|
|
2097
2430
|
void result.catch((captureError) => {
|
|
2098
|
-
|
|
2431
|
+
warnOnce5(
|
|
2099
2432
|
`posthog-capture:${key}`,
|
|
2100
2433
|
"[Blyp] Failed to capture exception in PostHog.",
|
|
2101
2434
|
captureError
|
|
@@ -2103,7 +2436,7 @@ function createPostHogSender(config) {
|
|
|
2103
2436
|
});
|
|
2104
2437
|
}
|
|
2105
2438
|
} catch (captureError) {
|
|
2106
|
-
|
|
2439
|
+
warnOnce5(
|
|
2107
2440
|
`posthog-capture:${key}`,
|
|
2108
2441
|
"[Blyp] Failed to capture exception in PostHog.",
|
|
2109
2442
|
captureError
|
|
@@ -2116,7 +2449,7 @@ function createPostHogSender(config) {
|
|
|
2116
2449
|
await transport.flush();
|
|
2117
2450
|
}
|
|
2118
2451
|
} catch (error) {
|
|
2119
|
-
|
|
2452
|
+
warnOnce5(
|
|
2120
2453
|
`posthog-flush:${key}`,
|
|
2121
2454
|
"[Blyp] Failed to flush PostHog telemetry.",
|
|
2122
2455
|
error
|
|
@@ -2125,13 +2458,13 @@ function createPostHogSender(config) {
|
|
|
2125
2458
|
}
|
|
2126
2459
|
};
|
|
2127
2460
|
}
|
|
2128
|
-
var
|
|
2129
|
-
var
|
|
2130
|
-
var
|
|
2461
|
+
var warnedKeys5 = /* @__PURE__ */ new Set();
|
|
2462
|
+
var testHooks4 = {};
|
|
2463
|
+
var warnOnce6 = createErrorOnceLogger(warnedKeys5);
|
|
2131
2464
|
function getSentryModule2() {
|
|
2132
|
-
return
|
|
2465
|
+
return testHooks4.module ?? Sentry__namespace;
|
|
2133
2466
|
}
|
|
2134
|
-
function
|
|
2467
|
+
function resolveConnectorConfig4(config) {
|
|
2135
2468
|
const connector = isBlypConfig(config) ? config.connectors?.sentry : config;
|
|
2136
2469
|
const enabled = connector?.enabled ?? false;
|
|
2137
2470
|
const dsn = connector?.dsn;
|
|
@@ -2276,7 +2609,7 @@ function hasConfigMismatch(connector, client) {
|
|
|
2276
2609
|
return hasNonEmptyString(connector.dsn) && connector.dsn !== options.dsn || hasNonEmptyString(connector.environment) && connector.environment !== options.environment || hasNonEmptyString(connector.release) && connector.release !== options.release;
|
|
2277
2610
|
}
|
|
2278
2611
|
function createSentrySender(config) {
|
|
2279
|
-
const connector =
|
|
2612
|
+
const connector = resolveConnectorConfig4(config);
|
|
2280
2613
|
const key = `${connector.mode}:${connector.dsn ?? "missing"}`;
|
|
2281
2614
|
const module = getSentryModule2();
|
|
2282
2615
|
let client = connector.enabled ? module.getClient() : void 0;
|
|
@@ -2290,7 +2623,7 @@ function createSentrySender(config) {
|
|
|
2290
2623
|
});
|
|
2291
2624
|
client = module.getClient();
|
|
2292
2625
|
} catch (error) {
|
|
2293
|
-
|
|
2626
|
+
warnOnce6(
|
|
2294
2627
|
`sentry-init:${key}`,
|
|
2295
2628
|
"[Blyp] Failed to initialize Sentry. Skipping Sentry delivery.",
|
|
2296
2629
|
error
|
|
@@ -2298,14 +2631,14 @@ function createSentrySender(config) {
|
|
|
2298
2631
|
}
|
|
2299
2632
|
}
|
|
2300
2633
|
if (client && hasConfigMismatch(connector, client)) {
|
|
2301
|
-
|
|
2634
|
+
warnOnce6(
|
|
2302
2635
|
`sentry-mismatch:${key}`,
|
|
2303
2636
|
"[Blyp] Sentry is already initialized with different options. Reusing the existing Sentry client."
|
|
2304
2637
|
);
|
|
2305
2638
|
}
|
|
2306
2639
|
const ready = connector.enabled && client !== void 0;
|
|
2307
2640
|
const emitUnavailableWarning = () => {
|
|
2308
|
-
|
|
2641
|
+
warnOnce6(
|
|
2309
2642
|
`sentry-unavailable:${key}`,
|
|
2310
2643
|
"[Blyp] Sentry connector is not configured. Skipping Sentry delivery."
|
|
2311
2644
|
);
|
|
@@ -2331,7 +2664,7 @@ function createSentrySender(config) {
|
|
|
2331
2664
|
try {
|
|
2332
2665
|
logMethod(record.message, attributes);
|
|
2333
2666
|
} catch (error) {
|
|
2334
|
-
|
|
2667
|
+
warnOnce6(
|
|
2335
2668
|
`sentry-log:${key}`,
|
|
2336
2669
|
"[Blyp] Failed to deliver log to Sentry.",
|
|
2337
2670
|
error
|
|
@@ -2349,7 +2682,7 @@ function createSentrySender(config) {
|
|
|
2349
2682
|
module.captureException(exception);
|
|
2350
2683
|
});
|
|
2351
2684
|
} catch (error) {
|
|
2352
|
-
|
|
2685
|
+
warnOnce6(
|
|
2353
2686
|
`sentry-exception:${key}`,
|
|
2354
2687
|
"[Blyp] Failed to capture exception in Sentry.",
|
|
2355
2688
|
error
|
|
@@ -2360,7 +2693,7 @@ function createSentrySender(config) {
|
|
|
2360
2693
|
try {
|
|
2361
2694
|
await module.flush(2e3);
|
|
2362
2695
|
} catch (error) {
|
|
2363
|
-
|
|
2696
|
+
warnOnce6(
|
|
2364
2697
|
`sentry-flush:${key}`,
|
|
2365
2698
|
"[Blyp] Failed to flush Sentry logs.",
|
|
2366
2699
|
error
|
|
@@ -2369,9 +2702,9 @@ function createSentrySender(config) {
|
|
|
2369
2702
|
}
|
|
2370
2703
|
};
|
|
2371
2704
|
}
|
|
2372
|
-
var
|
|
2373
|
-
var
|
|
2374
|
-
var
|
|
2705
|
+
var warnedKeys6 = /* @__PURE__ */ new Set();
|
|
2706
|
+
var testHooks5 = {};
|
|
2707
|
+
var warnOnce7 = createErrorOnceLogger(warnedKeys6);
|
|
2375
2708
|
function normalizeOTLPRecord(record, connector, source = "server") {
|
|
2376
2709
|
const severity = resolveSeverity2(record.level);
|
|
2377
2710
|
const body = typeof record.message === "string" ? record.message : String(record.message);
|
|
@@ -2436,14 +2769,14 @@ function resolveSeverity2(level) {
|
|
|
2436
2769
|
return { text: "info", number: apiLogs.SeverityNumber.INFO };
|
|
2437
2770
|
}
|
|
2438
2771
|
}
|
|
2439
|
-
function
|
|
2772
|
+
function registerShutdownHooks4(key, shutdown) {
|
|
2440
2773
|
const handlers = ["beforeExit", "SIGINT", "SIGTERM"];
|
|
2441
2774
|
for (const event of handlers) {
|
|
2442
2775
|
process.once(event, async () => {
|
|
2443
2776
|
try {
|
|
2444
2777
|
await shutdown();
|
|
2445
2778
|
} catch (error) {
|
|
2446
|
-
|
|
2779
|
+
warnOnce7(
|
|
2447
2780
|
`${key}:shutdown`,
|
|
2448
2781
|
"[Blyp] Failed to flush OTLP logs during shutdown.",
|
|
2449
2782
|
error
|
|
@@ -2520,7 +2853,7 @@ function createUnavailableSender(name, connector) {
|
|
|
2520
2853
|
const senderName = name || connector?.name || "otlp";
|
|
2521
2854
|
const key = `${senderName}:${connector?.serviceName ?? "blyp-app"}:${connector?.endpoint ?? "missing"}`;
|
|
2522
2855
|
const emitUnavailableWarning = () => {
|
|
2523
|
-
|
|
2856
|
+
warnOnce7(
|
|
2524
2857
|
`otlp-unavailable:${key}`,
|
|
2525
2858
|
`[Blyp] OTLP target "${senderName}" is not configured or not ready. Skipping OTLP delivery.`
|
|
2526
2859
|
);
|
|
@@ -2551,7 +2884,7 @@ function createSender(connector) {
|
|
|
2551
2884
|
...connector,
|
|
2552
2885
|
headers: resolveTransportHeaders(connector)
|
|
2553
2886
|
};
|
|
2554
|
-
const transport =
|
|
2887
|
+
const transport = testHooks5.createTransport?.(transportConnector) ?? createDefaultTransport2(transportConnector);
|
|
2555
2888
|
return {
|
|
2556
2889
|
name: connector.name,
|
|
2557
2890
|
enabled: connector.enabled,
|
|
@@ -2567,7 +2900,7 @@ function createSender(connector) {
|
|
|
2567
2900
|
const result = transport.emit(normalized);
|
|
2568
2901
|
if (result && typeof result.catch === "function") {
|
|
2569
2902
|
void result.catch((error) => {
|
|
2570
|
-
|
|
2903
|
+
warnOnce7(
|
|
2571
2904
|
`otlp-emit:${key}`,
|
|
2572
2905
|
`[Blyp] Failed to deliver log to OTLP target "${connector.name}".`,
|
|
2573
2906
|
error
|
|
@@ -2575,7 +2908,7 @@ function createSender(connector) {
|
|
|
2575
2908
|
});
|
|
2576
2909
|
}
|
|
2577
2910
|
} catch (error) {
|
|
2578
|
-
|
|
2911
|
+
warnOnce7(
|
|
2579
2912
|
`otlp-emit:${key}`,
|
|
2580
2913
|
`[Blyp] Failed to deliver log to OTLP target "${connector.name}".`,
|
|
2581
2914
|
error
|
|
@@ -2588,7 +2921,7 @@ function createSender(connector) {
|
|
|
2588
2921
|
await transport.flush();
|
|
2589
2922
|
}
|
|
2590
2923
|
} catch (error) {
|
|
2591
|
-
|
|
2924
|
+
warnOnce7(
|
|
2592
2925
|
`otlp-flush:${key}`,
|
|
2593
2926
|
`[Blyp] Failed to flush OTLP logs for target "${connector.name}".`,
|
|
2594
2927
|
error
|
|
@@ -2617,7 +2950,7 @@ function createOTLPRegistry(config) {
|
|
|
2617
2950
|
await Promise.all(Array.from(senders.values()).map((sender) => sender.flush()));
|
|
2618
2951
|
}
|
|
2619
2952
|
};
|
|
2620
|
-
|
|
2953
|
+
registerShutdownHooks4("otlp-registry", () => registry.flush());
|
|
2621
2954
|
return registry;
|
|
2622
2955
|
}
|
|
2623
2956
|
var _RuntimeDetector = class _RuntimeDetector {
|
|
@@ -3051,6 +3384,18 @@ function maybeSendToBetterStack(betterstack, record) {
|
|
|
3051
3384
|
}
|
|
3052
3385
|
betterstack.send(record, { source: "server", warnIfUnavailable: true });
|
|
3053
3386
|
}
|
|
3387
|
+
function maybeSendToDatabuddy(databuddy, record) {
|
|
3388
|
+
if (isClientLogRecord(record)) {
|
|
3389
|
+
return;
|
|
3390
|
+
}
|
|
3391
|
+
if (!databuddy.shouldAutoForwardServerLogs()) {
|
|
3392
|
+
if (databuddy.enabled && !databuddy.ready) {
|
|
3393
|
+
databuddy.send(record, { source: "server", warnIfUnavailable: true });
|
|
3394
|
+
}
|
|
3395
|
+
return;
|
|
3396
|
+
}
|
|
3397
|
+
databuddy.send(record, { source: "server", warnIfUnavailable: true });
|
|
3398
|
+
}
|
|
3054
3399
|
function maybeSendToSentry(sentry, record) {
|
|
3055
3400
|
if (isClientLogRecord(record)) {
|
|
3056
3401
|
return;
|
|
@@ -3071,7 +3416,7 @@ function maybeSendToOTLP(otlp, record) {
|
|
|
3071
3416
|
sender.send(record, { source: "server", warnIfUnavailable: true });
|
|
3072
3417
|
}
|
|
3073
3418
|
}
|
|
3074
|
-
function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry, otlp, bindings = {}, source = "root") {
|
|
3419
|
+
function createLoggerInstance(rootRawLogger, sink, betterstack, databuddy, posthog, sentry, otlp, bindings = {}, source = "root") {
|
|
3075
3420
|
const rawLogger = Object.keys(bindings).length > 0 ? rootRawLogger.child(bindings) : rootRawLogger;
|
|
3076
3421
|
const writeRecord = (level, message, args, writeSource = source) => {
|
|
3077
3422
|
if (writeSource === "root" && shouldDropRootLogWrite()) {
|
|
@@ -3097,6 +3442,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3097
3442
|
);
|
|
3098
3443
|
sink.write(record);
|
|
3099
3444
|
maybeSendToBetterStack(betterstack, record);
|
|
3445
|
+
maybeSendToDatabuddy(databuddy, record);
|
|
3100
3446
|
maybeSendToPostHog(posthog, record);
|
|
3101
3447
|
maybeSendToSentry(sentry, record);
|
|
3102
3448
|
maybeSendToOTLP(otlp, record);
|
|
@@ -3120,6 +3466,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3120
3466
|
sink.write(record);
|
|
3121
3467
|
}
|
|
3122
3468
|
maybeSendToBetterStack(betterstack, record);
|
|
3469
|
+
maybeSendToDatabuddy(databuddy, record);
|
|
3123
3470
|
maybeSendToPostHog(posthog, record);
|
|
3124
3471
|
maybeSendToSentry(sentry, record);
|
|
3125
3472
|
maybeSendToOTLP(otlp, record);
|
|
@@ -3153,8 +3500,26 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3153
3500
|
}
|
|
3154
3501
|
writeRecord("table", message, data === void 0 ? [] : [data]);
|
|
3155
3502
|
},
|
|
3156
|
-
flush: () =>
|
|
3157
|
-
|
|
3503
|
+
flush: async () => {
|
|
3504
|
+
await sink.flush();
|
|
3505
|
+
await Promise.allSettled([
|
|
3506
|
+
betterstack.flush(),
|
|
3507
|
+
databuddy.flush(),
|
|
3508
|
+
posthog.flush(),
|
|
3509
|
+
sentry.flush(),
|
|
3510
|
+
otlp.flush()
|
|
3511
|
+
]);
|
|
3512
|
+
},
|
|
3513
|
+
shutdown: async () => {
|
|
3514
|
+
await sink.shutdown();
|
|
3515
|
+
await Promise.allSettled([
|
|
3516
|
+
betterstack.flush(),
|
|
3517
|
+
databuddy.flush(),
|
|
3518
|
+
posthog.flush(),
|
|
3519
|
+
sentry.flush(),
|
|
3520
|
+
otlp.flush()
|
|
3521
|
+
]);
|
|
3522
|
+
},
|
|
3158
3523
|
createStructuredLog: (groupId, initial) => {
|
|
3159
3524
|
return createStructuredLogForLogger(logger3, groupId, {
|
|
3160
3525
|
initialFields: initial
|
|
@@ -3166,6 +3531,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3166
3531
|
rootRawLogger,
|
|
3167
3532
|
sink,
|
|
3168
3533
|
betterstack,
|
|
3534
|
+
databuddy,
|
|
3169
3535
|
posthog,
|
|
3170
3536
|
sentry,
|
|
3171
3537
|
otlp,
|
|
@@ -3176,6 +3542,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3176
3542
|
[LOGGER_FACTORY]: {
|
|
3177
3543
|
bindings,
|
|
3178
3544
|
betterstack,
|
|
3545
|
+
databuddy,
|
|
3179
3546
|
posthog,
|
|
3180
3547
|
sentry,
|
|
3181
3548
|
otlp,
|
|
@@ -3185,6 +3552,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3185
3552
|
rootRawLogger,
|
|
3186
3553
|
sink,
|
|
3187
3554
|
betterstack,
|
|
3555
|
+
databuddy,
|
|
3188
3556
|
posthog,
|
|
3189
3557
|
sentry,
|
|
3190
3558
|
otlp,
|
|
@@ -3208,6 +3576,7 @@ function createBaseLogger(config) {
|
|
|
3208
3576
|
const rawLogger = createPinoLogger(resolvedConfig);
|
|
3209
3577
|
const sink = createPrimarySink(resolvedConfig);
|
|
3210
3578
|
const betterstack = createBetterStackSender(resolvedConfig);
|
|
3579
|
+
const databuddy = createDatabuddySender(resolvedConfig);
|
|
3211
3580
|
const posthog = createPostHogSender(resolvedConfig);
|
|
3212
3581
|
const sentry = createSentrySender(resolvedConfig);
|
|
3213
3582
|
const otlp = createOTLPRegistry(resolvedConfig);
|
|
@@ -3215,6 +3584,7 @@ function createBaseLogger(config) {
|
|
|
3215
3584
|
rawLogger,
|
|
3216
3585
|
sink,
|
|
3217
3586
|
betterstack,
|
|
3587
|
+
databuddy,
|
|
3218
3588
|
posthog,
|
|
3219
3589
|
sentry,
|
|
3220
3590
|
otlp
|