@blyp/core 0.1.21 → 0.1.23

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.
Files changed (248) hide show
  1. package/README.md +54 -522
  2. package/STABILITY.md +56 -0
  3. package/dist/ai/anthropic/index.d.ts +3 -0
  4. package/dist/ai/anthropic/normalize.d.ts +9 -0
  5. package/dist/ai/anthropic/stream.d.ts +3 -0
  6. package/dist/ai/anthropic/wrap.d.ts +13 -0
  7. package/dist/ai/anthropic.js +701 -0
  8. package/dist/ai/anthropic.mjs +701 -0
  9. package/dist/ai/better-agent/index.d.ts +3 -0
  10. package/dist/ai/better-agent/normalize.d.ts +18 -0
  11. package/dist/ai/better-agent/plugin.d.ts +3 -0
  12. package/dist/ai/better-agent/tracker.d.ts +35 -0
  13. package/dist/ai/better-agent.js +701 -0
  14. package/dist/ai/better-agent.mjs +701 -0
  15. package/dist/ai/fetch.js +701 -0
  16. package/dist/ai/fetch.mjs +701 -0
  17. package/dist/ai/openai/index.d.ts +3 -0
  18. package/dist/ai/openai/normalize.d.ts +10 -0
  19. package/dist/ai/openai/stream.d.ts +3 -0
  20. package/dist/ai/openai/wrap.d.ts +24 -0
  21. package/dist/ai/openai.js +701 -0
  22. package/dist/ai/openai.mjs +701 -0
  23. package/dist/ai/shared/fetch.d.ts +5 -0
  24. package/dist/ai/shared/index.d.ts +2 -0
  25. package/dist/ai/shared/normalize.d.ts +17 -0
  26. package/dist/ai/shared/redaction.d.ts +6 -0
  27. package/dist/ai/shared/stream.d.ts +7 -0
  28. package/dist/ai/shared/trace.d.ts +119 -0
  29. package/dist/ai/shared/types.d.ts +171 -0
  30. package/dist/ai/shared.js +701 -0
  31. package/dist/ai/shared.mjs +701 -0
  32. package/dist/ai/vercel/index.d.ts +3 -0
  33. package/dist/ai/vercel/middleware.d.ts +3 -0
  34. package/dist/ai/vercel/model.d.ts +3 -0
  35. package/dist/ai/vercel.js +701 -0
  36. package/dist/ai/vercel.mjs +701 -0
  37. package/dist/astro.js +618 -4519
  38. package/dist/astro.mjs +618 -4491
  39. package/dist/client.js +1 -1139
  40. package/dist/client.mjs +1 -1132
  41. package/dist/connectors/betterstack.js +9 -1532
  42. package/dist/connectors/betterstack.mjs +9 -1507
  43. package/dist/connectors/databuddy.js +9 -1456
  44. package/dist/connectors/databuddy.mjs +9 -1451
  45. package/dist/connectors/delivery/backoff.d.ts +2 -0
  46. package/dist/connectors/delivery/manager.d.ts +44 -0
  47. package/dist/connectors/delivery/queue-path.d.ts +1 -0
  48. package/dist/connectors/delivery/sqlite-adapter-bun.d.ts +1 -0
  49. package/dist/connectors/delivery/sqlite-adapter-node.d.ts +1 -0
  50. package/dist/connectors/delivery/sqlite-client.d.ts +37 -0
  51. package/dist/connectors/delivery/sqlite-worker.d.ts +1 -0
  52. package/dist/connectors/delivery/studio-queue.d.ts +12 -0
  53. package/dist/connectors/delivery/types.d.ts +98 -0
  54. package/dist/connectors/otlp/index.d.ts +1 -0
  55. package/dist/connectors/otlp.js +9 -1371
  56. package/dist/connectors/otlp.mjs +9 -1368
  57. package/dist/connectors/posthog/properties.d.ts +4 -0
  58. package/dist/connectors/posthog/sender.d.ts +0 -1
  59. package/dist/connectors/posthog.js +10 -1527
  60. package/dist/connectors/posthog.mjs +10 -1522
  61. package/dist/connectors/sentry.js +9 -1380
  62. package/dist/connectors/sentry.mjs +9 -1357
  63. package/dist/core/config.d.ts +7 -2
  64. package/dist/core/log-record.d.ts +5 -4
  65. package/dist/core/logger.d.ts +2 -0
  66. package/dist/core/optional-module.d.ts +1 -0
  67. package/dist/core/pino-pretty-loader.d.ts +4 -0
  68. package/dist/database.js +1 -24
  69. package/dist/database.mjs +1 -21
  70. package/dist/elysia.js +613 -4517
  71. package/dist/elysia.mjs +615 -4491
  72. package/dist/expo.js +1 -726
  73. package/dist/expo.mjs +1 -724
  74. package/dist/express.js +613 -4507
  75. package/dist/express.mjs +615 -4480
  76. package/dist/fastify.js +615 -4526
  77. package/dist/fastify.mjs +617 -4499
  78. package/dist/frameworks/elysia/index.d.ts +1 -1
  79. package/dist/frameworks/elysia/logger.d.ts +2 -35
  80. package/dist/frameworks/nestjs/helpers.d.ts +2 -0
  81. package/dist/frameworks/shared/http.d.ts +3 -2
  82. package/dist/frameworks/shared/index.d.ts +2 -1
  83. package/dist/frameworks/shared/logger.d.ts +2 -0
  84. package/dist/frameworks/shared/request-context.d.ts +2 -0
  85. package/dist/frameworks/shared/trace.d.ts +6 -0
  86. package/dist/hono.js +616 -4496
  87. package/dist/hono.mjs +618 -4470
  88. package/dist/index.d.ts +49 -19
  89. package/dist/index.js +615 -7557
  90. package/dist/index.mjs +618 -7465
  91. package/dist/nestjs.js +626 -4999
  92. package/dist/nestjs.mjs +621 -4966
  93. package/dist/nextjs.js +618 -4525
  94. package/dist/nextjs.mjs +620 -4499
  95. package/dist/nitro.js +617 -4642
  96. package/dist/nitro.mjs +619 -4616
  97. package/dist/nuxt.js +617 -4649
  98. package/dist/nuxt.mjs +619 -4623
  99. package/dist/react-router.js +616 -4559
  100. package/dist/react-router.mjs +618 -4533
  101. package/dist/shared/redaction.d.ts +17 -0
  102. package/dist/standalone.js +606 -3628
  103. package/dist/standalone.mjs +610 -3603
  104. package/dist/sveltekit.js +617 -4523
  105. package/dist/sveltekit.mjs +619 -4497
  106. package/dist/tanstack-start.js +616 -4522
  107. package/dist/tanstack-start.mjs +618 -4496
  108. package/dist/types/core/config.d.ts +57 -0
  109. package/dist/types/core/logger.d.ts +3 -0
  110. package/dist/types/core/structured-log.d.ts +2 -0
  111. package/dist/types/database.d.ts +1 -0
  112. package/dist/types/frameworks/astro.d.ts +1 -0
  113. package/dist/types/frameworks/client.d.ts +2 -0
  114. package/dist/types/frameworks/elysia.d.ts +2 -0
  115. package/dist/types/frameworks/express.d.ts +1 -0
  116. package/dist/types/frameworks/fastify.d.ts +1 -0
  117. package/dist/types/frameworks/hono.d.ts +1 -0
  118. package/dist/types/frameworks/http.d.ts +1 -0
  119. package/dist/types/frameworks/nestjs.d.ts +2 -0
  120. package/dist/types/frameworks/nextjs.d.ts +1 -0
  121. package/dist/types/frameworks/nitro.d.ts +1 -0
  122. package/dist/types/frameworks/react-router.d.ts +2 -0
  123. package/dist/types/frameworks/request-context.d.ts +1 -0
  124. package/dist/types/frameworks/shared.d.ts +4 -1
  125. package/dist/types/frameworks/standalone.d.ts +3 -2
  126. package/dist/types/frameworks/sveltekit.d.ts +1 -0
  127. package/dist/types/frameworks/tanstack-start.d.ts +9 -3
  128. package/dist/types/frameworks/workers.d.ts +3 -0
  129. package/dist/types/shared/client-log.d.ts +1 -0
  130. package/dist/workers.js +2 -626
  131. package/dist/workers.mjs +2 -623
  132. package/package.json +259 -173
  133. package/dist/astro.js.map +0 -1
  134. package/dist/astro.mjs.map +0 -1
  135. package/dist/client.js.map +0 -1
  136. package/dist/client.mjs.map +0 -1
  137. package/dist/connectors/betterstack.js.map +0 -1
  138. package/dist/connectors/betterstack.mjs.map +0 -1
  139. package/dist/connectors/databuddy.js.map +0 -1
  140. package/dist/connectors/databuddy.mjs.map +0 -1
  141. package/dist/connectors/otlp.js.map +0 -1
  142. package/dist/connectors/otlp.mjs.map +0 -1
  143. package/dist/connectors/posthog.js.map +0 -1
  144. package/dist/connectors/posthog.mjs.map +0 -1
  145. package/dist/connectors/sentry.js.map +0 -1
  146. package/dist/connectors/sentry.mjs.map +0 -1
  147. package/dist/database.js.map +0 -1
  148. package/dist/database.mjs.map +0 -1
  149. package/dist/elysia.js.map +0 -1
  150. package/dist/elysia.mjs.map +0 -1
  151. package/dist/expo.js.map +0 -1
  152. package/dist/expo.mjs.map +0 -1
  153. package/dist/express.js.map +0 -1
  154. package/dist/express.mjs.map +0 -1
  155. package/dist/fastify.js.map +0 -1
  156. package/dist/fastify.mjs.map +0 -1
  157. package/dist/hono.js.map +0 -1
  158. package/dist/hono.mjs.map +0 -1
  159. package/dist/index.js.map +0 -1
  160. package/dist/index.mjs.map +0 -1
  161. package/dist/nestjs.js.map +0 -1
  162. package/dist/nestjs.mjs.map +0 -1
  163. package/dist/nextjs.js.map +0 -1
  164. package/dist/nextjs.mjs.map +0 -1
  165. package/dist/nitro.js.map +0 -1
  166. package/dist/nitro.mjs.map +0 -1
  167. package/dist/nuxt.js.map +0 -1
  168. package/dist/nuxt.mjs.map +0 -1
  169. package/dist/react-router.js.map +0 -1
  170. package/dist/react-router.mjs.map +0 -1
  171. package/dist/standalone.js.map +0 -1
  172. package/dist/standalone.mjs.map +0 -1
  173. package/dist/sveltekit.js.map +0 -1
  174. package/dist/sveltekit.mjs.map +0 -1
  175. package/dist/tanstack-start.js.map +0 -1
  176. package/dist/tanstack-start.mjs.map +0 -1
  177. package/dist/workers.js.map +0 -1
  178. package/dist/workers.mjs.map +0 -1
  179. package/exports/client.js +0 -3
  180. package/exports/client.mjs +0 -3
  181. package/exports/connectors/betterstack.js +0 -1
  182. package/exports/connectors/betterstack.mjs +0 -1
  183. package/exports/connectors/databuddy.js +0 -1
  184. package/exports/connectors/databuddy.mjs +0 -1
  185. package/exports/connectors/otlp.js +0 -1
  186. package/exports/connectors/otlp.mjs +0 -1
  187. package/exports/connectors/posthog.js +0 -1
  188. package/exports/connectors/posthog.mjs +0 -1
  189. package/exports/connectors/sentry.js +0 -1
  190. package/exports/connectors/sentry.mjs +0 -1
  191. package/exports/database.js +0 -1
  192. package/exports/database.mjs +0 -1
  193. package/exports/expo.js +0 -1
  194. package/exports/expo.mjs +0 -1
  195. package/exports/frameworks/astro.js +0 -1
  196. package/exports/frameworks/astro.mjs +0 -1
  197. package/exports/frameworks/elysia.js +0 -1
  198. package/exports/frameworks/elysia.mjs +0 -1
  199. package/exports/frameworks/express.js +0 -1
  200. package/exports/frameworks/express.mjs +0 -1
  201. package/exports/frameworks/fastify.js +0 -1
  202. package/exports/frameworks/fastify.mjs +0 -1
  203. package/exports/frameworks/hono.js +0 -1
  204. package/exports/frameworks/hono.mjs +0 -1
  205. package/exports/frameworks/nestjs.js +0 -1
  206. package/exports/frameworks/nestjs.mjs +0 -1
  207. package/exports/frameworks/nextjs.js +0 -1
  208. package/exports/frameworks/nextjs.mjs +0 -1
  209. package/exports/frameworks/nitro.js +0 -1
  210. package/exports/frameworks/nitro.mjs +0 -1
  211. package/exports/frameworks/nuxt.js +0 -1
  212. package/exports/frameworks/nuxt.mjs +0 -1
  213. package/exports/frameworks/react-router.js +0 -1
  214. package/exports/frameworks/react-router.mjs +0 -1
  215. package/exports/frameworks/standalone.js +0 -1
  216. package/exports/frameworks/standalone.mjs +0 -1
  217. package/exports/frameworks/sveltekit.js +0 -1
  218. package/exports/frameworks/sveltekit.mjs +0 -1
  219. package/exports/frameworks/tanstack-start.js +0 -1
  220. package/exports/frameworks/tanstack-start.mjs +0 -1
  221. package/exports/workers.js +0 -1
  222. package/exports/workers.mjs +0 -1
  223. package/types/client.d.ts +0 -34
  224. package/types/connectors/betterstack.d.ts +0 -1
  225. package/types/connectors/databuddy.d.ts +0 -1
  226. package/types/connectors/otlp.d.ts +0 -1
  227. package/types/connectors/posthog.d.ts +0 -1
  228. package/types/connectors/sentry.d.ts +0 -1
  229. package/types/database.d.ts +0 -1
  230. package/types/expo.d.ts +0 -17
  231. package/types/frameworks/astro.d.ts +0 -1
  232. package/types/frameworks/client.d.ts +0 -160
  233. package/types/frameworks/elysia.d.ts +0 -1
  234. package/types/frameworks/expo.d.ts +0 -50
  235. package/types/frameworks/express.d.ts +0 -1
  236. package/types/frameworks/fastify.d.ts +0 -1
  237. package/types/frameworks/hono.d.ts +0 -1
  238. package/types/frameworks/nestjs.d.ts +0 -1
  239. package/types/frameworks/nextjs.d.ts +0 -1
  240. package/types/frameworks/nitro.d.ts +0 -1
  241. package/types/frameworks/nuxt.d.ts +0 -1
  242. package/types/frameworks/react-router.d.ts +0 -1
  243. package/types/frameworks/standalone.d.ts +0 -1
  244. package/types/frameworks/sveltekit.d.ts +0 -1
  245. package/types/frameworks/tanstack-start.d.ts +0 -1
  246. package/types/frameworks/workers.d.ts +0 -115
  247. package/types/index.d.ts +0 -1
  248. package/types/workers.d.ts +0 -13
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/log-value.ts","../src/shared/validation.ts","../src/shared/client-log.ts","../src/shared/remote-delivery.ts","../src/shared/once.ts","../src/frameworks/client/logger.ts","../src/shared/errors.ts"],"names":["z","location","navigator","flush","logger","error"],"mappings":"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","file":"client.js","sourcesContent":["export function normalizeError(error: Error): Record<string, unknown> {\n const normalized: Record<string, unknown> = {\n name: error.name,\n message: error.message,\n };\n\n if (error.stack) {\n normalized.stack = error.stack;\n }\n\n const errorWithCause = error as Error & { cause?: unknown };\n if (errorWithCause.cause !== undefined) {\n normalized.cause = normalizeLogValue(errorWithCause.cause);\n }\n\n return normalized;\n}\n\nexport function normalizeLogValue(\n value: unknown,\n seen: WeakSet<object> = new WeakSet()\n): unknown {\n if (value instanceof Error) {\n return normalizeError(value);\n }\n\n if (typeof value === 'function') {\n return `[Function: ${value.name || 'anonymous'}]`;\n }\n\n if (typeof value === 'symbol') {\n return value.toString();\n }\n\n if (value === undefined || value === null) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeLogValue(entry, seen));\n }\n\n if (typeof value === 'object') {\n if (seen.has(value)) {\n return '[Circular]';\n }\n\n seen.add(value);\n const normalized: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n normalized[key] = normalizeLogValue(entry, seen);\n }\n\n seen.delete(value);\n return normalized;\n }\n\n return value;\n}\n\nexport function serializeLogMessage(message: unknown): string {\n if (typeof message === 'string') {\n return message;\n }\n\n if (message instanceof Error) {\n return message.message || message.name;\n }\n\n const normalized = normalizeLogValue(message);\n if (typeof normalized === 'string') {\n return normalized;\n }\n\n try {\n const serialized = JSON.stringify(normalized, null, 2);\n return serialized ?? String(normalized);\n } catch {\n return String(normalized);\n }\n}\n","import { z } from 'zod';\n\nexport const absoluteHttpUrlSchema = z.string().url().refine((value) => {\n try {\n const url = new URL(value);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}, {\n message: 'Expected an absolute http(s) URL',\n});\n\nexport const plainObjectSchema = z.custom<Record<string, unknown>>(\n (value): value is Record<string, unknown> => {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n },\n {\n message: 'Expected a plain object',\n }\n);\n\nexport const nonEmptyStringSchema = z.string().trim().min(1);\n\nexport function isAbsoluteHttpUrl(value: unknown): value is string {\n return absoluteHttpUrlSchema.safeParse(value).success;\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return plainObjectSchema.safeParse(value).success;\n}\n\nexport function hasNonEmptyString(value: unknown): value is string {\n return nonEmptyStringSchema.safeParse(value).success;\n}\n","/// <reference lib=\"dom\" />\n\nimport { z } from 'zod';\nimport {\n normalizeError,\n normalizeLogValue,\n serializeLogMessage,\n} from './log-value';\nimport {\n isPlainObject,\n nonEmptyStringSchema,\n plainObjectSchema,\n} from './validation';\nimport type {\n ClientConnectorRequest,\n ClientLogBrowserContext,\n ClientLogDeviceContext,\n ClientLogEvent,\n ClientLogLevel,\n ClientLogPageContext,\n ClientLogSessionContext,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryFailureReason,\n RemoteDeliveryRetryContext,\n RemoteDeliveryRuntime,\n RemoteDeliverySuccessContext,\n RemoteDeliveryTransport,\n} from '../types/shared/client-log';\n\nexport type {\n ClientConnectorRequest,\n ClientLogBrowserContext,\n ClientLogDeviceContext,\n ClientLogEvent,\n ClientLogLevel,\n ClientLogPageContext,\n ClientLogSessionContext,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryFailureReason,\n RemoteDeliveryRetryContext,\n RemoteDeliverySuccessContext,\n RemoteDeliveryTransport,\n} from '../types/shared/client-log';\n\nexport const DEFAULT_CLIENT_LOG_ENDPOINT = '/inngest';\nconst SESSION_STORAGE_KEY = 'blyp:session-id';\n\nconst CLIENT_LOG_LEVELS: ClientLogLevel[] = [\n 'debug',\n 'info',\n 'warning',\n 'error',\n 'critical',\n 'success',\n 'table',\n];\nconst clientConnectorRequestSchema = z.union([\n z.literal('betterstack'),\n z.literal('databuddy'),\n z.literal('posthog'),\n z.literal('sentry'),\n z.undefined(),\n z.object({\n type: z.literal('otlp'),\n name: nonEmptyStringSchema,\n }),\n]);\n\nfunction isClientLogLevel(value: unknown): value is ClientLogLevel {\n return typeof value === 'string' && CLIENT_LOG_LEVELS.includes(value as ClientLogLevel);\n}\n\nfunction isClientConnectorRequest(value: unknown): value is ClientConnectorRequest {\n return clientConnectorRequestSchema.safeParse(value).success;\n}\n\nfunction safeGet<T>(getter: () => T): T | undefined {\n try {\n return getter();\n } catch {\n return undefined;\n }\n}\n\nfunction randomSegment(): string {\n return Math.random().toString(36).slice(2, 10);\n}\n\nexport function createRandomId(): string {\n const maybeCrypto = safeGet(() => globalThis.crypto);\n const randomUUID = maybeCrypto && typeof maybeCrypto.randomUUID === 'function'\n ? maybeCrypto.randomUUID.bind(maybeCrypto)\n : undefined;\n\n if (randomUUID) {\n return randomUUID();\n }\n\n return `${Date.now().toString(36)}-${randomSegment()}`;\n}\n\nexport function normalizeClientLogLevel(level: ClientLogLevel | 'warn'): ClientLogLevel {\n return level === 'warn' ? 'warning' : level;\n}\n\nexport { normalizeError, normalizeLogValue, serializeLogMessage };\n\nexport function normalizeClientPayloadData(message: unknown, args: unknown[]): unknown {\n const normalizedArgs = args.map((entry) => normalizeLogValue(entry));\n const messageData = message instanceof Error ? normalizeError(message) : undefined;\n\n if (messageData !== undefined && normalizedArgs.length === 0) {\n return messageData;\n }\n\n const combined = messageData === undefined ? normalizedArgs : [messageData, ...normalizedArgs];\n\n if (combined.length === 0) {\n return undefined;\n }\n\n if (combined.length === 1) {\n return combined[0];\n }\n\n return combined;\n}\n\nexport function getBrowserPageContext(): ClientLogPageContext {\n const location = safeGet(() => globalThis.location);\n const document = safeGet(() => globalThis.document);\n\n return {\n url: location?.href,\n pathname: location?.pathname,\n search: location?.search,\n hash: location?.hash,\n title: document?.title,\n referrer: document?.referrer,\n };\n}\n\nexport function getBrowserContext(): ClientLogBrowserContext {\n const navigator = safeGet(() => globalThis.navigator);\n\n return {\n userAgent: navigator?.userAgent,\n language: navigator?.language,\n platform: navigator?.platform,\n };\n}\n\nexport function getClientSessionId(): string {\n const storage = safeGet(() => globalThis.sessionStorage);\n const existing = safeGet(() => storage?.getItem(SESSION_STORAGE_KEY));\n\n if (existing) {\n return existing;\n }\n\n const sessionId = createRandomId();\n safeGet(() => storage?.setItem(SESSION_STORAGE_KEY, sessionId));\n return sessionId;\n}\n\nexport function normalizeMetadata(\n metadata: Record<string, unknown> | (() => Record<string, unknown>) | undefined\n): Record<string, unknown> | undefined {\n if (metadata === undefined) {\n return undefined;\n }\n\n const resolved = typeof metadata === 'function' ? safeGet(metadata) : metadata;\n if (!isPlainObject(resolved)) {\n return undefined;\n }\n\n return normalizeLogValue(resolved) as Record<string, unknown>;\n}\n\nexport function isClientLogEvent(payload: unknown): payload is ClientLogEvent {\n if (!isPlainObject(payload)) {\n return false;\n }\n\n if (\n payload.type !== 'client_log' ||\n payload.source !== 'client' ||\n !isClientLogLevel(payload.level) ||\n typeof payload.id !== 'string' ||\n typeof payload.message !== 'string' ||\n typeof payload.clientTimestamp !== 'string'\n ) {\n return false;\n }\n\n const pageResult = plainObjectSchema.safeParse(payload.page);\n const browserResult = plainObjectSchema.safeParse(payload.browser);\n const sessionResult = plainObjectSchema.safeParse(payload.session);\n\n if (!pageResult.success || !browserResult.success || !sessionResult.success) {\n return false;\n }\n\n if (!isClientConnectorRequest(payload.connector)) {\n return false;\n }\n\n return (\n typeof sessionResult.data.pageId === 'string' &&\n typeof sessionResult.data.sessionId === 'string'\n );\n}\n\nexport function normalizeEndpointPath(path: string | undefined): string {\n if (!path) {\n return DEFAULT_CLIENT_LOG_ENDPOINT;\n }\n\n return path.startsWith('/') ? path : `/${path}`;\n}\n","import type {\n ClientLogEvent,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryRetryContext,\n RemoteDeliverySuccessContext\n} from '../types/shared/client-log';\nimport type {\n QueueItem,\n RemoteDeliveryManagerOptions\n} from '../types/shared/remote-delivery';\n\nexport type {\n DeliveryAttemptFailure,\n DeliveryAttemptResult,\n DeliveryAttemptRetry,\n DeliveryAttemptSuccess\n} from '../types/shared/remote-delivery';\n\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_RETRY_DELAY_MS = 5_000;\nconst DEFAULT_MAX_QUEUE_SIZE = 100;\n\nfunction clampInteger(value: number | undefined, fallback: number, minimum: number): number {\n if (!Number.isFinite(value)) {\n return fallback;\n }\n\n return Math.max(minimum, Math.floor(value!));\n}\n\nfunction safeCall<T>(callback: ((value: T) => void) | undefined, value: T): void {\n if (!callback) {\n return;\n }\n\n try {\n callback(value);\n } catch {}\n}\n\nfunction warn(message: string): void {\n if (typeof console === 'undefined' || typeof console.warn !== 'function') {\n return;\n }\n\n console.warn(message);\n}\n\nfunction formatWarningValue(value: string | number | undefined): string {\n return value === undefined ? 'unknown' : String(value);\n}\n\nexport function createRemoteDeliveryManager(\n options: RemoteDeliveryManagerOptions\n): { enqueue: (event: ClientLogEvent) => void } {\n const deliveryConfig = {\n maxRetries: clampInteger(options.delivery?.maxRetries, DEFAULT_MAX_RETRIES, 0),\n retryDelayMs: clampInteger(options.delivery?.retryDelayMs, DEFAULT_RETRY_DELAY_MS, 0),\n maxQueueSize: clampInteger(options.delivery?.maxQueueSize, DEFAULT_MAX_QUEUE_SIZE, 1),\n warnOnFailure: options.delivery?.warnOnFailure ?? true,\n onSuccess: options.delivery?.onSuccess,\n onRetry: options.delivery?.onRetry,\n onFailure: options.delivery?.onFailure,\n onDrop: options.delivery?.onDrop,\n } satisfies Required<\n Pick<RemoteDeliveryConfig, 'maxRetries' | 'retryDelayMs' | 'maxQueueSize' | 'warnOnFailure'>\n > & Pick<RemoteDeliveryConfig, 'onSuccess' | 'onRetry' | 'onFailure' | 'onDrop'>;\n\n const queue: QueueItem[] = [];\n let inFlight: QueueItem | undefined;\n let flushTimer: ReturnType<typeof setTimeout> | undefined;\n let isProcessing = false;\n let unsubscribeFromResume: (() => void) | undefined;\n\n const runtimeLabel = options.runtime === 'browser' ? 'client' : options.runtime;\n\n const clearFlushTimer = (): void => {\n if (!flushTimer) {\n return;\n }\n\n clearTimeout(flushTimer);\n flushTimer = undefined;\n };\n\n const hasUnsentEvents = (): boolean => queue.length > 0 || inFlight !== undefined;\n\n const refreshResumeSubscription = (flush: () => void): void => {\n if (!options.subscribeToResume) {\n return;\n }\n\n if (hasUnsentEvents()) {\n if (!unsubscribeFromResume) {\n unsubscribeFromResume = options.subscribeToResume(() => {\n const now = Date.now();\n for (const item of queue) {\n item.nextAttemptAt = now;\n }\n\n clearFlushTimer();\n flush();\n }) ?? undefined;\n }\n\n return;\n }\n\n if (unsubscribeFromResume) {\n unsubscribeFromResume();\n unsubscribeFromResume = undefined;\n }\n };\n\n const warnDrop = (ctx: RemoteDeliveryDropContext): void => {\n if (!deliveryConfig.warnOnFailure) {\n return;\n }\n\n warn(\n `[blyp/${runtimeLabel}] Dropped queued log \"${ctx.droppedEvent.message}\" ` +\n `(id: ${ctx.droppedEvent.id}) because the delivery queue reached ${ctx.maxQueueSize}. ` +\n `Keeping \"${ctx.replacementEvent.message}\" (id: ${ctx.replacementEvent.id}) instead.`\n );\n };\n\n const warnFailure = (\n ctx: RemoteDeliveryFailureContext,\n suppressWarning: boolean | undefined\n ): void => {\n if (!deliveryConfig.warnOnFailure || suppressWarning) {\n return;\n }\n\n const details = [\n `reason=${ctx.reason}`,\n `attempt=${formatWarningValue(ctx.attempt)}`,\n `status=${formatWarningValue(ctx.status)}`,\n ];\n\n if (ctx.error) {\n details.push(`error=${ctx.error}`);\n }\n\n warn(\n `[blyp/${runtimeLabel}] Failed to deliver log \"${ctx.event.message}\" ` +\n `(id: ${ctx.event.id}, ${details.join(', ')})`\n );\n };\n\n const totalUnsentEvents = (): number => queue.length + (inFlight ? 1 : 0);\n\n const scheduleFlush = (flush: () => void): void => {\n clearFlushTimer();\n\n if (queue.length === 0) {\n refreshResumeSubscription(flush);\n return;\n }\n\n const nextAttemptAt = queue.reduce((lowest, item) => {\n return Math.min(lowest, item.nextAttemptAt);\n }, Number.POSITIVE_INFINITY);\n const delay = Math.max(nextAttemptAt - Date.now(), 0);\n flushTimer = setTimeout(() => {\n flushTimer = undefined;\n flush();\n }, delay);\n refreshResumeSubscription(flush);\n };\n\n const emitDrop = (\n droppedEvent: ClientLogEvent,\n replacementEvent: ClientLogEvent\n ): void => {\n const context: RemoteDeliveryDropContext = {\n runtime: options.runtime,\n droppedEvent,\n replacementEvent,\n maxQueueSize: deliveryConfig.maxQueueSize,\n reason: 'queue_overflow',\n };\n\n safeCall(deliveryConfig.onDrop, context);\n warnDrop(context);\n };\n\n const enforceQueueCapacity = (): void => {\n while (totalUnsentEvents() > deliveryConfig.maxQueueSize && queue.length > 0) {\n const droppedItem = queue.shift();\n const replacementEvent = queue[queue.length - 1]?.event ?? inFlight?.event;\n\n if (!droppedItem || !replacementEvent) {\n break;\n }\n\n emitDrop(droppedItem.event, replacementEvent);\n }\n };\n\n const getNextReadyIndex = (): number => {\n const now = Date.now();\n\n for (let index = 0; index < queue.length; index += 1) {\n if (queue[index]!.nextAttemptAt <= now) {\n return index;\n }\n }\n\n return -1;\n };\n\n const flush = async (): Promise<void> => {\n if (isProcessing) {\n return;\n }\n\n isProcessing = true;\n\n try {\n while (true) {\n const nextIndex = getNextReadyIndex();\n if (nextIndex === -1) {\n break;\n }\n\n const item = queue.splice(nextIndex, 1)[0];\n if (!item) {\n continue;\n }\n\n inFlight = item;\n refreshResumeSubscription(() => {\n void flush();\n });\n\n item.attempt += 1;\n\n const result = await options.send(item.event);\n inFlight = undefined;\n\n if (result.outcome === 'success') {\n const context: RemoteDeliverySuccessContext = {\n runtime: options.runtime,\n event: item.event,\n attempt: item.attempt,\n status: result.status,\n transport: result.transport,\n };\n\n safeCall(deliveryConfig.onSuccess, context);\n continue;\n }\n\n if (\n result.outcome === 'retry' &&\n item.attempt <= deliveryConfig.maxRetries\n ) {\n item.nextAttemptAt = Date.now() + deliveryConfig.retryDelayMs;\n queue.push(item);\n\n const context: RemoteDeliveryRetryContext = {\n runtime: options.runtime,\n event: item.event,\n attempt: item.attempt,\n retriesRemaining: deliveryConfig.maxRetries - (item.attempt - 1),\n nextRetryAt: new Date(item.nextAttemptAt).toISOString(),\n reason: result.reason,\n status: result.status,\n error: result.error,\n };\n\n safeCall(deliveryConfig.onRetry, context);\n continue;\n }\n\n const failureContext: RemoteDeliveryFailureContext = {\n runtime: options.runtime,\n event: item.event,\n attempt: item.attempt,\n reason: result.reason,\n status: result.status,\n error: result.error,\n };\n\n safeCall(deliveryConfig.onFailure, failureContext);\n warnFailure(\n failureContext,\n result.outcome === 'failure' ? result.suppressWarning : undefined\n );\n }\n } finally {\n isProcessing = false;\n scheduleFlush(() => {\n void flush();\n });\n }\n };\n\n return {\n enqueue(event: ClientLogEvent): void {\n queue.push({\n event,\n attempt: 0,\n nextAttemptAt: Date.now(),\n });\n enforceQueueCapacity();\n scheduleFlush(() => {\n void flush();\n });\n void flush();\n },\n };\n}\n","import type { ConsoleMethod, ConsoleOnceLogger } from '../types/shared/once';\n\nexport type { ConsoleOnceLogger } from '../types/shared/once';\n\nfunction createConsoleOnceLogger(\n method: ConsoleMethod,\n warnedKeys: Set<string> = new Set<string>()\n): ConsoleOnceLogger {\n return (key, message, error) => {\n if (warnedKeys.has(key) || typeof console === 'undefined') {\n return;\n }\n\n const writer = console[method];\n if (typeof writer !== 'function') {\n return;\n }\n\n warnedKeys.add(key);\n if (error === undefined) {\n writer.call(console, message);\n return;\n }\n\n writer.call(console, message, error);\n };\n}\n\nexport function createWarnOnceLogger(warnedKeys?: Set<string>): ConsoleOnceLogger {\n return createConsoleOnceLogger('warn', warnedKeys);\n}\n\nexport function createErrorOnceLogger(warnedKeys?: Set<string>): ConsoleOnceLogger {\n return createConsoleOnceLogger('error', warnedKeys);\n}\n","/// <reference lib=\"dom\" />\n\nimport {\n type ClientLogEvent,\n DEFAULT_CLIENT_LOG_ENDPOINT,\n createRandomId,\n getBrowserContext,\n getBrowserPageContext,\n getClientSessionId,\n normalizeClientLogLevel,\n normalizeClientPayloadData,\n normalizeLogValue,\n normalizeMetadata,\n serializeLogMessage,\n} from '../../shared/client-log';\nimport {\n createRemoteDeliveryManager,\n type DeliveryAttemptResult,\n} from '../../shared/remote-delivery';\nimport { createErrorOnceLogger } from '../../shared/once';\nimport type {\n ClientLogger,\n ClientLoggerConfig,\n ClientLoggerState,\n} from '../../types/frameworks/client';\n\nconst warnedMessages = new Set<string>();\nconst errorOnce = createErrorOnceLogger(warnedMessages);\n\nfunction resolveHeaders(headers: Record<string, string> | undefined): Record<string, string> {\n return {\n 'content-type': 'application/json',\n ...(headers ?? {}),\n };\n}\n\nfunction shouldUseBeaconFallback(headers: Record<string, string> | undefined): boolean {\n return Object.keys(headers ?? {}).length === 0;\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status >= 500;\n}\n\nfunction isBrowserRuntime(): boolean {\n return typeof navigator !== 'undefined' && typeof location !== 'undefined';\n}\n\nasync function sendRemoteLog(\n config: Required<Pick<ClientLoggerConfig, 'endpoint' | 'credentials'>> & {\n headers?: Record<string, string>;\n connector?: ClientLoggerConfig['connector'];\n },\n payload: ClientLogEvent\n): Promise<DeliveryAttemptResult> {\n if (typeof navigator !== 'undefined' && navigator.onLine === false) {\n return {\n outcome: 'retry',\n reason: 'offline',\n };\n }\n\n if (typeof fetch !== 'function') {\n return {\n outcome: 'failure',\n reason: 'missing_transport',\n suppressWarning: true,\n };\n }\n\n const body = JSON.stringify(payload);\n const headers = resolveHeaders(config.headers);\n const canUseBeacon = shouldUseBeaconFallback(config.headers) &&\n typeof navigator !== 'undefined' &&\n typeof navigator.sendBeacon === 'function' &&\n typeof Blob !== 'undefined';\n\n try {\n const response = await fetch(config.endpoint, {\n method: 'POST',\n keepalive: true,\n credentials: config.credentials,\n headers,\n body,\n });\n\n if (response.ok) {\n if (config.connector === 'betterstack' && response.headers.get('x-blyp-betterstack-status') === 'missing') {\n errorOnce(\n 'betterstack-missing',\n '[blyp/client] Better Stack connector requested but not configured on the server. Continuing without Better Stack forwarding.'\n );\n }\n\n if (config.connector === 'databuddy' && response.headers.get('x-blyp-databuddy-status') === 'missing') {\n errorOnce(\n 'databuddy-missing',\n '[blyp/client] Databuddy connector requested but not configured on the server. Continuing without Databuddy forwarding.'\n );\n }\n\n if (config.connector === 'posthog' && response.headers.get('x-blyp-posthog-status') === 'missing') {\n errorOnce(\n 'posthog-missing',\n '[blyp/client] PostHog connector requested but not configured on the server. Continuing without PostHog forwarding.'\n );\n }\n\n if (config.connector === 'sentry' && response.headers.get('x-blyp-sentry-status') === 'missing') {\n errorOnce(\n 'sentry-missing',\n '[blyp/client] Sentry not setup. Continuing without Sentry forwarding.'\n );\n }\n\n if (\n config.connector &&\n typeof config.connector === 'object' &&\n config.connector.type === 'otlp' &&\n response.headers.get('x-blyp-otlp-status') === 'missing'\n ) {\n errorOnce(\n `otlp-missing:${config.connector.name}`,\n `[blyp/client] OTLP target \"${config.connector.name}\" was requested but not configured on the server. Continuing without OTLP forwarding.`\n );\n }\n\n return {\n outcome: 'success',\n transport: 'fetch',\n status: response.status,\n };\n }\n\n if (isRetryableStatus(response.status)) {\n return {\n outcome: 'retry',\n reason: 'response_status',\n status: response.status,\n };\n }\n\n return {\n outcome: 'failure',\n reason: 'response_status',\n status: response.status,\n };\n } catch (error) {\n if (canUseBeacon) {\n try {\n if (\n navigator.sendBeacon(\n config.endpoint,\n new Blob([body], { type: 'application/json' })\n )\n ) {\n return {\n outcome: 'success',\n transport: 'beacon',\n };\n }\n } catch {}\n }\n\n return {\n outcome: 'retry',\n reason: 'network_error',\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nfunction emitLocalConsole(\n level: 'warn' | 'debug' | 'info' | 'warning' | 'error' | 'critical' | 'success' | 'table',\n message: unknown,\n args: unknown[]\n): void {\n if (typeof console === 'undefined') {\n return;\n }\n\n const normalizedArgs = args.map((entry) => normalizeLogValue(entry));\n const text = serializeLogMessage(message);\n\n switch (level) {\n case 'table':\n console.log(text);\n if (normalizedArgs.length > 0 && typeof console.table === 'function') {\n console.table(normalizedArgs[0]);\n }\n return;\n case 'warning':\n case 'warn':\n console.warn(text, ...normalizedArgs);\n return;\n case 'error':\n case 'critical':\n console.error(text, ...normalizedArgs);\n return;\n case 'debug':\n console.debug(text, ...normalizedArgs);\n return;\n case 'success':\n console.log(text, ...normalizedArgs);\n return;\n case 'info':\n default:\n console.info(text, ...normalizedArgs);\n }\n}\n\nfunction buildClientLogger(config: ClientLoggerConfig, state: ClientLoggerState): ClientLogger {\n const resolvedConfig = {\n endpoint: config.endpoint ?? DEFAULT_CLIENT_LOG_ENDPOINT,\n headers: config.headers,\n credentials: config.credentials ?? 'same-origin',\n localConsole: config.localConsole ?? true,\n remoteSync: config.remoteSync ?? true,\n connector: config.connector,\n metadata: config.metadata,\n };\n\n const delivery = state.delivery ??\n (\n resolvedConfig.remoteSync &&\n isBrowserRuntime() &&\n typeof fetch === 'function'\n ? createRemoteDeliveryManager({\n runtime: 'browser',\n delivery: config.delivery,\n send: (event) => sendRemoteLog(resolvedConfig, event),\n subscribeToResume: (resume) => {\n if (typeof globalThis.addEventListener !== 'function') {\n return;\n }\n\n const listener = () => {\n resume();\n };\n\n globalThis.addEventListener('online', listener);\n\n return () => {\n if (typeof globalThis.removeEventListener === 'function') {\n globalThis.removeEventListener('online', listener);\n }\n };\n },\n })\n : undefined\n );\n\n const writeLog = (\n level: 'warn' | 'debug' | 'info' | 'warning' | 'error' | 'critical' | 'success' | 'table',\n message: unknown,\n args: unknown[]\n ): void => {\n if (resolvedConfig.localConsole) {\n emitLocalConsole(level, message, args);\n }\n\n if (!resolvedConfig.remoteSync) {\n return;\n }\n\n const normalizedLevel = normalizeClientLogLevel(level);\n const normalizedMessage = serializeLogMessage(message);\n const normalizedData = normalizeClientPayloadData(message, args);\n const metadata = normalizeMetadata(resolvedConfig.metadata);\n const payload: ClientLogEvent = {\n type: 'client_log',\n source: 'client',\n id: createRandomId(),\n level: normalizedLevel,\n message: normalizedMessage,\n connector: resolvedConfig.connector,\n data: normalizedData,\n bindings: Object.keys(state.bindings).length > 0 ? normalizeLogValue(state.bindings) as Record<string, unknown> : undefined,\n clientTimestamp: new Date().toISOString(),\n page: getBrowserPageContext(),\n browser: getBrowserContext(),\n session: {\n pageId: state.pageId,\n sessionId: state.sessionId,\n },\n metadata,\n };\n\n delivery?.enqueue(payload);\n };\n\n return {\n debug: (message: unknown, ...args: unknown[]) => {\n writeLog('debug', message, args);\n },\n info: (message: unknown, ...args: unknown[]) => {\n writeLog('info', message, args);\n },\n error: (message: unknown, ...args: unknown[]) => {\n writeLog('error', message, args);\n },\n warn: (message: unknown, ...args: unknown[]) => {\n writeLog('warn', message, args);\n },\n warning: (message: unknown, ...args: unknown[]) => {\n writeLog('warning', message, args);\n },\n success: (message: unknown, ...args: unknown[]) => {\n writeLog('success', message, args);\n },\n critical: (message: unknown, ...args: unknown[]) => {\n writeLog('critical', message, args);\n },\n table: (message: string, data?: unknown) => {\n writeLog('table', message, data === undefined ? [] : [data]);\n },\n child: (bindings: Record<string, unknown>) => {\n return buildClientLogger(config, {\n ...state,\n bindings: {\n ...state.bindings,\n ...bindings,\n },\n delivery,\n });\n },\n };\n}\n\nexport function createClientLogger(config: ClientLoggerConfig = {}): ClientLogger {\n return buildClientLogger(config, {\n pageId: createRandomId(),\n sessionId: getClientSessionId(),\n bindings: {},\n });\n}\n\nexport const logger = createClientLogger();\n\nexport function resetClientWarningsForTests(): void {\n warnedMessages.clear();\n}\n","import type {\n BlypErrorCode,\n BlypErrorCodeCreateOptions,\n BlypErrorCodeDefinition,\n BlypErrorLike,\n CreateCodeFunction,\n ErrorConstructionInput,\n ErrorLogLevel,\n ErrorLoggerLike,\n HttpCodeRegistry,\n ParseErrorOptions,\n ParseableErrorPayload as BaseParseableErrorPayload,\n ResolvedErrorConfig,\n} from '../types/shared/errors';\n\nexport type {\n BlypErrorCode,\n BlypErrorCodeDefinition,\n BlypErrorLike,\n ErrorConstructionInput,\n ErrorLogLevel,\n ErrorLoggerLike,\n ParseErrorOptions,\n ResolvedErrorConfig,\n} from '../types/shared/errors';\n\nexport type ParseableErrorPayload = BaseParseableErrorPayload | BlypError;\n\nexport const HTTP_STATUS_DEFINITIONS = {\n CONTINUE: { status: 100, message: 'Continue' },\n SWITCHING_PROTOCOLS: { status: 101, message: 'Switching Protocols' },\n PROCESSING: { status: 102, message: 'Processing' },\n EARLY_HINTS: { status: 103, message: 'Early Hints' },\n OK: { status: 200, message: 'OK' },\n CREATED: { status: 201, message: 'Created' },\n ACCEPTED: { status: 202, message: 'Accepted' },\n NON_AUTHORITATIVE_INFORMATION: { status: 203, message: 'Non-Authoritative Information' },\n NO_CONTENT: { status: 204, message: 'No Content' },\n RESET_CONTENT: { status: 205, message: 'Reset Content' },\n PARTIAL_CONTENT: { status: 206, message: 'Partial Content' },\n MULTI_STATUS: { status: 207, message: 'Multi-Status' },\n ALREADY_REPORTED: { status: 208, message: 'Already Reported' },\n IM_USED: { status: 226, message: 'IM Used' },\n MULTIPLE_CHOICES: { status: 300, message: 'Multiple Choices' },\n MOVED_PERMANENTLY: { status: 301, message: 'Moved Permanently' },\n FOUND: { status: 302, message: 'Found' },\n SEE_OTHER: { status: 303, message: 'See Other' },\n NOT_MODIFIED: { status: 304, message: 'Not Modified' },\n USE_PROXY: { status: 305, message: 'Use Proxy' },\n TEMPORARY_REDIRECT: { status: 307, message: 'Temporary Redirect' },\n PERMANENT_REDIRECT: { status: 308, message: 'Permanent Redirect' },\n BAD_REQUEST: { status: 400, message: 'Bad Request' },\n UNAUTHORIZED: { status: 401, message: 'Unauthorized' },\n PAYMENT_REQUIRED: { status: 402, message: 'Payment Required' },\n FORBIDDEN: { status: 403, message: 'Forbidden' },\n NOT_FOUND: { status: 404, message: 'Not Found' },\n METHOD_NOT_ALLOWED: { status: 405, message: 'Method Not Allowed' },\n NOT_ACCEPTABLE: { status: 406, message: 'Not Acceptable' },\n PROXY_AUTHENTICATION_REQUIRED: { status: 407, message: 'Proxy Authentication Required' },\n REQUEST_TIMEOUT: { status: 408, message: 'Request Timeout' },\n CONFLICT: { status: 409, message: 'Conflict' },\n GONE: { status: 410, message: 'Gone' },\n LENGTH_REQUIRED: { status: 411, message: 'Length Required' },\n PRECONDITION_FAILED: { status: 412, message: 'Precondition Failed' },\n PAYLOAD_TOO_LARGE: { status: 413, message: 'Payload Too Large' },\n URI_TOO_LONG: { status: 414, message: 'URI Too Long' },\n UNSUPPORTED_MEDIA_TYPE: { status: 415, message: 'Unsupported Media Type' },\n RANGE_NOT_SATISFIABLE: { status: 416, message: 'Range Not Satisfiable' },\n EXPECTATION_FAILED: { status: 417, message: 'Expectation Failed' },\n IM_A_TEAPOT: { status: 418, message: \"I'm a Teapot\" },\n MISDIRECTED_REQUEST: { status: 421, message: 'Misdirected Request' },\n UNPROCESSABLE_ENTITY: { status: 422, message: 'Unprocessable Entity' },\n LOCKED: { status: 423, message: 'Locked' },\n FAILED_DEPENDENCY: { status: 424, message: 'Failed Dependency' },\n TOO_EARLY: { status: 425, message: 'Too Early' },\n UPGRADE_REQUIRED: { status: 426, message: 'Upgrade Required' },\n PRECONDITION_REQUIRED: { status: 428, message: 'Precondition Required' },\n TOO_MANY_REQUESTS: { status: 429, message: 'Too Many Requests' },\n REQUEST_HEADER_FIELDS_TOO_LARGE: { status: 431, message: 'Request Header Fields Too Large' },\n UNAVAILABLE_FOR_LEGAL_REASONS: { status: 451, message: 'Unavailable For Legal Reasons' },\n INTERNAL_SERVER_ERROR: { status: 500, message: 'Internal Server Error' },\n NOT_IMPLEMENTED: { status: 501, message: 'Not Implemented' },\n BAD_GATEWAY: { status: 502, message: 'Bad Gateway' },\n SERVICE_UNAVAILABLE: { status: 503, message: 'Service Unavailable' },\n GATEWAY_TIMEOUT: { status: 504, message: 'Gateway Timeout' },\n HTTP_VERSION_NOT_SUPPORTED: { status: 505, message: 'HTTP Version Not Supported' },\n VARIANT_ALSO_NEGOTIATES: { status: 506, message: 'Variant Also Negotiates' },\n INSUFFICIENT_STORAGE: { status: 507, message: 'Insufficient Storage' },\n LOOP_DETECTED: { status: 508, message: 'Loop Detected' },\n BANDWIDTH_LIMIT_EXCEEDED: { status: 509, message: 'Bandwidth Limit Exceeded' },\n NOT_EXTENDED: { status: 510, message: 'Not Extended' },\n NETWORK_AUTHENTICATION_REQUIRED: { status: 511, message: 'Network Authentication Required' },\n} as const;\n\nimport { isPlainObject } from './validation';\n\nconst ERROR_KEYS = [\n 'status',\n 'statusCode',\n 'code',\n 'message',\n 'stack',\n 'why',\n 'fix',\n 'link',\n 'details',\n 'cause',\n 'title',\n 'detail',\n 'logLevel',\n 'error',\n 'data',\n] as const;\n\nfunction isErrorLogLevel(value: unknown): value is ErrorLogLevel {\n return (\n value === 'debug' ||\n value === 'info' ||\n value === 'warning' ||\n value === 'error' ||\n value === 'critical'\n );\n}\n\nfunction parseStatus(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /^\\d+$/.test(value.trim())) {\n return Number.parseInt(value, 10);\n }\n\n return undefined;\n}\n\nfunction normalizeDetails(value: unknown): Record<string, unknown> | undefined {\n return isPlainObject(value) ? value : undefined;\n}\n\nfunction hasMeaningfulErrorData(candidate: BlypErrorLike): boolean {\n return (\n candidate.status !== undefined ||\n candidate.statusCode !== undefined ||\n candidate.code !== undefined ||\n candidate.message !== undefined ||\n candidate.stack !== undefined ||\n candidate.why !== undefined ||\n candidate.fix !== undefined ||\n candidate.link !== undefined ||\n candidate.details !== undefined ||\n candidate.cause !== undefined ||\n candidate.logLevel !== undefined\n );\n}\n\nfunction normalizeRecordCandidate(record: Record<string, unknown>): BlypErrorLike {\n const title = typeof record.title === 'string' ? record.title : undefined;\n const detail = typeof record.detail === 'string' ? record.detail : undefined;\n\n return {\n status: parseStatus(record.status),\n statusCode: parseStatus(record.statusCode),\n code:\n typeof record.code === 'string' || typeof record.code === 'number'\n ? record.code\n : undefined,\n message:\n typeof record.message === 'string'\n ? record.message\n : title ?? detail,\n stack: typeof record.stack === 'string' ? record.stack : undefined,\n why: typeof record.why === 'string' ? record.why : undefined,\n fix: typeof record.fix === 'string' ? record.fix : undefined,\n link: typeof record.link === 'string' ? record.link : undefined,\n details: normalizeDetails(record.details),\n cause: record.cause,\n logLevel: isErrorLogLevel(record.logLevel) ? record.logLevel : undefined,\n };\n}\n\nfunction mergeCandidates(\n container: Record<string, unknown>,\n nested: BlypErrorLike | string | undefined\n): BlypErrorLike | string | undefined {\n const own = normalizeRecordCandidate(container);\n\n if (nested === undefined) {\n return hasMeaningfulErrorData(own) ? own : undefined;\n }\n\n if (typeof nested === 'string') {\n if (hasMeaningfulErrorData(own)) {\n return {\n ...own,\n message: own.message ?? nested,\n };\n }\n\n return nested;\n }\n\n return {\n status: own.status ?? nested.status,\n statusCode: own.statusCode ?? nested.statusCode,\n code: own.code ?? nested.code,\n message: own.message ?? nested.message,\n stack: own.stack ?? nested.stack,\n why: own.why ?? nested.why,\n fix: own.fix ?? nested.fix,\n link: own.link ?? nested.link,\n details: own.details ?? nested.details,\n cause: own.cause ?? nested.cause,\n logLevel: own.logLevel ?? nested.logLevel,\n };\n}\n\nfunction hasErrorShape(record: Record<string, unknown>): boolean {\n return ERROR_KEYS.some((key) => record[key] !== undefined);\n}\n\nfunction isResponseLike(input: unknown): input is Response {\n if (typeof Response !== 'undefined' && input instanceof Response) {\n return true;\n }\n\n return isPlainObject(input) &&\n typeof input.status === 'number' &&\n typeof input.statusText === 'string' &&\n typeof input.clone === 'function' &&\n typeof input.text === 'function';\n}\n\nexport class BlypError extends Error implements BlypErrorLike {\n override readonly name = 'BlypError';\n readonly status: number;\n readonly statusCode: number;\n readonly code?: string | number;\n readonly why?: string;\n readonly fix?: string;\n readonly link?: string;\n readonly details?: Record<string, unknown>;\n override readonly cause?: unknown;\n readonly logLevel: ErrorLogLevel;\n\n constructor(config: ResolvedErrorConfig) {\n super(config.message);\n Object.setPrototypeOf(this, new.target.prototype);\n\n this.status = config.status;\n this.statusCode = config.statusCode;\n this.code = config.code;\n this.why = config.why;\n this.fix = config.fix;\n this.link = config.link;\n this.details = config.details;\n this.cause = config.cause;\n this.logLevel = config.logLevel;\n\n if (config.stack) {\n this.stack = config.stack;\n } else if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, BlypError);\n }\n }\n\n toJSON(): {\n name: 'BlypError';\n message: string;\n status: number;\n statusCode: number;\n code?: string | number;\n why?: string;\n fix?: string;\n link?: string;\n details?: Record<string, unknown>;\n } {\n return {\n name: 'BlypError',\n message: this.message,\n status: this.status,\n statusCode: this.statusCode,\n ...(this.code !== undefined ? { code: this.code } : {}),\n ...(this.why !== undefined ? { why: this.why } : {}),\n ...(this.fix !== undefined ? { fix: this.fix } : {}),\n ...(this.link !== undefined ? { link: this.link } : {}),\n ...(this.details !== undefined ? { details: this.details } : {}),\n };\n }\n}\n\nexport function resolveErrorLogLevel(\n status: number,\n explicit?: ErrorLogLevel\n): ErrorLogLevel {\n if (explicit) {\n return explicit;\n }\n\n if (status >= 500) {\n return 'critical';\n }\n\n if (status >= 400) {\n return 'error';\n }\n\n return 'warning';\n}\n\nexport function normalizeCauseForLog(cause: unknown): unknown {\n if (cause instanceof Error) {\n return {\n name: cause.name,\n message: cause.message,\n ...(cause.stack ? { stack: cause.stack } : {}),\n };\n }\n\n return cause;\n}\n\nexport function emitErrorLog(\n logger: ErrorLoggerLike,\n error: BlypError,\n levelOverride?: ErrorLogLevel\n): void {\n const level = resolveErrorLogLevel(error.status, levelOverride ?? error.logLevel);\n const logMethod = (() => {\n switch (level) {\n case 'debug':\n return logger.debug;\n case 'info':\n return logger.info;\n case 'warning':\n return logger.warning;\n case 'critical':\n return logger.critical;\n case 'error':\n default:\n return logger.error;\n }\n })();\n\n logMethod(error.message, {\n type: 'application_error',\n status: error.status,\n statusCode: error.statusCode,\n code: error.code,\n why: error.why,\n fix: error.fix,\n link: error.link,\n details: error.details,\n cause: normalizeCauseForLog(error.cause),\n });\n}\n\nexport function resolveErrorConfig(\n input: BlypErrorLike & { status?: number; logLevel?: ErrorLogLevel },\n defaults: Partial<ResolvedErrorConfig> = {}\n): ResolvedErrorConfig {\n const candidateStatus = input.status ?? input.statusCode;\n const status = candidateStatus ?? defaults.status ?? defaults.statusCode ?? 500;\n const preset = getHttpCode(status);\n const message =\n input.message ??\n defaults.message ??\n preset?.message ??\n `HTTP ${status}`;\n\n return {\n status,\n statusCode: status,\n message,\n code: input.code ?? defaults.code ?? preset?.code,\n why: input.why ?? defaults.why ?? preset?.why,\n fix: input.fix ?? defaults.fix ?? preset?.fix,\n link: input.link ?? defaults.link ?? preset?.link,\n details: input.details ?? defaults.details ?? preset?.details,\n cause: input.cause ?? defaults.cause,\n stack: input.stack ?? defaults.stack,\n logLevel: resolveErrorLogLevel(\n status,\n input.logLevel ?? defaults.logLevel ?? preset?.logLevel\n ),\n };\n}\n\nexport function createBlypError(\n input: ErrorConstructionInput,\n defaults: Partial<ResolvedErrorConfig> = {}\n): BlypError {\n const error = new BlypError(resolveErrorConfig(input, defaults));\n\n if (input.skipLogging !== true && input.logger) {\n emitErrorLog(input.logger, error, input.logLevel);\n }\n\n return error;\n}\n\nfunction createErrorCode(\n definition: BlypErrorCodeDefinition,\n createErrorFromCode?: CreateCodeFunction\n): BlypErrorCode {\n const errorCode = {\n ...definition,\n statusCode: definition.status,\n create(overrides: BlypErrorCodeCreateOptions = {}): BlypError {\n if (createErrorFromCode) {\n return createErrorFromCode(definition, overrides) as BlypError;\n }\n\n return createBlypError({\n status: definition.status,\n message: definition.message,\n code: overrides.code ?? definition.code,\n why: overrides.why ?? definition.why,\n fix: overrides.fix ?? definition.fix,\n link: overrides.link ?? definition.link,\n details: overrides.details ?? definition.details,\n cause: overrides.cause,\n stack: overrides.stack,\n logLevel: overrides.logLevel ?? definition.logLevel,\n logger: overrides.logger,\n skipLogging: overrides.skipLogging,\n });\n },\n extend(extension: {\n code: string;\n message?: string;\n why?: string;\n fix?: string;\n link?: string;\n details?: Record<string, unknown>;\n logLevel?: ErrorLogLevel;\n }): BlypErrorCode {\n return createErrorCode(\n {\n key: extension.code,\n status: definition.status,\n message: extension.message ?? definition.message,\n code: extension.code,\n why: extension.why ?? definition.why,\n fix: extension.fix ?? definition.fix,\n link: extension.link ?? definition.link,\n details: extension.details ?? definition.details,\n logLevel: extension.logLevel ?? definition.logLevel,\n },\n createErrorFromCode\n );\n },\n } satisfies BlypErrorCode;\n\n return Object.freeze(errorCode);\n}\n\nexport function buildHttpCodeRegistry(\n createErrorFromCode?: CreateCodeFunction\n): HttpCodeRegistry<keyof typeof HTTP_STATUS_DEFINITIONS> {\n const entries = Object.entries(HTTP_STATUS_DEFINITIONS).map(([key, value]) => {\n return [key, createErrorCode({ key, ...value }, createErrorFromCode)] as const;\n });\n\n return Object.freeze(\n Object.fromEntries(entries) as HttpCodeRegistry<keyof typeof HTTP_STATUS_DEFINITIONS>\n );\n}\n\nexport const HTTP_CODES = buildHttpCodeRegistry();\n\nconst httpCodeByStatus = new Map<number, BlypErrorCode>(\n Object.values(HTTP_CODES).map((value) => [value.status, value])\n);\n\nexport function getHttpCode(status: number): BlypErrorCode | undefined {\n return httpCodeByStatus.get(status);\n}\n\nexport function extractErrorCandidate(payload: unknown): BlypErrorLike | string | undefined {\n if (typeof payload === 'string') {\n return payload;\n }\n\n if (!isPlainObject(payload)) {\n return undefined;\n }\n\n if (payload.error !== undefined) {\n const nested = payload.error;\n if (typeof nested === 'string') {\n return mergeCandidates(payload, nested);\n }\n\n if (isPlainObject(nested)) {\n return mergeCandidates(payload, extractErrorCandidate(nested));\n }\n }\n\n if (isPlainObject(payload.data)) {\n const nested = payload.data;\n if (nested.error !== undefined || hasErrorShape(nested)) {\n return mergeCandidates(payload, extractErrorCandidate(nested));\n }\n }\n\n if (hasErrorShape(payload)) {\n return normalizeRecordCandidate(payload);\n }\n\n return undefined;\n}\n\nfunction coercePayloadToError(\n payload: ParseableErrorPayload,\n options: ParseErrorOptions = {},\n responseContext: { status?: number; statusText?: string } = {}\n): BlypError {\n if (payload instanceof BlypError) {\n return payload;\n }\n\n const candidate = (() => {\n if (payload instanceof Error) {\n const errorWithMetadata = payload as Error & BlypErrorLike;\n return {\n status: errorWithMetadata.status,\n statusCode: errorWithMetadata.statusCode,\n code: errorWithMetadata.code,\n message: payload.message,\n stack: payload.stack,\n why: errorWithMetadata.why,\n fix: errorWithMetadata.fix,\n link: errorWithMetadata.link,\n details: errorWithMetadata.details,\n cause: errorWithMetadata.cause,\n logLevel: errorWithMetadata.logLevel,\n } satisfies BlypErrorLike;\n }\n\n return extractErrorCandidate(payload);\n })();\n\n const responseStatus = responseContext.status && responseContext.status > 0\n ? responseContext.status\n : undefined;\n const candidateStatus = typeof candidate === 'string'\n ? undefined\n : candidate?.status ?? candidate?.statusCode;\n const status = responseStatus ?? candidateStatus ?? options.fallbackStatus ?? 500;\n const textBody = typeof candidate === 'string'\n ? candidate.trim() || undefined\n : undefined;\n const statusText = responseContext.statusText?.trim() || undefined;\n\n return createBlypError(\n typeof candidate === 'string'\n ? { message: textBody, ...(responseStatus !== undefined ? { status: responseStatus } : {}) }\n : {\n ...(candidate ?? {}),\n ...(responseStatus !== undefined\n ? {\n status: responseStatus,\n statusCode: responseStatus,\n }\n : {}),\n },\n {\n status,\n message:\n (typeof candidate === 'string' ? textBody : candidate?.message) ??\n statusText ??\n getHttpCode(status)?.message ??\n `HTTP ${status}`,\n }\n );\n}\n\nexport async function readResponseErrorPayload(response: Response): Promise<unknown> {\n const contentType = response.headers.get('content-type')?.toLowerCase();\n const isJsonResponse = contentType?.includes('application/json') || contentType?.includes('+json');\n\n if (isJsonResponse) {\n try {\n return await response.clone().json();\n } catch {\n try {\n return await response.clone().text();\n } catch {\n return undefined;\n }\n }\n }\n\n try {\n return await response.clone().text();\n } catch {\n return undefined;\n }\n}\n\nexport function parseError(\n input: Response,\n options?: ParseErrorOptions\n): Promise<BlypError>;\nexport function parseError(\n input: ParseableErrorPayload,\n options?: ParseErrorOptions\n): BlypError;\nexport function parseError(\n input: ParseableErrorPayload | Response,\n options: ParseErrorOptions = {}\n): BlypError | Promise<BlypError> {\n if (isResponseLike(input)) {\n return (async () => {\n const payload = await readResponseErrorPayload(input).catch(() => undefined);\n const error = coercePayloadToError(payload as ParseableErrorPayload, options, {\n status: input.status,\n statusText: input.statusText,\n });\n\n if (options.logger) {\n emitErrorLog(options.logger, error, options.logLevel);\n }\n\n return error;\n })();\n }\n\n const error = coercePayloadToError(input, options);\n\n if (options.logger) {\n emitErrorLog(options.logger, error, options.logLevel);\n }\n\n return error;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/log-value.ts","../src/shared/validation.ts","../src/shared/client-log.ts","../src/shared/remote-delivery.ts","../src/shared/once.ts","../src/frameworks/client/logger.ts","../src/shared/errors.ts"],"names":["z","location","navigator","flush","logger","error"],"mappings":"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","file":"client.mjs","sourcesContent":["export function normalizeError(error: Error): Record<string, unknown> {\n const normalized: Record<string, unknown> = {\n name: error.name,\n message: error.message,\n };\n\n if (error.stack) {\n normalized.stack = error.stack;\n }\n\n const errorWithCause = error as Error & { cause?: unknown };\n if (errorWithCause.cause !== undefined) {\n normalized.cause = normalizeLogValue(errorWithCause.cause);\n }\n\n return normalized;\n}\n\nexport function normalizeLogValue(\n value: unknown,\n seen: WeakSet<object> = new WeakSet()\n): unknown {\n if (value instanceof Error) {\n return normalizeError(value);\n }\n\n if (typeof value === 'function') {\n return `[Function: ${value.name || 'anonymous'}]`;\n }\n\n if (typeof value === 'symbol') {\n return value.toString();\n }\n\n if (value === undefined || value === null) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeLogValue(entry, seen));\n }\n\n if (typeof value === 'object') {\n if (seen.has(value)) {\n return '[Circular]';\n }\n\n seen.add(value);\n const normalized: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n normalized[key] = normalizeLogValue(entry, seen);\n }\n\n seen.delete(value);\n return normalized;\n }\n\n return value;\n}\n\nexport function serializeLogMessage(message: unknown): string {\n if (typeof message === 'string') {\n return message;\n }\n\n if (message instanceof Error) {\n return message.message || message.name;\n }\n\n const normalized = normalizeLogValue(message);\n if (typeof normalized === 'string') {\n return normalized;\n }\n\n try {\n const serialized = JSON.stringify(normalized, null, 2);\n return serialized ?? String(normalized);\n } catch {\n return String(normalized);\n }\n}\n","import { z } from 'zod';\n\nexport const absoluteHttpUrlSchema = z.string().url().refine((value) => {\n try {\n const url = new URL(value);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}, {\n message: 'Expected an absolute http(s) URL',\n});\n\nexport const plainObjectSchema = z.custom<Record<string, unknown>>(\n (value): value is Record<string, unknown> => {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n },\n {\n message: 'Expected a plain object',\n }\n);\n\nexport const nonEmptyStringSchema = z.string().trim().min(1);\n\nexport function isAbsoluteHttpUrl(value: unknown): value is string {\n return absoluteHttpUrlSchema.safeParse(value).success;\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return plainObjectSchema.safeParse(value).success;\n}\n\nexport function hasNonEmptyString(value: unknown): value is string {\n return nonEmptyStringSchema.safeParse(value).success;\n}\n","/// <reference lib=\"dom\" />\n\nimport { z } from 'zod';\nimport {\n normalizeError,\n normalizeLogValue,\n serializeLogMessage,\n} from './log-value';\nimport {\n isPlainObject,\n nonEmptyStringSchema,\n plainObjectSchema,\n} from './validation';\nimport type {\n ClientConnectorRequest,\n ClientLogBrowserContext,\n ClientLogDeviceContext,\n ClientLogEvent,\n ClientLogLevel,\n ClientLogPageContext,\n ClientLogSessionContext,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryFailureReason,\n RemoteDeliveryRetryContext,\n RemoteDeliveryRuntime,\n RemoteDeliverySuccessContext,\n RemoteDeliveryTransport,\n} from '../types/shared/client-log';\n\nexport type {\n ClientConnectorRequest,\n ClientLogBrowserContext,\n ClientLogDeviceContext,\n ClientLogEvent,\n ClientLogLevel,\n ClientLogPageContext,\n ClientLogSessionContext,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryFailureReason,\n RemoteDeliveryRetryContext,\n RemoteDeliverySuccessContext,\n RemoteDeliveryTransport,\n} from '../types/shared/client-log';\n\nexport const DEFAULT_CLIENT_LOG_ENDPOINT = '/inngest';\nconst SESSION_STORAGE_KEY = 'blyp:session-id';\n\nconst CLIENT_LOG_LEVELS: ClientLogLevel[] = [\n 'debug',\n 'info',\n 'warning',\n 'error',\n 'critical',\n 'success',\n 'table',\n];\nconst clientConnectorRequestSchema = z.union([\n z.literal('betterstack'),\n z.literal('databuddy'),\n z.literal('posthog'),\n z.literal('sentry'),\n z.undefined(),\n z.object({\n type: z.literal('otlp'),\n name: nonEmptyStringSchema,\n }),\n]);\n\nfunction isClientLogLevel(value: unknown): value is ClientLogLevel {\n return typeof value === 'string' && CLIENT_LOG_LEVELS.includes(value as ClientLogLevel);\n}\n\nfunction isClientConnectorRequest(value: unknown): value is ClientConnectorRequest {\n return clientConnectorRequestSchema.safeParse(value).success;\n}\n\nfunction safeGet<T>(getter: () => T): T | undefined {\n try {\n return getter();\n } catch {\n return undefined;\n }\n}\n\nfunction randomSegment(): string {\n return Math.random().toString(36).slice(2, 10);\n}\n\nexport function createRandomId(): string {\n const maybeCrypto = safeGet(() => globalThis.crypto);\n const randomUUID = maybeCrypto && typeof maybeCrypto.randomUUID === 'function'\n ? maybeCrypto.randomUUID.bind(maybeCrypto)\n : undefined;\n\n if (randomUUID) {\n return randomUUID();\n }\n\n return `${Date.now().toString(36)}-${randomSegment()}`;\n}\n\nexport function normalizeClientLogLevel(level: ClientLogLevel | 'warn'): ClientLogLevel {\n return level === 'warn' ? 'warning' : level;\n}\n\nexport { normalizeError, normalizeLogValue, serializeLogMessage };\n\nexport function normalizeClientPayloadData(message: unknown, args: unknown[]): unknown {\n const normalizedArgs = args.map((entry) => normalizeLogValue(entry));\n const messageData = message instanceof Error ? normalizeError(message) : undefined;\n\n if (messageData !== undefined && normalizedArgs.length === 0) {\n return messageData;\n }\n\n const combined = messageData === undefined ? normalizedArgs : [messageData, ...normalizedArgs];\n\n if (combined.length === 0) {\n return undefined;\n }\n\n if (combined.length === 1) {\n return combined[0];\n }\n\n return combined;\n}\n\nexport function getBrowserPageContext(): ClientLogPageContext {\n const location = safeGet(() => globalThis.location);\n const document = safeGet(() => globalThis.document);\n\n return {\n url: location?.href,\n pathname: location?.pathname,\n search: location?.search,\n hash: location?.hash,\n title: document?.title,\n referrer: document?.referrer,\n };\n}\n\nexport function getBrowserContext(): ClientLogBrowserContext {\n const navigator = safeGet(() => globalThis.navigator);\n\n return {\n userAgent: navigator?.userAgent,\n language: navigator?.language,\n platform: navigator?.platform,\n };\n}\n\nexport function getClientSessionId(): string {\n const storage = safeGet(() => globalThis.sessionStorage);\n const existing = safeGet(() => storage?.getItem(SESSION_STORAGE_KEY));\n\n if (existing) {\n return existing;\n }\n\n const sessionId = createRandomId();\n safeGet(() => storage?.setItem(SESSION_STORAGE_KEY, sessionId));\n return sessionId;\n}\n\nexport function normalizeMetadata(\n metadata: Record<string, unknown> | (() => Record<string, unknown>) | undefined\n): Record<string, unknown> | undefined {\n if (metadata === undefined) {\n return undefined;\n }\n\n const resolved = typeof metadata === 'function' ? safeGet(metadata) : metadata;\n if (!isPlainObject(resolved)) {\n return undefined;\n }\n\n return normalizeLogValue(resolved) as Record<string, unknown>;\n}\n\nexport function isClientLogEvent(payload: unknown): payload is ClientLogEvent {\n if (!isPlainObject(payload)) {\n return false;\n }\n\n if (\n payload.type !== 'client_log' ||\n payload.source !== 'client' ||\n !isClientLogLevel(payload.level) ||\n typeof payload.id !== 'string' ||\n typeof payload.message !== 'string' ||\n typeof payload.clientTimestamp !== 'string'\n ) {\n return false;\n }\n\n const pageResult = plainObjectSchema.safeParse(payload.page);\n const browserResult = plainObjectSchema.safeParse(payload.browser);\n const sessionResult = plainObjectSchema.safeParse(payload.session);\n\n if (!pageResult.success || !browserResult.success || !sessionResult.success) {\n return false;\n }\n\n if (!isClientConnectorRequest(payload.connector)) {\n return false;\n }\n\n return (\n typeof sessionResult.data.pageId === 'string' &&\n typeof sessionResult.data.sessionId === 'string'\n );\n}\n\nexport function normalizeEndpointPath(path: string | undefined): string {\n if (!path) {\n return DEFAULT_CLIENT_LOG_ENDPOINT;\n }\n\n return path.startsWith('/') ? path : `/${path}`;\n}\n","import type {\n ClientLogEvent,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryRetryContext,\n RemoteDeliverySuccessContext\n} from '../types/shared/client-log';\nimport type {\n QueueItem,\n RemoteDeliveryManagerOptions\n} from '../types/shared/remote-delivery';\n\nexport type {\n DeliveryAttemptFailure,\n DeliveryAttemptResult,\n DeliveryAttemptRetry,\n DeliveryAttemptSuccess\n} from '../types/shared/remote-delivery';\n\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_RETRY_DELAY_MS = 5_000;\nconst DEFAULT_MAX_QUEUE_SIZE = 100;\n\nfunction clampInteger(value: number | undefined, fallback: number, minimum: number): number {\n if (!Number.isFinite(value)) {\n return fallback;\n }\n\n return Math.max(minimum, Math.floor(value!));\n}\n\nfunction safeCall<T>(callback: ((value: T) => void) | undefined, value: T): void {\n if (!callback) {\n return;\n }\n\n try {\n callback(value);\n } catch {}\n}\n\nfunction warn(message: string): void {\n if (typeof console === 'undefined' || typeof console.warn !== 'function') {\n return;\n }\n\n console.warn(message);\n}\n\nfunction formatWarningValue(value: string | number | undefined): string {\n return value === undefined ? 'unknown' : String(value);\n}\n\nexport function createRemoteDeliveryManager(\n options: RemoteDeliveryManagerOptions\n): { enqueue: (event: ClientLogEvent) => void } {\n const deliveryConfig = {\n maxRetries: clampInteger(options.delivery?.maxRetries, DEFAULT_MAX_RETRIES, 0),\n retryDelayMs: clampInteger(options.delivery?.retryDelayMs, DEFAULT_RETRY_DELAY_MS, 0),\n maxQueueSize: clampInteger(options.delivery?.maxQueueSize, DEFAULT_MAX_QUEUE_SIZE, 1),\n warnOnFailure: options.delivery?.warnOnFailure ?? true,\n onSuccess: options.delivery?.onSuccess,\n onRetry: options.delivery?.onRetry,\n onFailure: options.delivery?.onFailure,\n onDrop: options.delivery?.onDrop,\n } satisfies Required<\n Pick<RemoteDeliveryConfig, 'maxRetries' | 'retryDelayMs' | 'maxQueueSize' | 'warnOnFailure'>\n > & Pick<RemoteDeliveryConfig, 'onSuccess' | 'onRetry' | 'onFailure' | 'onDrop'>;\n\n const queue: QueueItem[] = [];\n let inFlight: QueueItem | undefined;\n let flushTimer: ReturnType<typeof setTimeout> | undefined;\n let isProcessing = false;\n let unsubscribeFromResume: (() => void) | undefined;\n\n const runtimeLabel = options.runtime === 'browser' ? 'client' : options.runtime;\n\n const clearFlushTimer = (): void => {\n if (!flushTimer) {\n return;\n }\n\n clearTimeout(flushTimer);\n flushTimer = undefined;\n };\n\n const hasUnsentEvents = (): boolean => queue.length > 0 || inFlight !== undefined;\n\n const refreshResumeSubscription = (flush: () => void): void => {\n if (!options.subscribeToResume) {\n return;\n }\n\n if (hasUnsentEvents()) {\n if (!unsubscribeFromResume) {\n unsubscribeFromResume = options.subscribeToResume(() => {\n const now = Date.now();\n for (const item of queue) {\n item.nextAttemptAt = now;\n }\n\n clearFlushTimer();\n flush();\n }) ?? undefined;\n }\n\n return;\n }\n\n if (unsubscribeFromResume) {\n unsubscribeFromResume();\n unsubscribeFromResume = undefined;\n }\n };\n\n const warnDrop = (ctx: RemoteDeliveryDropContext): void => {\n if (!deliveryConfig.warnOnFailure) {\n return;\n }\n\n warn(\n `[blyp/${runtimeLabel}] Dropped queued log \"${ctx.droppedEvent.message}\" ` +\n `(id: ${ctx.droppedEvent.id}) because the delivery queue reached ${ctx.maxQueueSize}. ` +\n `Keeping \"${ctx.replacementEvent.message}\" (id: ${ctx.replacementEvent.id}) instead.`\n );\n };\n\n const warnFailure = (\n ctx: RemoteDeliveryFailureContext,\n suppressWarning: boolean | undefined\n ): void => {\n if (!deliveryConfig.warnOnFailure || suppressWarning) {\n return;\n }\n\n const details = [\n `reason=${ctx.reason}`,\n `attempt=${formatWarningValue(ctx.attempt)}`,\n `status=${formatWarningValue(ctx.status)}`,\n ];\n\n if (ctx.error) {\n details.push(`error=${ctx.error}`);\n }\n\n warn(\n `[blyp/${runtimeLabel}] Failed to deliver log \"${ctx.event.message}\" ` +\n `(id: ${ctx.event.id}, ${details.join(', ')})`\n );\n };\n\n const totalUnsentEvents = (): number => queue.length + (inFlight ? 1 : 0);\n\n const scheduleFlush = (flush: () => void): void => {\n clearFlushTimer();\n\n if (queue.length === 0) {\n refreshResumeSubscription(flush);\n return;\n }\n\n const nextAttemptAt = queue.reduce((lowest, item) => {\n return Math.min(lowest, item.nextAttemptAt);\n }, Number.POSITIVE_INFINITY);\n const delay = Math.max(nextAttemptAt - Date.now(), 0);\n flushTimer = setTimeout(() => {\n flushTimer = undefined;\n flush();\n }, delay);\n refreshResumeSubscription(flush);\n };\n\n const emitDrop = (\n droppedEvent: ClientLogEvent,\n replacementEvent: ClientLogEvent\n ): void => {\n const context: RemoteDeliveryDropContext = {\n runtime: options.runtime,\n droppedEvent,\n replacementEvent,\n maxQueueSize: deliveryConfig.maxQueueSize,\n reason: 'queue_overflow',\n };\n\n safeCall(deliveryConfig.onDrop, context);\n warnDrop(context);\n };\n\n const enforceQueueCapacity = (): void => {\n while (totalUnsentEvents() > deliveryConfig.maxQueueSize && queue.length > 0) {\n const droppedItem = queue.shift();\n const replacementEvent = queue[queue.length - 1]?.event ?? inFlight?.event;\n\n if (!droppedItem || !replacementEvent) {\n break;\n }\n\n emitDrop(droppedItem.event, replacementEvent);\n }\n };\n\n const getNextReadyIndex = (): number => {\n const now = Date.now();\n\n for (let index = 0; index < queue.length; index += 1) {\n if (queue[index]!.nextAttemptAt <= now) {\n return index;\n }\n }\n\n return -1;\n };\n\n const flush = async (): Promise<void> => {\n if (isProcessing) {\n return;\n }\n\n isProcessing = true;\n\n try {\n while (true) {\n const nextIndex = getNextReadyIndex();\n if (nextIndex === -1) {\n break;\n }\n\n const item = queue.splice(nextIndex, 1)[0];\n if (!item) {\n continue;\n }\n\n inFlight = item;\n refreshResumeSubscription(() => {\n void flush();\n });\n\n item.attempt += 1;\n\n const result = await options.send(item.event);\n inFlight = undefined;\n\n if (result.outcome === 'success') {\n const context: RemoteDeliverySuccessContext = {\n runtime: options.runtime,\n event: item.event,\n attempt: item.attempt,\n status: result.status,\n transport: result.transport,\n };\n\n safeCall(deliveryConfig.onSuccess, context);\n continue;\n }\n\n if (\n result.outcome === 'retry' &&\n item.attempt <= deliveryConfig.maxRetries\n ) {\n item.nextAttemptAt = Date.now() + deliveryConfig.retryDelayMs;\n queue.push(item);\n\n const context: RemoteDeliveryRetryContext = {\n runtime: options.runtime,\n event: item.event,\n attempt: item.attempt,\n retriesRemaining: deliveryConfig.maxRetries - (item.attempt - 1),\n nextRetryAt: new Date(item.nextAttemptAt).toISOString(),\n reason: result.reason,\n status: result.status,\n error: result.error,\n };\n\n safeCall(deliveryConfig.onRetry, context);\n continue;\n }\n\n const failureContext: RemoteDeliveryFailureContext = {\n runtime: options.runtime,\n event: item.event,\n attempt: item.attempt,\n reason: result.reason,\n status: result.status,\n error: result.error,\n };\n\n safeCall(deliveryConfig.onFailure, failureContext);\n warnFailure(\n failureContext,\n result.outcome === 'failure' ? result.suppressWarning : undefined\n );\n }\n } finally {\n isProcessing = false;\n scheduleFlush(() => {\n void flush();\n });\n }\n };\n\n return {\n enqueue(event: ClientLogEvent): void {\n queue.push({\n event,\n attempt: 0,\n nextAttemptAt: Date.now(),\n });\n enforceQueueCapacity();\n scheduleFlush(() => {\n void flush();\n });\n void flush();\n },\n };\n}\n","import type { ConsoleMethod, ConsoleOnceLogger } from '../types/shared/once';\n\nexport type { ConsoleOnceLogger } from '../types/shared/once';\n\nfunction createConsoleOnceLogger(\n method: ConsoleMethod,\n warnedKeys: Set<string> = new Set<string>()\n): ConsoleOnceLogger {\n return (key, message, error) => {\n if (warnedKeys.has(key) || typeof console === 'undefined') {\n return;\n }\n\n const writer = console[method];\n if (typeof writer !== 'function') {\n return;\n }\n\n warnedKeys.add(key);\n if (error === undefined) {\n writer.call(console, message);\n return;\n }\n\n writer.call(console, message, error);\n };\n}\n\nexport function createWarnOnceLogger(warnedKeys?: Set<string>): ConsoleOnceLogger {\n return createConsoleOnceLogger('warn', warnedKeys);\n}\n\nexport function createErrorOnceLogger(warnedKeys?: Set<string>): ConsoleOnceLogger {\n return createConsoleOnceLogger('error', warnedKeys);\n}\n","/// <reference lib=\"dom\" />\n\nimport {\n type ClientLogEvent,\n DEFAULT_CLIENT_LOG_ENDPOINT,\n createRandomId,\n getBrowserContext,\n getBrowserPageContext,\n getClientSessionId,\n normalizeClientLogLevel,\n normalizeClientPayloadData,\n normalizeLogValue,\n normalizeMetadata,\n serializeLogMessage,\n} from '../../shared/client-log';\nimport {\n createRemoteDeliveryManager,\n type DeliveryAttemptResult,\n} from '../../shared/remote-delivery';\nimport { createErrorOnceLogger } from '../../shared/once';\nimport type {\n ClientLogger,\n ClientLoggerConfig,\n ClientLoggerState,\n} from '../../types/frameworks/client';\n\nconst warnedMessages = new Set<string>();\nconst errorOnce = createErrorOnceLogger(warnedMessages);\n\nfunction resolveHeaders(headers: Record<string, string> | undefined): Record<string, string> {\n return {\n 'content-type': 'application/json',\n ...(headers ?? {}),\n };\n}\n\nfunction shouldUseBeaconFallback(headers: Record<string, string> | undefined): boolean {\n return Object.keys(headers ?? {}).length === 0;\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status >= 500;\n}\n\nfunction isBrowserRuntime(): boolean {\n return typeof navigator !== 'undefined' && typeof location !== 'undefined';\n}\n\nasync function sendRemoteLog(\n config: Required<Pick<ClientLoggerConfig, 'endpoint' | 'credentials'>> & {\n headers?: Record<string, string>;\n connector?: ClientLoggerConfig['connector'];\n },\n payload: ClientLogEvent\n): Promise<DeliveryAttemptResult> {\n if (typeof navigator !== 'undefined' && navigator.onLine === false) {\n return {\n outcome: 'retry',\n reason: 'offline',\n };\n }\n\n if (typeof fetch !== 'function') {\n return {\n outcome: 'failure',\n reason: 'missing_transport',\n suppressWarning: true,\n };\n }\n\n const body = JSON.stringify(payload);\n const headers = resolveHeaders(config.headers);\n const canUseBeacon = shouldUseBeaconFallback(config.headers) &&\n typeof navigator !== 'undefined' &&\n typeof navigator.sendBeacon === 'function' &&\n typeof Blob !== 'undefined';\n\n try {\n const response = await fetch(config.endpoint, {\n method: 'POST',\n keepalive: true,\n credentials: config.credentials,\n headers,\n body,\n });\n\n if (response.ok) {\n if (config.connector === 'betterstack' && response.headers.get('x-blyp-betterstack-status') === 'missing') {\n errorOnce(\n 'betterstack-missing',\n '[blyp/client] Better Stack connector requested but not configured on the server. Continuing without Better Stack forwarding.'\n );\n }\n\n if (config.connector === 'databuddy' && response.headers.get('x-blyp-databuddy-status') === 'missing') {\n errorOnce(\n 'databuddy-missing',\n '[blyp/client] Databuddy connector requested but not configured on the server. Continuing without Databuddy forwarding.'\n );\n }\n\n if (config.connector === 'posthog' && response.headers.get('x-blyp-posthog-status') === 'missing') {\n errorOnce(\n 'posthog-missing',\n '[blyp/client] PostHog connector requested but not configured on the server. Continuing without PostHog forwarding.'\n );\n }\n\n if (config.connector === 'sentry' && response.headers.get('x-blyp-sentry-status') === 'missing') {\n errorOnce(\n 'sentry-missing',\n '[blyp/client] Sentry not setup. Continuing without Sentry forwarding.'\n );\n }\n\n if (\n config.connector &&\n typeof config.connector === 'object' &&\n config.connector.type === 'otlp' &&\n response.headers.get('x-blyp-otlp-status') === 'missing'\n ) {\n errorOnce(\n `otlp-missing:${config.connector.name}`,\n `[blyp/client] OTLP target \"${config.connector.name}\" was requested but not configured on the server. Continuing without OTLP forwarding.`\n );\n }\n\n return {\n outcome: 'success',\n transport: 'fetch',\n status: response.status,\n };\n }\n\n if (isRetryableStatus(response.status)) {\n return {\n outcome: 'retry',\n reason: 'response_status',\n status: response.status,\n };\n }\n\n return {\n outcome: 'failure',\n reason: 'response_status',\n status: response.status,\n };\n } catch (error) {\n if (canUseBeacon) {\n try {\n if (\n navigator.sendBeacon(\n config.endpoint,\n new Blob([body], { type: 'application/json' })\n )\n ) {\n return {\n outcome: 'success',\n transport: 'beacon',\n };\n }\n } catch {}\n }\n\n return {\n outcome: 'retry',\n reason: 'network_error',\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nfunction emitLocalConsole(\n level: 'warn' | 'debug' | 'info' | 'warning' | 'error' | 'critical' | 'success' | 'table',\n message: unknown,\n args: unknown[]\n): void {\n if (typeof console === 'undefined') {\n return;\n }\n\n const normalizedArgs = args.map((entry) => normalizeLogValue(entry));\n const text = serializeLogMessage(message);\n\n switch (level) {\n case 'table':\n console.log(text);\n if (normalizedArgs.length > 0 && typeof console.table === 'function') {\n console.table(normalizedArgs[0]);\n }\n return;\n case 'warning':\n case 'warn':\n console.warn(text, ...normalizedArgs);\n return;\n case 'error':\n case 'critical':\n console.error(text, ...normalizedArgs);\n return;\n case 'debug':\n console.debug(text, ...normalizedArgs);\n return;\n case 'success':\n console.log(text, ...normalizedArgs);\n return;\n case 'info':\n default:\n console.info(text, ...normalizedArgs);\n }\n}\n\nfunction buildClientLogger(config: ClientLoggerConfig, state: ClientLoggerState): ClientLogger {\n const resolvedConfig = {\n endpoint: config.endpoint ?? DEFAULT_CLIENT_LOG_ENDPOINT,\n headers: config.headers,\n credentials: config.credentials ?? 'same-origin',\n localConsole: config.localConsole ?? true,\n remoteSync: config.remoteSync ?? true,\n connector: config.connector,\n metadata: config.metadata,\n };\n\n const delivery = state.delivery ??\n (\n resolvedConfig.remoteSync &&\n isBrowserRuntime() &&\n typeof fetch === 'function'\n ? createRemoteDeliveryManager({\n runtime: 'browser',\n delivery: config.delivery,\n send: (event) => sendRemoteLog(resolvedConfig, event),\n subscribeToResume: (resume) => {\n if (typeof globalThis.addEventListener !== 'function') {\n return;\n }\n\n const listener = () => {\n resume();\n };\n\n globalThis.addEventListener('online', listener);\n\n return () => {\n if (typeof globalThis.removeEventListener === 'function') {\n globalThis.removeEventListener('online', listener);\n }\n };\n },\n })\n : undefined\n );\n\n const writeLog = (\n level: 'warn' | 'debug' | 'info' | 'warning' | 'error' | 'critical' | 'success' | 'table',\n message: unknown,\n args: unknown[]\n ): void => {\n if (resolvedConfig.localConsole) {\n emitLocalConsole(level, message, args);\n }\n\n if (!resolvedConfig.remoteSync) {\n return;\n }\n\n const normalizedLevel = normalizeClientLogLevel(level);\n const normalizedMessage = serializeLogMessage(message);\n const normalizedData = normalizeClientPayloadData(message, args);\n const metadata = normalizeMetadata(resolvedConfig.metadata);\n const payload: ClientLogEvent = {\n type: 'client_log',\n source: 'client',\n id: createRandomId(),\n level: normalizedLevel,\n message: normalizedMessage,\n connector: resolvedConfig.connector,\n data: normalizedData,\n bindings: Object.keys(state.bindings).length > 0 ? normalizeLogValue(state.bindings) as Record<string, unknown> : undefined,\n clientTimestamp: new Date().toISOString(),\n page: getBrowserPageContext(),\n browser: getBrowserContext(),\n session: {\n pageId: state.pageId,\n sessionId: state.sessionId,\n },\n metadata,\n };\n\n delivery?.enqueue(payload);\n };\n\n return {\n debug: (message: unknown, ...args: unknown[]) => {\n writeLog('debug', message, args);\n },\n info: (message: unknown, ...args: unknown[]) => {\n writeLog('info', message, args);\n },\n error: (message: unknown, ...args: unknown[]) => {\n writeLog('error', message, args);\n },\n warn: (message: unknown, ...args: unknown[]) => {\n writeLog('warn', message, args);\n },\n warning: (message: unknown, ...args: unknown[]) => {\n writeLog('warning', message, args);\n },\n success: (message: unknown, ...args: unknown[]) => {\n writeLog('success', message, args);\n },\n critical: (message: unknown, ...args: unknown[]) => {\n writeLog('critical', message, args);\n },\n table: (message: string, data?: unknown) => {\n writeLog('table', message, data === undefined ? [] : [data]);\n },\n child: (bindings: Record<string, unknown>) => {\n return buildClientLogger(config, {\n ...state,\n bindings: {\n ...state.bindings,\n ...bindings,\n },\n delivery,\n });\n },\n };\n}\n\nexport function createClientLogger(config: ClientLoggerConfig = {}): ClientLogger {\n return buildClientLogger(config, {\n pageId: createRandomId(),\n sessionId: getClientSessionId(),\n bindings: {},\n });\n}\n\nexport const logger = createClientLogger();\n\nexport function resetClientWarningsForTests(): void {\n warnedMessages.clear();\n}\n","import type {\n BlypErrorCode,\n BlypErrorCodeCreateOptions,\n BlypErrorCodeDefinition,\n BlypErrorLike,\n CreateCodeFunction,\n ErrorConstructionInput,\n ErrorLogLevel,\n ErrorLoggerLike,\n HttpCodeRegistry,\n ParseErrorOptions,\n ParseableErrorPayload as BaseParseableErrorPayload,\n ResolvedErrorConfig,\n} from '../types/shared/errors';\n\nexport type {\n BlypErrorCode,\n BlypErrorCodeDefinition,\n BlypErrorLike,\n ErrorConstructionInput,\n ErrorLogLevel,\n ErrorLoggerLike,\n ParseErrorOptions,\n ResolvedErrorConfig,\n} from '../types/shared/errors';\n\nexport type ParseableErrorPayload = BaseParseableErrorPayload | BlypError;\n\nexport const HTTP_STATUS_DEFINITIONS = {\n CONTINUE: { status: 100, message: 'Continue' },\n SWITCHING_PROTOCOLS: { status: 101, message: 'Switching Protocols' },\n PROCESSING: { status: 102, message: 'Processing' },\n EARLY_HINTS: { status: 103, message: 'Early Hints' },\n OK: { status: 200, message: 'OK' },\n CREATED: { status: 201, message: 'Created' },\n ACCEPTED: { status: 202, message: 'Accepted' },\n NON_AUTHORITATIVE_INFORMATION: { status: 203, message: 'Non-Authoritative Information' },\n NO_CONTENT: { status: 204, message: 'No Content' },\n RESET_CONTENT: { status: 205, message: 'Reset Content' },\n PARTIAL_CONTENT: { status: 206, message: 'Partial Content' },\n MULTI_STATUS: { status: 207, message: 'Multi-Status' },\n ALREADY_REPORTED: { status: 208, message: 'Already Reported' },\n IM_USED: { status: 226, message: 'IM Used' },\n MULTIPLE_CHOICES: { status: 300, message: 'Multiple Choices' },\n MOVED_PERMANENTLY: { status: 301, message: 'Moved Permanently' },\n FOUND: { status: 302, message: 'Found' },\n SEE_OTHER: { status: 303, message: 'See Other' },\n NOT_MODIFIED: { status: 304, message: 'Not Modified' },\n USE_PROXY: { status: 305, message: 'Use Proxy' },\n TEMPORARY_REDIRECT: { status: 307, message: 'Temporary Redirect' },\n PERMANENT_REDIRECT: { status: 308, message: 'Permanent Redirect' },\n BAD_REQUEST: { status: 400, message: 'Bad Request' },\n UNAUTHORIZED: { status: 401, message: 'Unauthorized' },\n PAYMENT_REQUIRED: { status: 402, message: 'Payment Required' },\n FORBIDDEN: { status: 403, message: 'Forbidden' },\n NOT_FOUND: { status: 404, message: 'Not Found' },\n METHOD_NOT_ALLOWED: { status: 405, message: 'Method Not Allowed' },\n NOT_ACCEPTABLE: { status: 406, message: 'Not Acceptable' },\n PROXY_AUTHENTICATION_REQUIRED: { status: 407, message: 'Proxy Authentication Required' },\n REQUEST_TIMEOUT: { status: 408, message: 'Request Timeout' },\n CONFLICT: { status: 409, message: 'Conflict' },\n GONE: { status: 410, message: 'Gone' },\n LENGTH_REQUIRED: { status: 411, message: 'Length Required' },\n PRECONDITION_FAILED: { status: 412, message: 'Precondition Failed' },\n PAYLOAD_TOO_LARGE: { status: 413, message: 'Payload Too Large' },\n URI_TOO_LONG: { status: 414, message: 'URI Too Long' },\n UNSUPPORTED_MEDIA_TYPE: { status: 415, message: 'Unsupported Media Type' },\n RANGE_NOT_SATISFIABLE: { status: 416, message: 'Range Not Satisfiable' },\n EXPECTATION_FAILED: { status: 417, message: 'Expectation Failed' },\n IM_A_TEAPOT: { status: 418, message: \"I'm a Teapot\" },\n MISDIRECTED_REQUEST: { status: 421, message: 'Misdirected Request' },\n UNPROCESSABLE_ENTITY: { status: 422, message: 'Unprocessable Entity' },\n LOCKED: { status: 423, message: 'Locked' },\n FAILED_DEPENDENCY: { status: 424, message: 'Failed Dependency' },\n TOO_EARLY: { status: 425, message: 'Too Early' },\n UPGRADE_REQUIRED: { status: 426, message: 'Upgrade Required' },\n PRECONDITION_REQUIRED: { status: 428, message: 'Precondition Required' },\n TOO_MANY_REQUESTS: { status: 429, message: 'Too Many Requests' },\n REQUEST_HEADER_FIELDS_TOO_LARGE: { status: 431, message: 'Request Header Fields Too Large' },\n UNAVAILABLE_FOR_LEGAL_REASONS: { status: 451, message: 'Unavailable For Legal Reasons' },\n INTERNAL_SERVER_ERROR: { status: 500, message: 'Internal Server Error' },\n NOT_IMPLEMENTED: { status: 501, message: 'Not Implemented' },\n BAD_GATEWAY: { status: 502, message: 'Bad Gateway' },\n SERVICE_UNAVAILABLE: { status: 503, message: 'Service Unavailable' },\n GATEWAY_TIMEOUT: { status: 504, message: 'Gateway Timeout' },\n HTTP_VERSION_NOT_SUPPORTED: { status: 505, message: 'HTTP Version Not Supported' },\n VARIANT_ALSO_NEGOTIATES: { status: 506, message: 'Variant Also Negotiates' },\n INSUFFICIENT_STORAGE: { status: 507, message: 'Insufficient Storage' },\n LOOP_DETECTED: { status: 508, message: 'Loop Detected' },\n BANDWIDTH_LIMIT_EXCEEDED: { status: 509, message: 'Bandwidth Limit Exceeded' },\n NOT_EXTENDED: { status: 510, message: 'Not Extended' },\n NETWORK_AUTHENTICATION_REQUIRED: { status: 511, message: 'Network Authentication Required' },\n} as const;\n\nimport { isPlainObject } from './validation';\n\nconst ERROR_KEYS = [\n 'status',\n 'statusCode',\n 'code',\n 'message',\n 'stack',\n 'why',\n 'fix',\n 'link',\n 'details',\n 'cause',\n 'title',\n 'detail',\n 'logLevel',\n 'error',\n 'data',\n] as const;\n\nfunction isErrorLogLevel(value: unknown): value is ErrorLogLevel {\n return (\n value === 'debug' ||\n value === 'info' ||\n value === 'warning' ||\n value === 'error' ||\n value === 'critical'\n );\n}\n\nfunction parseStatus(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /^\\d+$/.test(value.trim())) {\n return Number.parseInt(value, 10);\n }\n\n return undefined;\n}\n\nfunction normalizeDetails(value: unknown): Record<string, unknown> | undefined {\n return isPlainObject(value) ? value : undefined;\n}\n\nfunction hasMeaningfulErrorData(candidate: BlypErrorLike): boolean {\n return (\n candidate.status !== undefined ||\n candidate.statusCode !== undefined ||\n candidate.code !== undefined ||\n candidate.message !== undefined ||\n candidate.stack !== undefined ||\n candidate.why !== undefined ||\n candidate.fix !== undefined ||\n candidate.link !== undefined ||\n candidate.details !== undefined ||\n candidate.cause !== undefined ||\n candidate.logLevel !== undefined\n );\n}\n\nfunction normalizeRecordCandidate(record: Record<string, unknown>): BlypErrorLike {\n const title = typeof record.title === 'string' ? record.title : undefined;\n const detail = typeof record.detail === 'string' ? record.detail : undefined;\n\n return {\n status: parseStatus(record.status),\n statusCode: parseStatus(record.statusCode),\n code:\n typeof record.code === 'string' || typeof record.code === 'number'\n ? record.code\n : undefined,\n message:\n typeof record.message === 'string'\n ? record.message\n : title ?? detail,\n stack: typeof record.stack === 'string' ? record.stack : undefined,\n why: typeof record.why === 'string' ? record.why : undefined,\n fix: typeof record.fix === 'string' ? record.fix : undefined,\n link: typeof record.link === 'string' ? record.link : undefined,\n details: normalizeDetails(record.details),\n cause: record.cause,\n logLevel: isErrorLogLevel(record.logLevel) ? record.logLevel : undefined,\n };\n}\n\nfunction mergeCandidates(\n container: Record<string, unknown>,\n nested: BlypErrorLike | string | undefined\n): BlypErrorLike | string | undefined {\n const own = normalizeRecordCandidate(container);\n\n if (nested === undefined) {\n return hasMeaningfulErrorData(own) ? own : undefined;\n }\n\n if (typeof nested === 'string') {\n if (hasMeaningfulErrorData(own)) {\n return {\n ...own,\n message: own.message ?? nested,\n };\n }\n\n return nested;\n }\n\n return {\n status: own.status ?? nested.status,\n statusCode: own.statusCode ?? nested.statusCode,\n code: own.code ?? nested.code,\n message: own.message ?? nested.message,\n stack: own.stack ?? nested.stack,\n why: own.why ?? nested.why,\n fix: own.fix ?? nested.fix,\n link: own.link ?? nested.link,\n details: own.details ?? nested.details,\n cause: own.cause ?? nested.cause,\n logLevel: own.logLevel ?? nested.logLevel,\n };\n}\n\nfunction hasErrorShape(record: Record<string, unknown>): boolean {\n return ERROR_KEYS.some((key) => record[key] !== undefined);\n}\n\nfunction isResponseLike(input: unknown): input is Response {\n if (typeof Response !== 'undefined' && input instanceof Response) {\n return true;\n }\n\n return isPlainObject(input) &&\n typeof input.status === 'number' &&\n typeof input.statusText === 'string' &&\n typeof input.clone === 'function' &&\n typeof input.text === 'function';\n}\n\nexport class BlypError extends Error implements BlypErrorLike {\n override readonly name = 'BlypError';\n readonly status: number;\n readonly statusCode: number;\n readonly code?: string | number;\n readonly why?: string;\n readonly fix?: string;\n readonly link?: string;\n readonly details?: Record<string, unknown>;\n override readonly cause?: unknown;\n readonly logLevel: ErrorLogLevel;\n\n constructor(config: ResolvedErrorConfig) {\n super(config.message);\n Object.setPrototypeOf(this, new.target.prototype);\n\n this.status = config.status;\n this.statusCode = config.statusCode;\n this.code = config.code;\n this.why = config.why;\n this.fix = config.fix;\n this.link = config.link;\n this.details = config.details;\n this.cause = config.cause;\n this.logLevel = config.logLevel;\n\n if (config.stack) {\n this.stack = config.stack;\n } else if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, BlypError);\n }\n }\n\n toJSON(): {\n name: 'BlypError';\n message: string;\n status: number;\n statusCode: number;\n code?: string | number;\n why?: string;\n fix?: string;\n link?: string;\n details?: Record<string, unknown>;\n } {\n return {\n name: 'BlypError',\n message: this.message,\n status: this.status,\n statusCode: this.statusCode,\n ...(this.code !== undefined ? { code: this.code } : {}),\n ...(this.why !== undefined ? { why: this.why } : {}),\n ...(this.fix !== undefined ? { fix: this.fix } : {}),\n ...(this.link !== undefined ? { link: this.link } : {}),\n ...(this.details !== undefined ? { details: this.details } : {}),\n };\n }\n}\n\nexport function resolveErrorLogLevel(\n status: number,\n explicit?: ErrorLogLevel\n): ErrorLogLevel {\n if (explicit) {\n return explicit;\n }\n\n if (status >= 500) {\n return 'critical';\n }\n\n if (status >= 400) {\n return 'error';\n }\n\n return 'warning';\n}\n\nexport function normalizeCauseForLog(cause: unknown): unknown {\n if (cause instanceof Error) {\n return {\n name: cause.name,\n message: cause.message,\n ...(cause.stack ? { stack: cause.stack } : {}),\n };\n }\n\n return cause;\n}\n\nexport function emitErrorLog(\n logger: ErrorLoggerLike,\n error: BlypError,\n levelOverride?: ErrorLogLevel\n): void {\n const level = resolveErrorLogLevel(error.status, levelOverride ?? error.logLevel);\n const logMethod = (() => {\n switch (level) {\n case 'debug':\n return logger.debug;\n case 'info':\n return logger.info;\n case 'warning':\n return logger.warning;\n case 'critical':\n return logger.critical;\n case 'error':\n default:\n return logger.error;\n }\n })();\n\n logMethod(error.message, {\n type: 'application_error',\n status: error.status,\n statusCode: error.statusCode,\n code: error.code,\n why: error.why,\n fix: error.fix,\n link: error.link,\n details: error.details,\n cause: normalizeCauseForLog(error.cause),\n });\n}\n\nexport function resolveErrorConfig(\n input: BlypErrorLike & { status?: number; logLevel?: ErrorLogLevel },\n defaults: Partial<ResolvedErrorConfig> = {}\n): ResolvedErrorConfig {\n const candidateStatus = input.status ?? input.statusCode;\n const status = candidateStatus ?? defaults.status ?? defaults.statusCode ?? 500;\n const preset = getHttpCode(status);\n const message =\n input.message ??\n defaults.message ??\n preset?.message ??\n `HTTP ${status}`;\n\n return {\n status,\n statusCode: status,\n message,\n code: input.code ?? defaults.code ?? preset?.code,\n why: input.why ?? defaults.why ?? preset?.why,\n fix: input.fix ?? defaults.fix ?? preset?.fix,\n link: input.link ?? defaults.link ?? preset?.link,\n details: input.details ?? defaults.details ?? preset?.details,\n cause: input.cause ?? defaults.cause,\n stack: input.stack ?? defaults.stack,\n logLevel: resolveErrorLogLevel(\n status,\n input.logLevel ?? defaults.logLevel ?? preset?.logLevel\n ),\n };\n}\n\nexport function createBlypError(\n input: ErrorConstructionInput,\n defaults: Partial<ResolvedErrorConfig> = {}\n): BlypError {\n const error = new BlypError(resolveErrorConfig(input, defaults));\n\n if (input.skipLogging !== true && input.logger) {\n emitErrorLog(input.logger, error, input.logLevel);\n }\n\n return error;\n}\n\nfunction createErrorCode(\n definition: BlypErrorCodeDefinition,\n createErrorFromCode?: CreateCodeFunction\n): BlypErrorCode {\n const errorCode = {\n ...definition,\n statusCode: definition.status,\n create(overrides: BlypErrorCodeCreateOptions = {}): BlypError {\n if (createErrorFromCode) {\n return createErrorFromCode(definition, overrides) as BlypError;\n }\n\n return createBlypError({\n status: definition.status,\n message: definition.message,\n code: overrides.code ?? definition.code,\n why: overrides.why ?? definition.why,\n fix: overrides.fix ?? definition.fix,\n link: overrides.link ?? definition.link,\n details: overrides.details ?? definition.details,\n cause: overrides.cause,\n stack: overrides.stack,\n logLevel: overrides.logLevel ?? definition.logLevel,\n logger: overrides.logger,\n skipLogging: overrides.skipLogging,\n });\n },\n extend(extension: {\n code: string;\n message?: string;\n why?: string;\n fix?: string;\n link?: string;\n details?: Record<string, unknown>;\n logLevel?: ErrorLogLevel;\n }): BlypErrorCode {\n return createErrorCode(\n {\n key: extension.code,\n status: definition.status,\n message: extension.message ?? definition.message,\n code: extension.code,\n why: extension.why ?? definition.why,\n fix: extension.fix ?? definition.fix,\n link: extension.link ?? definition.link,\n details: extension.details ?? definition.details,\n logLevel: extension.logLevel ?? definition.logLevel,\n },\n createErrorFromCode\n );\n },\n } satisfies BlypErrorCode;\n\n return Object.freeze(errorCode);\n}\n\nexport function buildHttpCodeRegistry(\n createErrorFromCode?: CreateCodeFunction\n): HttpCodeRegistry<keyof typeof HTTP_STATUS_DEFINITIONS> {\n const entries = Object.entries(HTTP_STATUS_DEFINITIONS).map(([key, value]) => {\n return [key, createErrorCode({ key, ...value }, createErrorFromCode)] as const;\n });\n\n return Object.freeze(\n Object.fromEntries(entries) as HttpCodeRegistry<keyof typeof HTTP_STATUS_DEFINITIONS>\n );\n}\n\nexport const HTTP_CODES = buildHttpCodeRegistry();\n\nconst httpCodeByStatus = new Map<number, BlypErrorCode>(\n Object.values(HTTP_CODES).map((value) => [value.status, value])\n);\n\nexport function getHttpCode(status: number): BlypErrorCode | undefined {\n return httpCodeByStatus.get(status);\n}\n\nexport function extractErrorCandidate(payload: unknown): BlypErrorLike | string | undefined {\n if (typeof payload === 'string') {\n return payload;\n }\n\n if (!isPlainObject(payload)) {\n return undefined;\n }\n\n if (payload.error !== undefined) {\n const nested = payload.error;\n if (typeof nested === 'string') {\n return mergeCandidates(payload, nested);\n }\n\n if (isPlainObject(nested)) {\n return mergeCandidates(payload, extractErrorCandidate(nested));\n }\n }\n\n if (isPlainObject(payload.data)) {\n const nested = payload.data;\n if (nested.error !== undefined || hasErrorShape(nested)) {\n return mergeCandidates(payload, extractErrorCandidate(nested));\n }\n }\n\n if (hasErrorShape(payload)) {\n return normalizeRecordCandidate(payload);\n }\n\n return undefined;\n}\n\nfunction coercePayloadToError(\n payload: ParseableErrorPayload,\n options: ParseErrorOptions = {},\n responseContext: { status?: number; statusText?: string } = {}\n): BlypError {\n if (payload instanceof BlypError) {\n return payload;\n }\n\n const candidate = (() => {\n if (payload instanceof Error) {\n const errorWithMetadata = payload as Error & BlypErrorLike;\n return {\n status: errorWithMetadata.status,\n statusCode: errorWithMetadata.statusCode,\n code: errorWithMetadata.code,\n message: payload.message,\n stack: payload.stack,\n why: errorWithMetadata.why,\n fix: errorWithMetadata.fix,\n link: errorWithMetadata.link,\n details: errorWithMetadata.details,\n cause: errorWithMetadata.cause,\n logLevel: errorWithMetadata.logLevel,\n } satisfies BlypErrorLike;\n }\n\n return extractErrorCandidate(payload);\n })();\n\n const responseStatus = responseContext.status && responseContext.status > 0\n ? responseContext.status\n : undefined;\n const candidateStatus = typeof candidate === 'string'\n ? undefined\n : candidate?.status ?? candidate?.statusCode;\n const status = responseStatus ?? candidateStatus ?? options.fallbackStatus ?? 500;\n const textBody = typeof candidate === 'string'\n ? candidate.trim() || undefined\n : undefined;\n const statusText = responseContext.statusText?.trim() || undefined;\n\n return createBlypError(\n typeof candidate === 'string'\n ? { message: textBody, ...(responseStatus !== undefined ? { status: responseStatus } : {}) }\n : {\n ...(candidate ?? {}),\n ...(responseStatus !== undefined\n ? {\n status: responseStatus,\n statusCode: responseStatus,\n }\n : {}),\n },\n {\n status,\n message:\n (typeof candidate === 'string' ? textBody : candidate?.message) ??\n statusText ??\n getHttpCode(status)?.message ??\n `HTTP ${status}`,\n }\n );\n}\n\nexport async function readResponseErrorPayload(response: Response): Promise<unknown> {\n const contentType = response.headers.get('content-type')?.toLowerCase();\n const isJsonResponse = contentType?.includes('application/json') || contentType?.includes('+json');\n\n if (isJsonResponse) {\n try {\n return await response.clone().json();\n } catch {\n try {\n return await response.clone().text();\n } catch {\n return undefined;\n }\n }\n }\n\n try {\n return await response.clone().text();\n } catch {\n return undefined;\n }\n}\n\nexport function parseError(\n input: Response,\n options?: ParseErrorOptions\n): Promise<BlypError>;\nexport function parseError(\n input: ParseableErrorPayload,\n options?: ParseErrorOptions\n): BlypError;\nexport function parseError(\n input: ParseableErrorPayload | Response,\n options: ParseErrorOptions = {}\n): BlypError | Promise<BlypError> {\n if (isResponseLike(input)) {\n return (async () => {\n const payload = await readResponseErrorPayload(input).catch(() => undefined);\n const error = coercePayloadToError(payload as ParseableErrorPayload, options, {\n status: input.status,\n statusText: input.statusText,\n });\n\n if (options.logger) {\n emitErrorLog(options.logger, error, options.logLevel);\n }\n\n return error;\n })();\n }\n\n const error = coercePayloadToError(input, options);\n\n if (options.logger) {\n emitErrorLog(options.logger, error, options.logLevel);\n }\n\n return error;\n}\n"]}