@spotlightjs/spotlight 4.5.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_commonjsHelpers.js +9 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/cache.js +5 -0
- package/dist/_virtual/cache.js.map +1 -0
- package/dist/_virtual/index.js +5 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/_virtual/re.js +5 -0
- package/dist/_virtual/re.js.map +1 -0
- package/dist/_virtual/uri.all.js +5 -0
- package/dist/_virtual/uri.all.js.map +1 -0
- package/dist/bootstrap.d.ts +0 -0
- package/dist/electron-index.d.ts +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/instrument.js +74 -0
- package/dist/instrument.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +233 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +56 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +188 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +596 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +68 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +383 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +33 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +1 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1037 -0
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.16.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/ajv.js +357 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/ajv.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/cache.js +21 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/cache.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/async.js +65 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/async.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/error_classes.js +28 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/error_classes.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/formats.js +110 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/formats.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/index.js +279 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/resolve.js +219 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/resolve.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/rules.js +92 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/rules.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/schema_obj.js +10 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/schema_obj.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/ucs2length.js +16 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/ucs2length.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/util.js +183 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/compile/util.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/data.js +48 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/data.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/definition_schema.js +39 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/definition_schema.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limit.js +151 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limit.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitItems.js +81 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitItems.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitLength.js +86 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitLength.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitProperties.js +81 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/_limitProperties.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/allOf.js +43 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/allOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/anyOf.js +74 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/anyOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/comment.js +17 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/comment.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/const.js +54 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/const.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/contains.js +79 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/contains.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/custom.js +221 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/custom.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/dependencies.js +162 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/dependencies.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/enum.js +63 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/enum.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/format.js +148 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/format.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/if.js +101 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/if.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/index.js +58 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/items.js +138 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/items.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/multipleOf.js +81 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/multipleOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/not.js +86 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/not.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/oneOf.js +72 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/oneOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/pattern.js +76 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/pattern.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/properties.js +313 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/properties.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/propertyNames.js +75 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/propertyNames.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/ref.js +125 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/ref.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/required.js +254 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/required.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/uniqueItems.js +86 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/uniqueItems.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/validate.js +455 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/dotjs/validate.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/keyword.js +99 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/keyword.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/data.json.js +41 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/data.json.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/json-schema-draft-07.json.js +257 -0
- package/dist/node_modules/.pnpm/ajv@6.12.6/node_modules/ajv/lib/refs/json-schema-draft-07.json.js.map +1 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +32 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -0
- package/dist/node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules/fast-json-stable-stringify/index.js +53 -0
- package/dist/node_modules/.pnpm/fast-json-stable-stringify@2.1.0/node_modules/fast-json-stable-stringify/index.js.map +1 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/helper/streaming/sse.js +24 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/helper/streaming/sse.js.map +1 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/middleware/cors/index.js +87 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/middleware/cors/index.js.map +1 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/html.js +35 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/html.js.map +1 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/stream.js +69 -0
- package/dist/node_modules/.pnpm/hono@4.10.3/node_modules/hono/dist/utils/stream.js.map +1 -0
- package/dist/node_modules/.pnpm/json-schema-traverse@0.4.1/node_modules/json-schema-traverse/index.js +83 -0
- package/dist/node_modules/.pnpm/json-schema-traverse@0.4.1/node_modules/json-schema-traverse/index.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.js +123 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.js +388 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js +277 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.js +11 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/clean.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.js +53 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.js +46 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/coerce.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.js +12 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-build.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare-loose.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.js +42 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/diff.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.js +22 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/inc.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/major.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/minor.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.js +20 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/patch.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.js +11 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/prerelease.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rcompare.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/rsort.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.js +15 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/sort.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.js +11 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.js +135 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/index.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.js +29 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js +7 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.js +22 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.js +35 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.js +16 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.js +91 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/gtr.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.js +12 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/intersects.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/ltr.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.js +28 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/max-satisfying.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.js +28 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-satisfying.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.js +57 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.js +74 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/outside.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.js +49 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/simplify.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.js +163 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/subset.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.js +8 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/to-comparators.js.map +1 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.js +14 -0
- package/dist/node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.js.map +1 -0
- package/dist/node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/dist/es5/uri.all.js +1027 -0
- package/dist/node_modules/.pnpm/uri-js@4.4.1/node_modules/uri-js/dist/es5/uri.all.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js +38 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js +24 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +19 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +12 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js +62 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +19 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +29 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +49 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +9 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +8 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +8 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +62 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +11 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +9 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +10 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +45 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +22 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +30 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +16 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +13 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +12 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +36 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +52 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +73 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +23 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +23 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +8 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +8 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +59 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +24 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +322 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +31 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +72 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +8 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js +109 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +67 -0
- package/dist/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
- package/dist/run.d.ts +0 -1
- package/dist/run.js +23 -44623
- package/dist/run.js.map +1 -0
- package/dist/sentry-config.d.ts +7 -0
- package/dist/sentry-config.js +11 -0
- package/dist/sentry-config.js.map +1 -0
- package/dist/server/cli/help.d.ts +1 -0
- package/dist/server/cli/help.js +38 -0
- package/dist/server/cli/help.js.map +1 -0
- package/dist/server/cli/mcp.d.ts +2 -0
- package/dist/server/cli/mcp.js +105 -0
- package/dist/server/cli/mcp.js.map +1 -0
- package/dist/server/cli/run.d.ts +2 -0
- package/dist/server/cli/run.js +271 -0
- package/dist/server/cli/run.js.map +1 -0
- package/dist/server/cli/server.d.ts +2 -0
- package/dist/server/cli/server.js +13 -0
- package/dist/server/cli/server.js.map +1 -0
- package/dist/server/cli/tail.d.ts +8 -0
- package/dist/server/cli/tail.js +97 -0
- package/dist/server/cli/tail.js.map +1 -0
- package/dist/server/cli.d.ts +16 -0
- package/dist/server/cli.js +120 -0
- package/dist/server/cli.js.map +1 -0
- package/dist/server/constants.d.ts +3 -0
- package/dist/server/constants.js +7 -0
- package/dist/server/constants.js.map +1 -0
- package/dist/server/formatters/human/errors.d.ts +6 -0
- package/dist/server/formatters/human/errors.js +28 -0
- package/dist/server/formatters/human/errors.js.map +1 -0
- package/dist/server/formatters/human/index.d.ts +2 -0
- package/dist/server/formatters/human/index.js +13 -0
- package/dist/server/formatters/human/index.js.map +1 -0
- package/dist/server/formatters/human/logs.d.ts +6 -0
- package/dist/server/formatters/human/logs.js +23 -0
- package/dist/server/formatters/human/logs.js.map +1 -0
- package/dist/server/formatters/human/traces.d.ts +6 -0
- package/dist/server/formatters/human/traces.js +29 -0
- package/dist/server/formatters/human/traces.js.map +1 -0
- package/dist/server/formatters/human/utils.d.ts +43 -0
- package/dist/server/formatters/human/utils.js +113 -0
- package/dist/server/formatters/human/utils.js.map +1 -0
- package/dist/server/formatters/index.d.ts +11 -0
- package/dist/server/formatters/index.js +19 -0
- package/dist/server/formatters/index.js.map +1 -0
- package/dist/server/formatters/json/errors.d.ts +3 -0
- package/dist/server/formatters/json/errors.js +8 -0
- package/dist/server/formatters/json/errors.js.map +1 -0
- package/dist/server/formatters/json/index.d.ts +2 -0
- package/dist/server/formatters/json/index.js +13 -0
- package/dist/server/formatters/json/index.js.map +1 -0
- package/dist/server/formatters/json/logs.d.ts +3 -0
- package/dist/server/formatters/json/logs.js +11 -0
- package/dist/server/formatters/json/logs.js.map +1 -0
- package/dist/server/formatters/json/traces.d.ts +3 -0
- package/dist/server/formatters/json/traces.js +8 -0
- package/dist/server/formatters/json/traces.js.map +1 -0
- package/dist/server/formatters/logfmt/errors.d.ts +3 -0
- package/dist/server/formatters/logfmt/errors.js +9 -0
- package/dist/server/formatters/logfmt/errors.js.map +1 -0
- package/dist/server/formatters/logfmt/index.d.ts +2 -0
- package/dist/server/formatters/logfmt/index.js +13 -0
- package/dist/server/formatters/logfmt/index.js.map +1 -0
- package/dist/server/formatters/logfmt/logs.d.ts +3 -0
- package/dist/server/formatters/logfmt/logs.js +27 -0
- package/dist/server/formatters/logfmt/logs.js.map +1 -0
- package/dist/server/formatters/logfmt/traces.d.ts +3 -0
- package/dist/server/formatters/logfmt/traces.js +9 -0
- package/dist/server/formatters/logfmt/traces.js.map +1 -0
- package/dist/server/formatters/md/errors.d.ts +10 -0
- package/dist/server/formatters/md/errors.js +77 -0
- package/dist/server/formatters/md/errors.js.map +1 -0
- package/dist/server/formatters/md/event.d.ts +11 -0
- package/dist/server/formatters/md/event.js +362 -0
- package/dist/server/formatters/md/event.js.map +1 -0
- package/dist/server/formatters/md/index.d.ts +2 -0
- package/dist/server/formatters/md/index.js +13 -0
- package/dist/server/formatters/md/index.js.map +1 -0
- package/dist/server/formatters/md/logs.d.ts +7 -0
- package/dist/server/formatters/md/logs.js +39 -0
- package/dist/server/formatters/md/logs.js.map +1 -0
- package/dist/server/formatters/md/traces.d.ts +87 -0
- package/dist/server/formatters/md/traces.js +300 -0
- package/dist/server/formatters/md/traces.js.map +1 -0
- package/dist/server/formatters/schema.d.ts +6810 -0
- package/dist/server/formatters/shared/data-builders.d.ts +15 -0
- package/dist/server/formatters/shared/data-builders.js +120 -0
- package/dist/server/formatters/shared/data-builders.js.map +1 -0
- package/dist/server/formatters/types.d.ts +33 -0
- package/dist/server/formatters/types.js +5 -0
- package/dist/server/formatters/types.js.map +1 -0
- package/dist/server/formatters/utils.d.ts +25 -0
- package/dist/server/formatters/utils.js +46 -0
- package/dist/server/formatters/utils.js.map +1 -0
- package/dist/server/handlers/fileToServe.d.ts +2 -0
- package/dist/server/handlers/fileToServe.js +27 -0
- package/dist/server/handlers/fileToServe.js.map +1 -0
- package/dist/server/handlers/index.d.ts +1 -0
- package/dist/server/logger.d.ts +5 -0
- package/dist/server/logger.js +31 -0
- package/dist/server/logger.js.map +1 -0
- package/dist/server/main.d.ts +6 -0
- package/dist/server/main.js +175 -0
- package/dist/server/main.js.map +1 -0
- package/dist/server/mcp/constants.d.ts +3 -0
- package/dist/server/mcp/constants.js +79 -0
- package/dist/server/mcp/constants.js.map +1 -0
- package/dist/server/mcp/mcp.d.ts +31 -0
- package/dist/server/mcp/mcp.js +392 -0
- package/dist/server/mcp/mcp.js.map +1 -0
- package/dist/server/messageBuffer.d.ts +40 -0
- package/dist/server/messageBuffer.js +279 -0
- package/dist/server/messageBuffer.js.map +1 -0
- package/dist/server/parser/helpers.d.ts +10 -0
- package/dist/server/parser/helpers.js +32 -0
- package/dist/server/parser/helpers.js.map +1 -0
- package/dist/server/parser/index.d.ts +3 -0
- package/dist/server/parser/processEnvelope.d.ts +17 -0
- package/dist/server/parser/processEnvelope.js +86 -0
- package/dist/server/parser/processEnvelope.js.map +1 -0
- package/dist/server/parser/types.d.ts +198 -0
- package/dist/server/routes/clear.d.ts +3 -0
- package/dist/server/routes/clear.js +15 -0
- package/dist/server/routes/clear.js.map +1 -0
- package/dist/server/routes/contextlines/index.d.ts +3 -0
- package/dist/server/routes/contextlines/index.js +44 -0
- package/dist/server/routes/contextlines/index.js.map +1 -0
- package/dist/server/routes/contextlines/utils.d.ts +20 -0
- package/dist/server/routes/contextlines/utils.js +83 -0
- package/dist/server/routes/contextlines/utils.js.map +1 -0
- package/dist/server/routes/health.d.ts +3 -0
- package/dist/server/routes/health.js +7 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/index.d.ts +3 -0
- package/dist/server/routes/index.js +19 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/mcp.d.ts +3 -0
- package/dist/server/routes/mcp.js +20 -0
- package/dist/server/routes/mcp.js.map +1 -0
- package/dist/server/routes/open.d.ts +4 -0
- package/dist/server/routes/open.js +25 -0
- package/dist/server/routes/open.js.map +1 -0
- package/dist/server/routes/stream/debugLogging.d.ts +11 -0
- package/dist/server/routes/stream/debugLogging.js +59 -0
- package/dist/server/routes/stream/debugLogging.js.map +1 -0
- package/dist/server/routes/stream/index.d.ts +34 -0
- package/dist/server/routes/stream/index.js +98 -0
- package/dist/server/routes/stream/index.js.map +1 -0
- package/dist/server/routes/stream/streaming.d.ts +3 -0
- package/dist/server/routes/stream/streaming.js +26 -0
- package/dist/server/routes/stream/streaming.js.map +1 -0
- package/dist/server/routes/stream/userAgent.d.ts +11 -0
- package/dist/server/routes/stream/userAgent.js +25 -0
- package/dist/server/routes/stream/userAgent.js.map +1 -0
- package/dist/server/sdk.d.ts +15 -0
- package/dist/server/sdk.js +32 -0
- package/dist/server/sdk.js.map +1 -0
- package/dist/server/types/cli.d.ts +14 -0
- package/dist/server/types/env.d.ts +10 -0
- package/dist/server/types/index.d.ts +2 -0
- package/dist/server/types/utils.d.ts +44 -0
- package/dist/server/utils/cors.d.ts +12 -0
- package/dist/server/utils/cors.js +22 -0
- package/dist/server/utils/cors.js.map +1 -0
- package/dist/server/utils/docker-compose-parser.d.ts +20 -0
- package/dist/server/utils/docker-compose-parser.js +61 -0
- package/dist/server/utils/docker-compose-parser.js.map +1 -0
- package/dist/server/utils/docker-compose.d.ts +30 -0
- package/dist/server/utils/docker-compose.js +131 -0
- package/dist/server/utils/docker-compose.js.map +1 -0
- package/dist/server/utils/eventContainer.d.ts +34 -0
- package/dist/server/utils/eventContainer.js +71 -0
- package/dist/server/utils/eventContainer.js.map +1 -0
- package/dist/server/utils/extras.d.ts +5 -0
- package/dist/server/utils/extras.js +63 -0
- package/dist/server/utils/extras.js.map +1 -0
- package/dist/server/utils/getBuffer.d.ts +1 -0
- package/dist/server/utils/getBuffer.js +9 -0
- package/dist/server/utils/getBuffer.js.map +1 -0
- package/dist/server/utils/index.d.ts +4 -0
- package/dist/shared/constants.d.ts +3 -0
- package/dist/shared/constants.js +9 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/ui/assets/angular-html.js +1 -0
- package/dist/ui/assets/angular-ts.js +1 -0
- package/dist/ui/assets/astro.js +1 -0
- package/dist/ui/assets/blade.js +1 -0
- package/dist/ui/assets/client.js +50 -0
- package/dist/ui/assets/coffee.js +1 -0
- package/dist/ui/assets/cpp.js +1 -0
- package/dist/ui/assets/electron-index.js +6 -0
- package/dist/ui/assets/firefox.svg +105 -0
- package/dist/ui/assets/glsl.js +1 -0
- package/dist/ui/assets/graphql.js +1 -0
- package/dist/ui/assets/haml.js +1 -0
- package/dist/ui/assets/handlebars.js +1 -0
- package/dist/ui/assets/html-derivative.js +1 -0
- package/dist/ui/assets/html.js +1 -0
- package/dist/ui/assets/http.js +1 -0
- package/dist/ui/assets/index.js +152 -0
- package/dist/ui/assets/index2.js +1 -0
- package/dist/ui/assets/instrumentation.js +24 -0
- package/dist/ui/assets/jinja.js +1 -0
- package/dist/ui/assets/jison.js +1 -0
- package/dist/ui/assets/julia.js +1 -0
- package/dist/ui/assets/main.css +1 -0
- package/dist/ui/assets/main.js +2 -0
- package/dist/ui/assets/marko.js +1 -0
- package/dist/ui/assets/mdc.js +1 -0
- package/dist/ui/assets/nestjs.svg +4 -0
- package/dist/ui/assets/php.js +1 -0
- package/dist/ui/assets/pug.js +1 -0
- package/dist/ui/assets/raleway-cyrillic-400-normal.woff +0 -0
- package/dist/ui/assets/raleway-cyrillic-400-normal.woff2 +0 -0
- package/dist/ui/assets/raleway-cyrillic-ext-400-normal.woff +0 -0
- package/dist/ui/assets/raleway-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/ui/assets/raleway-latin-400-normal.woff +0 -0
- package/dist/ui/assets/raleway-latin-400-normal.woff2 +0 -0
- package/dist/ui/assets/raleway-latin-ext-400-normal.woff +0 -0
- package/dist/ui/assets/raleway-latin-ext-400-normal.woff2 +0 -0
- package/dist/ui/assets/raleway-vietnamese-400-normal.woff +0 -0
- package/dist/ui/assets/raleway-vietnamese-400-normal.woff2 +0 -0
- package/dist/ui/assets/safari.svg +38 -0
- package/dist/ui/assets/scss.js +1 -0
- package/dist/ui/assets/svelte.js +1 -0
- package/dist/ui/assets/ts-tags.js +1 -0
- package/dist/ui/assets/vue-html.js +1 -0
- package/dist/ui/assets/vue-vine.js +1 -0
- package/dist/ui/assets/vue.js +1 -0
- package/dist/ui/assets/xml.js +1 -0
- package/dist/{overlay/src → ui}/index.html +34 -0
- package/dist/ui/manifest.json +1103 -0
- package/package.json +109 -19
- package/dist/overlay/assets/angular-html-BmadGEgW.js +0 -1
- package/dist/overlay/assets/angular-ts-D-QQnnGT.js +0 -1
- package/dist/overlay/assets/astro-DHnp0xIo.js +0 -1
- package/dist/overlay/assets/blade-OPzGcV14.js +0 -1
- package/dist/overlay/assets/coffee-Dl27lzbd.js +0 -1
- package/dist/overlay/assets/cpp-Cj177cuW.js +0 -1
- package/dist/overlay/assets/glsl-CkUcVZNK.js +0 -1
- package/dist/overlay/assets/graphql-BLaPX4fU.js +0 -1
- package/dist/overlay/assets/haml-6FagfhCM.js +0 -1
- package/dist/overlay/assets/handlebars-Bd5Y4M6I.js +0 -1
- package/dist/overlay/assets/html-7XVNRwN7.js +0 -1
- package/dist/overlay/assets/html-derivative-BNxZ5Yf6.js +0 -1
- package/dist/overlay/assets/http-WC357zBG.js +0 -1
- package/dist/overlay/assets/index-BfFEknL3.js +0 -1
- package/dist/overlay/assets/jinja-WEhOU5ES.js +0 -1
- package/dist/overlay/assets/jison-c2JI40PB.js +0 -1
- package/dist/overlay/assets/julia-DcoDQokW.js +0 -1
- package/dist/overlay/assets/main.js +0 -224
- package/dist/overlay/assets/marko-DDi9qpQP.js +0 -1
- package/dist/overlay/assets/mdc-FI2x3BiY.js +0 -1
- package/dist/overlay/assets/php-BRU9zhoN.js +0 -1
- package/dist/overlay/assets/pug-CJWI-qSo.js +0 -1
- package/dist/overlay/assets/scss-B1FaCqwR.js +0 -1
- package/dist/overlay/assets/svelte-BjDUPxZ1.js +0 -1
- package/dist/overlay/assets/ts-tags-CZMzuZh-.js +0 -1
- package/dist/overlay/assets/vue-D-ba2-Rx.js +0 -1
- package/dist/overlay/assets/vue-html-Dn2ZoOSz.js +0 -1
- package/dist/overlay/assets/vue-vine-Jmfkm6lF.js +0 -1
- package/dist/overlay/assets/xml-C2J0sS9M.js +0 -1
- package/dist/overlay/manifest.json +0 -1000
- package/dist/run.cjs +0 -44693
- package/dist/sidecar.cjs +0 -7
- package/dist/sidecar.d.ts +0 -1
- package/dist/sidecar.js +0 -4
- /package/dist/{overlay/assets/andromeeda-BIpZ7gaU.js → ui/assets/andromeeda.js} +0 -0
- /package/dist/{overlay/assets/aurora-x-BwoVEUWZ.js → ui/assets/aurora-x.js} +0 -0
- /package/dist/{overlay/assets/ayu-dark-CxPZkpb2.js → ui/assets/ayu-dark.js} +0 -0
- /package/dist/{overlay/assets/c-eeMepfLm.js → ui/assets/c.js} +0 -0
- /package/dist/{overlay/assets/catppuccin-frappe-5udUqgsX.js → ui/assets/catppuccin-frappe.js} +0 -0
- /package/dist/{overlay/assets/catppuccin-latte-ufkS-HWv.js → ui/assets/catppuccin-latte.js} +0 -0
- /package/dist/{overlay/assets/catppuccin-macchiato-DzL2LPek.js → ui/assets/catppuccin-macchiato.js} +0 -0
- /package/dist/{overlay/assets/catppuccin-mocha-DDDDwkUT.js → ui/assets/catppuccin-mocha.js} +0 -0
- /package/dist/{overlay/assets/css-CECN5uSL.js → ui/assets/css.js} +0 -0
- /package/dist/{overlay/assets/dark-plus-pUHDTVV0.js → ui/assets/dark-plus.js} +0 -0
- /package/dist/{overlay/assets/dracula-soft-BKa-aqBv.js → ui/assets/dracula-soft.js} +0 -0
- /package/dist/{overlay/assets/dracula-BtZx2Kac.js → ui/assets/dracula.js} +0 -0
- /package/dist/{overlay/assets/everforest-dark-DMCBqXCK.js → ui/assets/everforest-dark.js} +0 -0
- /package/dist/{overlay/assets/everforest-light-BbXl82Em.js → ui/assets/everforest-light.js} +0 -0
- /package/dist/{overlay/assets/github-dark-default-BJPUVz4H.js → ui/assets/github-dark-default.js} +0 -0
- /package/dist/{overlay/assets/github-dark-dimmed-DUshB20C.js → ui/assets/github-dark-dimmed.js} +0 -0
- /package/dist/{overlay/assets/github-dark-high-contrast-D3aGCnF8.js → ui/assets/github-dark-high-contrast.js} +0 -0
- /package/dist/{overlay/assets/github-dark-DenFmJkN.js → ui/assets/github-dark.js} +0 -0
- /package/dist/{overlay/assets/github-light-default-D99KPAby.js → ui/assets/github-light-default.js} +0 -0
- /package/dist/{overlay/assets/github-light-high-contrast-BbmZE-Mp.js → ui/assets/github-light-high-contrast.js} +0 -0
- /package/dist/{overlay/assets/github-light-JYsPkUQd.js → ui/assets/github-light.js} +0 -0
- /package/dist/{overlay/assets/gruvbox-dark-hard-C2ND4cMr.js → ui/assets/gruvbox-dark-hard.js} +0 -0
- /package/dist/{overlay/assets/gruvbox-dark-medium-C8k4c8au.js → ui/assets/gruvbox-dark-medium.js} +0 -0
- /package/dist/{overlay/assets/gruvbox-dark-soft-xx9Q6FaG.js → ui/assets/gruvbox-dark-soft.js} +0 -0
- /package/dist/{overlay/assets/gruvbox-light-hard-BpUXv5in.js → ui/assets/gruvbox-light-hard.js} +0 -0
- /package/dist/{overlay/assets/gruvbox-light-medium-D3XFCoU1.js → ui/assets/gruvbox-light-medium.js} +0 -0
- /package/dist/{overlay/assets/gruvbox-light-soft-u7hpfz6Z.js → ui/assets/gruvbox-light-soft.js} +0 -0
- /package/dist/{overlay/assets/houston-BDYrDoDW.js → ui/assets/houston.js} +0 -0
- /package/dist/{overlay/assets/imba-CimUv-Uh.js → ui/assets/imba.js} +0 -0
- /package/dist/{overlay/assets/java-DY6VlHhP.js → ui/assets/java.js} +0 -0
- /package/dist/{overlay/assets/javascript-Dp1Jmi5H.js → ui/assets/javascript.js} +0 -0
- /package/dist/{overlay/assets/json-DxJze_jm.js → ui/assets/json.js} +0 -0
- /package/dist/{overlay/assets/json5-BT4Fjg39.js → ui/assets/json5.js} +0 -0
- /package/dist/{overlay/assets/jsonc-CHjZD8gR.js → ui/assets/jsonc.js} +0 -0
- /package/dist/{overlay/assets/jsonl-BGuvDmy9.js → ui/assets/jsonl.js} +0 -0
- /package/dist/{overlay/assets/jsx-BtKADgXT.js → ui/assets/jsx.js} +0 -0
- /package/dist/{overlay/assets/kanagawa-dragon-CiKur4Hl.js → ui/assets/kanagawa-dragon.js} +0 -0
- /package/dist/{overlay/assets/kanagawa-lotus-BKu-smKu.js → ui/assets/kanagawa-lotus.js} +0 -0
- /package/dist/{overlay/assets/kanagawa-wave-CQwozSzG.js → ui/assets/kanagawa-wave.js} +0 -0
- /package/dist/{overlay/assets/laserwave-6a00oqik.js → ui/assets/laserwave.js} +0 -0
- /package/dist/{overlay/assets/less-B1GLI2Di.js → ui/assets/less.js} +0 -0
- /package/dist/{overlay/assets/light-plus-CZuVqSLX.js → ui/assets/light-plus.js} +0 -0
- /package/dist/{overlay/assets/markdown-CrScaQ96.js → ui/assets/markdown.js} +0 -0
- /package/dist/{overlay/assets/material-theme-darker-CkRroheE.js → ui/assets/material-theme-darker.js} +0 -0
- /package/dist/{overlay/assets/material-theme-lighter-BUBw43Yz.js → ui/assets/material-theme-lighter.js} +0 -0
- /package/dist/{overlay/assets/material-theme-ocean-ClGX14Ja.js → ui/assets/material-theme-ocean.js} +0 -0
- /package/dist/{overlay/assets/material-theme-palenight-C1RVm8K1.js → ui/assets/material-theme-palenight.js} +0 -0
- /package/dist/{overlay/assets/material-theme-D6KBX41T.js → ui/assets/material-theme.js} +0 -0
- /package/dist/{overlay/assets/mdx-BOhZZUJ8.js → ui/assets/mdx.js} +0 -0
- /package/dist/{overlay/assets/min-dark-C7ak0t6c.js → ui/assets/min-dark.js} +0 -0
- /package/dist/{overlay/assets/min-light-CKFxVcPp.js → ui/assets/min-light.js} +0 -0
- /package/dist/{overlay/assets/monokai-C1KBYcO0.js → ui/assets/monokai.js} +0 -0
- /package/dist/{overlay/assets/night-owl-Bm2rzalh.js → ui/assets/night-owl.js} +0 -0
- /package/dist/{overlay/assets/nord-CC5OiUXg.js → ui/assets/nord.js} +0 -0
- /package/dist/{overlay/assets/one-dark-pro-DTA3VF0_.js → ui/assets/one-dark-pro.js} +0 -0
- /package/dist/{overlay/assets/one-light-D9sNaUtq.js → ui/assets/one-light.js} +0 -0
- /package/dist/{overlay/assets/plastic-CSTz3KZp.js → ui/assets/plastic.js} +0 -0
- /package/dist/{overlay/assets/poimandres-C-VADXHD.js → ui/assets/poimandres.js} +0 -0
- /package/dist/{overlay/assets/postcss-05aHdL-n.js → ui/assets/postcss.js} +0 -0
- /package/dist/{overlay/assets/python-BFNSHbwJ.js → ui/assets/python.js} +0 -0
- /package/dist/{overlay/assets/r-Bm0uF0U2.js → ui/assets/r.js} +0 -0
- /package/dist/{overlay/assets/red-7y8PH7HH.js → ui/assets/red.js} +0 -0
- /package/dist/{overlay/assets/regexp-BazyLpPg.js → ui/assets/regexp.js} +0 -0
- /package/dist/{overlay/assets/rose-pine-dawn-ClRRUdXX.js → ui/assets/rose-pine-dawn.js} +0 -0
- /package/dist/{overlay/assets/rose-pine-moon-ucNn3Gm8.js → ui/assets/rose-pine-moon.js} +0 -0
- /package/dist/{overlay/assets/rose-pine-Cr4kwgAY.js → ui/assets/rose-pine.js} +0 -0
- /package/dist/{overlay/assets/sass-DxHp5rTx.js → ui/assets/sass.js} +0 -0
- /package/dist/{overlay/assets/shellscript-InADTalH.js → ui/assets/shellscript.js} +0 -0
- /package/dist/{overlay/assets/slack-dark-i7wN4OET.js → ui/assets/slack-dark.js} +0 -0
- /package/dist/{overlay/assets/slack-ochin-ndHf0LoP.js → ui/assets/slack-ochin.js} +0 -0
- /package/dist/{overlay/assets/snazzy-light-BlSJXAu4.js → ui/assets/snazzy-light.js} +0 -0
- /package/dist/{overlay/assets/solarized-dark-UTmkh7lw.js → ui/assets/solarized-dark.js} +0 -0
- /package/dist/{overlay/assets/solarized-light-BheCkDPT.js → ui/assets/solarized-light.js} +0 -0
- /package/dist/{overlay/assets/sql-Cn_v3PB0.js → ui/assets/sql.js} +0 -0
- /package/dist/{overlay/assets/stylus-CyKEU1Ej.js → ui/assets/stylus.js} +0 -0
- /package/dist/{overlay/assets/synthwave-84-NU3C_KFZ.js → ui/assets/synthwave-84.js} +0 -0
- /package/dist/{overlay/assets/tokyo-night-DP4TmcQl.js → ui/assets/tokyo-night.js} +0 -0
- /package/dist/{overlay/assets/tsx-B8rCNbgL.js → ui/assets/tsx.js} +0 -0
- /package/dist/{overlay/assets/typescript-mg6ATTE8.js → ui/assets/typescript.js} +0 -0
- /package/dist/{overlay/assets/vesper-BckBta1U.js → ui/assets/vesper.js} +0 -0
- /package/dist/{overlay/assets/vitesse-black-BoGvW84i.js → ui/assets/vitesse-black.js} +0 -0
- /package/dist/{overlay/assets/vitesse-dark-Cym-eLtO.js → ui/assets/vitesse-dark.js} +0 -0
- /package/dist/{overlay/assets/vitesse-light-CcmG315c.js → ui/assets/vitesse-light.js} +0 -0
- /package/dist/{overlay/assets/wasm-BBXxrAl7.js → ui/assets/wasm.js} +0 -0
- /package/dist/{overlay/assets/wasm-DQxwEHae.js → ui/assets/wasm2.js} +0 -0
- /package/dist/{overlay/assets/wgsl-DY4iK1q1.js → ui/assets/wgsl.js} +0 -0
- /package/dist/{overlay/assets/wit-CQMQOlTg.js → ui/assets/wit.js} +0 -0
- /package/dist/{overlay/assets/yaml-DaO7k5B1.js → ui/assets/yaml.js} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { captureException } from "@sentry/core";
|
|
2
|
+
import { EventSource } from "eventsource";
|
|
3
|
+
import { SENTRY_CONTENT_TYPE } from "../../shared/constants.js";
|
|
4
|
+
import { applyFormatter } from "../formatters/index.js";
|
|
5
|
+
import { logger } from "../logger.js";
|
|
6
|
+
import { setupSpotlight } from "../main.js";
|
|
7
|
+
import { getSpotlightURL } from "../utils/extras.js";
|
|
8
|
+
import { getBuffer } from "../utils/getBuffer.js";
|
|
9
|
+
import "../parser/helpers.js";
|
|
10
|
+
import "uuidv7";
|
|
11
|
+
import { formatters } from "../formatters/human/index.js";
|
|
12
|
+
import { formatters as formatters$1 } from "../formatters/json/index.js";
|
|
13
|
+
import { formatters as formatters$2 } from "../formatters/logfmt/index.js";
|
|
14
|
+
import { formatters as formatters$3 } from "../formatters/md/index.js";
|
|
15
|
+
const NAME_TO_TYPE_MAPPING = Object.freeze({
|
|
16
|
+
traces: ["transaction", "span"],
|
|
17
|
+
// profiles: ["profile"],
|
|
18
|
+
logs: ["log"],
|
|
19
|
+
attachments: ["attachment"],
|
|
20
|
+
errors: ["event"]
|
|
21
|
+
// sessions: ["session"],
|
|
22
|
+
// replays: ["replay_video"],
|
|
23
|
+
// client_report
|
|
24
|
+
});
|
|
25
|
+
const SUPPORTED_ENVELOPE_TYPES = new Set(Object.values(NAME_TO_TYPE_MAPPING).flat());
|
|
26
|
+
const EVERYTHING_MAGIC_WORDS = /* @__PURE__ */ new Set(["everything", "all", "*"]);
|
|
27
|
+
const SUPPORTED_TAIL_ARGS = /* @__PURE__ */ new Set([...Object.keys(NAME_TO_TYPE_MAPPING), ...EVERYTHING_MAGIC_WORDS]);
|
|
28
|
+
const FORMATTERS = {
|
|
29
|
+
md: formatters$3,
|
|
30
|
+
logfmt: formatters$2,
|
|
31
|
+
json: formatters$1,
|
|
32
|
+
human: formatters
|
|
33
|
+
};
|
|
34
|
+
const connectUpstream = async (port) => new Promise((resolve, reject) => {
|
|
35
|
+
const client = new EventSource(getSpotlightURL(port));
|
|
36
|
+
client.onerror = reject;
|
|
37
|
+
client.onopen = () => resolve(client);
|
|
38
|
+
});
|
|
39
|
+
async function tail({ port, cmdArgs, basePath, filesToServe, format = "logfmt" }, onItem) {
|
|
40
|
+
const eventTypes = cmdArgs.length > 0 ? cmdArgs.map((arg) => arg.toLowerCase()) : ["everything"];
|
|
41
|
+
for (const eventType of eventTypes) {
|
|
42
|
+
if (!SUPPORTED_TAIL_ARGS.has(eventType)) {
|
|
43
|
+
logger.error(`Error: Unsupported argument "${eventType}".`);
|
|
44
|
+
logger.error(`Supported arguments are: ${[...SUPPORTED_TAIL_ARGS].join(", ")}`);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const formatter = FORMATTERS[format];
|
|
49
|
+
const types = eventTypes.some((type) => EVERYTHING_MAGIC_WORDS.has(type)) ? SUPPORTED_ENVELOPE_TYPES : /* @__PURE__ */ new Set([...eventTypes.flatMap((type) => NAME_TO_TYPE_MAPPING[type] || [])]);
|
|
50
|
+
const onEnvelope = (envelope) => {
|
|
51
|
+
const [envelopeHeader, items] = envelope;
|
|
52
|
+
const formatted = [];
|
|
53
|
+
for (const item of items) {
|
|
54
|
+
const [{ type }, payload] = item;
|
|
55
|
+
if (!type || !types.has(type)) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (!(type in formatter)) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (onItem && !onItem(type, item, envelopeHeader)) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
formatted.push(...applyFormatter(formatter, type, payload, envelopeHeader));
|
|
65
|
+
}
|
|
66
|
+
if (formatted.length > 0) {
|
|
67
|
+
console.log(formatted.join("\n"));
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
try {
|
|
71
|
+
const client = await connectUpstream(port);
|
|
72
|
+
client.addEventListener(SENTRY_CONTENT_TYPE, (event) => onEnvelope(JSON.parse(event.data)));
|
|
73
|
+
return void 0;
|
|
74
|
+
} catch (err) {
|
|
75
|
+
if (err instanceof Error && !err.message?.includes(port.toString())) {
|
|
76
|
+
captureException(err);
|
|
77
|
+
logger.error("Error when trying to connect to upstream sidecar:");
|
|
78
|
+
logger.error(err);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const serverInstance = await setupSpotlight({ port, filesToServe, basePath, isStandalone: true });
|
|
83
|
+
getBuffer().subscribe((container) => {
|
|
84
|
+
const parsedEnvelope = container.getParsedEnvelope();
|
|
85
|
+
if (parsedEnvelope) {
|
|
86
|
+
onEnvelope(parsedEnvelope.envelope);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
return serverInstance;
|
|
90
|
+
}
|
|
91
|
+
export {
|
|
92
|
+
EVERYTHING_MAGIC_WORDS,
|
|
93
|
+
NAME_TO_TYPE_MAPPING,
|
|
94
|
+
SUPPORTED_TAIL_ARGS,
|
|
95
|
+
tail as default
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=tail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.js","sources":["../../../src/server/cli/tail.ts"],"sourcesContent":["import type { ServerType } from \"@hono/node-server\";\nimport { captureException } from \"@sentry/core\";\nimport { EventSource } from \"eventsource\";\nimport { SENTRY_CONTENT_TYPE } from \"../constants.ts\";\nimport {\n type FormatterRegistry,\n type FormatterType,\n applyFormatter,\n humanFormatters,\n jsonFormatters,\n logfmtFormatters,\n mdFormatters,\n} from \"../formatters/index.ts\";\nimport { logger } from \"../logger.ts\";\nimport { setupSpotlight } from \"../main.ts\";\nimport type { ParsedEnvelope } from \"../parser/index.ts\";\nimport type { CLIHandlerOptions } from \"../types/cli.ts\";\nimport { getSpotlightURL } from \"../utils/extras.ts\";\nimport { getBuffer } from \"../utils/index.ts\";\n\nexport type OnItemCallback = (\n type: string,\n item: ParsedEnvelope[\"envelope\"][1][number],\n envelopeHeader: ParsedEnvelope[\"envelope\"][0],\n) => boolean;\nexport const NAME_TO_TYPE_MAPPING: Record<string, string[]> = Object.freeze({\n traces: [\"transaction\", \"span\"],\n // profiles: [\"profile\"],\n logs: [\"log\"],\n attachments: [\"attachment\"],\n errors: [\"event\"],\n // sessions: [\"session\"],\n // replays: [\"replay_video\"],\n // client_report\n});\n\nconst SUPPORTED_ENVELOPE_TYPES = new Set(Object.values(NAME_TO_TYPE_MAPPING).flat());\nexport const EVERYTHING_MAGIC_WORDS = new Set([\"everything\", \"all\", \"*\"]);\nexport const SUPPORTED_TAIL_ARGS = new Set([...Object.keys(NAME_TO_TYPE_MAPPING), ...EVERYTHING_MAGIC_WORDS]);\n\nconst FORMATTERS: Record<FormatterType, FormatterRegistry> = {\n md: mdFormatters,\n logfmt: logfmtFormatters,\n json: jsonFormatters,\n human: humanFormatters,\n};\n\nconst connectUpstream = async (port: number) =>\n new Promise<EventSource>((resolve, reject) => {\n const client = new EventSource(getSpotlightURL(port));\n client.onerror = reject;\n client.onopen = () => resolve(client);\n });\n\nexport default async function tail(\n { port, cmdArgs, basePath, filesToServe, format = \"logfmt\" }: CLIHandlerOptions,\n onItem?: OnItemCallback,\n): Promise<ServerType | undefined> {\n const eventTypes = cmdArgs.length > 0 ? cmdArgs.map(arg => arg.toLowerCase()) : [\"everything\"];\n for (const eventType of eventTypes) {\n if (!SUPPORTED_TAIL_ARGS.has(eventType)) {\n logger.error(`Error: Unsupported argument \"${eventType}\".`);\n logger.error(`Supported arguments are: ${[...SUPPORTED_TAIL_ARGS].join(\", \")}`);\n process.exit(1);\n }\n }\n\n const formatter = FORMATTERS[format];\n const types = eventTypes.some(type => EVERYTHING_MAGIC_WORDS.has(type))\n ? SUPPORTED_ENVELOPE_TYPES\n : new Set([...eventTypes.flatMap(type => NAME_TO_TYPE_MAPPING[type] || [])]);\n const onEnvelope: (envelope: ParsedEnvelope[\"envelope\"]) => void = envelope => {\n const [envelopeHeader, items] = envelope;\n const formatted: string[] = [];\n\n for (const item of items) {\n const [{ type }, payload] = item;\n\n if (!type || !types.has(type)) {\n // Skip if not a type we're interested in\n continue;\n }\n\n // Check if this event type is supported by the formatter\n if (!(type in formatter)) {\n continue;\n }\n\n if (onItem && !onItem(type, item, envelopeHeader)) {\n continue;\n }\n\n formatted.push(...applyFormatter(formatter, type as keyof FormatterRegistry, payload, envelopeHeader));\n }\n\n if (formatted.length > 0) {\n console.log(formatted.join(\"\\n\"));\n }\n };\n\n // try to connect to an already existing server first\n try {\n const client = await connectUpstream(port);\n client.addEventListener(SENTRY_CONTENT_TYPE, event => onEnvelope!(JSON.parse(event.data)));\n // Early return - don't start our own server if we can connect to an upstream one\n return undefined;\n } catch (err) {\n // if we fail, fine then we'll start our own\n if (err instanceof Error && !err.message?.includes(port.toString())) {\n captureException(err);\n logger.error(\"Error when trying to connect to upstream sidecar:\");\n logger.error(err);\n process.exit(1);\n }\n }\n\n const serverInstance = await setupSpotlight({ port, filesToServe, basePath, isStandalone: true });\n\n // Subscribe the onEnvelope callback to the message buffer\n // This ensures it gets called whenever any envelope is added to the buffer\n getBuffer().subscribe(container => {\n const parsedEnvelope = container.getParsedEnvelope();\n if (parsedEnvelope) {\n onEnvelope(parsedEnvelope.envelope);\n }\n });\n\n return serverInstance;\n}\n"],"names":["mdFormatters","logfmtFormatters","jsonFormatters","humanFormatters"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FormatterType } from './formatters/types.ts';
|
|
2
|
+
import { CLIHandler, CLIHandlerOptions } from './types/cli.ts';
|
|
3
|
+
export type CLIArgs = {
|
|
4
|
+
port: number;
|
|
5
|
+
debug: boolean;
|
|
6
|
+
help: boolean;
|
|
7
|
+
format: FormatterType;
|
|
8
|
+
cmd: string | undefined;
|
|
9
|
+
cmdArgs: string[];
|
|
10
|
+
};
|
|
11
|
+
export declare function parseCLIArgs(): CLIArgs;
|
|
12
|
+
export declare const CLI_CMD_MAP: Map<string | undefined, CLIHandler>;
|
|
13
|
+
export declare function main({ basePath, filesToServe, }?: {
|
|
14
|
+
basePath?: CLIHandlerOptions["basePath"];
|
|
15
|
+
filesToServe?: CLIHandlerOptions["filesToServe"];
|
|
16
|
+
}): Promise<any>;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { parseArgs } from "node:util";
|
|
2
|
+
import showHelp from "./cli/help.js";
|
|
3
|
+
import mcp from "./cli/mcp.js";
|
|
4
|
+
import run from "./cli/run.js";
|
|
5
|
+
import server from "./cli/server.js";
|
|
6
|
+
import tail from "./cli/tail.js";
|
|
7
|
+
import { DEFAULT_PORT } from "./constants.js";
|
|
8
|
+
import { AVAILABLE_FORMATTERS } from "./formatters/types.js";
|
|
9
|
+
import { enableDebugLogging, logger } from "./logger.js";
|
|
10
|
+
const MAGIC_PORT_FOR_DYNAMIC_ASSIGNMENT = 0;
|
|
11
|
+
const PARSE_ARGS_CONFIG = {
|
|
12
|
+
options: {
|
|
13
|
+
port: {
|
|
14
|
+
type: "string",
|
|
15
|
+
short: "p",
|
|
16
|
+
default: void 0
|
|
17
|
+
},
|
|
18
|
+
debug: {
|
|
19
|
+
type: "boolean",
|
|
20
|
+
short: "d",
|
|
21
|
+
default: false
|
|
22
|
+
},
|
|
23
|
+
format: {
|
|
24
|
+
type: "string",
|
|
25
|
+
short: "f",
|
|
26
|
+
default: "human"
|
|
27
|
+
},
|
|
28
|
+
// Deprecated -- use the positional `mcp` argument instead
|
|
29
|
+
"stdio-mcp": {
|
|
30
|
+
type: "boolean",
|
|
31
|
+
default: false
|
|
32
|
+
},
|
|
33
|
+
help: {
|
|
34
|
+
type: "boolean",
|
|
35
|
+
short: "h",
|
|
36
|
+
default: false
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
allowPositionals: true,
|
|
40
|
+
strict: true
|
|
41
|
+
};
|
|
42
|
+
function parseCLIArgs() {
|
|
43
|
+
const args = Array.from(process.argv).slice(2);
|
|
44
|
+
const preParse = parseArgs({
|
|
45
|
+
...PARSE_ARGS_CONFIG,
|
|
46
|
+
strict: false,
|
|
47
|
+
tokens: true
|
|
48
|
+
});
|
|
49
|
+
let cmdArgs = void 0;
|
|
50
|
+
const runToken = preParse.tokens.find((token) => token.kind === "positional" && token.value === "run");
|
|
51
|
+
if (runToken) {
|
|
52
|
+
const cutOff = preParse.tokens.find((token) => token.index > runToken.index && token.kind === "positional");
|
|
53
|
+
cmdArgs = cutOff ? args.splice(cutOff.index) : [];
|
|
54
|
+
}
|
|
55
|
+
const { values, positionals } = parseArgs({
|
|
56
|
+
args,
|
|
57
|
+
...PARSE_ARGS_CONFIG
|
|
58
|
+
});
|
|
59
|
+
const portInput = positionals.length === 1 && /^\d{1,5}$/.test(positionals[0]) ? positionals.shift() : values.port;
|
|
60
|
+
const port = portInput != null ? Number(portInput) : runToken ? MAGIC_PORT_FOR_DYNAMIC_ASSIGNMENT : DEFAULT_PORT;
|
|
61
|
+
if (Number.isNaN(port)) {
|
|
62
|
+
console.error(`Error: Invalid port number '${portInput}'`);
|
|
63
|
+
console.error("Port must be a valid number between 1 and 65535");
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
if (port < 0 || port > 65535) {
|
|
67
|
+
console.error(`Error: Port ${port} is out of valid range (1-65535 or 0 for automatic assignment)`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
if (values["stdio-mcp"]) {
|
|
71
|
+
positionals.unshift("mcp");
|
|
72
|
+
console.warn("Warning: --stdio-mcp is deprecated. Please use the positional argument 'mcp' instead.");
|
|
73
|
+
}
|
|
74
|
+
const format = values.format;
|
|
75
|
+
if (!AVAILABLE_FORMATTERS.includes(format)) {
|
|
76
|
+
console.error(`Error: Invalid format '${format}'`);
|
|
77
|
+
console.error(`Valid formats are: ${AVAILABLE_FORMATTERS.join(", ")}`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
const result = {
|
|
81
|
+
debug: values.debug,
|
|
82
|
+
help: values.help,
|
|
83
|
+
format,
|
|
84
|
+
port,
|
|
85
|
+
cmd: positionals[0],
|
|
86
|
+
cmdArgs: cmdArgs ?? positionals.slice(1)
|
|
87
|
+
};
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
const CLI_CMD_MAP = /* @__PURE__ */ new Map([
|
|
91
|
+
["help", showHelp],
|
|
92
|
+
["mcp", mcp],
|
|
93
|
+
["tail", tail],
|
|
94
|
+
["run", run],
|
|
95
|
+
["server", server],
|
|
96
|
+
[void 0, server]
|
|
97
|
+
]);
|
|
98
|
+
async function main({
|
|
99
|
+
basePath,
|
|
100
|
+
filesToServe
|
|
101
|
+
} = {}) {
|
|
102
|
+
let { cmd, cmdArgs, help, port, debug, format } = parseCLIArgs();
|
|
103
|
+
if (debug || process.env.SPOTLIGHT_DEBUG) {
|
|
104
|
+
enableDebugLogging(true);
|
|
105
|
+
}
|
|
106
|
+
const spotlightVersion = "4.6.0";
|
|
107
|
+
logger.info(`Spotlight by Sentry - v${spotlightVersion}`);
|
|
108
|
+
if (help) {
|
|
109
|
+
cmd = "help";
|
|
110
|
+
cmdArgs = [];
|
|
111
|
+
}
|
|
112
|
+
const handler = CLI_CMD_MAP.get(cmd) || showHelp;
|
|
113
|
+
return await handler({ cmd, cmdArgs, port, help, debug, format, basePath, filesToServe });
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
CLI_CMD_MAP,
|
|
117
|
+
main,
|
|
118
|
+
parseCLIArgs
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../../src/server/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { parseArgs } from \"node:util\";\nimport showHelp from \"./cli/help.ts\";\nimport mcp from \"./cli/mcp.ts\";\nimport run from \"./cli/run.ts\";\nimport server from \"./cli/server.ts\";\nimport tail from \"./cli/tail.ts\";\nimport { DEFAULT_PORT } from \"./constants.ts\";\nimport { AVAILABLE_FORMATTERS } from \"./formatters/types.ts\";\nimport type { FormatterType } from \"./formatters/types.ts\";\nimport { enableDebugLogging, logger } from \"./logger.ts\";\nimport type { CLIHandler, CLIHandlerOptions } from \"./types/cli.ts\";\n\n// When port is set to `0` for a server to listen on,\n// it tells the OS to find a random available port.\n// This can then be retrieved after the server starts.\nconst MAGIC_PORT_FOR_DYNAMIC_ASSIGNMENT = 0;\nconst PARSE_ARGS_CONFIG = {\n options: {\n port: {\n type: \"string\",\n short: \"p\",\n default: undefined,\n },\n debug: {\n type: \"boolean\",\n short: \"d\",\n default: false,\n },\n format: {\n type: \"string\",\n short: \"f\",\n default: \"human\",\n },\n // Deprecated -- use the positional `mcp` argument instead\n \"stdio-mcp\": {\n type: \"boolean\",\n default: false,\n },\n help: {\n type: \"boolean\",\n short: \"h\",\n default: false,\n },\n },\n allowPositionals: true,\n strict: true,\n} as const;\n\nexport type CLIArgs = {\n port: number;\n debug: boolean;\n help: boolean;\n format: FormatterType;\n cmd: string | undefined;\n cmdArgs: string[];\n};\n\nexport function parseCLIArgs(): CLIArgs {\n const args = Array.from(process.argv).slice(2);\n const preParse = parseArgs({\n ...PARSE_ARGS_CONFIG,\n strict: false,\n tokens: true,\n });\n let cmdArgs: string[] | undefined = undefined;\n const runToken = preParse.tokens.find(token => token.kind === \"positional\" && token.value === \"run\");\n if (runToken) {\n const cutOff = preParse.tokens.find(token => token.index > runToken.index && token.kind === \"positional\");\n cmdArgs = cutOff ? args.splice(cutOff.index) : [];\n }\n const { values, positionals } = parseArgs({\n args,\n ...PARSE_ARGS_CONFIG,\n });\n\n // Handle legacy positional argument for port (backwards compatibility)\n const portInput = positionals.length === 1 && /^\\d{1,5}$/.test(positionals[0]) ? positionals.shift() : values.port;\n\n const port = portInput != null ? Number(portInput) : runToken ? MAGIC_PORT_FOR_DYNAMIC_ASSIGNMENT : DEFAULT_PORT;\n if (Number.isNaN(port)) {\n // Validate port number\n console.error(`Error: Invalid port number '${portInput}'`);\n console.error(\"Port must be a valid number between 1 and 65535\");\n process.exit(1);\n }\n\n if (port < 0 || port > 65535) {\n console.error(`Error: Port ${port} is out of valid range (1-65535 or 0 for automatic assignment)`);\n process.exit(1);\n }\n\n if (values[\"stdio-mcp\"]) {\n positionals.unshift(\"mcp\");\n console.warn(\"Warning: --stdio-mcp is deprecated. Please use the positional argument 'mcp' instead.\");\n }\n\n const format = values.format as string;\n if (!AVAILABLE_FORMATTERS.includes(format as FormatterType)) {\n console.error(`Error: Invalid format '${format}'`);\n console.error(`Valid formats are: ${AVAILABLE_FORMATTERS.join(\", \")}`);\n process.exit(1);\n }\n\n const result: CLIArgs = {\n debug: values.debug as boolean,\n help: values.help as boolean,\n format: format as FormatterType,\n port,\n cmd: positionals[0],\n cmdArgs: cmdArgs ?? positionals.slice(1),\n };\n\n return result;\n}\nexport const CLI_CMD_MAP = new Map<string | undefined, CLIHandler>([\n [\"help\", showHelp],\n [\"mcp\", mcp],\n [\"tail\", tail],\n [\"run\", run],\n [\"server\", server],\n [undefined, server],\n]);\n\nexport async function main({\n basePath,\n filesToServe,\n}: { basePath?: CLIHandlerOptions[\"basePath\"]; filesToServe?: CLIHandlerOptions[\"filesToServe\"] } = {}) {\n let { cmd, cmdArgs, help, port, debug, format } = parseCLIArgs();\n if (debug || process.env.SPOTLIGHT_DEBUG) {\n enableDebugLogging(true);\n }\n const spotlightVersion = process.env.npm_package_version || \"{unknown}\";\n logger.info(`Spotlight by Sentry - v${spotlightVersion}`);\n\n if (help) {\n cmd = \"help\";\n cmdArgs = [];\n }\n\n const handler = CLI_CMD_MAP.get(cmd) || showHelp;\n\n return await handler({ cmd, cmdArgs, port, help, debug, format, basePath, filesToServe });\n}\n"],"names":[],"mappings":";;;;;;;;;AAgBA,MAAM,oCAAoC;AAC1C,MAAM,oBAAoB;AAAA,EACxB,SAAS;AAAA,IACP,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IAAA;AAAA,IAEX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IAAA;AAAA,IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IAAA;AAAA;AAAA,IAGX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,kBAAkB;AAAA,EAClB,QAAQ;AACV;AAWO,SAAS,eAAwB;AACtC,QAAM,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,MAAM,CAAC;AAC7C,QAAM,WAAW,UAAU;AAAA,IACzB,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,CACT;AACD,MAAI,UAAgC;AACpC,QAAM,WAAW,SAAS,OAAO,KAAK,CAAA,UAAS,MAAM,SAAS,gBAAgB,MAAM,UAAU,KAAK;AACnG,MAAI,UAAU;AACZ,UAAM,SAAS,SAAS,OAAO,KAAK,CAAA,UAAS,MAAM,QAAQ,SAAS,SAAS,MAAM,SAAS,YAAY;AACxG,cAAU,SAAS,KAAK,OAAO,OAAO,KAAK,IAAI,CAAA;AAAA,EACjD;AACA,QAAM,EAAE,QAAQ,YAAA,IAAgB,UAAU;AAAA,IACxC;AAAA,IACA,GAAG;AAAA,EAAA,CACJ;AAGD,QAAM,YAAY,YAAY,WAAW,KAAK,YAAY,KAAK,YAAY,CAAC,CAAC,IAAI,YAAY,MAAA,IAAU,OAAO;AAE9G,QAAM,OAAO,aAAa,OAAO,OAAO,SAAS,IAAI,WAAW,oCAAoC;AACpG,MAAI,OAAO,MAAM,IAAI,GAAG;AAEtB,YAAQ,MAAM,+BAA+B,SAAS,GAAG;AACzD,YAAQ,MAAM,iDAAiD;AAC/D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,OAAO,KAAK,OAAO,OAAO;AAC5B,YAAQ,MAAM,eAAe,IAAI,gEAAgE;AACjG,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,OAAO,WAAW,GAAG;AACvB,gBAAY,QAAQ,KAAK;AACzB,YAAQ,KAAK,uFAAuF;AAAA,EACtG;AAEA,QAAM,SAAS,OAAO;AACtB,MAAI,CAAC,qBAAqB,SAAS,MAAuB,GAAG;AAC3D,YAAQ,MAAM,0BAA0B,MAAM,GAAG;AACjD,YAAQ,MAAM,sBAAsB,qBAAqB,KAAK,IAAI,CAAC,EAAE;AACrE,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,SAAkB;AAAA,IACtB,OAAO,OAAO;AAAA,IACd,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA,KAAK,YAAY,CAAC;AAAA,IAClB,SAAS,WAAW,YAAY,MAAM,CAAC;AAAA,EAAA;AAGzC,SAAO;AACT;AACO,MAAM,kCAAkB,IAAoC;AAAA,EACjE,CAAC,QAAQ,QAAQ;AAAA,EACjB,CAAC,OAAO,GAAG;AAAA,EACX,CAAC,QAAQ,IAAI;AAAA,EACb,CAAC,OAAO,GAAG;AAAA,EACX,CAAC,UAAU,MAAM;AAAA,EACjB,CAAC,QAAW,MAAM;AACpB,CAAC;AAED,eAAsB,KAAK;AAAA,EACzB;AAAA,EACA;AACF,IAAoG,IAAI;AACtG,MAAI,EAAE,KAAK,SAAS,MAAM,MAAM,OAAO,OAAA,IAAW,aAAA;AAClD,MAAI,SAAS,QAAQ,IAAI,iBAAiB;AACxC,uBAAmB,IAAI;AAAA,EACzB;AACA,QAAM,mBAAmB;AACzB,SAAO,KAAK,0BAA0B,gBAAgB,EAAE;AAExD,MAAI,MAAM;AACR,UAAM;AACN,cAAU,CAAA;AAAA,EACZ;AAEA,QAAM,UAAU,YAAY,IAAI,GAAG,KAAK;AAExC,SAAO,MAAM,QAAQ,EAAE,KAAK,SAAS,MAAM,MAAM,OAAO,QAAQ,UAAU,aAAA,CAAc;AAC1F;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/server/constants.ts"],"sourcesContent":["// Re-export shared constants\nexport { CONTEXT_LINES_ENDPOINT, RAW_TYPES, SENTRY_CONTENT_TYPE } from \"../shared/constants.ts\";\n\n// Spotlight server constants\nexport const DEFAULT_PORT = 8969;\nexport const SERVER_IDENTIFIER = \"spotlight-by-sentry\";\n"],"names":[],"mappings":"AAIO,MAAM,eAAe;AACrB,MAAM,oBAAoB;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Envelope } from '@sentry/core';
|
|
2
|
+
import { SentryErrorEvent } from '../../parser/index.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Format an error event with envelope headers for source inference
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatError(event: SentryErrorEvent, envelopeHeader: Envelope[0]): string[];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { inferEnvelopeSource, formatLogLine } from "./utils.js";
|
|
2
|
+
function formatError(event, envelopeHeader) {
|
|
3
|
+
const source = inferEnvelopeSource(envelopeHeader, event);
|
|
4
|
+
const exception = event.exception?.values?.[0];
|
|
5
|
+
const errorType = exception?.type || "Error";
|
|
6
|
+
const errorValue = exception?.value || event.message || "Unknown error";
|
|
7
|
+
let message = `${errorType}: ${errorValue}`;
|
|
8
|
+
const frames = exception?.stacktrace?.frames;
|
|
9
|
+
if (frames?.length) {
|
|
10
|
+
const frame = frames.find((f) => f.in_app) || frames[frames.length - 1];
|
|
11
|
+
if (frame) {
|
|
12
|
+
if (frame.filename && frame.lineno) {
|
|
13
|
+
const location = frame.colno ? `${frame.filename}:${frame.lineno}:${frame.colno}` : `${frame.filename}:${frame.lineno}`;
|
|
14
|
+
message += ` [${location}]`;
|
|
15
|
+
} else if (frame.filename) {
|
|
16
|
+
message += ` [${frame.filename}]`;
|
|
17
|
+
}
|
|
18
|
+
if (frame.function && !message.includes(frame.function)) {
|
|
19
|
+
message += ` [${frame.function}]`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return [formatLogLine(event.timestamp, source, "error", message)];
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
formatError
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../../../../src/server/formatters/human/errors.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport type { SentryErrorEvent } from \"../../parser/index.ts\";\nimport { formatLogLine, inferEnvelopeSource } from \"./utils.ts\";\n\n/**\n * Format an error event with envelope headers for source inference\n */\nexport function formatError(event: SentryErrorEvent, envelopeHeader: Envelope[0]): string[] {\n const source = inferEnvelopeSource(envelopeHeader, event);\n\n const exception = event.exception?.values?.[0];\n const errorType = exception?.type || \"Error\";\n const errorValue = exception?.value || event.message || \"Unknown error\";\n\n let message = `${errorType}: ${errorValue}`;\n\n const frames = exception?.stacktrace?.frames;\n if (frames?.length) {\n const frame = frames.find((f: any) => f.in_app) || frames[frames.length - 1];\n if (frame) {\n if (frame.filename && frame.lineno) {\n const location = frame.colno\n ? `${frame.filename}:${frame.lineno}:${frame.colno}`\n : `${frame.filename}:${frame.lineno}`;\n message += ` [${location}]`;\n } else if (frame.filename) {\n message += ` [${frame.filename}]`;\n }\n\n if (frame.function && !message.includes(frame.function)) {\n message += ` [${frame.function}]`;\n }\n }\n }\n\n return [formatLogLine(event.timestamp, source, \"error\", message)];\n}\n"],"names":[],"mappings":";AAOO,SAAS,YAAY,OAAyB,gBAAuC;AAC1F,QAAM,SAAS,oBAAoB,gBAAgB,KAAK;AAExD,QAAM,YAAY,MAAM,WAAW,SAAS,CAAC;AAC7C,QAAM,YAAY,WAAW,QAAQ;AACrC,QAAM,aAAa,WAAW,SAAS,MAAM,WAAW;AAExD,MAAI,UAAU,GAAG,SAAS,KAAK,UAAU;AAEzC,QAAM,SAAS,WAAW,YAAY;AACtC,MAAI,QAAQ,QAAQ;AAClB,UAAM,QAAQ,OAAO,KAAK,CAAC,MAAW,EAAE,MAAM,KAAK,OAAO,OAAO,SAAS,CAAC;AAC3E,QAAI,OAAO;AACT,UAAI,MAAM,YAAY,MAAM,QAAQ;AAClC,cAAM,WAAW,MAAM,QACnB,GAAG,MAAM,QAAQ,IAAI,MAAM,MAAM,IAAI,MAAM,KAAK,KAChD,GAAG,MAAM,QAAQ,IAAI,MAAM,MAAM;AACrC,mBAAW,KAAK,QAAQ;AAAA,MAC1B,WAAW,MAAM,UAAU;AACzB,mBAAW,KAAK,MAAM,QAAQ;AAAA,MAChC;AAEA,UAAI,MAAM,YAAY,CAAC,QAAQ,SAAS,MAAM,QAAQ,GAAG;AACvD,mBAAW,KAAK,MAAM,QAAQ;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,CAAC,cAAc,MAAM,WAAW,QAAQ,SAAS,OAAO,CAAC;AAClE;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isTraceEvent, isLogEvent, isErrorEvent } from "../../parser/helpers.js";
|
|
2
|
+
import { formatError } from "./errors.js";
|
|
3
|
+
import { formatLog } from "./logs.js";
|
|
4
|
+
import { formatTrace } from "./traces.js";
|
|
5
|
+
const formatters = {
|
|
6
|
+
event: { typeGuard: isErrorEvent, format: formatError },
|
|
7
|
+
log: { typeGuard: isLogEvent, format: formatLog },
|
|
8
|
+
transaction: { typeGuard: isTraceEvent, format: formatTrace }
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
formatters
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/server/formatters/human/index.ts"],"sourcesContent":["import { isErrorEvent, isLogEvent, isTraceEvent } from \"../../parser/helpers.ts\";\nimport type { FormatterRegistry } from \"../types.ts\";\nimport { formatError } from \"./errors.ts\";\nimport { formatLog } from \"./logs.ts\";\nimport { formatTrace } from \"./traces.ts\";\n\nexport const formatters: FormatterRegistry = {\n event: { typeGuard: isErrorEvent, format: formatError },\n log: { typeGuard: isLogEvent, format: formatLog },\n transaction: { typeGuard: isTraceEvent, format: formatTrace },\n};\n"],"names":[],"mappings":";;;;AAMO,MAAM,aAAgC;AAAA,EAC3C,OAAO,EAAE,WAAW,cAAc,QAAQ,YAAA;AAAA,EAC1C,KAAK,EAAE,WAAW,YAAY,QAAQ,UAAA;AAAA,EACtC,aAAa,EAAE,WAAW,cAAc,QAAQ,YAAA;AAClD;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Envelope } from '@sentry/core';
|
|
2
|
+
import { SentryLogEvent } from '../../parser/index.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Format a log event with envelope headers for source inference
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatLog(event: SentryLogEvent, envelopeHeader: Envelope[0]): string[];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { inferEnvelopeSource, formatLogLine } from "./utils.js";
|
|
2
|
+
function formatSingleLog(log, source) {
|
|
3
|
+
const level = log.level || "log";
|
|
4
|
+
const message = log.body || "";
|
|
5
|
+
const attrs = [];
|
|
6
|
+
if (log.attributes) {
|
|
7
|
+
for (const [key, attr] of Object.entries(log.attributes)) {
|
|
8
|
+
if (!key.startsWith("sentry.") && attr.value !== void 0 && attr.value !== null) {
|
|
9
|
+
attrs.push(`[${key}=${attr.value}]`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const fullMessage = attrs.length > 0 ? `${message} ${attrs.join(" ")}` : message;
|
|
14
|
+
return formatLogLine(log.timestamp, source, level, fullMessage);
|
|
15
|
+
}
|
|
16
|
+
function formatLog(event, envelopeHeader) {
|
|
17
|
+
const source = inferEnvelopeSource(envelopeHeader, event);
|
|
18
|
+
return event.items.map((log) => formatSingleLog(log, source));
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
formatLog
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sources":["../../../../src/server/formatters/human/logs.ts"],"sourcesContent":["import type { Envelope, SerializedLog } from \"@sentry/core\";\nimport type { SentryLogEvent } from \"../../parser/index.ts\";\nimport { type SourceType, formatLogLine, inferEnvelopeSource } from \"./utils.ts\";\n\n/**\n * Format a single log entry with source inference\n */\nfunction formatSingleLog(log: SerializedLog, source: SourceType): string {\n const level = log.level || \"log\";\n const message = log.body || \"\";\n\n const attrs: string[] = [];\n if (log.attributes) {\n for (const [key, attr] of Object.entries(log.attributes)) {\n if (!key.startsWith(\"sentry.\") && attr.value !== undefined && attr.value !== null) {\n attrs.push(`[${key}=${attr.value}]`);\n }\n }\n }\n\n const fullMessage = attrs.length > 0 ? `${message} ${attrs.join(\" \")}` : message;\n\n return formatLogLine(log.timestamp, source, level, fullMessage);\n}\n\n/**\n * Format a log event with envelope headers for source inference\n */\nexport function formatLog(event: SentryLogEvent, envelopeHeader: Envelope[0]): string[] {\n const source = inferEnvelopeSource(envelopeHeader, event);\n return event.items.map(log => formatSingleLog(log, source));\n}\n"],"names":[],"mappings":";AAOA,SAAS,gBAAgB,KAAoB,QAA4B;AACvE,QAAM,QAAQ,IAAI,SAAS;AAC3B,QAAM,UAAU,IAAI,QAAQ;AAE5B,QAAM,QAAkB,CAAA;AACxB,MAAI,IAAI,YAAY;AAClB,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,IAAI,UAAU,GAAG;AACxD,UAAI,CAAC,IAAI,WAAW,SAAS,KAAK,KAAK,UAAU,UAAa,KAAK,UAAU,MAAM;AACjF,cAAM,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,MAAM,SAAS,IAAI,GAAG,OAAO,IAAI,MAAM,KAAK,GAAG,CAAC,KAAK;AAEzE,SAAO,cAAc,IAAI,WAAW,QAAQ,OAAO,WAAW;AAChE;AAKO,SAAS,UAAU,OAAuB,gBAAuC;AACtF,QAAM,SAAS,oBAAoB,gBAAgB,KAAK;AACxD,SAAO,MAAM,MAAM,IAAI,SAAO,gBAAgB,KAAK,MAAM,CAAC;AAC5D;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Envelope } from '@sentry/core';
|
|
2
|
+
import { SentryTransactionEvent } from '../../parser/index.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Format a trace/transaction event with envelope headers for source inference
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatTrace(event: SentryTransactionEvent, envelopeHeader: Envelope[0]): string[];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getDuration } from "../utils.js";
|
|
2
|
+
import { inferEnvelopeSource, formatLogLine } from "./utils.js";
|
|
3
|
+
function formatTrace(event, envelopeHeader) {
|
|
4
|
+
const source = inferEnvelopeSource(envelopeHeader, event);
|
|
5
|
+
const transaction = event.transaction;
|
|
6
|
+
const trace = event.contexts?.trace;
|
|
7
|
+
let message = transaction || trace?.description || "Transaction";
|
|
8
|
+
const op = trace?.op;
|
|
9
|
+
if (op && op !== "default" && op !== "unknown") {
|
|
10
|
+
message = `[${op}] ${message}`;
|
|
11
|
+
}
|
|
12
|
+
const duration = getDuration(event.timestamp, event.start_timestamp);
|
|
13
|
+
if (duration !== void 0) {
|
|
14
|
+
message += ` [${Math.round(duration)}ms]`;
|
|
15
|
+
}
|
|
16
|
+
const status = trace?.status;
|
|
17
|
+
if (status && status !== "ok") {
|
|
18
|
+
message += ` [${status}]`;
|
|
19
|
+
}
|
|
20
|
+
const spanCount = event.spans?.length;
|
|
21
|
+
if (spanCount && spanCount > 0) {
|
|
22
|
+
message += ` [${spanCount} span${spanCount === 1 ? "" : "s"}]`;
|
|
23
|
+
}
|
|
24
|
+
return [formatLogLine(event.timestamp, source, "trace", message)];
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
formatTrace
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=traces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traces.js","sources":["../../../../src/server/formatters/human/traces.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport type { SentryTransactionEvent } from \"../../parser/index.ts\";\nimport { getDuration } from \"../utils.ts\";\nimport { formatLogLine, inferEnvelopeSource } from \"./utils.ts\";\n\n/**\n * Format a trace/transaction event with envelope headers for source inference\n */\nexport function formatTrace(event: SentryTransactionEvent, envelopeHeader: Envelope[0]): string[] {\n const source = inferEnvelopeSource(envelopeHeader, event);\n\n const transaction = event.transaction;\n const trace = event.contexts?.trace;\n\n let message = transaction || trace?.description || \"Transaction\";\n\n const op = trace?.op;\n if (op && op !== \"default\" && op !== \"unknown\") {\n message = `[${op}] ${message}`;\n }\n\n const duration = getDuration(event.timestamp, event.start_timestamp);\n if (duration !== undefined) {\n message += ` [${Math.round(duration)}ms]`;\n }\n\n const status = trace?.status;\n if (status && status !== \"ok\") {\n message += ` [${status}]`;\n }\n\n const spanCount = event.spans?.length;\n if (spanCount && spanCount > 0) {\n message += ` [${spanCount} span${spanCount === 1 ? \"\" : \"s\"}]`;\n }\n\n return [formatLogLine(event.timestamp, source, \"trace\", message)];\n}\n"],"names":[],"mappings":";;AAQO,SAAS,YAAY,OAA+B,gBAAuC;AAChG,QAAM,SAAS,oBAAoB,gBAAgB,KAAK;AAExD,QAAM,cAAc,MAAM;AAC1B,QAAM,QAAQ,MAAM,UAAU;AAE9B,MAAI,UAAU,eAAe,OAAO,eAAe;AAEnD,QAAM,KAAK,OAAO;AAClB,MAAI,MAAM,OAAO,aAAa,OAAO,WAAW;AAC9C,cAAU,IAAI,EAAE,KAAK,OAAO;AAAA,EAC9B;AAEA,QAAM,WAAW,YAAY,MAAM,WAAW,MAAM,eAAe;AACnE,MAAI,aAAa,QAAW;AAC1B,eAAW,KAAK,KAAK,MAAM,QAAQ,CAAC;AAAA,EACtC;AAEA,QAAM,SAAS,OAAO;AACtB,MAAI,UAAU,WAAW,MAAM;AAC7B,eAAW,KAAK,MAAM;AAAA,EACxB;AAEA,QAAM,YAAY,MAAM,OAAO;AAC/B,MAAI,aAAa,YAAY,GAAG;AAC9B,eAAW,KAAK,SAAS,QAAQ,cAAc,IAAI,KAAK,GAAG;AAAA,EAC7D;AAEA,SAAO,CAAC,cAAc,MAAM,WAAW,QAAQ,SAAS,OAAO,CAAC;AAClE;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Envelope } from '@sentry/core';
|
|
2
|
+
export declare const SOURCE_TYPES: readonly ["browser", "mobile", "server"];
|
|
3
|
+
export type SourceType = (typeof SOURCE_TYPES)[number];
|
|
4
|
+
export declare const LOG_LEVELS: readonly ["error", "warning", "log", "info", "trace", "debug"];
|
|
5
|
+
export type LogLevel = (typeof LOG_LEVELS)[number];
|
|
6
|
+
export declare const SOURCE_COLORS: Record<SourceType, (text: string) => string>;
|
|
7
|
+
export declare const LOG_LEVEL_COLORS: Record<LogLevel, (text: string) => string>;
|
|
8
|
+
/**
|
|
9
|
+
* Infer the source of an envelope as browser, mobile, or server using multiple signals
|
|
10
|
+
* Priority order:
|
|
11
|
+
* 1. Sender User-Agent (from HTTP request header)
|
|
12
|
+
* 2. Platform & Runtime tags (from event payload)
|
|
13
|
+
* 3. SDK name (fallback)
|
|
14
|
+
*
|
|
15
|
+
* Rules based on https://release-registry.services.sentry.io/sdks
|
|
16
|
+
*/
|
|
17
|
+
export declare function inferEnvelopeSource(envelopeHeader: Envelope[0], event?: any): SourceType;
|
|
18
|
+
/**
|
|
19
|
+
* Format timestamp as local time HH:MM:SS
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatLocalTime(timestamp?: number | string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Padding helper for vertical alignment
|
|
24
|
+
*/
|
|
25
|
+
export declare function padLabel(label: string, width: number): string;
|
|
26
|
+
export declare const SOURCE_WIDTH: number;
|
|
27
|
+
export declare const TYPE_WIDTH: number;
|
|
28
|
+
/**
|
|
29
|
+
* Colorize time with dim gray
|
|
30
|
+
*/
|
|
31
|
+
export declare function colorizeTime(time: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Colorize source based on envelope source
|
|
34
|
+
*/
|
|
35
|
+
export declare function colorizeSource(source: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Colorize event type
|
|
38
|
+
*/
|
|
39
|
+
export declare function colorizeType(type: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Format a complete log line with proper alignment and colors
|
|
42
|
+
*/
|
|
43
|
+
export declare function formatLogLine(timestamp: number | string | undefined, source: SourceType, type: string, message: string): string;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { parseBrowserFromUserAgent } from "../../routes/stream/userAgent.js";
|
|
3
|
+
const SOURCE_TYPES = ["browser", "mobile", "server"];
|
|
4
|
+
const LOG_LEVELS = ["error", "warning", "log", "info", "trace", "debug"];
|
|
5
|
+
const SOURCE_COLORS = {
|
|
6
|
+
browser: chalk.yellow,
|
|
7
|
+
mobile: chalk.blue,
|
|
8
|
+
server: chalk.magenta
|
|
9
|
+
};
|
|
10
|
+
const LOG_LEVEL_COLORS = {
|
|
11
|
+
error: chalk.red.bold,
|
|
12
|
+
warning: chalk.hex("#FFA500"),
|
|
13
|
+
// Orange
|
|
14
|
+
log: chalk.white,
|
|
15
|
+
info: chalk.cyan,
|
|
16
|
+
trace: chalk.green,
|
|
17
|
+
debug: chalk.dim
|
|
18
|
+
};
|
|
19
|
+
function isBrowserUserAgent(userAgent) {
|
|
20
|
+
const parsed = parseBrowserFromUserAgent(userAgent);
|
|
21
|
+
return parsed !== "unknown" && (parsed.includes("Chrome") || parsed.includes("Firefox") || parsed.includes("Safari") || parsed.includes("Edge"));
|
|
22
|
+
}
|
|
23
|
+
function inferEnvelopeSource(envelopeHeader, event) {
|
|
24
|
+
const sdkName = envelopeHeader?.sdk?.name || "";
|
|
25
|
+
if (sdkName.includes("cocoa") || sdkName.includes("android") || sdkName.includes("react-native") || sdkName.includes("flutter") || sdkName.includes("capacitor") || sdkName.includes("cordova") || sdkName.includes("xamarin") || sdkName.includes("maui") || sdkName.includes("unity") || sdkName.includes("kotlin.kmp")) {
|
|
26
|
+
return "mobile";
|
|
27
|
+
}
|
|
28
|
+
const senderUserAgent = envelopeHeader.__spotlight_sender_user_agent;
|
|
29
|
+
if (senderUserAgent && typeof senderUserAgent === "string") {
|
|
30
|
+
if (isBrowserUserAgent(senderUserAgent)) {
|
|
31
|
+
return "browser";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (event?.tags?.runtime === "browser") {
|
|
35
|
+
return "browser";
|
|
36
|
+
}
|
|
37
|
+
if (event?.contexts?.runtime?.name) {
|
|
38
|
+
return "server";
|
|
39
|
+
}
|
|
40
|
+
if (event?.server_name) {
|
|
41
|
+
return "server";
|
|
42
|
+
}
|
|
43
|
+
const platform = event?.platform;
|
|
44
|
+
if (platform === "node" || platform === "python" || platform === "ruby" || platform === "php" || platform === "java" || platform === "go" || platform === "rust" || platform === "perl" || platform === "elixir" || platform === "csharp" || platform === "dotnet") {
|
|
45
|
+
return "server";
|
|
46
|
+
}
|
|
47
|
+
if (sdkName.startsWith("sentry.javascript.") && !sdkName.includes("node") && !sdkName.includes("bun") && !sdkName.includes("deno") && !sdkName.includes("electron") && !sdkName.includes("serverless") && !sdkName.includes("cloudflare") && !sdkName.includes("vercel-edge") && !sdkName.includes("wasm") && !sdkName.includes("opentelemetry") && !sdkName.includes("nextjs") && !sdkName.includes("remix") && !sdkName.includes("gatsby") && !sdkName.includes("astro") && !sdkName.includes("nuxt") && !sdkName.includes("sveltekit") && !sdkName.includes("solidstart") && !sdkName.includes("nestjs") && !sdkName.includes("tanstackstart")) {
|
|
48
|
+
return "browser";
|
|
49
|
+
}
|
|
50
|
+
if (sdkName.includes("blazor.webassembly")) {
|
|
51
|
+
return "browser";
|
|
52
|
+
}
|
|
53
|
+
return "server";
|
|
54
|
+
}
|
|
55
|
+
function formatLocalTime(timestamp) {
|
|
56
|
+
let date;
|
|
57
|
+
if (!timestamp) {
|
|
58
|
+
date = /* @__PURE__ */ new Date();
|
|
59
|
+
} else if (typeof timestamp === "string") {
|
|
60
|
+
date = new Date(timestamp);
|
|
61
|
+
} else {
|
|
62
|
+
date = new Date(timestamp * 1e3);
|
|
63
|
+
}
|
|
64
|
+
if (Number.isNaN(date.getTime())) {
|
|
65
|
+
return "??:??:??";
|
|
66
|
+
}
|
|
67
|
+
const hours = date.getHours().toString().padStart(2, "0");
|
|
68
|
+
const minutes = date.getMinutes().toString().padStart(2, "0");
|
|
69
|
+
const seconds = date.getSeconds().toString().padStart(2, "0");
|
|
70
|
+
return `${hours}:${minutes}:${seconds}`;
|
|
71
|
+
}
|
|
72
|
+
function padLabel(label, width) {
|
|
73
|
+
return label.padEnd(width);
|
|
74
|
+
}
|
|
75
|
+
const SOURCE_WIDTH = Math.max(...SOURCE_TYPES.map((s) => `[${s.toUpperCase()}]`.length));
|
|
76
|
+
const TYPE_WIDTH = Math.max(...LOG_LEVELS.map((l) => `[${l.toUpperCase()}]`.length));
|
|
77
|
+
function colorizeTime(time) {
|
|
78
|
+
return chalk.gray(time);
|
|
79
|
+
}
|
|
80
|
+
function colorizeSource(source) {
|
|
81
|
+
const bracketed = `[${source}]`;
|
|
82
|
+
const padded = padLabel(bracketed, SOURCE_WIDTH);
|
|
83
|
+
const colorFn = SOURCE_COLORS[source] || chalk.white;
|
|
84
|
+
return colorFn(padded);
|
|
85
|
+
}
|
|
86
|
+
function colorizeType(type) {
|
|
87
|
+
const bracketed = `[${type.toUpperCase()}]`;
|
|
88
|
+
const padded = padLabel(bracketed, TYPE_WIDTH);
|
|
89
|
+
const colorFn = LOG_LEVEL_COLORS[type.toLowerCase()] || chalk.white;
|
|
90
|
+
return colorFn(padded);
|
|
91
|
+
}
|
|
92
|
+
function formatLogLine(timestamp, source, type, message) {
|
|
93
|
+
const time = colorizeTime(formatLocalTime(timestamp));
|
|
94
|
+
const coloredSource = colorizeSource(source);
|
|
95
|
+
const coloredType = colorizeType(type);
|
|
96
|
+
return `${time} ${coloredType} ${coloredSource} ${message}`;
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
LOG_LEVELS,
|
|
100
|
+
LOG_LEVEL_COLORS,
|
|
101
|
+
SOURCE_COLORS,
|
|
102
|
+
SOURCE_TYPES,
|
|
103
|
+
SOURCE_WIDTH,
|
|
104
|
+
TYPE_WIDTH,
|
|
105
|
+
colorizeSource,
|
|
106
|
+
colorizeTime,
|
|
107
|
+
colorizeType,
|
|
108
|
+
formatLocalTime,
|
|
109
|
+
formatLogLine,
|
|
110
|
+
inferEnvelopeSource,
|
|
111
|
+
padLabel
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/server/formatters/human/utils.ts"],"sourcesContent":["import type { Envelope } from \"@sentry/core\";\nimport chalk from \"chalk\";\nimport { parseBrowserFromUserAgent } from \"../../routes/stream/userAgent.ts\";\n\nexport const SOURCE_TYPES = [\"browser\", \"mobile\", \"server\"] as const;\nexport type SourceType = (typeof SOURCE_TYPES)[number];\n\nexport const LOG_LEVELS = [\"error\", \"warning\", \"log\", \"info\", \"trace\", \"debug\"] as const;\nexport type LogLevel = (typeof LOG_LEVELS)[number];\n\nexport const SOURCE_COLORS: Record<SourceType, (text: string) => string> = {\n browser: chalk.yellow,\n mobile: chalk.blue,\n server: chalk.magenta,\n};\n\nexport const LOG_LEVEL_COLORS: Record<LogLevel, (text: string) => string> = {\n error: chalk.red.bold,\n warning: chalk.hex(\"#FFA500\"), // Orange\n log: chalk.white,\n info: chalk.cyan,\n trace: chalk.green,\n debug: chalk.dim,\n};\n\n/**\n * Helper to detect if a User-Agent string is from a browser\n */\nfunction isBrowserUserAgent(userAgent: string): boolean {\n const parsed = parseBrowserFromUserAgent(userAgent);\n return (\n parsed !== \"unknown\" &&\n (parsed.includes(\"Chrome\") || parsed.includes(\"Firefox\") || parsed.includes(\"Safari\") || parsed.includes(\"Edge\"))\n );\n}\n\n/**\n * Infer the source of an envelope as browser, mobile, or server using multiple signals\n * Priority order:\n * 1. Sender User-Agent (from HTTP request header)\n * 2. Platform & Runtime tags (from event payload)\n * 3. SDK name (fallback)\n *\n * Rules based on https://release-registry.services.sentry.io/sdks\n */\nexport function inferEnvelopeSource(envelopeHeader: Envelope[0], event?: any): SourceType {\n const sdkName = envelopeHeader?.sdk?.name || \"\";\n\n // 1. Mobile check (unchanged - already reliable from SDK name)\n // Mobile: Native mobile platforms and frameworks\n if (\n sdkName.includes(\"cocoa\") ||\n sdkName.includes(\"android\") ||\n sdkName.includes(\"react-native\") ||\n sdkName.includes(\"flutter\") ||\n sdkName.includes(\"capacitor\") ||\n sdkName.includes(\"cordova\") ||\n sdkName.includes(\"xamarin\") ||\n sdkName.includes(\"maui\") ||\n sdkName.includes(\"unity\") ||\n sdkName.includes(\"kotlin.kmp\")\n ) {\n return \"mobile\";\n }\n\n // 2. Sender User-Agent check\n const senderUserAgent = (envelopeHeader as any).__spotlight_sender_user_agent;\n if (senderUserAgent && typeof senderUserAgent === \"string\") {\n if (isBrowserUserAgent(senderUserAgent)) {\n return \"browser\";\n }\n // Server SDKs send server UAs like \"Node.js/*\", \"Python-urllib/*\", etc.\n // If we have a non-browser UA, we continue to further checks\n }\n\n // 3. Runtime tags check\n if (event?.tags?.runtime === \"browser\") {\n return \"browser\";\n }\n\n // 4. Platform & server-specific signals\n if (event?.contexts?.runtime?.name) {\n // Runtime context (node, CPython, etc.) indicates server\n return \"server\";\n }\n\n if (event?.server_name) {\n // server_name is a server-specific field\n return \"server\";\n }\n\n const platform = event?.platform;\n if (\n platform === \"node\" ||\n platform === \"python\" ||\n platform === \"ruby\" ||\n platform === \"php\" ||\n platform === \"java\" ||\n platform === \"go\" ||\n platform === \"rust\" ||\n platform === \"perl\" ||\n platform === \"elixir\" ||\n platform === \"csharp\" ||\n platform === \"dotnet\"\n ) {\n return \"server\";\n }\n\n // 5. SDK name check (existing logic as fallback)\n // Browser: JavaScript frameworks/libraries (excluding server/native runtimes and meta-frameworks)\n if (\n sdkName.startsWith(\"sentry.javascript.\") &&\n !sdkName.includes(\"node\") &&\n !sdkName.includes(\"bun\") &&\n !sdkName.includes(\"deno\") &&\n !sdkName.includes(\"electron\") &&\n !sdkName.includes(\"serverless\") &&\n !sdkName.includes(\"cloudflare\") &&\n !sdkName.includes(\"vercel-edge\") &&\n !sdkName.includes(\"wasm\") &&\n !sdkName.includes(\"opentelemetry\") &&\n !sdkName.includes(\"nextjs\") &&\n !sdkName.includes(\"remix\") &&\n !sdkName.includes(\"gatsby\") &&\n !sdkName.includes(\"astro\") &&\n !sdkName.includes(\"nuxt\") &&\n !sdkName.includes(\"sveltekit\") &&\n !sdkName.includes(\"solidstart\") &&\n !sdkName.includes(\"nestjs\") &&\n !sdkName.includes(\"tanstackstart\")\n ) {\n return \"browser\";\n }\n\n // Special case: Blazor WebAssembly runs in browser\n if (sdkName.includes(\"blazor.webassembly\")) {\n return \"browser\";\n }\n\n // Server: Everything else (node, python, ruby, go, php, java, dotnet, etc.)\n return \"server\";\n}\n\n/**\n * Format timestamp as local time HH:MM:SS\n */\nexport function formatLocalTime(timestamp?: number | string): string {\n let date: Date;\n\n if (!timestamp) {\n date = new Date();\n } else if (typeof timestamp === \"string\") {\n // Handle ISO string format (e.g., \"2023-11-22T16:23:50.406684Z\")\n date = new Date(timestamp);\n } else {\n // Handle Unix timestamp\n date = new Date(timestamp * 1000);\n }\n\n if (Number.isNaN(date.getTime())) {\n // placeholder with same width as valid timestamp for alignment in the logs\n return \"??:??:??\";\n }\n\n const hours = date.getHours().toString().padStart(2, \"0\");\n const minutes = date.getMinutes().toString().padStart(2, \"0\");\n const seconds = date.getSeconds().toString().padStart(2, \"0\");\n return `${hours}:${minutes}:${seconds}`;\n}\n\n/**\n * Padding helper for vertical alignment\n */\nexport function padLabel(label: string, width: number): string {\n return label.padEnd(width);\n}\n\n// Constants for consistent padding (adding brackets)\nexport const SOURCE_WIDTH = Math.max(...SOURCE_TYPES.map(s => `[${s.toUpperCase()}]`.length));\nexport const TYPE_WIDTH = Math.max(...LOG_LEVELS.map(l => `[${l.toUpperCase()}]`.length));\n\n/**\n * Colorize time with dim gray\n */\nexport function colorizeTime(time: string): string {\n return chalk.gray(time);\n}\n\n/**\n * Colorize source based on envelope source\n */\nexport function colorizeSource(source: string): string {\n const bracketed = `[${source}]`;\n const padded = padLabel(bracketed, SOURCE_WIDTH);\n const colorFn = SOURCE_COLORS[source as SourceType] || chalk.white;\n return colorFn(padded);\n}\n\n/**\n * Colorize event type\n */\nexport function colorizeType(type: string): string {\n const bracketed = `[${type.toUpperCase()}]`;\n const padded = padLabel(bracketed, TYPE_WIDTH);\n const colorFn = LOG_LEVEL_COLORS[type.toLowerCase() as LogLevel] || chalk.white;\n return colorFn(padded);\n}\n\n/**\n * Format a complete log line with proper alignment and colors\n */\nexport function formatLogLine(\n timestamp: number | string | undefined,\n source: SourceType,\n type: string,\n message: string,\n): string {\n const time = colorizeTime(formatLocalTime(timestamp));\n const coloredSource = colorizeSource(source);\n const coloredType = colorizeType(type);\n\n return `${time} ${coloredType} ${coloredSource} ${message}`;\n}\n"],"names":[],"mappings":";;AAIO,MAAM,eAAe,CAAC,WAAW,UAAU,QAAQ;AAGnD,MAAM,aAAa,CAAC,SAAS,WAAW,OAAO,QAAQ,SAAS,OAAO;AAGvE,MAAM,gBAA8D;AAAA,EACzE,SAAS,MAAM;AAAA,EACf,QAAQ,MAAM;AAAA,EACd,QAAQ,MAAM;AAChB;AAEO,MAAM,mBAA+D;AAAA,EAC1E,OAAO,MAAM,IAAI;AAAA,EACjB,SAAS,MAAM,IAAI,SAAS;AAAA;AAAA,EAC5B,KAAK,MAAM;AAAA,EACX,MAAM,MAAM;AAAA,EACZ,OAAO,MAAM;AAAA,EACb,OAAO,MAAM;AACf;AAKA,SAAS,mBAAmB,WAA4B;AACtD,QAAM,SAAS,0BAA0B,SAAS;AAClD,SACE,WAAW,cACV,OAAO,SAAS,QAAQ,KAAK,OAAO,SAAS,SAAS,KAAK,OAAO,SAAS,QAAQ,KAAK,OAAO,SAAS,MAAM;AAEnH;AAWO,SAAS,oBAAoB,gBAA6B,OAAyB;AACxF,QAAM,UAAU,gBAAgB,KAAK,QAAQ;AAI7C,MACE,QAAQ,SAAS,OAAO,KACxB,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,cAAc,KAC/B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,WAAW,KAC5B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,MAAM,KACvB,QAAQ,SAAS,OAAO,KACxB,QAAQ,SAAS,YAAY,GAC7B;AACA,WAAO;AAAA,EACT;AAGA,QAAM,kBAAmB,eAAuB;AAChD,MAAI,mBAAmB,OAAO,oBAAoB,UAAU;AAC1D,QAAI,mBAAmB,eAAe,GAAG;AACvC,aAAO;AAAA,IACT;AAAA,EAGF;AAGA,MAAI,OAAO,MAAM,YAAY,WAAW;AACtC,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,UAAU,SAAS,MAAM;AAElC,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,aAAa;AAEtB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,OAAO;AACxB,MACE,aAAa,UACb,aAAa,YACb,aAAa,UACb,aAAa,SACb,aAAa,UACb,aAAa,QACb,aAAa,UACb,aAAa,UACb,aAAa,YACb,aAAa,YACb,aAAa,UACb;AACA,WAAO;AAAA,EACT;AAIA,MACE,QAAQ,WAAW,oBAAoB,KACvC,CAAC,QAAQ,SAAS,MAAM,KACxB,CAAC,QAAQ,SAAS,KAAK,KACvB,CAAC,QAAQ,SAAS,MAAM,KACxB,CAAC,QAAQ,SAAS,UAAU,KAC5B,CAAC,QAAQ,SAAS,YAAY,KAC9B,CAAC,QAAQ,SAAS,YAAY,KAC9B,CAAC,QAAQ,SAAS,aAAa,KAC/B,CAAC,QAAQ,SAAS,MAAM,KACxB,CAAC,QAAQ,SAAS,eAAe,KACjC,CAAC,QAAQ,SAAS,QAAQ,KAC1B,CAAC,QAAQ,SAAS,OAAO,KACzB,CAAC,QAAQ,SAAS,QAAQ,KAC1B,CAAC,QAAQ,SAAS,OAAO,KACzB,CAAC,QAAQ,SAAS,MAAM,KACxB,CAAC,QAAQ,SAAS,WAAW,KAC7B,CAAC,QAAQ,SAAS,YAAY,KAC9B,CAAC,QAAQ,SAAS,QAAQ,KAC1B,CAAC,QAAQ,SAAS,eAAe,GACjC;AACA,WAAO;AAAA,EACT;AAGA,MAAI,QAAQ,SAAS,oBAAoB,GAAG;AAC1C,WAAO;AAAA,EACT;AAGA,SAAO;AACT;AAKO,SAAS,gBAAgB,WAAqC;AACnE,MAAI;AAEJ,MAAI,CAAC,WAAW;AACd,+BAAW,KAAA;AAAA,EACb,WAAW,OAAO,cAAc,UAAU;AAExC,WAAO,IAAI,KAAK,SAAS;AAAA,EAC3B,OAAO;AAEL,WAAO,IAAI,KAAK,YAAY,GAAI;AAAA,EAClC;AAEA,MAAI,OAAO,MAAM,KAAK,QAAA,CAAS,GAAG;AAEhC,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,KAAK,SAAA,EAAW,WAAW,SAAS,GAAG,GAAG;AACxD,QAAM,UAAU,KAAK,WAAA,EAAa,WAAW,SAAS,GAAG,GAAG;AAC5D,QAAM,UAAU,KAAK,WAAA,EAAa,WAAW,SAAS,GAAG,GAAG;AAC5D,SAAO,GAAG,KAAK,IAAI,OAAO,IAAI,OAAO;AACvC;AAKO,SAAS,SAAS,OAAe,OAAuB;AAC7D,SAAO,MAAM,OAAO,KAAK;AAC3B;AAGO,MAAM,eAAe,KAAK,IAAI,GAAG,aAAa,IAAI,CAAA,MAAK,IAAI,EAAE,YAAA,CAAa,IAAI,MAAM,CAAC;AACrF,MAAM,aAAa,KAAK,IAAI,GAAG,WAAW,IAAI,CAAA,MAAK,IAAI,EAAE,YAAA,CAAa,IAAI,MAAM,CAAC;AAKjF,SAAS,aAAa,MAAsB;AACjD,SAAO,MAAM,KAAK,IAAI;AACxB;AAKO,SAAS,eAAe,QAAwB;AACrD,QAAM,YAAY,IAAI,MAAM;AAC5B,QAAM,SAAS,SAAS,WAAW,YAAY;AAC/C,QAAM,UAAU,cAAc,MAAoB,KAAK,MAAM;AAC7D,SAAO,QAAQ,MAAM;AACvB;AAKO,SAAS,aAAa,MAAsB;AACjD,QAAM,YAAY,IAAI,KAAK,YAAA,CAAa;AACxC,QAAM,SAAS,SAAS,WAAW,UAAU;AAC7C,QAAM,UAAU,iBAAiB,KAAK,YAAA,CAAyB,KAAK,MAAM;AAC1E,SAAO,QAAQ,MAAM;AACvB;AAKO,SAAS,cACd,WACA,QACA,MACA,SACQ;AACR,QAAM,OAAO,aAAa,gBAAgB,SAAS,CAAC;AACpD,QAAM,gBAAgB,eAAe,MAAM;AAC3C,QAAM,cAAc,aAAa,IAAI;AAErC,SAAO,GAAG,IAAI,IAAI,WAAW,IAAI,aAAa,IAAI,OAAO;AAC3D;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Envelope, EnvelopeItem } from '@sentry/core';
|
|
2
|
+
import { FormatterRegistry } from './types.ts';
|
|
3
|
+
export * from './types.ts';
|
|
4
|
+
export { formatters as mdFormatters } from './md/index.ts';
|
|
5
|
+
export { formatters as logfmtFormatters } from './logfmt/index.ts';
|
|
6
|
+
export { formatters as jsonFormatters } from './json/index.ts';
|
|
7
|
+
export { formatters as humanFormatters } from './human/index.ts';
|
|
8
|
+
/**
|
|
9
|
+
* Generic function to get a formatter from registry and apply it
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyFormatter<K extends keyof FormatterRegistry>(registry: FormatterRegistry, eventType: K, payload: EnvelopeItem[1], envelopeHeader: Envelope[0]): string[];
|