@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.mjs
CHANGED
|
@@ -8,6 +8,7 @@ import { gzipSync } from 'fflate';
|
|
|
8
8
|
import { randomUUID } from 'crypto';
|
|
9
9
|
import * as Sentry from '@sentry/node';
|
|
10
10
|
import { Logtail } from '@logtail/node';
|
|
11
|
+
import { Databuddy } from '@databuddy/sdk/node';
|
|
11
12
|
import { SeverityNumber } from '@opentelemetry/api-logs';
|
|
12
13
|
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
|
13
14
|
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
@@ -137,6 +138,7 @@ function hasNonEmptyString(value) {
|
|
|
137
138
|
var DEFAULT_CLIENT_LOG_ENDPOINT = "/inngest";
|
|
138
139
|
z.union([
|
|
139
140
|
z.literal("betterstack"),
|
|
141
|
+
z.literal("databuddy"),
|
|
140
142
|
z.literal("posthog"),
|
|
141
143
|
z.literal("sentry"),
|
|
142
144
|
z.undefined(),
|
|
@@ -147,16 +149,16 @@ z.union([
|
|
|
147
149
|
]);
|
|
148
150
|
|
|
149
151
|
// src/shared/once.ts
|
|
150
|
-
function createConsoleOnceLogger(method,
|
|
152
|
+
function createConsoleOnceLogger(method, warnedKeys7 = /* @__PURE__ */ new Set()) {
|
|
151
153
|
return (key, message, error) => {
|
|
152
|
-
if (
|
|
154
|
+
if (warnedKeys7.has(key) || typeof console === "undefined") {
|
|
153
155
|
return;
|
|
154
156
|
}
|
|
155
157
|
const writer = console[method];
|
|
156
158
|
if (typeof writer !== "function") {
|
|
157
159
|
return;
|
|
158
160
|
}
|
|
159
|
-
|
|
161
|
+
warnedKeys7.add(key);
|
|
160
162
|
if (error === void 0) {
|
|
161
163
|
writer.call(console, message);
|
|
162
164
|
return;
|
|
@@ -164,11 +166,11 @@ function createConsoleOnceLogger(method, warnedKeys6 = /* @__PURE__ */ new Set()
|
|
|
164
166
|
writer.call(console, message, error);
|
|
165
167
|
};
|
|
166
168
|
}
|
|
167
|
-
function createWarnOnceLogger(
|
|
168
|
-
return createConsoleOnceLogger("warn",
|
|
169
|
+
function createWarnOnceLogger(warnedKeys7) {
|
|
170
|
+
return createConsoleOnceLogger("warn", warnedKeys7);
|
|
169
171
|
}
|
|
170
|
-
function createErrorOnceLogger(
|
|
171
|
-
return createConsoleOnceLogger("error",
|
|
172
|
+
function createErrorOnceLogger(warnedKeys7) {
|
|
173
|
+
return createConsoleOnceLogger("error", warnedKeys7);
|
|
172
174
|
}
|
|
173
175
|
|
|
174
176
|
// src/core/config.ts
|
|
@@ -534,6 +536,28 @@ function mergePostHogConnectorConfig(base, override) {
|
|
|
534
536
|
}
|
|
535
537
|
};
|
|
536
538
|
}
|
|
539
|
+
function mergeDatabuddyConnectorConfig(base, override) {
|
|
540
|
+
const enabled = override?.enabled ?? base?.enabled ?? false;
|
|
541
|
+
const apiKey = override?.apiKey ?? base?.apiKey;
|
|
542
|
+
const websiteId = override?.websiteId ?? base?.websiteId;
|
|
543
|
+
const ready = enabled && hasNonEmptyString(apiKey) && hasNonEmptyString(websiteId);
|
|
544
|
+
return {
|
|
545
|
+
enabled,
|
|
546
|
+
mode: override?.mode ?? base?.mode ?? "auto",
|
|
547
|
+
apiKey,
|
|
548
|
+
websiteId,
|
|
549
|
+
namespace: override?.namespace ?? base?.namespace,
|
|
550
|
+
source: override?.source ?? base?.source,
|
|
551
|
+
apiUrl: override?.apiUrl ?? base?.apiUrl,
|
|
552
|
+
debug: override?.debug ?? base?.debug ?? false,
|
|
553
|
+
enableBatching: override?.enableBatching ?? base?.enableBatching ?? true,
|
|
554
|
+
batchSize: override?.batchSize ?? base?.batchSize,
|
|
555
|
+
batchTimeout: override?.batchTimeout ?? base?.batchTimeout,
|
|
556
|
+
maxQueueSize: override?.maxQueueSize ?? base?.maxQueueSize,
|
|
557
|
+
ready,
|
|
558
|
+
status: ready ? "enabled" : "missing"
|
|
559
|
+
};
|
|
560
|
+
}
|
|
537
561
|
function mergeBetterStackConnectorConfig(base, override) {
|
|
538
562
|
const sourceToken = override?.sourceToken ?? base?.sourceToken;
|
|
539
563
|
const ingestingHost = override?.ingestingHost ?? base?.ingestingHost;
|
|
@@ -624,6 +648,7 @@ function mergeOTLPConnectorsConfig(base, override) {
|
|
|
624
648
|
function mergeConnectorsConfig(base, override) {
|
|
625
649
|
return {
|
|
626
650
|
betterstack: mergeBetterStackConnectorConfig(base?.betterstack, override?.betterstack),
|
|
651
|
+
databuddy: mergeDatabuddyConnectorConfig(base?.databuddy, override?.databuddy),
|
|
627
652
|
posthog: mergePostHogConnectorConfig(base?.posthog, override?.posthog),
|
|
628
653
|
sentry: mergeSentryConnectorConfig(base?.sentry, override?.sentry),
|
|
629
654
|
otlp: mergeOTLPConnectorsConfig(base?.otlp, override?.otlp)
|
|
@@ -1719,10 +1744,318 @@ function createBetterStackSender(config) {
|
|
|
1719
1744
|
}
|
|
1720
1745
|
};
|
|
1721
1746
|
}
|
|
1722
|
-
var PREVIOUSLY_CAPTURED_ERROR_KEY2 = "__posthog_previously_captured_error";
|
|
1723
1747
|
var warnedKeys3 = /* @__PURE__ */ new Set();
|
|
1748
|
+
var senderCache = /* @__PURE__ */ new Map();
|
|
1724
1749
|
var testHooks2 = {};
|
|
1725
1750
|
var warnOnce4 = createErrorOnceLogger(warnedKeys3);
|
|
1751
|
+
function registerShutdownHooks2(key, shutdown) {
|
|
1752
|
+
const handlers = ["beforeExit", "SIGINT", "SIGTERM"];
|
|
1753
|
+
for (const event of handlers) {
|
|
1754
|
+
process.once(event, () => {
|
|
1755
|
+
void shutdown().catch((error) => {
|
|
1756
|
+
warnOnce4(
|
|
1757
|
+
`${key}:shutdown`,
|
|
1758
|
+
"[Blyp] Failed to flush Databuddy telemetry during shutdown.",
|
|
1759
|
+
error
|
|
1760
|
+
);
|
|
1761
|
+
});
|
|
1762
|
+
});
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
function resolveConnectorConfig2(config) {
|
|
1766
|
+
const connector = isBlypConfig(config) ? config.connectors?.databuddy : config;
|
|
1767
|
+
const enabled = connector?.enabled ?? false;
|
|
1768
|
+
const apiKey = connector?.apiKey;
|
|
1769
|
+
const websiteId = connector?.websiteId;
|
|
1770
|
+
const ready = enabled && hasNonEmptyString(apiKey) && hasNonEmptyString(websiteId);
|
|
1771
|
+
return {
|
|
1772
|
+
enabled,
|
|
1773
|
+
mode: connector?.mode ?? "auto",
|
|
1774
|
+
apiKey,
|
|
1775
|
+
websiteId,
|
|
1776
|
+
namespace: connector?.namespace,
|
|
1777
|
+
source: connector?.source,
|
|
1778
|
+
apiUrl: connector?.apiUrl,
|
|
1779
|
+
debug: connector?.debug ?? false,
|
|
1780
|
+
enableBatching: connector?.enableBatching ?? true,
|
|
1781
|
+
batchSize: connector?.batchSize,
|
|
1782
|
+
batchTimeout: connector?.batchTimeout,
|
|
1783
|
+
maxQueueSize: connector?.maxQueueSize,
|
|
1784
|
+
ready,
|
|
1785
|
+
status: ready ? "enabled" : "missing"
|
|
1786
|
+
};
|
|
1787
|
+
}
|
|
1788
|
+
function createDefaultClient2(connector) {
|
|
1789
|
+
return new Databuddy({
|
|
1790
|
+
apiKey: connector.apiKey ?? "",
|
|
1791
|
+
...connector.websiteId ? { websiteId: connector.websiteId } : {},
|
|
1792
|
+
...connector.namespace ? { namespace: connector.namespace } : {},
|
|
1793
|
+
...connector.source ? { source: connector.source } : {},
|
|
1794
|
+
...connector.apiUrl ? { apiUrl: connector.apiUrl } : {},
|
|
1795
|
+
debug: connector.debug,
|
|
1796
|
+
enableBatching: connector.enableBatching,
|
|
1797
|
+
...connector.batchSize !== void 0 ? { batchSize: connector.batchSize } : {},
|
|
1798
|
+
...connector.batchTimeout !== void 0 ? { batchTimeout: connector.batchTimeout } : {},
|
|
1799
|
+
...connector.maxQueueSize !== void 0 ? { maxQueueSize: connector.maxQueueSize } : {}
|
|
1800
|
+
});
|
|
1801
|
+
}
|
|
1802
|
+
function getDatabuddySenderKey(connector) {
|
|
1803
|
+
return JSON.stringify({
|
|
1804
|
+
enabled: connector.enabled,
|
|
1805
|
+
mode: connector.mode,
|
|
1806
|
+
apiKey: connector.apiKey ?? null,
|
|
1807
|
+
websiteId: connector.websiteId ?? null,
|
|
1808
|
+
namespace: connector.namespace ?? null,
|
|
1809
|
+
source: connector.source ?? null,
|
|
1810
|
+
apiUrl: connector.apiUrl ?? null,
|
|
1811
|
+
debug: connector.debug,
|
|
1812
|
+
enableBatching: connector.enableBatching,
|
|
1813
|
+
batchSize: connector.batchSize ?? null,
|
|
1814
|
+
batchTimeout: connector.batchTimeout ?? null,
|
|
1815
|
+
maxQueueSize: connector.maxQueueSize ?? null
|
|
1816
|
+
});
|
|
1817
|
+
}
|
|
1818
|
+
function getSessionId(record) {
|
|
1819
|
+
const direct = getField(record, "sessionId");
|
|
1820
|
+
if (hasNonEmptyString(direct)) {
|
|
1821
|
+
return direct;
|
|
1822
|
+
}
|
|
1823
|
+
return getClientSessionField(record, "sessionId");
|
|
1824
|
+
}
|
|
1825
|
+
function getAnonymousId(record) {
|
|
1826
|
+
const direct = getField(record, "anonymousId");
|
|
1827
|
+
if (hasNonEmptyString(direct)) {
|
|
1828
|
+
return direct;
|
|
1829
|
+
}
|
|
1830
|
+
const payload = getPrimaryPayload(record);
|
|
1831
|
+
if (isPlainObject(payload.metadata) && hasNonEmptyString(payload.metadata.databuddyAnonymousId)) {
|
|
1832
|
+
return payload.metadata.databuddyAnonymousId;
|
|
1833
|
+
}
|
|
1834
|
+
return void 0;
|
|
1835
|
+
}
|
|
1836
|
+
function getDatabuddyEventName(record) {
|
|
1837
|
+
const recordType = getRecordType(record);
|
|
1838
|
+
if (hasNonEmptyString(recordType)) {
|
|
1839
|
+
return recordType;
|
|
1840
|
+
}
|
|
1841
|
+
return "log";
|
|
1842
|
+
}
|
|
1843
|
+
function buildRecordProperties(record, source) {
|
|
1844
|
+
const properties = {
|
|
1845
|
+
blyp_level: record.level,
|
|
1846
|
+
blyp_source: source,
|
|
1847
|
+
blyp_payload: serializeLogRecord(record),
|
|
1848
|
+
message: typeof record.message === "string" ? record.message : String(record.message)
|
|
1849
|
+
};
|
|
1850
|
+
const caller = typeof record.caller === "string" ? record.caller : void 0;
|
|
1851
|
+
const groupId = getField(record, "groupId");
|
|
1852
|
+
const method = getField(record, "method");
|
|
1853
|
+
const path3 = getField(record, "path");
|
|
1854
|
+
const status = getField(record, "status");
|
|
1855
|
+
const duration = getField(record, "duration");
|
|
1856
|
+
const pagePath = getClientPageField(record, "pathname");
|
|
1857
|
+
const pageUrl = getClientPageField(record, "url");
|
|
1858
|
+
const sessionId = getClientSessionField(record, "sessionId");
|
|
1859
|
+
const pageId = getClientSessionField(record, "pageId");
|
|
1860
|
+
const ifTruthy = [
|
|
1861
|
+
["blyp_type", getRecordType(record)],
|
|
1862
|
+
["caller", caller],
|
|
1863
|
+
["group_id", groupId],
|
|
1864
|
+
["method", method],
|
|
1865
|
+
["path", path3],
|
|
1866
|
+
["page_path", pagePath],
|
|
1867
|
+
["page_url", pageUrl],
|
|
1868
|
+
["session_id", sessionId],
|
|
1869
|
+
["page_id", pageId]
|
|
1870
|
+
];
|
|
1871
|
+
const ifDefined = [
|
|
1872
|
+
["status_code", status],
|
|
1873
|
+
["duration_ms", duration]
|
|
1874
|
+
];
|
|
1875
|
+
for (const [key, value] of ifTruthy) {
|
|
1876
|
+
if (value) {
|
|
1877
|
+
properties[key] = value;
|
|
1878
|
+
}
|
|
1879
|
+
}
|
|
1880
|
+
for (const [key, value] of ifDefined) {
|
|
1881
|
+
if (value !== void 0) {
|
|
1882
|
+
properties[key] = value;
|
|
1883
|
+
}
|
|
1884
|
+
}
|
|
1885
|
+
return properties;
|
|
1886
|
+
}
|
|
1887
|
+
function createTrackEvent(record, source) {
|
|
1888
|
+
return {
|
|
1889
|
+
name: getDatabuddyEventName(record),
|
|
1890
|
+
anonymousId: getAnonymousId(record),
|
|
1891
|
+
sessionId: getSessionId(record),
|
|
1892
|
+
properties: buildRecordProperties(record, source)
|
|
1893
|
+
};
|
|
1894
|
+
}
|
|
1895
|
+
function normalizeExceptionProperties(value) {
|
|
1896
|
+
if (!isPlainObject(value)) {
|
|
1897
|
+
return {};
|
|
1898
|
+
}
|
|
1899
|
+
return normalizeLogValue(value);
|
|
1900
|
+
}
|
|
1901
|
+
function normalizeExceptionInput2(value, fallbackMessage) {
|
|
1902
|
+
if (value instanceof Error) {
|
|
1903
|
+
return {
|
|
1904
|
+
message: value.message || fallbackMessage,
|
|
1905
|
+
properties: {
|
|
1906
|
+
error_type: value.name,
|
|
1907
|
+
...value.stack ? { stack: value.stack } : {},
|
|
1908
|
+
...normalizeExceptionProperties(value)
|
|
1909
|
+
}
|
|
1910
|
+
};
|
|
1911
|
+
}
|
|
1912
|
+
if (isPlainObject(value)) {
|
|
1913
|
+
const message = hasNonEmptyString(value.message) ? value.message : hasNonEmptyString(value.error) ? value.error : fallbackMessage;
|
|
1914
|
+
return {
|
|
1915
|
+
message,
|
|
1916
|
+
properties: normalizeExceptionProperties(value)
|
|
1917
|
+
};
|
|
1918
|
+
}
|
|
1919
|
+
if (typeof value === "string") {
|
|
1920
|
+
return {
|
|
1921
|
+
message: value,
|
|
1922
|
+
properties: {
|
|
1923
|
+
message: value
|
|
1924
|
+
}
|
|
1925
|
+
};
|
|
1926
|
+
}
|
|
1927
|
+
return {
|
|
1928
|
+
message: fallbackMessage,
|
|
1929
|
+
properties: {
|
|
1930
|
+
value: normalizeLogValue(value)
|
|
1931
|
+
}
|
|
1932
|
+
};
|
|
1933
|
+
}
|
|
1934
|
+
function createDatabuddySender(config) {
|
|
1935
|
+
const connector = resolveConnectorConfig2(config);
|
|
1936
|
+
const senderKey = getDatabuddySenderKey(connector);
|
|
1937
|
+
const cached = senderCache.get(senderKey);
|
|
1938
|
+
if (cached) {
|
|
1939
|
+
return cached;
|
|
1940
|
+
}
|
|
1941
|
+
const key = `${connector.apiUrl ?? "default"}:${connector.mode}:${connector.apiKey ?? "missing"}`;
|
|
1942
|
+
const client = connector.ready ? testHooks2.createClient?.(connector) ?? createDefaultClient2(connector) : void 0;
|
|
1943
|
+
if (client) {
|
|
1944
|
+
registerShutdownHooks2(key, async () => {
|
|
1945
|
+
await client.flush();
|
|
1946
|
+
});
|
|
1947
|
+
}
|
|
1948
|
+
const emitUnavailableWarning = () => {
|
|
1949
|
+
warnOnce4(
|
|
1950
|
+
`databuddy-unavailable:${key}`,
|
|
1951
|
+
"[Blyp] Databuddy connector is not configured. Databuddy requires both apiKey and websiteId. Skipping Databuddy delivery."
|
|
1952
|
+
);
|
|
1953
|
+
};
|
|
1954
|
+
const emitExceptionUnavailableWarning = () => {
|
|
1955
|
+
warnOnce4(
|
|
1956
|
+
`databuddy-exception-unavailable:${key}`,
|
|
1957
|
+
"[Blyp] Databuddy error tracking is not configured. Databuddy requires both apiKey and websiteId. Skipping Databuddy exception capture."
|
|
1958
|
+
);
|
|
1959
|
+
};
|
|
1960
|
+
const sender = {
|
|
1961
|
+
enabled: connector.enabled,
|
|
1962
|
+
ready: connector.ready,
|
|
1963
|
+
mode: connector.mode,
|
|
1964
|
+
status: connector.status,
|
|
1965
|
+
shouldAutoForwardServerLogs() {
|
|
1966
|
+
return connector.ready && connector.mode === "auto";
|
|
1967
|
+
},
|
|
1968
|
+
shouldAutoCaptureExceptions() {
|
|
1969
|
+
return connector.ready && connector.mode === "auto";
|
|
1970
|
+
},
|
|
1971
|
+
send(record, options = {}) {
|
|
1972
|
+
if (!connector.ready || !client) {
|
|
1973
|
+
if (options.warnIfUnavailable) {
|
|
1974
|
+
emitUnavailableWarning();
|
|
1975
|
+
}
|
|
1976
|
+
return;
|
|
1977
|
+
}
|
|
1978
|
+
try {
|
|
1979
|
+
const result = client.track(createTrackEvent(record, options.source ?? "server"));
|
|
1980
|
+
if (result && typeof result.catch === "function") {
|
|
1981
|
+
void result.catch((error) => {
|
|
1982
|
+
warnOnce4(
|
|
1983
|
+
`databuddy-send:${key}`,
|
|
1984
|
+
"[Blyp] Failed to deliver log to Databuddy.",
|
|
1985
|
+
error
|
|
1986
|
+
);
|
|
1987
|
+
});
|
|
1988
|
+
}
|
|
1989
|
+
} catch (error) {
|
|
1990
|
+
warnOnce4(
|
|
1991
|
+
`databuddy-send:${key}`,
|
|
1992
|
+
"[Blyp] Failed to deliver log to Databuddy.",
|
|
1993
|
+
error
|
|
1994
|
+
);
|
|
1995
|
+
}
|
|
1996
|
+
},
|
|
1997
|
+
captureException(error, options = {}) {
|
|
1998
|
+
if (!connector.ready || !client) {
|
|
1999
|
+
if (options.warnIfUnavailable) {
|
|
2000
|
+
emitExceptionUnavailableWarning();
|
|
2001
|
+
}
|
|
2002
|
+
return;
|
|
2003
|
+
}
|
|
2004
|
+
const normalized = normalizeExceptionInput2(
|
|
2005
|
+
error,
|
|
2006
|
+
options.source === "client" ? "Client error" : "Server error"
|
|
2007
|
+
);
|
|
2008
|
+
try {
|
|
2009
|
+
const result = client.track({
|
|
2010
|
+
name: "error",
|
|
2011
|
+
anonymousId: options.anonymousId,
|
|
2012
|
+
sessionId: options.sessionId,
|
|
2013
|
+
properties: {
|
|
2014
|
+
message: normalized.message,
|
|
2015
|
+
blyp_source: options.source ?? "server",
|
|
2016
|
+
blyp_level: "error",
|
|
2017
|
+
...normalized.properties,
|
|
2018
|
+
...options.properties ?? {}
|
|
2019
|
+
}
|
|
2020
|
+
});
|
|
2021
|
+
if (result && typeof result.catch === "function") {
|
|
2022
|
+
void result.catch((captureError) => {
|
|
2023
|
+
warnOnce4(
|
|
2024
|
+
`databuddy-capture:${key}`,
|
|
2025
|
+
"[Blyp] Failed to capture exception in Databuddy.",
|
|
2026
|
+
captureError
|
|
2027
|
+
);
|
|
2028
|
+
});
|
|
2029
|
+
}
|
|
2030
|
+
} catch (captureError) {
|
|
2031
|
+
warnOnce4(
|
|
2032
|
+
`databuddy-capture:${key}`,
|
|
2033
|
+
"[Blyp] Failed to capture exception in Databuddy.",
|
|
2034
|
+
captureError
|
|
2035
|
+
);
|
|
2036
|
+
}
|
|
2037
|
+
},
|
|
2038
|
+
async flush() {
|
|
2039
|
+
try {
|
|
2040
|
+
if (client) {
|
|
2041
|
+
await client.flush();
|
|
2042
|
+
}
|
|
2043
|
+
} catch (error) {
|
|
2044
|
+
warnOnce4(
|
|
2045
|
+
`databuddy-flush:${key}`,
|
|
2046
|
+
"[Blyp] Failed to flush Databuddy telemetry.",
|
|
2047
|
+
error
|
|
2048
|
+
);
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
};
|
|
2052
|
+
senderCache.set(senderKey, sender);
|
|
2053
|
+
return sender;
|
|
2054
|
+
}
|
|
2055
|
+
var PREVIOUSLY_CAPTURED_ERROR_KEY2 = "__posthog_previously_captured_error";
|
|
2056
|
+
var warnedKeys4 = /* @__PURE__ */ new Set();
|
|
2057
|
+
var testHooks3 = {};
|
|
2058
|
+
var warnOnce5 = createErrorOnceLogger(warnedKeys4);
|
|
1726
2059
|
function normalizeHost(host) {
|
|
1727
2060
|
const trimmed = (host || "https://us.i.posthog.com").trim();
|
|
1728
2061
|
return trimmed.replace(/\/+$/, "");
|
|
@@ -1763,7 +2096,7 @@ function buildRecordAttributes(record, source) {
|
|
|
1763
2096
|
for (const [k, v] of ifDefined) if (v !== void 0) attributes[k] = v;
|
|
1764
2097
|
return attributes;
|
|
1765
2098
|
}
|
|
1766
|
-
function
|
|
2099
|
+
function normalizeExceptionProperties2(value) {
|
|
1767
2100
|
if (!isPlainObject(value)) {
|
|
1768
2101
|
return {};
|
|
1769
2102
|
}
|
|
@@ -1795,18 +2128,18 @@ function createSyntheticError(message, source) {
|
|
|
1795
2128
|
assignExceptionField(error, "details", source.details);
|
|
1796
2129
|
return error;
|
|
1797
2130
|
}
|
|
1798
|
-
function
|
|
2131
|
+
function normalizeExceptionInput3(input, fallbackMessage = "Unknown error") {
|
|
1799
2132
|
if (input instanceof Error) {
|
|
1800
2133
|
return {
|
|
1801
2134
|
error: input,
|
|
1802
|
-
properties:
|
|
2135
|
+
properties: normalizeExceptionProperties2(input)
|
|
1803
2136
|
};
|
|
1804
2137
|
}
|
|
1805
2138
|
if (isPlainObject(input)) {
|
|
1806
2139
|
const message = hasNonEmptyString(input.message) ? input.message : hasNonEmptyString(input.error) ? input.error : fallbackMessage;
|
|
1807
2140
|
return {
|
|
1808
2141
|
error: createSyntheticError(message, input),
|
|
1809
|
-
properties:
|
|
2142
|
+
properties: normalizeExceptionProperties2(input)
|
|
1810
2143
|
};
|
|
1811
2144
|
}
|
|
1812
2145
|
if (typeof input === "string") {
|
|
@@ -1879,12 +2212,12 @@ function resolveSeverity(level) {
|
|
|
1879
2212
|
return { text: "info", number: SeverityNumber.INFO };
|
|
1880
2213
|
}
|
|
1881
2214
|
}
|
|
1882
|
-
function
|
|
2215
|
+
function registerShutdownHooks3(key, shutdown) {
|
|
1883
2216
|
const handlers = ["beforeExit", "SIGINT", "SIGTERM"];
|
|
1884
2217
|
for (const event of handlers) {
|
|
1885
2218
|
process.once(event, () => {
|
|
1886
2219
|
void shutdown().catch((error) => {
|
|
1887
|
-
|
|
2220
|
+
warnOnce5(
|
|
1888
2221
|
`${key}:shutdown`,
|
|
1889
2222
|
"[Blyp] Failed to flush PostHog telemetry during shutdown.",
|
|
1890
2223
|
error
|
|
@@ -1938,7 +2271,7 @@ function createDefaultExceptionClient(connector) {
|
|
|
1938
2271
|
}
|
|
1939
2272
|
};
|
|
1940
2273
|
}
|
|
1941
|
-
function
|
|
2274
|
+
function resolveConnectorConfig3(config) {
|
|
1942
2275
|
const connector = isBlypConfig(config) ? config.connectors?.posthog : config;
|
|
1943
2276
|
const enabled = connector?.enabled ?? false;
|
|
1944
2277
|
const projectKey = connector?.projectKey;
|
|
@@ -1961,11 +2294,11 @@ function resolveConnectorConfig2(config) {
|
|
|
1961
2294
|
};
|
|
1962
2295
|
}
|
|
1963
2296
|
function createPostHogSender(config) {
|
|
1964
|
-
const connector =
|
|
2297
|
+
const connector = resolveConnectorConfig3(config);
|
|
1965
2298
|
const key = `${connector.serviceName}:${connector.host}:${connector.mode}`;
|
|
1966
2299
|
const ready = connector.enabled === true && hasNonEmptyString(connector.projectKey);
|
|
1967
|
-
const transport = ready ?
|
|
1968
|
-
const exceptionClient = connector.errorTracking.ready ?
|
|
2300
|
+
const transport = ready ? testHooks3.createTransport?.(connector) ?? createDefaultTransport(connector) : void 0;
|
|
2301
|
+
const exceptionClient = connector.errorTracking.ready ? testHooks3.createExceptionClient?.(connector) ?? createDefaultExceptionClient(connector) : void 0;
|
|
1969
2302
|
const shutdown = async () => {
|
|
1970
2303
|
if (transport?.shutdown) {
|
|
1971
2304
|
await transport.shutdown();
|
|
@@ -1977,16 +2310,16 @@ function createPostHogSender(config) {
|
|
|
1977
2310
|
}
|
|
1978
2311
|
};
|
|
1979
2312
|
if (transport || exceptionClient) {
|
|
1980
|
-
|
|
2313
|
+
registerShutdownHooks3(key, shutdown);
|
|
1981
2314
|
}
|
|
1982
2315
|
const emitUnavailableWarning = () => {
|
|
1983
|
-
|
|
2316
|
+
warnOnce5(
|
|
1984
2317
|
`posthog-unavailable:${key}`,
|
|
1985
2318
|
"[Blyp] PostHog connector is not configured. Skipping PostHog delivery."
|
|
1986
2319
|
);
|
|
1987
2320
|
};
|
|
1988
2321
|
const emitExceptionUnavailableWarning = () => {
|
|
1989
|
-
|
|
2322
|
+
warnOnce5(
|
|
1990
2323
|
`posthog-exception-unavailable:${key}`,
|
|
1991
2324
|
"[Blyp] PostHog error tracking is not configured. Skipping PostHog exception capture."
|
|
1992
2325
|
);
|
|
@@ -2024,7 +2357,7 @@ function createPostHogSender(config) {
|
|
|
2024
2357
|
const result = transport.emit(normalized);
|
|
2025
2358
|
if (result && typeof result.catch === "function") {
|
|
2026
2359
|
void result.catch((error) => {
|
|
2027
|
-
|
|
2360
|
+
warnOnce5(
|
|
2028
2361
|
`posthog-emit:${key}`,
|
|
2029
2362
|
"[Blyp] Failed to deliver log to PostHog.",
|
|
2030
2363
|
error
|
|
@@ -2032,7 +2365,7 @@ function createPostHogSender(config) {
|
|
|
2032
2365
|
});
|
|
2033
2366
|
}
|
|
2034
2367
|
} catch (error) {
|
|
2035
|
-
|
|
2368
|
+
warnOnce5(
|
|
2036
2369
|
`posthog-emit:${key}`,
|
|
2037
2370
|
"[Blyp] Failed to deliver log to PostHog.",
|
|
2038
2371
|
error
|
|
@@ -2049,7 +2382,7 @@ function createPostHogSender(config) {
|
|
|
2049
2382
|
if (isPreviouslyCapturedPostHogError(error)) {
|
|
2050
2383
|
return;
|
|
2051
2384
|
}
|
|
2052
|
-
const normalized =
|
|
2385
|
+
const normalized = normalizeExceptionInput3(
|
|
2053
2386
|
error,
|
|
2054
2387
|
options.source === "client" ? "Client error" : "Server error"
|
|
2055
2388
|
);
|
|
@@ -2068,7 +2401,7 @@ function createPostHogSender(config) {
|
|
|
2068
2401
|
markPostHogCapturedError(normalized.error);
|
|
2069
2402
|
if (result && typeof result.catch === "function") {
|
|
2070
2403
|
void result.catch((captureError) => {
|
|
2071
|
-
|
|
2404
|
+
warnOnce5(
|
|
2072
2405
|
`posthog-capture:${key}`,
|
|
2073
2406
|
"[Blyp] Failed to capture exception in PostHog.",
|
|
2074
2407
|
captureError
|
|
@@ -2076,7 +2409,7 @@ function createPostHogSender(config) {
|
|
|
2076
2409
|
});
|
|
2077
2410
|
}
|
|
2078
2411
|
} catch (captureError) {
|
|
2079
|
-
|
|
2412
|
+
warnOnce5(
|
|
2080
2413
|
`posthog-capture:${key}`,
|
|
2081
2414
|
"[Blyp] Failed to capture exception in PostHog.",
|
|
2082
2415
|
captureError
|
|
@@ -2089,7 +2422,7 @@ function createPostHogSender(config) {
|
|
|
2089
2422
|
await transport.flush();
|
|
2090
2423
|
}
|
|
2091
2424
|
} catch (error) {
|
|
2092
|
-
|
|
2425
|
+
warnOnce5(
|
|
2093
2426
|
`posthog-flush:${key}`,
|
|
2094
2427
|
"[Blyp] Failed to flush PostHog telemetry.",
|
|
2095
2428
|
error
|
|
@@ -2098,13 +2431,13 @@ function createPostHogSender(config) {
|
|
|
2098
2431
|
}
|
|
2099
2432
|
};
|
|
2100
2433
|
}
|
|
2101
|
-
var
|
|
2102
|
-
var
|
|
2103
|
-
var
|
|
2434
|
+
var warnedKeys5 = /* @__PURE__ */ new Set();
|
|
2435
|
+
var testHooks4 = {};
|
|
2436
|
+
var warnOnce6 = createErrorOnceLogger(warnedKeys5);
|
|
2104
2437
|
function getSentryModule2() {
|
|
2105
|
-
return
|
|
2438
|
+
return testHooks4.module ?? Sentry;
|
|
2106
2439
|
}
|
|
2107
|
-
function
|
|
2440
|
+
function resolveConnectorConfig4(config) {
|
|
2108
2441
|
const connector = isBlypConfig(config) ? config.connectors?.sentry : config;
|
|
2109
2442
|
const enabled = connector?.enabled ?? false;
|
|
2110
2443
|
const dsn = connector?.dsn;
|
|
@@ -2249,7 +2582,7 @@ function hasConfigMismatch(connector, client) {
|
|
|
2249
2582
|
return hasNonEmptyString(connector.dsn) && connector.dsn !== options.dsn || hasNonEmptyString(connector.environment) && connector.environment !== options.environment || hasNonEmptyString(connector.release) && connector.release !== options.release;
|
|
2250
2583
|
}
|
|
2251
2584
|
function createSentrySender(config) {
|
|
2252
|
-
const connector =
|
|
2585
|
+
const connector = resolveConnectorConfig4(config);
|
|
2253
2586
|
const key = `${connector.mode}:${connector.dsn ?? "missing"}`;
|
|
2254
2587
|
const module = getSentryModule2();
|
|
2255
2588
|
let client = connector.enabled ? module.getClient() : void 0;
|
|
@@ -2263,7 +2596,7 @@ function createSentrySender(config) {
|
|
|
2263
2596
|
});
|
|
2264
2597
|
client = module.getClient();
|
|
2265
2598
|
} catch (error) {
|
|
2266
|
-
|
|
2599
|
+
warnOnce6(
|
|
2267
2600
|
`sentry-init:${key}`,
|
|
2268
2601
|
"[Blyp] Failed to initialize Sentry. Skipping Sentry delivery.",
|
|
2269
2602
|
error
|
|
@@ -2271,14 +2604,14 @@ function createSentrySender(config) {
|
|
|
2271
2604
|
}
|
|
2272
2605
|
}
|
|
2273
2606
|
if (client && hasConfigMismatch(connector, client)) {
|
|
2274
|
-
|
|
2607
|
+
warnOnce6(
|
|
2275
2608
|
`sentry-mismatch:${key}`,
|
|
2276
2609
|
"[Blyp] Sentry is already initialized with different options. Reusing the existing Sentry client."
|
|
2277
2610
|
);
|
|
2278
2611
|
}
|
|
2279
2612
|
const ready = connector.enabled && client !== void 0;
|
|
2280
2613
|
const emitUnavailableWarning = () => {
|
|
2281
|
-
|
|
2614
|
+
warnOnce6(
|
|
2282
2615
|
`sentry-unavailable:${key}`,
|
|
2283
2616
|
"[Blyp] Sentry connector is not configured. Skipping Sentry delivery."
|
|
2284
2617
|
);
|
|
@@ -2304,7 +2637,7 @@ function createSentrySender(config) {
|
|
|
2304
2637
|
try {
|
|
2305
2638
|
logMethod(record.message, attributes);
|
|
2306
2639
|
} catch (error) {
|
|
2307
|
-
|
|
2640
|
+
warnOnce6(
|
|
2308
2641
|
`sentry-log:${key}`,
|
|
2309
2642
|
"[Blyp] Failed to deliver log to Sentry.",
|
|
2310
2643
|
error
|
|
@@ -2322,7 +2655,7 @@ function createSentrySender(config) {
|
|
|
2322
2655
|
module.captureException(exception);
|
|
2323
2656
|
});
|
|
2324
2657
|
} catch (error) {
|
|
2325
|
-
|
|
2658
|
+
warnOnce6(
|
|
2326
2659
|
`sentry-exception:${key}`,
|
|
2327
2660
|
"[Blyp] Failed to capture exception in Sentry.",
|
|
2328
2661
|
error
|
|
@@ -2333,7 +2666,7 @@ function createSentrySender(config) {
|
|
|
2333
2666
|
try {
|
|
2334
2667
|
await module.flush(2e3);
|
|
2335
2668
|
} catch (error) {
|
|
2336
|
-
|
|
2669
|
+
warnOnce6(
|
|
2337
2670
|
`sentry-flush:${key}`,
|
|
2338
2671
|
"[Blyp] Failed to flush Sentry logs.",
|
|
2339
2672
|
error
|
|
@@ -2342,9 +2675,9 @@ function createSentrySender(config) {
|
|
|
2342
2675
|
}
|
|
2343
2676
|
};
|
|
2344
2677
|
}
|
|
2345
|
-
var
|
|
2346
|
-
var
|
|
2347
|
-
var
|
|
2678
|
+
var warnedKeys6 = /* @__PURE__ */ new Set();
|
|
2679
|
+
var testHooks5 = {};
|
|
2680
|
+
var warnOnce7 = createErrorOnceLogger(warnedKeys6);
|
|
2348
2681
|
function normalizeOTLPRecord(record, connector, source = "server") {
|
|
2349
2682
|
const severity = resolveSeverity2(record.level);
|
|
2350
2683
|
const body = typeof record.message === "string" ? record.message : String(record.message);
|
|
@@ -2409,14 +2742,14 @@ function resolveSeverity2(level) {
|
|
|
2409
2742
|
return { text: "info", number: SeverityNumber.INFO };
|
|
2410
2743
|
}
|
|
2411
2744
|
}
|
|
2412
|
-
function
|
|
2745
|
+
function registerShutdownHooks4(key, shutdown) {
|
|
2413
2746
|
const handlers = ["beforeExit", "SIGINT", "SIGTERM"];
|
|
2414
2747
|
for (const event of handlers) {
|
|
2415
2748
|
process.once(event, async () => {
|
|
2416
2749
|
try {
|
|
2417
2750
|
await shutdown();
|
|
2418
2751
|
} catch (error) {
|
|
2419
|
-
|
|
2752
|
+
warnOnce7(
|
|
2420
2753
|
`${key}:shutdown`,
|
|
2421
2754
|
"[Blyp] Failed to flush OTLP logs during shutdown.",
|
|
2422
2755
|
error
|
|
@@ -2493,7 +2826,7 @@ function createUnavailableSender(name, connector) {
|
|
|
2493
2826
|
const senderName = name || connector?.name || "otlp";
|
|
2494
2827
|
const key = `${senderName}:${connector?.serviceName ?? "blyp-app"}:${connector?.endpoint ?? "missing"}`;
|
|
2495
2828
|
const emitUnavailableWarning = () => {
|
|
2496
|
-
|
|
2829
|
+
warnOnce7(
|
|
2497
2830
|
`otlp-unavailable:${key}`,
|
|
2498
2831
|
`[Blyp] OTLP target "${senderName}" is not configured or not ready. Skipping OTLP delivery.`
|
|
2499
2832
|
);
|
|
@@ -2524,7 +2857,7 @@ function createSender(connector) {
|
|
|
2524
2857
|
...connector,
|
|
2525
2858
|
headers: resolveTransportHeaders(connector)
|
|
2526
2859
|
};
|
|
2527
|
-
const transport =
|
|
2860
|
+
const transport = testHooks5.createTransport?.(transportConnector) ?? createDefaultTransport2(transportConnector);
|
|
2528
2861
|
return {
|
|
2529
2862
|
name: connector.name,
|
|
2530
2863
|
enabled: connector.enabled,
|
|
@@ -2540,7 +2873,7 @@ function createSender(connector) {
|
|
|
2540
2873
|
const result = transport.emit(normalized);
|
|
2541
2874
|
if (result && typeof result.catch === "function") {
|
|
2542
2875
|
void result.catch((error) => {
|
|
2543
|
-
|
|
2876
|
+
warnOnce7(
|
|
2544
2877
|
`otlp-emit:${key}`,
|
|
2545
2878
|
`[Blyp] Failed to deliver log to OTLP target "${connector.name}".`,
|
|
2546
2879
|
error
|
|
@@ -2548,7 +2881,7 @@ function createSender(connector) {
|
|
|
2548
2881
|
});
|
|
2549
2882
|
}
|
|
2550
2883
|
} catch (error) {
|
|
2551
|
-
|
|
2884
|
+
warnOnce7(
|
|
2552
2885
|
`otlp-emit:${key}`,
|
|
2553
2886
|
`[Blyp] Failed to deliver log to OTLP target "${connector.name}".`,
|
|
2554
2887
|
error
|
|
@@ -2561,7 +2894,7 @@ function createSender(connector) {
|
|
|
2561
2894
|
await transport.flush();
|
|
2562
2895
|
}
|
|
2563
2896
|
} catch (error) {
|
|
2564
|
-
|
|
2897
|
+
warnOnce7(
|
|
2565
2898
|
`otlp-flush:${key}`,
|
|
2566
2899
|
`[Blyp] Failed to flush OTLP logs for target "${connector.name}".`,
|
|
2567
2900
|
error
|
|
@@ -2590,7 +2923,7 @@ function createOTLPRegistry(config) {
|
|
|
2590
2923
|
await Promise.all(Array.from(senders.values()).map((sender) => sender.flush()));
|
|
2591
2924
|
}
|
|
2592
2925
|
};
|
|
2593
|
-
|
|
2926
|
+
registerShutdownHooks4("otlp-registry", () => registry.flush());
|
|
2594
2927
|
return registry;
|
|
2595
2928
|
}
|
|
2596
2929
|
var _RuntimeDetector = class _RuntimeDetector {
|
|
@@ -3024,6 +3357,18 @@ function maybeSendToBetterStack(betterstack, record) {
|
|
|
3024
3357
|
}
|
|
3025
3358
|
betterstack.send(record, { source: "server", warnIfUnavailable: true });
|
|
3026
3359
|
}
|
|
3360
|
+
function maybeSendToDatabuddy(databuddy, record) {
|
|
3361
|
+
if (isClientLogRecord(record)) {
|
|
3362
|
+
return;
|
|
3363
|
+
}
|
|
3364
|
+
if (!databuddy.shouldAutoForwardServerLogs()) {
|
|
3365
|
+
if (databuddy.enabled && !databuddy.ready) {
|
|
3366
|
+
databuddy.send(record, { source: "server", warnIfUnavailable: true });
|
|
3367
|
+
}
|
|
3368
|
+
return;
|
|
3369
|
+
}
|
|
3370
|
+
databuddy.send(record, { source: "server", warnIfUnavailable: true });
|
|
3371
|
+
}
|
|
3027
3372
|
function maybeSendToSentry(sentry, record) {
|
|
3028
3373
|
if (isClientLogRecord(record)) {
|
|
3029
3374
|
return;
|
|
@@ -3044,7 +3389,7 @@ function maybeSendToOTLP(otlp, record) {
|
|
|
3044
3389
|
sender.send(record, { source: "server", warnIfUnavailable: true });
|
|
3045
3390
|
}
|
|
3046
3391
|
}
|
|
3047
|
-
function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry, otlp, bindings = {}, source = "root") {
|
|
3392
|
+
function createLoggerInstance(rootRawLogger, sink, betterstack, databuddy, posthog, sentry, otlp, bindings = {}, source = "root") {
|
|
3048
3393
|
const rawLogger = Object.keys(bindings).length > 0 ? rootRawLogger.child(bindings) : rootRawLogger;
|
|
3049
3394
|
const writeRecord = (level, message, args, writeSource = source) => {
|
|
3050
3395
|
if (writeSource === "root" && shouldDropRootLogWrite()) {
|
|
@@ -3070,6 +3415,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3070
3415
|
);
|
|
3071
3416
|
sink.write(record);
|
|
3072
3417
|
maybeSendToBetterStack(betterstack, record);
|
|
3418
|
+
maybeSendToDatabuddy(databuddy, record);
|
|
3073
3419
|
maybeSendToPostHog(posthog, record);
|
|
3074
3420
|
maybeSendToSentry(sentry, record);
|
|
3075
3421
|
maybeSendToOTLP(otlp, record);
|
|
@@ -3093,6 +3439,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3093
3439
|
sink.write(record);
|
|
3094
3440
|
}
|
|
3095
3441
|
maybeSendToBetterStack(betterstack, record);
|
|
3442
|
+
maybeSendToDatabuddy(databuddy, record);
|
|
3096
3443
|
maybeSendToPostHog(posthog, record);
|
|
3097
3444
|
maybeSendToSentry(sentry, record);
|
|
3098
3445
|
maybeSendToOTLP(otlp, record);
|
|
@@ -3126,8 +3473,26 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3126
3473
|
}
|
|
3127
3474
|
writeRecord("table", message, data === void 0 ? [] : [data]);
|
|
3128
3475
|
},
|
|
3129
|
-
flush: () =>
|
|
3130
|
-
|
|
3476
|
+
flush: async () => {
|
|
3477
|
+
await sink.flush();
|
|
3478
|
+
await Promise.allSettled([
|
|
3479
|
+
betterstack.flush(),
|
|
3480
|
+
databuddy.flush(),
|
|
3481
|
+
posthog.flush(),
|
|
3482
|
+
sentry.flush(),
|
|
3483
|
+
otlp.flush()
|
|
3484
|
+
]);
|
|
3485
|
+
},
|
|
3486
|
+
shutdown: async () => {
|
|
3487
|
+
await sink.shutdown();
|
|
3488
|
+
await Promise.allSettled([
|
|
3489
|
+
betterstack.flush(),
|
|
3490
|
+
databuddy.flush(),
|
|
3491
|
+
posthog.flush(),
|
|
3492
|
+
sentry.flush(),
|
|
3493
|
+
otlp.flush()
|
|
3494
|
+
]);
|
|
3495
|
+
},
|
|
3131
3496
|
createStructuredLog: (groupId, initial) => {
|
|
3132
3497
|
return createStructuredLogForLogger(logger3, groupId, {
|
|
3133
3498
|
initialFields: initial
|
|
@@ -3139,6 +3504,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3139
3504
|
rootRawLogger,
|
|
3140
3505
|
sink,
|
|
3141
3506
|
betterstack,
|
|
3507
|
+
databuddy,
|
|
3142
3508
|
posthog,
|
|
3143
3509
|
sentry,
|
|
3144
3510
|
otlp,
|
|
@@ -3149,6 +3515,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3149
3515
|
[LOGGER_FACTORY]: {
|
|
3150
3516
|
bindings,
|
|
3151
3517
|
betterstack,
|
|
3518
|
+
databuddy,
|
|
3152
3519
|
posthog,
|
|
3153
3520
|
sentry,
|
|
3154
3521
|
otlp,
|
|
@@ -3158,6 +3525,7 @@ function createLoggerInstance(rootRawLogger, sink, betterstack, posthog, sentry,
|
|
|
3158
3525
|
rootRawLogger,
|
|
3159
3526
|
sink,
|
|
3160
3527
|
betterstack,
|
|
3528
|
+
databuddy,
|
|
3161
3529
|
posthog,
|
|
3162
3530
|
sentry,
|
|
3163
3531
|
otlp,
|
|
@@ -3181,6 +3549,7 @@ function createBaseLogger(config) {
|
|
|
3181
3549
|
const rawLogger = createPinoLogger(resolvedConfig);
|
|
3182
3550
|
const sink = createPrimarySink(resolvedConfig);
|
|
3183
3551
|
const betterstack = createBetterStackSender(resolvedConfig);
|
|
3552
|
+
const databuddy = createDatabuddySender(resolvedConfig);
|
|
3184
3553
|
const posthog = createPostHogSender(resolvedConfig);
|
|
3185
3554
|
const sentry = createSentrySender(resolvedConfig);
|
|
3186
3555
|
const otlp = createOTLPRegistry(resolvedConfig);
|
|
@@ -3188,6 +3557,7 @@ function createBaseLogger(config) {
|
|
|
3188
3557
|
rawLogger,
|
|
3189
3558
|
sink,
|
|
3190
3559
|
betterstack,
|
|
3560
|
+
databuddy,
|
|
3191
3561
|
posthog,
|
|
3192
3562
|
sentry,
|
|
3193
3563
|
otlp
|