an atproto based link aggregator

Add OpenTelemetry tracing and metrics with Honeycomb

- Add instrumentation.server.ts for SvelteKit auto-instrumentation
- Add ingester/instrumentation.ts with Jetstream-specific metrics
- Instrument Drizzle/libsql database queries via @kubiks/otel-drizzle
- Add cursor.ts for cleaner cursor management in ingester
- Configure SvelteKit experimental tracing and instrumentation
- Export traces and metrics to Honeycomb via HTTP/protobuf

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+1967 -67
+3
.env.example
··· 1 1 DATABASE_URL=file:local.db 2 + 3 + # Honeycomb telemetry (traces + metrics) - optional 4 + HONEYCOMB_API_KEY=
+29
CLAUDE.md
··· 91 91 - `src/lib/server/db/index.ts` - Database connections (contentDb, localDb) 92 92 - `src/ingester/main.ts` - Standalone ingester entry point 93 93 - `src/ingester/handler.ts` - Jetstream event handler 94 + - `src/instrumentation.server.ts` - OpenTelemetry tracing for SvelteKit 95 + - `src/ingester/instrumentation.ts` - OpenTelemetry tracing for ingester 94 96 - `fly.toml` - Webapp Fly.io config 95 97 - `fly.ingester.toml` - Ingester Fly.io config 96 98 - `litefs.yml` - LiteFS config for webapp (replica) 97 99 - `litefs.ingester.yml` - LiteFS config for ingester (primary) 98 100 - `docs/implementation_plan.md` - Full implementation roadmap 101 + 102 + ## OpenTelemetry Tracing (Honeycomb) 103 + 104 + Both the SvelteKit app and ingester send traces to Honeycomb. Enable by setting: 105 + 106 + ```bash 107 + # Required: Honeycomb API key 108 + HONEYCOMB_API_KEY=hcaik_01... 109 + 110 + # Optional: override service names (defaults shown) 111 + OTEL_SERVICE_NAME=papili-web # For SvelteKit 112 + OTEL_SERVICE_NAME=papili-ingester # For ingester 113 + ``` 114 + 115 + ### Local Development 116 + 117 + ```bash 118 + # Start dev server with tracing 119 + HONEYCOMB_API_KEY=your-api-key pnpm dev 120 + 121 + # Start ingester with tracing 122 + HONEYCOMB_API_KEY=your-api-key pnpm dev:ingester 123 + ``` 124 + 125 + View traces at https://ui.honeycomb.io 126 + 127 + Tracing is automatically disabled if `HONEYCOMB_API_KEY` is not set. 99 128 100 129 ## Deployment 101 130
+13
package.json
··· 74 74 "@atproto/identity": "^0.4.10", 75 75 "@atproto/lex-cbor": "^0.0.2", 76 76 "@atproto/oauth-client-node": "^0.3.12", 77 + "@grpc/grpc-js": "^1.14.2", 78 + "@kubiks/otel-drizzle": "^2.1.0", 79 + "@opentelemetry/api": "^1.9.0", 80 + "@opentelemetry/auto-instrumentations-node": "^0.67.2", 81 + "@opentelemetry/exporter-metrics-otlp-grpc": "^0.208.0", 82 + "@opentelemetry/exporter-metrics-otlp-proto": "^0.208.0", 83 + "@opentelemetry/exporter-trace-otlp-grpc": "^0.208.0", 84 + "@opentelemetry/exporter-trace-otlp-proto": "^0.208.0", 85 + "@opentelemetry/resources": "^2.2.0", 86 + "@opentelemetry/sdk-metrics": "^2.2.0", 87 + "@opentelemetry/sdk-node": "^0.208.0", 88 + "@opentelemetry/semantic-conventions": "^1.38.0", 89 + "import-in-the-middle": "^2.0.0", 77 90 "iron-session": "^8.0.4", 78 91 "ws": "^8.18.0" 79 92 }
+1576 -15
pnpm-lock.yaml
··· 20 20 '@atproto/oauth-client-node': 21 21 specifier: ^0.3.12 22 22 version: 0.3.12 23 + '@grpc/grpc-js': 24 + specifier: ^1.14.2 25 + version: 1.14.2 26 + '@kubiks/otel-drizzle': 27 + specifier: ^2.1.0 28 + version: 2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20251205.0)(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(better-sqlite3@12.5.0)) 29 + '@opentelemetry/api': 30 + specifier: ^1.9.0 31 + version: 1.9.0 32 + '@opentelemetry/auto-instrumentations-node': 33 + specifier: ^0.67.2 34 + version: 0.67.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)) 35 + '@opentelemetry/exporter-metrics-otlp-grpc': 36 + specifier: ^0.208.0 37 + version: 0.208.0(@opentelemetry/api@1.9.0) 38 + '@opentelemetry/exporter-metrics-otlp-proto': 39 + specifier: ^0.208.0 40 + version: 0.208.0(@opentelemetry/api@1.9.0) 41 + '@opentelemetry/exporter-trace-otlp-grpc': 42 + specifier: ^0.208.0 43 + version: 0.208.0(@opentelemetry/api@1.9.0) 44 + '@opentelemetry/exporter-trace-otlp-proto': 45 + specifier: ^0.208.0 46 + version: 0.208.0(@opentelemetry/api@1.9.0) 47 + '@opentelemetry/resources': 48 + specifier: ^2.2.0 49 + version: 2.2.0(@opentelemetry/api@1.9.0) 50 + '@opentelemetry/sdk-metrics': 51 + specifier: ^2.2.0 52 + version: 2.2.0(@opentelemetry/api@1.9.0) 53 + '@opentelemetry/sdk-node': 54 + specifier: ^0.208.0 55 + version: 0.208.0(@opentelemetry/api@1.9.0) 56 + '@opentelemetry/semantic-conventions': 57 + specifier: ^1.38.0 58 + version: 1.38.0 59 + import-in-the-middle: 60 + specifier: ^2.0.0 61 + version: 2.0.0 23 62 iron-session: 24 63 specifier: ^8.0.4 25 64 version: 8.0.4 ··· 41 80 version: 0.15.15 42 81 '@sveltejs/adapter-auto': 43 82 specifier: ^7.0.0 44 - version: 7.0.0(@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))) 83 + version: 7.0.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))) 45 84 '@sveltejs/adapter-node': 46 85 specifier: ^5.4.0 47 - version: 5.4.0(@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))) 86 + version: 5.4.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))) 48 87 '@sveltejs/kit': 49 88 specifier: ^2.48.5 50 - version: 2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) 89 + version: 2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) 51 90 '@sveltejs/vite-plugin-svelte': 52 91 specifier: ^6.2.1 53 92 version: 6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) ··· 71 110 version: 0.31.7 72 111 drizzle-orm: 73 112 specifier: ^0.44.7 74 - version: 0.44.7(@cloudflare/workers-types@4.20251205.0)(@libsql/client@0.15.15)(better-sqlite3@12.5.0) 113 + version: 0.44.7(@cloudflare/workers-types@4.20251205.0)(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(better-sqlite3@12.5.0) 75 114 eslint: 76 115 specifier: ^9.39.1 77 116 version: 9.39.1(jiti@2.6.1) ··· 116 155 version: 7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 117 156 vitest: 118 157 specifier: ^4.0.10 119 - version: 4.0.14(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 158 + version: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 120 159 vitest-browser-svelte: 121 160 specifier: ^2.0.1 122 161 version: 2.0.1(svelte@5.45.2)(vitest@4.0.14) ··· 738 777 resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} 739 778 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 740 779 780 + '@grpc/grpc-js@1.14.2': 781 + resolution: {integrity: sha512-QzVUtEFyu05UNx2xr0fCQmStUO17uVQhGNowtxs00IgTZT6/W2PBLfUkj30s0FKJ29VtTa3ArVNIhNP6akQhqA==} 782 + engines: {node: '>=12.10.0'} 783 + 784 + '@grpc/proto-loader@0.8.0': 785 + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} 786 + engines: {node: '>=6'} 787 + hasBin: true 788 + 741 789 '@humanfs/core@0.19.1': 742 790 resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 743 791 engines: {node: '>=18.18.0'} ··· 780 828 781 829 '@jridgewell/trace-mapping@0.3.31': 782 830 resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 831 + 832 + '@js-sdsl/ordered-map@4.4.2': 833 + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} 834 + 835 + '@kubiks/otel-drizzle@2.1.0': 836 + resolution: {integrity: sha512-9UHb0od3jwa6zTWMyEYPIZcUq5PDaziCmQLMLakSK2zeqy12SFZ3SAGWXJTgEr8valn/Wa+DKVs+Z3aqKQUpvg==} 837 + engines: {node: ^18.19.0 || >=20.6.0} 838 + peerDependencies: 839 + '@opentelemetry/api': '>=1.9.0 <2.0.0' 840 + drizzle-orm: '>=0.28.0' 783 841 784 842 '@libsql/client@0.15.15': 785 843 resolution: {integrity: sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==} ··· 853 911 resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} 854 912 engines: {node: ^14.21.3 || >=16} 855 913 914 + '@opentelemetry/api-logs@0.208.0': 915 + resolution: {integrity: sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==} 916 + engines: {node: '>=8.0.0'} 917 + 918 + '@opentelemetry/api@1.9.0': 919 + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} 920 + engines: {node: '>=8.0.0'} 921 + 922 + '@opentelemetry/auto-instrumentations-node@0.67.2': 923 + resolution: {integrity: sha512-kAuv1SVIA9YfmKLJG5fN4ps1z1E2j0cy6dnb/pDri0gcczWAQdt4iCh3ZOyBn2KwfooQohGa81iQSiZgswxyXw==} 924 + engines: {node: ^18.19.0 || >=20.6.0} 925 + peerDependencies: 926 + '@opentelemetry/api': ^1.4.1 927 + '@opentelemetry/core': ^2.0.0 928 + 929 + '@opentelemetry/context-async-hooks@2.2.0': 930 + resolution: {integrity: sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==} 931 + engines: {node: ^18.19.0 || >=20.6.0} 932 + peerDependencies: 933 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 934 + 935 + '@opentelemetry/core@2.2.0': 936 + resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} 937 + engines: {node: ^18.19.0 || >=20.6.0} 938 + peerDependencies: 939 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 940 + 941 + '@opentelemetry/exporter-logs-otlp-grpc@0.208.0': 942 + resolution: {integrity: sha512-AmZDKFzbq/idME/yq68M155CJW1y056MNBekH9OZewiZKaqgwYN4VYfn3mXVPftYsfrCM2r4V6tS8H2LmfiDCg==} 943 + engines: {node: ^18.19.0 || >=20.6.0} 944 + peerDependencies: 945 + '@opentelemetry/api': ^1.3.0 946 + 947 + '@opentelemetry/exporter-logs-otlp-http@0.208.0': 948 + resolution: {integrity: sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==} 949 + engines: {node: ^18.19.0 || >=20.6.0} 950 + peerDependencies: 951 + '@opentelemetry/api': ^1.3.0 952 + 953 + '@opentelemetry/exporter-logs-otlp-proto@0.208.0': 954 + resolution: {integrity: sha512-Wy8dZm16AOfM7yddEzSFzutHZDZ6HspKUODSUJVjyhnZFMBojWDjSNgduyCMlw6qaxJYz0dlb0OEcb4Eme+BfQ==} 955 + engines: {node: ^18.19.0 || >=20.6.0} 956 + peerDependencies: 957 + '@opentelemetry/api': ^1.3.0 958 + 959 + '@opentelemetry/exporter-metrics-otlp-grpc@0.208.0': 960 + resolution: {integrity: sha512-YbEnk7jjYmvhIwp2xJGkEvdgnayrA2QSr28R1LR1klDPvCxsoQPxE6TokDbQpoCEhD3+KmJVEXfb4EeEQxjymg==} 961 + engines: {node: ^18.19.0 || >=20.6.0} 962 + peerDependencies: 963 + '@opentelemetry/api': ^1.3.0 964 + 965 + '@opentelemetry/exporter-metrics-otlp-http@0.208.0': 966 + resolution: {integrity: sha512-QZ3TrI90Y0i1ezWQdvreryjY0a5TK4J9gyDLIyhLBwV+EQUvyp5wR7TFPKCAexD4TDSWM0t3ulQDbYYjVtzTyA==} 967 + engines: {node: ^18.19.0 || >=20.6.0} 968 + peerDependencies: 969 + '@opentelemetry/api': ^1.3.0 970 + 971 + '@opentelemetry/exporter-metrics-otlp-proto@0.208.0': 972 + resolution: {integrity: sha512-CvvVD5kRDmRB/uSMalvEF6kiamY02pB46YAqclHtfjJccNZFxbkkXkMMmcJ7NgBFa5THmQBNVQ2AHyX29nRxOw==} 973 + engines: {node: ^18.19.0 || >=20.6.0} 974 + peerDependencies: 975 + '@opentelemetry/api': ^1.3.0 976 + 977 + '@opentelemetry/exporter-prometheus@0.208.0': 978 + resolution: {integrity: sha512-Rgws8GfIfq2iNWCD3G1dTD9xwYsCof1+tc5S5X0Ahdb5CrAPE+k5P70XCWHqrFFurVCcKaHLJ/6DjIBHWVfLiw==} 979 + engines: {node: ^18.19.0 || >=20.6.0} 980 + peerDependencies: 981 + '@opentelemetry/api': ^1.3.0 982 + 983 + '@opentelemetry/exporter-trace-otlp-grpc@0.208.0': 984 + resolution: {integrity: sha512-E/eNdcqVUTAT7BC+e8VOw/krqb+5rjzYkztMZ/o+eyJl+iEY6PfczPXpwWuICwvsm0SIhBoh9hmYED5Vh5RwIw==} 985 + engines: {node: ^18.19.0 || >=20.6.0} 986 + peerDependencies: 987 + '@opentelemetry/api': ^1.3.0 988 + 989 + '@opentelemetry/exporter-trace-otlp-http@0.208.0': 990 + resolution: {integrity: sha512-jbzDw1q+BkwKFq9yxhjAJ9rjKldbt5AgIy1gmEIJjEV/WRxQ3B6HcLVkwbjJ3RcMif86BDNKR846KJ0tY0aOJA==} 991 + engines: {node: ^18.19.0 || >=20.6.0} 992 + peerDependencies: 993 + '@opentelemetry/api': ^1.3.0 994 + 995 + '@opentelemetry/exporter-trace-otlp-proto@0.208.0': 996 + resolution: {integrity: sha512-q844Jc3ApkZVdWYd5OAl+an3n1XXf3RWHa3Zgmnhw3HpsM3VluEKHckUUEqHPzbwDUx2lhPRVkqK7LsJ/CbDzA==} 997 + engines: {node: ^18.19.0 || >=20.6.0} 998 + peerDependencies: 999 + '@opentelemetry/api': ^1.3.0 1000 + 1001 + '@opentelemetry/exporter-zipkin@2.2.0': 1002 + resolution: {integrity: sha512-VV4QzhGCT7cWrGasBWxelBjqbNBbyHicWWS/66KoZoe9BzYwFB72SH2/kkc4uAviQlO8iwv2okIJy+/jqqEHTg==} 1003 + engines: {node: ^18.19.0 || >=20.6.0} 1004 + peerDependencies: 1005 + '@opentelemetry/api': ^1.0.0 1006 + 1007 + '@opentelemetry/instrumentation-amqplib@0.55.0': 1008 + resolution: {integrity: sha512-5ULoU8p+tWcQw5PDYZn8rySptGSLZHNX/7srqo2TioPnAAcvTy6sQFQXsNPrAnyRRtYGMetXVyZUy5OaX1+IfA==} 1009 + engines: {node: ^18.19.0 || >=20.6.0} 1010 + peerDependencies: 1011 + '@opentelemetry/api': ^1.3.0 1012 + 1013 + '@opentelemetry/instrumentation-aws-lambda@0.61.0': 1014 + resolution: {integrity: sha512-yS7lzFhPL37CsGHolNSGA4UnEgiyyO/to1hHXcQ54JCOc4dVHxI319v5/A/UkVlcY7kF85RzqtKyBUZh7XxQWQ==} 1015 + engines: {node: ^18.19.0 || >=20.6.0} 1016 + peerDependencies: 1017 + '@opentelemetry/api': ^1.3.0 1018 + 1019 + '@opentelemetry/instrumentation-aws-sdk@0.64.0': 1020 + resolution: {integrity: sha512-8+Y8IcUfME5jD03LISBcd9sFipgOon2uAoiLKSCroiGD6MPuwMzqlVvhlKSzq7uxwtZIhR6CTmjCpLsCHum59A==} 1021 + engines: {node: ^18.19.0 || >=20.6.0} 1022 + peerDependencies: 1023 + '@opentelemetry/api': ^1.3.0 1024 + 1025 + '@opentelemetry/instrumentation-bunyan@0.54.0': 1026 + resolution: {integrity: sha512-DnPoHSLcKwQmueW+7OOaXFD/cj1M6hqwTm6P88QdMbln/dqEatLxzt/ACPk4Yb5x4aU3ZLyeLyKxtzfhp76+aw==} 1027 + engines: {node: ^18.19.0 || >=20.6.0} 1028 + peerDependencies: 1029 + '@opentelemetry/api': ^1.3.0 1030 + 1031 + '@opentelemetry/instrumentation-cassandra-driver@0.54.0': 1032 + resolution: {integrity: sha512-nOjBx4EZVMaAE3pfM1DBOwoxtskZyzLfsqVAmrrCyBgULyJ7pfF5T1S/08u4v/ba61vOihk32WclyYEKnWmx6A==} 1033 + engines: {node: ^18.19.0 || >=20.6.0} 1034 + peerDependencies: 1035 + '@opentelemetry/api': ^1.3.0 1036 + 1037 + '@opentelemetry/instrumentation-connect@0.52.0': 1038 + resolution: {integrity: sha512-GXPxfNB5szMbV3I9b7kNWSmQBoBzw7MT0ui6iU/p+NIzVx3a06Ri2cdQO7tG9EKb4aKSLmfX9Cw5cKxXqX6Ohg==} 1039 + engines: {node: ^18.19.0 || >=20.6.0} 1040 + peerDependencies: 1041 + '@opentelemetry/api': ^1.3.0 1042 + 1043 + '@opentelemetry/instrumentation-cucumber@0.24.0': 1044 + resolution: {integrity: sha512-ICHrmax9PwU/Z+fehD0uIjM8W0cEvdToglV1+o76Mgw51HZBVp2Y3mkga1qMPIN5tPMoWUYoYtI4U85rea5HYg==} 1045 + engines: {node: ^18.19.0 || >=20.6.0} 1046 + peerDependencies: 1047 + '@opentelemetry/api': ^1.0.0 1048 + 1049 + '@opentelemetry/instrumentation-dataloader@0.26.0': 1050 + resolution: {integrity: sha512-P2BgnFfTOarZ5OKPmYfbXfDFjQ4P9WkQ1Jji7yH5/WwB6Wm/knynAoA1rxbjWcDlYupFkyT0M1j6XLzDzy0aCA==} 1051 + engines: {node: ^18.19.0 || >=20.6.0} 1052 + peerDependencies: 1053 + '@opentelemetry/api': ^1.3.0 1054 + 1055 + '@opentelemetry/instrumentation-dns@0.52.0': 1056 + resolution: {integrity: sha512-XJvS8PkZec+X6HhOi1xldJydTpmIUAW14+1vyqwAK97LWKXlxmiWst8/fjZ709+CHgshz8i5V37yCHlr6o3pxw==} 1057 + engines: {node: ^18.19.0 || >=20.6.0} 1058 + peerDependencies: 1059 + '@opentelemetry/api': ^1.3.0 1060 + 1061 + '@opentelemetry/instrumentation-express@0.57.0': 1062 + resolution: {integrity: sha512-HAdx/o58+8tSR5iW+ru4PHnEejyKrAy9fYFhlEI81o10nYxrGahnMAHWiSjhDC7UQSY3I4gjcPgSKQz4rm/asg==} 1063 + engines: {node: ^18.19.0 || >=20.6.0} 1064 + peerDependencies: 1065 + '@opentelemetry/api': ^1.3.0 1066 + 1067 + '@opentelemetry/instrumentation-fastify@0.53.0': 1068 + resolution: {integrity: sha512-bNsoCpe/cmrLWH6T4FEkFx403mW40PWtpYCraadbncQVE9UOeQOYdI3+J5UbciiyR92d1MFVF9HLAv8zA/yXzA==} 1069 + engines: {node: ^18.19.0 || >=20.6.0} 1070 + peerDependencies: 1071 + '@opentelemetry/api': ^1.3.0 1072 + 1073 + '@opentelemetry/instrumentation-fs@0.28.0': 1074 + resolution: {integrity: sha512-FFvg8fq53RRXVBRHZViP+EMxMR03tqzEGpuq55lHNbVPyFklSVfQBN50syPhK5UYYwaStx0eyCtHtbRreusc5g==} 1075 + engines: {node: ^18.19.0 || >=20.6.0} 1076 + peerDependencies: 1077 + '@opentelemetry/api': ^1.3.0 1078 + 1079 + '@opentelemetry/instrumentation-generic-pool@0.52.0': 1080 + resolution: {integrity: sha512-ISkNcv5CM2IwvsMVL31Tl61/p2Zm2I2NAsYq5SSBgOsOndT0TjnptjufYVScCnD5ZLD1tpl4T3GEYULLYOdIdQ==} 1081 + engines: {node: ^18.19.0 || >=20.6.0} 1082 + peerDependencies: 1083 + '@opentelemetry/api': ^1.3.0 1084 + 1085 + '@opentelemetry/instrumentation-graphql@0.56.0': 1086 + resolution: {integrity: sha512-IPvNk8AFoVzTAM0Z399t34VDmGDgwT6rIqCUug8P9oAGerl2/PEIYMPOl/rerPGu+q8gSWdmbFSjgg7PDVRd3Q==} 1087 + engines: {node: ^18.19.0 || >=20.6.0} 1088 + peerDependencies: 1089 + '@opentelemetry/api': ^1.3.0 1090 + 1091 + '@opentelemetry/instrumentation-grpc@0.208.0': 1092 + resolution: {integrity: sha512-8hFEQRAiOyIWO6LYj7tUfdAgNCuQUdYjLYMItRYlOLGJhshGdGYD7aeNzt2H+HPMDEWnKWqldIHfLTqM7ep7gg==} 1093 + engines: {node: ^18.19.0 || >=20.6.0} 1094 + peerDependencies: 1095 + '@opentelemetry/api': ^1.3.0 1096 + 1097 + '@opentelemetry/instrumentation-hapi@0.55.0': 1098 + resolution: {integrity: sha512-prqAkRf9e4eEpy4G3UcR32prKE8NLNlA90TdEU1UsghOTg0jUvs40Jz8LQWFEs5NbLbXHYGzB4CYVkCI8eWEVQ==} 1099 + engines: {node: ^18.19.0 || >=20.6.0} 1100 + peerDependencies: 1101 + '@opentelemetry/api': ^1.3.0 1102 + 1103 + '@opentelemetry/instrumentation-http@0.208.0': 1104 + resolution: {integrity: sha512-rhmK46DRWEbQQB77RxmVXGyjs6783crXCnFjYQj+4tDH/Kpv9Rbg3h2kaNyp5Vz2emF1f9HOQQvZoHzwMWOFZQ==} 1105 + engines: {node: ^18.19.0 || >=20.6.0} 1106 + peerDependencies: 1107 + '@opentelemetry/api': ^1.3.0 1108 + 1109 + '@opentelemetry/instrumentation-ioredis@0.56.0': 1110 + resolution: {integrity: sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg==} 1111 + engines: {node: ^18.19.0 || >=20.6.0} 1112 + peerDependencies: 1113 + '@opentelemetry/api': ^1.3.0 1114 + 1115 + '@opentelemetry/instrumentation-kafkajs@0.18.0': 1116 + resolution: {integrity: sha512-KCL/1HnZN5zkUMgPyOxfGjLjbXjpd4odDToy+7c+UsthIzVLFf99LnfIBE8YSSrYE4+uS7OwJMhvhg3tWjqMBg==} 1117 + engines: {node: ^18.19.0 || >=20.6.0} 1118 + peerDependencies: 1119 + '@opentelemetry/api': ^1.3.0 1120 + 1121 + '@opentelemetry/instrumentation-knex@0.53.1': 1122 + resolution: {integrity: sha512-tIW3gqVC8d9CCE+oxPO63WNvC+5PKC/LrPrYWFobii5afUpHJV+0pfyt08okAFBHztzT0voMOEPGkLKoacZRXQ==} 1123 + engines: {node: ^18.19.0 || >=20.6.0} 1124 + peerDependencies: 1125 + '@opentelemetry/api': ^1.3.0 1126 + 1127 + '@opentelemetry/instrumentation-koa@0.57.0': 1128 + resolution: {integrity: sha512-3JS8PU/D5E3q295mwloU2v7c7/m+DyCqdu62BIzWt+3u9utjxC9QS7v6WmUNuoDN3RM+Q+D1Gpj13ERo+m7CGg==} 1129 + engines: {node: ^18.19.0 || >=20.6.0} 1130 + peerDependencies: 1131 + '@opentelemetry/api': ^1.9.0 1132 + 1133 + '@opentelemetry/instrumentation-lru-memoizer@0.53.0': 1134 + resolution: {integrity: sha512-LDwWz5cPkWWr0HBIuZUjslyvijljTwmwiItpMTHujaULZCxcYE9eU44Qf/pbVC8TulT0IhZi+RoGvHKXvNhysw==} 1135 + engines: {node: ^18.19.0 || >=20.6.0} 1136 + peerDependencies: 1137 + '@opentelemetry/api': ^1.3.0 1138 + 1139 + '@opentelemetry/instrumentation-memcached@0.52.0': 1140 + resolution: {integrity: sha512-aBeEX0vLXwaXx96jQsrS6GAshzp5Kj027M/a0UQj7YzAOZXAa3ZJ65gryHoFlFmMgi3UAfThWIhahajG1FuQTQ==} 1141 + engines: {node: ^18.19.0 || >=20.6.0} 1142 + peerDependencies: 1143 + '@opentelemetry/api': ^1.3.0 1144 + 1145 + '@opentelemetry/instrumentation-mongodb@0.61.0': 1146 + resolution: {integrity: sha512-OV3i2DSoY5M/pmLk+68xr5RvkHU8DRB3DKMzYJdwDdcxeLs62tLbkmRyqJZsYf3Ht7j11rq35pHOWLuLzXL7pQ==} 1147 + engines: {node: ^18.19.0 || >=20.6.0} 1148 + peerDependencies: 1149 + '@opentelemetry/api': ^1.3.0 1150 + 1151 + '@opentelemetry/instrumentation-mongoose@0.55.0': 1152 + resolution: {integrity: sha512-5afj0HfF6aM6Nlqgu6/PPHFk8QBfIe3+zF9FGpX76jWPS0/dujoEYn82/XcLSaW5LPUDW8sni+YeK0vTBNri+w==} 1153 + engines: {node: ^18.19.0 || >=20.6.0} 1154 + peerDependencies: 1155 + '@opentelemetry/api': ^1.3.0 1156 + 1157 + '@opentelemetry/instrumentation-mysql2@0.55.0': 1158 + resolution: {integrity: sha512-0cs8whQG55aIi20gnK8B7cco6OK6N+enNhW0p5284MvqJ5EPi+I1YlWsWXgzv/V2HFirEejkvKiI4Iw21OqDWg==} 1159 + engines: {node: ^18.19.0 || >=20.6.0} 1160 + peerDependencies: 1161 + '@opentelemetry/api': ^1.3.0 1162 + 1163 + '@opentelemetry/instrumentation-mysql@0.54.0': 1164 + resolution: {integrity: sha512-bqC1YhnwAeWmRzy1/Xf9cDqxNG2d/JDkaxnqF5N6iJKN1eVWI+vg7NfDkf52/Nggp3tl1jcC++ptC61BD6738A==} 1165 + engines: {node: ^18.19.0 || >=20.6.0} 1166 + peerDependencies: 1167 + '@opentelemetry/api': ^1.3.0 1168 + 1169 + '@opentelemetry/instrumentation-nestjs-core@0.55.0': 1170 + resolution: {integrity: sha512-JFLNhbbEGnnQrMKOYoXx0nNk5N9cPeghu4xP/oup40a7VaSeYruyOiFbg9nkbS4ZQiI8aMuRqUT3Mo4lQjKEKg==} 1171 + engines: {node: ^18.19.0 || >=20.6.0} 1172 + peerDependencies: 1173 + '@opentelemetry/api': ^1.3.0 1174 + 1175 + '@opentelemetry/instrumentation-net@0.52.0': 1176 + resolution: {integrity: sha512-POT0FudTQTsTs9Xa8Uo5z0gGV1T3EEvy3GNas4Lr5aIMxe5xz/XlHci8xNZ/lzwjTY7KfYsXvkzxRBovDVtH5Q==} 1177 + engines: {node: ^18.19.0 || >=20.6.0} 1178 + peerDependencies: 1179 + '@opentelemetry/api': ^1.3.0 1180 + 1181 + '@opentelemetry/instrumentation-openai@0.7.0': 1182 + resolution: {integrity: sha512-p6quVxFL3q1qwrjNtpOmeaesjjdjWcdvkRFrRyqvg4zHYhiZF7+Als3tsYtvBwQElycnxDwtSAh7E2kbQk2NkA==} 1183 + engines: {node: ^18.19.0 || >=20.6.0} 1184 + peerDependencies: 1185 + '@opentelemetry/api': ^1.3.0 1186 + 1187 + '@opentelemetry/instrumentation-oracledb@0.34.0': 1188 + resolution: {integrity: sha512-eHNRO4mKgvFfPfSi+Y2GNrWl+YOOnnhVoII9vlCcAroEJ0i/IC6sBsDm18LKYXnRjz1zNnX31Sn0a00S1rKaNA==} 1189 + engines: {node: ^18.19.0 || >=20.6.0} 1190 + peerDependencies: 1191 + '@opentelemetry/api': ^1.3.0 1192 + 1193 + '@opentelemetry/instrumentation-pg@0.61.1': 1194 + resolution: {integrity: sha512-VKKts/XcOCa7IPBxVjL2B4UyG+YTNa4Dh1Xx2vqL0jOEQBJlNsv++I12BUw/8NRLEr2K/gOM5tpVU7QqhWA65A==} 1195 + engines: {node: ^18.19.0 || >=20.6.0} 1196 + peerDependencies: 1197 + '@opentelemetry/api': ^1.3.0 1198 + 1199 + '@opentelemetry/instrumentation-pino@0.55.0': 1200 + resolution: {integrity: sha512-+powYgQcZvGD/JJ0zaXB/2e2rK/WS41GDAq4KlKv26gT5rjWc70Pxvk2OP0d/XAWlLxpRAxOEAP0ggVAuVYNbA==} 1201 + engines: {node: ^18.19.0 || >=20.6.0} 1202 + peerDependencies: 1203 + '@opentelemetry/api': ^1.3.0 1204 + 1205 + '@opentelemetry/instrumentation-redis@0.57.1': 1206 + resolution: {integrity: sha512-iP564P8On9NPPi06T2MyL56sBN0RsF29DX/RC5fW0yOOFdUHcvCDmJnp11eZyymTvYj5HX8tvpoO+vDb6+Lv8A==} 1207 + engines: {node: ^18.19.0 || >=20.6.0} 1208 + peerDependencies: 1209 + '@opentelemetry/api': ^1.3.0 1210 + 1211 + '@opentelemetry/instrumentation-restify@0.54.0': 1212 + resolution: {integrity: sha512-V6kCoAtU8jLuUi9hr3IEWVTHr8d8s4wObV1DlI/A+VzYToK1W4Zv1SI8x3hiF0yR1poRjOY6rl91Q427HHTMww==} 1213 + engines: {node: ^18.19.0 || >=20.6.0} 1214 + peerDependencies: 1215 + '@opentelemetry/api': ^1.3.0 1216 + 1217 + '@opentelemetry/instrumentation-router@0.53.0': 1218 + resolution: {integrity: sha512-3gF9jJ7C3lwlCOer1KzKKdpLr6/c7yOZBP44KI+Xi/TqiZjhsfUlHjetzC6BLDjkSk1DnIGyf+YzJR4aF5dJBQ==} 1219 + engines: {node: ^18.19.0 || >=20.6.0} 1220 + peerDependencies: 1221 + '@opentelemetry/api': ^1.3.0 1222 + 1223 + '@opentelemetry/instrumentation-runtime-node@0.22.0': 1224 + resolution: {integrity: sha512-27aodhzdWqPuPVWM2UsLYz2gl6yLRqLP7Z6Kn6ukUx/I+9oruaztJkLtYg4SqCrm/7Nsv9FIly7gO3/ZyDIMPg==} 1225 + engines: {node: ^18.19.0 || >=20.6.0} 1226 + peerDependencies: 1227 + '@opentelemetry/api': ^1.3.0 1228 + 1229 + '@opentelemetry/instrumentation-socket.io@0.55.0': 1230 + resolution: {integrity: sha512-j/ceXFREnYKIO5+qBPlbigiMYnYhyEz9y8hkWSzMIUA6lnirdEf/viGI+q1VpjqB/Fl87X4ejWl+taQGBYIB+A==} 1231 + engines: {node: ^18.19.0 || >=20.6.0} 1232 + peerDependencies: 1233 + '@opentelemetry/api': ^1.3.0 1234 + 1235 + '@opentelemetry/instrumentation-tedious@0.27.0': 1236 + resolution: {integrity: sha512-jRtyUJNZppPBjPae4ZjIQ2eqJbcRaRfJkr0lQLHFmOU/no5A6e9s1OHLd5XZyZoBJ/ymngZitanyRRA5cniseA==} 1237 + engines: {node: ^18.19.0 || >=20.6.0} 1238 + peerDependencies: 1239 + '@opentelemetry/api': ^1.3.0 1240 + 1241 + '@opentelemetry/instrumentation-undici@0.19.0': 1242 + resolution: {integrity: sha512-Pst/RhR61A2OoZQZkn6OLpdVpXp6qn3Y92wXa6umfJe9rV640r4bc6SWvw4pPN6DiQqPu2c8gnSSZPDtC6JlpQ==} 1243 + engines: {node: ^18.19.0 || >=20.6.0} 1244 + peerDependencies: 1245 + '@opentelemetry/api': ^1.7.0 1246 + 1247 + '@opentelemetry/instrumentation-winston@0.53.0': 1248 + resolution: {integrity: sha512-yF9v0DphyG715er1HG1pbweNUSygvc22xw2s2Y8E8oaEMJo2/nH3Ww/8c4K6gdI/6xvi2unla1KQBCYN4uCo8w==} 1249 + engines: {node: ^18.19.0 || >=20.6.0} 1250 + peerDependencies: 1251 + '@opentelemetry/api': ^1.3.0 1252 + 1253 + '@opentelemetry/instrumentation@0.208.0': 1254 + resolution: {integrity: sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==} 1255 + engines: {node: ^18.19.0 || >=20.6.0} 1256 + peerDependencies: 1257 + '@opentelemetry/api': ^1.3.0 1258 + 1259 + '@opentelemetry/otlp-exporter-base@0.208.0': 1260 + resolution: {integrity: sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==} 1261 + engines: {node: ^18.19.0 || >=20.6.0} 1262 + peerDependencies: 1263 + '@opentelemetry/api': ^1.3.0 1264 + 1265 + '@opentelemetry/otlp-grpc-exporter-base@0.208.0': 1266 + resolution: {integrity: sha512-fGvAg3zb8fC0oJAzfz7PQppADI2HYB7TSt/XoCaBJFi1mSquNUjtHXEoviMgObLAa1NRIgOC1lsV1OUKi+9+lQ==} 1267 + engines: {node: ^18.19.0 || >=20.6.0} 1268 + peerDependencies: 1269 + '@opentelemetry/api': ^1.3.0 1270 + 1271 + '@opentelemetry/otlp-transformer@0.208.0': 1272 + resolution: {integrity: sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==} 1273 + engines: {node: ^18.19.0 || >=20.6.0} 1274 + peerDependencies: 1275 + '@opentelemetry/api': ^1.3.0 1276 + 1277 + '@opentelemetry/propagator-b3@2.2.0': 1278 + resolution: {integrity: sha512-9CrbTLFi5Ee4uepxg2qlpQIozoJuoAZU5sKMx0Mn7Oh+p7UrgCiEV6C02FOxxdYVRRFQVCinYR8Kf6eMSQsIsw==} 1279 + engines: {node: ^18.19.0 || >=20.6.0} 1280 + peerDependencies: 1281 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 1282 + 1283 + '@opentelemetry/propagator-jaeger@2.2.0': 1284 + resolution: {integrity: sha512-FfeOHOrdhiNzecoB1jZKp2fybqmqMPJUXe2ZOydP7QzmTPYcfPeuaclTLYVhK3HyJf71kt8sTl92nV4YIaLaKA==} 1285 + engines: {node: ^18.19.0 || >=20.6.0} 1286 + peerDependencies: 1287 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 1288 + 1289 + '@opentelemetry/redis-common@0.38.2': 1290 + resolution: {integrity: sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==} 1291 + engines: {node: ^18.19.0 || >=20.6.0} 1292 + 1293 + '@opentelemetry/resource-detector-alibaba-cloud@0.31.11': 1294 + resolution: {integrity: sha512-R/asn6dAOWMfkLeEwqHCUz0cNbb9oiHVyd11iwlypeT/p9bR1lCX5juu5g/trOwxo62dbuFcDbBdKCJd3O2Edg==} 1295 + engines: {node: ^18.19.0 || >=20.6.0} 1296 + peerDependencies: 1297 + '@opentelemetry/api': ^1.0.0 1298 + 1299 + '@opentelemetry/resource-detector-aws@2.8.0': 1300 + resolution: {integrity: sha512-L8K5L3bsDKboX7sDofZyRonyK8dfS+CF7ho8YbZ6OrH+d5uyRBsrjuokPzcju1jP2ZzgtpYzhLwzi9zPXyRLlA==} 1301 + engines: {node: ^18.19.0 || >=20.6.0} 1302 + peerDependencies: 1303 + '@opentelemetry/api': ^1.0.0 1304 + 1305 + '@opentelemetry/resource-detector-azure@0.16.0': 1306 + resolution: {integrity: sha512-7ZIgPGsI5/sp4nXXUUyyQ8grg6brJV1U/itQWmZID72Nhvm4k/MhYpjZC80HFId47pMUGkoM3wxbZHfunLSnIw==} 1307 + engines: {node: ^18.19.0 || >=20.6.0} 1308 + peerDependencies: 1309 + '@opentelemetry/api': ^1.0.0 1310 + 1311 + '@opentelemetry/resource-detector-container@0.7.11': 1312 + resolution: {integrity: sha512-XUxnGuANa/EdxagipWMXKYFC7KURwed9/V0+NtYjFmwWHzV9/J4IYVGTK8cWDpyUvAQf/vE4sMa3rnS025ivXQ==} 1313 + engines: {node: ^18.19.0 || >=20.6.0} 1314 + peerDependencies: 1315 + '@opentelemetry/api': ^1.0.0 1316 + 1317 + '@opentelemetry/resource-detector-gcp@0.43.0': 1318 + resolution: {integrity: sha512-QBrljIppRyMLjEJdx+nKid5FyCQCh4TK2jNSHVRsJio1qnPoPy18J6rD3Pbx6VF0/Z5vwLD+E3PHe/Bi6vE0Rw==} 1319 + engines: {node: ^18.19.0 || >=20.6.0} 1320 + peerDependencies: 1321 + '@opentelemetry/api': ^1.0.0 1322 + 1323 + '@opentelemetry/resources@2.2.0': 1324 + resolution: {integrity: sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==} 1325 + engines: {node: ^18.19.0 || >=20.6.0} 1326 + peerDependencies: 1327 + '@opentelemetry/api': '>=1.3.0 <1.10.0' 1328 + 1329 + '@opentelemetry/sdk-logs@0.208.0': 1330 + resolution: {integrity: sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==} 1331 + engines: {node: ^18.19.0 || >=20.6.0} 1332 + peerDependencies: 1333 + '@opentelemetry/api': '>=1.4.0 <1.10.0' 1334 + 1335 + '@opentelemetry/sdk-metrics@2.2.0': 1336 + resolution: {integrity: sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==} 1337 + engines: {node: ^18.19.0 || >=20.6.0} 1338 + peerDependencies: 1339 + '@opentelemetry/api': '>=1.9.0 <1.10.0' 1340 + 1341 + '@opentelemetry/sdk-node@0.208.0': 1342 + resolution: {integrity: sha512-pbAqpZ7zTMFuTf3YecYsecsto/mheuvnK2a/jgstsE5ynWotBjgF5bnz5500W9Xl2LeUfg04WMt63TWtAgzRMw==} 1343 + engines: {node: ^18.19.0 || >=20.6.0} 1344 + peerDependencies: 1345 + '@opentelemetry/api': '>=1.3.0 <1.10.0' 1346 + 1347 + '@opentelemetry/sdk-trace-base@2.2.0': 1348 + resolution: {integrity: sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==} 1349 + engines: {node: ^18.19.0 || >=20.6.0} 1350 + peerDependencies: 1351 + '@opentelemetry/api': '>=1.3.0 <1.10.0' 1352 + 1353 + '@opentelemetry/sdk-trace-node@2.2.0': 1354 + resolution: {integrity: sha512-+OaRja3f0IqGG2kptVeYsrZQK9nKRSpfFrKtRBq4uh6nIB8bTBgaGvYQrQoRrQWQMA5dK5yLhDMDc0dvYvCOIQ==} 1355 + engines: {node: ^18.19.0 || >=20.6.0} 1356 + peerDependencies: 1357 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 1358 + 1359 + '@opentelemetry/semantic-conventions@1.38.0': 1360 + resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} 1361 + engines: {node: '>=14'} 1362 + 1363 + '@opentelemetry/sql-common@0.41.2': 1364 + resolution: {integrity: sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==} 1365 + engines: {node: ^18.19.0 || >=20.6.0} 1366 + peerDependencies: 1367 + '@opentelemetry/api': ^1.1.0 1368 + 856 1369 '@polka/url@1.0.0-next.29': 857 1370 resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} 858 1371 1372 + '@protobufjs/aspromise@1.1.2': 1373 + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} 1374 + 1375 + '@protobufjs/base64@1.1.2': 1376 + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} 1377 + 1378 + '@protobufjs/codegen@2.0.4': 1379 + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} 1380 + 1381 + '@protobufjs/eventemitter@1.1.0': 1382 + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} 1383 + 1384 + '@protobufjs/fetch@1.1.0': 1385 + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} 1386 + 1387 + '@protobufjs/float@1.0.2': 1388 + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} 1389 + 1390 + '@protobufjs/inquire@1.1.0': 1391 + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} 1392 + 1393 + '@protobufjs/path@1.1.2': 1394 + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} 1395 + 1396 + '@protobufjs/pool@1.1.0': 1397 + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} 1398 + 1399 + '@protobufjs/utf8@1.1.0': 1400 + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} 1401 + 859 1402 '@rollup/plugin-commonjs@28.0.9': 860 1403 resolution: {integrity: sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==} 861 1404 engines: {node: '>=16.0.0 || 14 >= 14.17'} ··· 1141 1684 '@ts-morph/common@0.28.1': 1142 1685 resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} 1143 1686 1687 + '@types/aws-lambda@8.10.159': 1688 + resolution: {integrity: sha512-SAP22WSGNN12OQ8PlCzGzRCZ7QDCwI85dQZbmpz7+mAk+L7j+wI7qnvmdKh+o7A5LaOp6QnOZ2NJphAZQTTHQg==} 1689 + 1690 + '@types/bunyan@1.8.11': 1691 + resolution: {integrity: sha512-758fRH7umIMk5qt5ELmRMff4mLDlN+xyYzC+dkPTdKwbSkJFvz6xwyScrytPU0QIBbRRwbiE8/BIg8bpajerNQ==} 1692 + 1144 1693 '@types/chai@5.2.3': 1145 1694 resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} 1695 + 1696 + '@types/connect@3.4.38': 1697 + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} 1146 1698 1147 1699 '@types/cookie@0.6.0': 1148 1700 resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} ··· 1156 1708 '@types/json-schema@7.0.15': 1157 1709 resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 1158 1710 1711 + '@types/memcached@2.2.10': 1712 + resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} 1713 + 1714 + '@types/mysql@2.15.27': 1715 + resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==} 1716 + 1159 1717 '@types/node@22.19.1': 1160 1718 resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} 1161 1719 1720 + '@types/oracledb@6.5.2': 1721 + resolution: {integrity: sha512-kK1eBS/Adeyis+3OlBDMeQQuasIDLUYXsi2T15ccNJ0iyUpQ4xDF7svFu3+bGVrI0CMBUclPciz+lsQR3JX3TQ==} 1722 + 1723 + '@types/pg-pool@2.0.6': 1724 + resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} 1725 + 1726 + '@types/pg@8.15.6': 1727 + resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} 1728 + 1162 1729 '@types/resolve@1.20.2': 1163 1730 resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 1731 + 1732 + '@types/tedious@4.0.14': 1733 + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} 1164 1734 1165 1735 '@types/ws@8.18.1': 1166 1736 resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} ··· 1268 1838 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 1269 1839 engines: {node: '>=6.5'} 1270 1840 1841 + acorn-import-attributes@1.9.5: 1842 + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} 1843 + peerDependencies: 1844 + acorn: ^8 1845 + 1271 1846 acorn-jsx@5.3.2: 1272 1847 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1273 1848 peerDependencies: ··· 1277 1852 resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 1278 1853 engines: {node: '>=0.4.0'} 1279 1854 hasBin: true 1855 + 1856 + agent-base@7.1.4: 1857 + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} 1858 + engines: {node: '>= 14'} 1280 1859 1281 1860 ajv@6.12.6: 1282 1861 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} ··· 1318 1897 resolution: {integrity: sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==} 1319 1898 engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} 1320 1899 1900 + bignumber.js@9.3.1: 1901 + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} 1902 + 1321 1903 bindings@1.5.0: 1322 1904 resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 1323 1905 ··· 1361 1943 1362 1944 chownr@1.1.4: 1363 1945 resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 1946 + 1947 + cjs-module-lexer@1.4.3: 1948 + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} 1364 1949 1365 1950 cliui@8.0.1: 1366 1951 resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} ··· 1668 2253 resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} 1669 2254 engines: {node: '>=12.0.0'} 1670 2255 2256 + extend@3.0.2: 2257 + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 2258 + 1671 2259 fast-deep-equal@3.1.3: 1672 2260 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1673 2261 ··· 1716 2304 resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 1717 2305 engines: {node: '>=12.20.0'} 1718 2306 2307 + forwarded-parse@2.1.2: 2308 + resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} 2309 + 1719 2310 fs-constants@1.0.0: 1720 2311 resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 1721 2312 ··· 1732 2323 function-bind@1.1.2: 1733 2324 resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1734 2325 2326 + gaxios@6.7.1: 2327 + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} 2328 + engines: {node: '>=14'} 2329 + 2330 + gcp-metadata@6.1.1: 2331 + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} 2332 + engines: {node: '>=14'} 2333 + 1735 2334 get-caller-file@2.0.5: 1736 2335 resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1737 2336 engines: {node: 6.* || 8.* || >= 10.*} ··· 1754 2353 resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} 1755 2354 engines: {node: '>=18'} 1756 2355 2356 + google-logging-utils@0.0.2: 2357 + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} 2358 + engines: {node: '>=14'} 2359 + 1757 2360 graceful-fs@4.2.11: 1758 2361 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1759 2362 ··· 1768 2371 resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1769 2372 engines: {node: '>= 0.4'} 1770 2373 2374 + https-proxy-agent@7.0.6: 2375 + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 2376 + engines: {node: '>= 14'} 2377 + 1771 2378 ieee754@1.2.1: 1772 2379 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1773 2380 ··· 1782 2389 import-fresh@3.3.1: 1783 2390 resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1784 2391 engines: {node: '>=6'} 2392 + 2393 + import-in-the-middle@2.0.0: 2394 + resolution: {integrity: sha512-yNZhyQYqXpkT0AKq3F3KLasUSK4fHvebNH5hOsKQw2dhGSALvQ4U0BqUc5suziKvydO5u5hgN2hy1RJaho8U5A==} 1785 2395 1786 2396 imurmurhash@0.1.4: 1787 2397 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} ··· 1828 2438 is-reference@3.0.3: 1829 2439 resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 1830 2440 2441 + is-stream@2.0.1: 2442 + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 2443 + engines: {node: '>=8'} 2444 + 1831 2445 isexe@2.0.0: 1832 2446 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1833 2447 ··· 1847 2461 js-yaml@4.1.1: 1848 2462 resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 1849 2463 hasBin: true 2464 + 2465 + json-bigint@1.0.0: 2466 + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} 1850 2467 1851 2468 json-buffer@3.0.1: 1852 2469 resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} ··· 1956 2573 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1957 2574 engines: {node: '>=10'} 1958 2575 2576 + lodash.camelcase@4.3.0: 2577 + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} 2578 + 1959 2579 lodash.merge@4.6.2: 1960 2580 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2581 + 2582 + long@5.3.2: 2583 + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} 1961 2584 1962 2585 lru-cache@10.4.3: 1963 2586 resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} ··· 1986 2609 mkdirp-classic@0.5.3: 1987 2610 resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 1988 2611 2612 + module-details-from-path@1.0.4: 2613 + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} 2614 + 1989 2615 mri@1.2.0: 1990 2616 resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1991 2617 engines: {node: '>=4'} ··· 2019 2645 resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2020 2646 engines: {node: '>=10.5.0'} 2021 2647 deprecated: Use your platform's native DOMException instead 2648 + 2649 + node-fetch@2.7.0: 2650 + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 2651 + engines: {node: 4.x || >=6.0.0} 2652 + peerDependencies: 2653 + encoding: ^0.1.0 2654 + peerDependenciesMeta: 2655 + encoding: 2656 + optional: true 2022 2657 2023 2658 node-fetch@3.3.2: 2024 2659 resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} ··· 2067 2702 pathe@2.0.3: 2068 2703 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 2069 2704 2705 + pg-int8@1.0.1: 2706 + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 2707 + engines: {node: '>=4.0.0'} 2708 + 2709 + pg-protocol@1.10.3: 2710 + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} 2711 + 2712 + pg-types@2.2.0: 2713 + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 2714 + engines: {node: '>=4'} 2715 + 2070 2716 picocolors@1.1.1: 2071 2717 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2072 2718 ··· 2133 2779 postcss@8.5.6: 2134 2780 resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 2135 2781 engines: {node: ^10 || ^12 || >=14} 2782 + 2783 + postgres-array@2.0.0: 2784 + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 2785 + engines: {node: '>=4'} 2786 + 2787 + postgres-bytea@1.0.0: 2788 + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 2789 + engines: {node: '>=0.10.0'} 2790 + 2791 + postgres-date@1.0.7: 2792 + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 2793 + engines: {node: '>=0.10.0'} 2794 + 2795 + postgres-interval@1.2.0: 2796 + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 2797 + engines: {node: '>=0.10.0'} 2136 2798 2137 2799 prebuild-install@7.1.3: 2138 2800 resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} ··· 2164 2826 promise-limit@2.7.0: 2165 2827 resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} 2166 2828 2829 + protobufjs@7.5.4: 2830 + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} 2831 + engines: {node: '>=12.0.0'} 2832 + 2167 2833 pump@3.0.3: 2168 2834 resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} 2169 2835 ··· 2197 2863 require-directory@2.1.1: 2198 2864 resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2199 2865 engines: {node: '>=0.10.0'} 2866 + 2867 + require-in-the-middle@8.0.1: 2868 + resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} 2869 + engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} 2200 2870 2201 2871 resolve-from@4.0.0: 2202 2872 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} ··· 2362 3032 resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 2363 3033 engines: {node: '>=6'} 2364 3034 3035 + tr46@0.0.3: 3036 + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 3037 + 2365 3038 ts-api-utils@2.1.0: 2366 3039 resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 2367 3040 engines: {node: '>=18.12'} ··· 2420 3093 util-deprecate@1.0.2: 2421 3094 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2422 3095 3096 + uuid@9.0.1: 3097 + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} 3098 + hasBin: true 3099 + 2423 3100 varint@6.0.0: 2424 3101 resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} 2425 3102 ··· 2515 3192 resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} 2516 3193 engines: {node: '>= 8'} 2517 3194 3195 + webidl-conversions@3.0.1: 3196 + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 3197 + 3198 + whatwg-url@5.0.0: 3199 + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 3200 + 2518 3201 which@2.0.2: 2519 3202 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2520 3203 engines: {node: '>= 8'} ··· 2547 3230 optional: true 2548 3231 utf-8-validate: 2549 3232 optional: true 3233 + 3234 + xtend@4.0.2: 3235 + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 3236 + engines: {node: '>=0.4'} 2550 3237 2551 3238 y18n@5.0.8: 2552 3239 resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} ··· 3096 3783 '@eslint/core': 0.17.0 3097 3784 levn: 0.4.1 3098 3785 3786 + '@grpc/grpc-js@1.14.2': 3787 + dependencies: 3788 + '@grpc/proto-loader': 0.8.0 3789 + '@js-sdsl/ordered-map': 4.4.2 3790 + 3791 + '@grpc/proto-loader@0.8.0': 3792 + dependencies: 3793 + lodash.camelcase: 4.3.0 3794 + long: 5.3.2 3795 + protobufjs: 7.5.4 3796 + yargs: 17.7.2 3797 + 3099 3798 '@humanfs/core@0.19.1': {} 3100 3799 3101 3800 '@humanfs/node@0.16.7': ··· 3136 3835 dependencies: 3137 3836 '@jridgewell/resolve-uri': 3.1.2 3138 3837 '@jridgewell/sourcemap-codec': 1.5.5 3838 + 3839 + '@js-sdsl/ordered-map@4.4.2': {} 3840 + 3841 + '@kubiks/otel-drizzle@2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20251205.0)(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(better-sqlite3@12.5.0))': 3842 + dependencies: 3843 + '@opentelemetry/api': 1.9.0 3844 + drizzle-orm: 0.44.7(@cloudflare/workers-types@4.20251205.0)(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(better-sqlite3@12.5.0) 3139 3845 3140 3846 '@libsql/client@0.15.15': 3141 3847 dependencies: ··· 3207 3913 3208 3914 '@noble/hashes@1.8.0': {} 3209 3915 3916 + '@opentelemetry/api-logs@0.208.0': 3917 + dependencies: 3918 + '@opentelemetry/api': 1.9.0 3919 + 3920 + '@opentelemetry/api@1.9.0': {} 3921 + 3922 + '@opentelemetry/auto-instrumentations-node@0.67.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))': 3923 + dependencies: 3924 + '@opentelemetry/api': 1.9.0 3925 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 3926 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 3927 + '@opentelemetry/instrumentation-amqplib': 0.55.0(@opentelemetry/api@1.9.0) 3928 + '@opentelemetry/instrumentation-aws-lambda': 0.61.0(@opentelemetry/api@1.9.0) 3929 + '@opentelemetry/instrumentation-aws-sdk': 0.64.0(@opentelemetry/api@1.9.0) 3930 + '@opentelemetry/instrumentation-bunyan': 0.54.0(@opentelemetry/api@1.9.0) 3931 + '@opentelemetry/instrumentation-cassandra-driver': 0.54.0(@opentelemetry/api@1.9.0) 3932 + '@opentelemetry/instrumentation-connect': 0.52.0(@opentelemetry/api@1.9.0) 3933 + '@opentelemetry/instrumentation-cucumber': 0.24.0(@opentelemetry/api@1.9.0) 3934 + '@opentelemetry/instrumentation-dataloader': 0.26.0(@opentelemetry/api@1.9.0) 3935 + '@opentelemetry/instrumentation-dns': 0.52.0(@opentelemetry/api@1.9.0) 3936 + '@opentelemetry/instrumentation-express': 0.57.0(@opentelemetry/api@1.9.0) 3937 + '@opentelemetry/instrumentation-fastify': 0.53.0(@opentelemetry/api@1.9.0) 3938 + '@opentelemetry/instrumentation-fs': 0.28.0(@opentelemetry/api@1.9.0) 3939 + '@opentelemetry/instrumentation-generic-pool': 0.52.0(@opentelemetry/api@1.9.0) 3940 + '@opentelemetry/instrumentation-graphql': 0.56.0(@opentelemetry/api@1.9.0) 3941 + '@opentelemetry/instrumentation-grpc': 0.208.0(@opentelemetry/api@1.9.0) 3942 + '@opentelemetry/instrumentation-hapi': 0.55.0(@opentelemetry/api@1.9.0) 3943 + '@opentelemetry/instrumentation-http': 0.208.0(@opentelemetry/api@1.9.0) 3944 + '@opentelemetry/instrumentation-ioredis': 0.56.0(@opentelemetry/api@1.9.0) 3945 + '@opentelemetry/instrumentation-kafkajs': 0.18.0(@opentelemetry/api@1.9.0) 3946 + '@opentelemetry/instrumentation-knex': 0.53.1(@opentelemetry/api@1.9.0) 3947 + '@opentelemetry/instrumentation-koa': 0.57.0(@opentelemetry/api@1.9.0) 3948 + '@opentelemetry/instrumentation-lru-memoizer': 0.53.0(@opentelemetry/api@1.9.0) 3949 + '@opentelemetry/instrumentation-memcached': 0.52.0(@opentelemetry/api@1.9.0) 3950 + '@opentelemetry/instrumentation-mongodb': 0.61.0(@opentelemetry/api@1.9.0) 3951 + '@opentelemetry/instrumentation-mongoose': 0.55.0(@opentelemetry/api@1.9.0) 3952 + '@opentelemetry/instrumentation-mysql': 0.54.0(@opentelemetry/api@1.9.0) 3953 + '@opentelemetry/instrumentation-mysql2': 0.55.0(@opentelemetry/api@1.9.0) 3954 + '@opentelemetry/instrumentation-nestjs-core': 0.55.0(@opentelemetry/api@1.9.0) 3955 + '@opentelemetry/instrumentation-net': 0.52.0(@opentelemetry/api@1.9.0) 3956 + '@opentelemetry/instrumentation-openai': 0.7.0(@opentelemetry/api@1.9.0) 3957 + '@opentelemetry/instrumentation-oracledb': 0.34.0(@opentelemetry/api@1.9.0) 3958 + '@opentelemetry/instrumentation-pg': 0.61.1(@opentelemetry/api@1.9.0) 3959 + '@opentelemetry/instrumentation-pino': 0.55.0(@opentelemetry/api@1.9.0) 3960 + '@opentelemetry/instrumentation-redis': 0.57.1(@opentelemetry/api@1.9.0) 3961 + '@opentelemetry/instrumentation-restify': 0.54.0(@opentelemetry/api@1.9.0) 3962 + '@opentelemetry/instrumentation-router': 0.53.0(@opentelemetry/api@1.9.0) 3963 + '@opentelemetry/instrumentation-runtime-node': 0.22.0(@opentelemetry/api@1.9.0) 3964 + '@opentelemetry/instrumentation-socket.io': 0.55.0(@opentelemetry/api@1.9.0) 3965 + '@opentelemetry/instrumentation-tedious': 0.27.0(@opentelemetry/api@1.9.0) 3966 + '@opentelemetry/instrumentation-undici': 0.19.0(@opentelemetry/api@1.9.0) 3967 + '@opentelemetry/instrumentation-winston': 0.53.0(@opentelemetry/api@1.9.0) 3968 + '@opentelemetry/resource-detector-alibaba-cloud': 0.31.11(@opentelemetry/api@1.9.0) 3969 + '@opentelemetry/resource-detector-aws': 2.8.0(@opentelemetry/api@1.9.0) 3970 + '@opentelemetry/resource-detector-azure': 0.16.0(@opentelemetry/api@1.9.0) 3971 + '@opentelemetry/resource-detector-container': 0.7.11(@opentelemetry/api@1.9.0) 3972 + '@opentelemetry/resource-detector-gcp': 0.43.0(@opentelemetry/api@1.9.0) 3973 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 3974 + '@opentelemetry/sdk-node': 0.208.0(@opentelemetry/api@1.9.0) 3975 + transitivePeerDependencies: 3976 + - encoding 3977 + - supports-color 3978 + 3979 + '@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0)': 3980 + dependencies: 3981 + '@opentelemetry/api': 1.9.0 3982 + 3983 + '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': 3984 + dependencies: 3985 + '@opentelemetry/api': 1.9.0 3986 + '@opentelemetry/semantic-conventions': 1.38.0 3987 + 3988 + '@opentelemetry/exporter-logs-otlp-grpc@0.208.0(@opentelemetry/api@1.9.0)': 3989 + dependencies: 3990 + '@grpc/grpc-js': 1.14.2 3991 + '@opentelemetry/api': 1.9.0 3992 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 3993 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 3994 + '@opentelemetry/otlp-grpc-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 3995 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 3996 + '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) 3997 + 3998 + '@opentelemetry/exporter-logs-otlp-http@0.208.0(@opentelemetry/api@1.9.0)': 3999 + dependencies: 4000 + '@opentelemetry/api': 1.9.0 4001 + '@opentelemetry/api-logs': 0.208.0 4002 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4003 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4004 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4005 + '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) 4006 + 4007 + '@opentelemetry/exporter-logs-otlp-proto@0.208.0(@opentelemetry/api@1.9.0)': 4008 + dependencies: 4009 + '@opentelemetry/api': 1.9.0 4010 + '@opentelemetry/api-logs': 0.208.0 4011 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4012 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4013 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4014 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4015 + '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) 4016 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4017 + 4018 + '@opentelemetry/exporter-metrics-otlp-grpc@0.208.0(@opentelemetry/api@1.9.0)': 4019 + dependencies: 4020 + '@grpc/grpc-js': 1.14.2 4021 + '@opentelemetry/api': 1.9.0 4022 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4023 + '@opentelemetry/exporter-metrics-otlp-http': 0.208.0(@opentelemetry/api@1.9.0) 4024 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4025 + '@opentelemetry/otlp-grpc-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4026 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4027 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4028 + '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0) 4029 + 4030 + '@opentelemetry/exporter-metrics-otlp-http@0.208.0(@opentelemetry/api@1.9.0)': 4031 + dependencies: 4032 + '@opentelemetry/api': 1.9.0 4033 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4034 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4035 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4036 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4037 + '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0) 4038 + 4039 + '@opentelemetry/exporter-metrics-otlp-proto@0.208.0(@opentelemetry/api@1.9.0)': 4040 + dependencies: 4041 + '@opentelemetry/api': 1.9.0 4042 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4043 + '@opentelemetry/exporter-metrics-otlp-http': 0.208.0(@opentelemetry/api@1.9.0) 4044 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4045 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4046 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4047 + '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0) 4048 + 4049 + '@opentelemetry/exporter-prometheus@0.208.0(@opentelemetry/api@1.9.0)': 4050 + dependencies: 4051 + '@opentelemetry/api': 1.9.0 4052 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4053 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4054 + '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0) 4055 + 4056 + '@opentelemetry/exporter-trace-otlp-grpc@0.208.0(@opentelemetry/api@1.9.0)': 4057 + dependencies: 4058 + '@grpc/grpc-js': 1.14.2 4059 + '@opentelemetry/api': 1.9.0 4060 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4061 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4062 + '@opentelemetry/otlp-grpc-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4063 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4064 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4065 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4066 + 4067 + '@opentelemetry/exporter-trace-otlp-http@0.208.0(@opentelemetry/api@1.9.0)': 4068 + dependencies: 4069 + '@opentelemetry/api': 1.9.0 4070 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4071 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4072 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4073 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4074 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4075 + 4076 + '@opentelemetry/exporter-trace-otlp-proto@0.208.0(@opentelemetry/api@1.9.0)': 4077 + dependencies: 4078 + '@opentelemetry/api': 1.9.0 4079 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4080 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4081 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4082 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4083 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4084 + 4085 + '@opentelemetry/exporter-zipkin@2.2.0(@opentelemetry/api@1.9.0)': 4086 + dependencies: 4087 + '@opentelemetry/api': 1.9.0 4088 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4089 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4090 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4091 + '@opentelemetry/semantic-conventions': 1.38.0 4092 + 4093 + '@opentelemetry/instrumentation-amqplib@0.55.0(@opentelemetry/api@1.9.0)': 4094 + dependencies: 4095 + '@opentelemetry/api': 1.9.0 4096 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4097 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4098 + transitivePeerDependencies: 4099 + - supports-color 4100 + 4101 + '@opentelemetry/instrumentation-aws-lambda@0.61.0(@opentelemetry/api@1.9.0)': 4102 + dependencies: 4103 + '@opentelemetry/api': 1.9.0 4104 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4105 + '@opentelemetry/semantic-conventions': 1.38.0 4106 + '@types/aws-lambda': 8.10.159 4107 + transitivePeerDependencies: 4108 + - supports-color 4109 + 4110 + '@opentelemetry/instrumentation-aws-sdk@0.64.0(@opentelemetry/api@1.9.0)': 4111 + dependencies: 4112 + '@opentelemetry/api': 1.9.0 4113 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4114 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4115 + '@opentelemetry/semantic-conventions': 1.38.0 4116 + transitivePeerDependencies: 4117 + - supports-color 4118 + 4119 + '@opentelemetry/instrumentation-bunyan@0.54.0(@opentelemetry/api@1.9.0)': 4120 + dependencies: 4121 + '@opentelemetry/api': 1.9.0 4122 + '@opentelemetry/api-logs': 0.208.0 4123 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4124 + '@types/bunyan': 1.8.11 4125 + transitivePeerDependencies: 4126 + - supports-color 4127 + 4128 + '@opentelemetry/instrumentation-cassandra-driver@0.54.0(@opentelemetry/api@1.9.0)': 4129 + dependencies: 4130 + '@opentelemetry/api': 1.9.0 4131 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4132 + transitivePeerDependencies: 4133 + - supports-color 4134 + 4135 + '@opentelemetry/instrumentation-connect@0.52.0(@opentelemetry/api@1.9.0)': 4136 + dependencies: 4137 + '@opentelemetry/api': 1.9.0 4138 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4139 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4140 + '@opentelemetry/semantic-conventions': 1.38.0 4141 + '@types/connect': 3.4.38 4142 + transitivePeerDependencies: 4143 + - supports-color 4144 + 4145 + '@opentelemetry/instrumentation-cucumber@0.24.0(@opentelemetry/api@1.9.0)': 4146 + dependencies: 4147 + '@opentelemetry/api': 1.9.0 4148 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4149 + '@opentelemetry/semantic-conventions': 1.38.0 4150 + transitivePeerDependencies: 4151 + - supports-color 4152 + 4153 + '@opentelemetry/instrumentation-dataloader@0.26.0(@opentelemetry/api@1.9.0)': 4154 + dependencies: 4155 + '@opentelemetry/api': 1.9.0 4156 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4157 + transitivePeerDependencies: 4158 + - supports-color 4159 + 4160 + '@opentelemetry/instrumentation-dns@0.52.0(@opentelemetry/api@1.9.0)': 4161 + dependencies: 4162 + '@opentelemetry/api': 1.9.0 4163 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4164 + transitivePeerDependencies: 4165 + - supports-color 4166 + 4167 + '@opentelemetry/instrumentation-express@0.57.0(@opentelemetry/api@1.9.0)': 4168 + dependencies: 4169 + '@opentelemetry/api': 1.9.0 4170 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4171 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4172 + '@opentelemetry/semantic-conventions': 1.38.0 4173 + transitivePeerDependencies: 4174 + - supports-color 4175 + 4176 + '@opentelemetry/instrumentation-fastify@0.53.0(@opentelemetry/api@1.9.0)': 4177 + dependencies: 4178 + '@opentelemetry/api': 1.9.0 4179 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4180 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4181 + '@opentelemetry/semantic-conventions': 1.38.0 4182 + transitivePeerDependencies: 4183 + - supports-color 4184 + 4185 + '@opentelemetry/instrumentation-fs@0.28.0(@opentelemetry/api@1.9.0)': 4186 + dependencies: 4187 + '@opentelemetry/api': 1.9.0 4188 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4189 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4190 + transitivePeerDependencies: 4191 + - supports-color 4192 + 4193 + '@opentelemetry/instrumentation-generic-pool@0.52.0(@opentelemetry/api@1.9.0)': 4194 + dependencies: 4195 + '@opentelemetry/api': 1.9.0 4196 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4197 + transitivePeerDependencies: 4198 + - supports-color 4199 + 4200 + '@opentelemetry/instrumentation-graphql@0.56.0(@opentelemetry/api@1.9.0)': 4201 + dependencies: 4202 + '@opentelemetry/api': 1.9.0 4203 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4204 + transitivePeerDependencies: 4205 + - supports-color 4206 + 4207 + '@opentelemetry/instrumentation-grpc@0.208.0(@opentelemetry/api@1.9.0)': 4208 + dependencies: 4209 + '@opentelemetry/api': 1.9.0 4210 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4211 + '@opentelemetry/semantic-conventions': 1.38.0 4212 + transitivePeerDependencies: 4213 + - supports-color 4214 + 4215 + '@opentelemetry/instrumentation-hapi@0.55.0(@opentelemetry/api@1.9.0)': 4216 + dependencies: 4217 + '@opentelemetry/api': 1.9.0 4218 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4219 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4220 + '@opentelemetry/semantic-conventions': 1.38.0 4221 + transitivePeerDependencies: 4222 + - supports-color 4223 + 4224 + '@opentelemetry/instrumentation-http@0.208.0(@opentelemetry/api@1.9.0)': 4225 + dependencies: 4226 + '@opentelemetry/api': 1.9.0 4227 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4228 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4229 + '@opentelemetry/semantic-conventions': 1.38.0 4230 + forwarded-parse: 2.1.2 4231 + transitivePeerDependencies: 4232 + - supports-color 4233 + 4234 + '@opentelemetry/instrumentation-ioredis@0.56.0(@opentelemetry/api@1.9.0)': 4235 + dependencies: 4236 + '@opentelemetry/api': 1.9.0 4237 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4238 + '@opentelemetry/redis-common': 0.38.2 4239 + transitivePeerDependencies: 4240 + - supports-color 4241 + 4242 + '@opentelemetry/instrumentation-kafkajs@0.18.0(@opentelemetry/api@1.9.0)': 4243 + dependencies: 4244 + '@opentelemetry/api': 1.9.0 4245 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4246 + '@opentelemetry/semantic-conventions': 1.38.0 4247 + transitivePeerDependencies: 4248 + - supports-color 4249 + 4250 + '@opentelemetry/instrumentation-knex@0.53.1(@opentelemetry/api@1.9.0)': 4251 + dependencies: 4252 + '@opentelemetry/api': 1.9.0 4253 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4254 + '@opentelemetry/semantic-conventions': 1.38.0 4255 + transitivePeerDependencies: 4256 + - supports-color 4257 + 4258 + '@opentelemetry/instrumentation-koa@0.57.0(@opentelemetry/api@1.9.0)': 4259 + dependencies: 4260 + '@opentelemetry/api': 1.9.0 4261 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4262 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4263 + '@opentelemetry/semantic-conventions': 1.38.0 4264 + transitivePeerDependencies: 4265 + - supports-color 4266 + 4267 + '@opentelemetry/instrumentation-lru-memoizer@0.53.0(@opentelemetry/api@1.9.0)': 4268 + dependencies: 4269 + '@opentelemetry/api': 1.9.0 4270 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4271 + transitivePeerDependencies: 4272 + - supports-color 4273 + 4274 + '@opentelemetry/instrumentation-memcached@0.52.0(@opentelemetry/api@1.9.0)': 4275 + dependencies: 4276 + '@opentelemetry/api': 1.9.0 4277 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4278 + '@opentelemetry/semantic-conventions': 1.38.0 4279 + '@types/memcached': 2.2.10 4280 + transitivePeerDependencies: 4281 + - supports-color 4282 + 4283 + '@opentelemetry/instrumentation-mongodb@0.61.0(@opentelemetry/api@1.9.0)': 4284 + dependencies: 4285 + '@opentelemetry/api': 1.9.0 4286 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4287 + transitivePeerDependencies: 4288 + - supports-color 4289 + 4290 + '@opentelemetry/instrumentation-mongoose@0.55.0(@opentelemetry/api@1.9.0)': 4291 + dependencies: 4292 + '@opentelemetry/api': 1.9.0 4293 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4294 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4295 + transitivePeerDependencies: 4296 + - supports-color 4297 + 4298 + '@opentelemetry/instrumentation-mysql2@0.55.0(@opentelemetry/api@1.9.0)': 4299 + dependencies: 4300 + '@opentelemetry/api': 1.9.0 4301 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4302 + '@opentelemetry/semantic-conventions': 1.38.0 4303 + '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) 4304 + transitivePeerDependencies: 4305 + - supports-color 4306 + 4307 + '@opentelemetry/instrumentation-mysql@0.54.0(@opentelemetry/api@1.9.0)': 4308 + dependencies: 4309 + '@opentelemetry/api': 1.9.0 4310 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4311 + '@types/mysql': 2.15.27 4312 + transitivePeerDependencies: 4313 + - supports-color 4314 + 4315 + '@opentelemetry/instrumentation-nestjs-core@0.55.0(@opentelemetry/api@1.9.0)': 4316 + dependencies: 4317 + '@opentelemetry/api': 1.9.0 4318 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4319 + '@opentelemetry/semantic-conventions': 1.38.0 4320 + transitivePeerDependencies: 4321 + - supports-color 4322 + 4323 + '@opentelemetry/instrumentation-net@0.52.0(@opentelemetry/api@1.9.0)': 4324 + dependencies: 4325 + '@opentelemetry/api': 1.9.0 4326 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4327 + transitivePeerDependencies: 4328 + - supports-color 4329 + 4330 + '@opentelemetry/instrumentation-openai@0.7.0(@opentelemetry/api@1.9.0)': 4331 + dependencies: 4332 + '@opentelemetry/api': 1.9.0 4333 + '@opentelemetry/api-logs': 0.208.0 4334 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4335 + '@opentelemetry/semantic-conventions': 1.38.0 4336 + transitivePeerDependencies: 4337 + - supports-color 4338 + 4339 + '@opentelemetry/instrumentation-oracledb@0.34.0(@opentelemetry/api@1.9.0)': 4340 + dependencies: 4341 + '@opentelemetry/api': 1.9.0 4342 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4343 + '@opentelemetry/semantic-conventions': 1.38.0 4344 + '@types/oracledb': 6.5.2 4345 + transitivePeerDependencies: 4346 + - supports-color 4347 + 4348 + '@opentelemetry/instrumentation-pg@0.61.1(@opentelemetry/api@1.9.0)': 4349 + dependencies: 4350 + '@opentelemetry/api': 1.9.0 4351 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4352 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4353 + '@opentelemetry/semantic-conventions': 1.38.0 4354 + '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) 4355 + '@types/pg': 8.15.6 4356 + '@types/pg-pool': 2.0.6 4357 + transitivePeerDependencies: 4358 + - supports-color 4359 + 4360 + '@opentelemetry/instrumentation-pino@0.55.0(@opentelemetry/api@1.9.0)': 4361 + dependencies: 4362 + '@opentelemetry/api': 1.9.0 4363 + '@opentelemetry/api-logs': 0.208.0 4364 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4365 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4366 + transitivePeerDependencies: 4367 + - supports-color 4368 + 4369 + '@opentelemetry/instrumentation-redis@0.57.1(@opentelemetry/api@1.9.0)': 4370 + dependencies: 4371 + '@opentelemetry/api': 1.9.0 4372 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4373 + '@opentelemetry/redis-common': 0.38.2 4374 + '@opentelemetry/semantic-conventions': 1.38.0 4375 + transitivePeerDependencies: 4376 + - supports-color 4377 + 4378 + '@opentelemetry/instrumentation-restify@0.54.0(@opentelemetry/api@1.9.0)': 4379 + dependencies: 4380 + '@opentelemetry/api': 1.9.0 4381 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4382 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4383 + '@opentelemetry/semantic-conventions': 1.38.0 4384 + transitivePeerDependencies: 4385 + - supports-color 4386 + 4387 + '@opentelemetry/instrumentation-router@0.53.0(@opentelemetry/api@1.9.0)': 4388 + dependencies: 4389 + '@opentelemetry/api': 1.9.0 4390 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4391 + '@opentelemetry/semantic-conventions': 1.38.0 4392 + transitivePeerDependencies: 4393 + - supports-color 4394 + 4395 + '@opentelemetry/instrumentation-runtime-node@0.22.0(@opentelemetry/api@1.9.0)': 4396 + dependencies: 4397 + '@opentelemetry/api': 1.9.0 4398 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4399 + transitivePeerDependencies: 4400 + - supports-color 4401 + 4402 + '@opentelemetry/instrumentation-socket.io@0.55.0(@opentelemetry/api@1.9.0)': 4403 + dependencies: 4404 + '@opentelemetry/api': 1.9.0 4405 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4406 + transitivePeerDependencies: 4407 + - supports-color 4408 + 4409 + '@opentelemetry/instrumentation-tedious@0.27.0(@opentelemetry/api@1.9.0)': 4410 + dependencies: 4411 + '@opentelemetry/api': 1.9.0 4412 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4413 + '@types/tedious': 4.0.14 4414 + transitivePeerDependencies: 4415 + - supports-color 4416 + 4417 + '@opentelemetry/instrumentation-undici@0.19.0(@opentelemetry/api@1.9.0)': 4418 + dependencies: 4419 + '@opentelemetry/api': 1.9.0 4420 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4421 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4422 + '@opentelemetry/semantic-conventions': 1.38.0 4423 + transitivePeerDependencies: 4424 + - supports-color 4425 + 4426 + '@opentelemetry/instrumentation-winston@0.53.0(@opentelemetry/api@1.9.0)': 4427 + dependencies: 4428 + '@opentelemetry/api': 1.9.0 4429 + '@opentelemetry/api-logs': 0.208.0 4430 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4431 + transitivePeerDependencies: 4432 + - supports-color 4433 + 4434 + '@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0)': 4435 + dependencies: 4436 + '@opentelemetry/api': 1.9.0 4437 + '@opentelemetry/api-logs': 0.208.0 4438 + import-in-the-middle: 2.0.0 4439 + require-in-the-middle: 8.0.1 4440 + transitivePeerDependencies: 4441 + - supports-color 4442 + 4443 + '@opentelemetry/otlp-exporter-base@0.208.0(@opentelemetry/api@1.9.0)': 4444 + dependencies: 4445 + '@opentelemetry/api': 1.9.0 4446 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4447 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4448 + 4449 + '@opentelemetry/otlp-grpc-exporter-base@0.208.0(@opentelemetry/api@1.9.0)': 4450 + dependencies: 4451 + '@grpc/grpc-js': 1.14.2 4452 + '@opentelemetry/api': 1.9.0 4453 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4454 + '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0) 4455 + '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0) 4456 + 4457 + '@opentelemetry/otlp-transformer@0.208.0(@opentelemetry/api@1.9.0)': 4458 + dependencies: 4459 + '@opentelemetry/api': 1.9.0 4460 + '@opentelemetry/api-logs': 0.208.0 4461 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4462 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4463 + '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) 4464 + '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0) 4465 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4466 + protobufjs: 7.5.4 4467 + 4468 + '@opentelemetry/propagator-b3@2.2.0(@opentelemetry/api@1.9.0)': 4469 + dependencies: 4470 + '@opentelemetry/api': 1.9.0 4471 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4472 + 4473 + '@opentelemetry/propagator-jaeger@2.2.0(@opentelemetry/api@1.9.0)': 4474 + dependencies: 4475 + '@opentelemetry/api': 1.9.0 4476 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4477 + 4478 + '@opentelemetry/redis-common@0.38.2': {} 4479 + 4480 + '@opentelemetry/resource-detector-alibaba-cloud@0.31.11(@opentelemetry/api@1.9.0)': 4481 + dependencies: 4482 + '@opentelemetry/api': 1.9.0 4483 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4484 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4485 + 4486 + '@opentelemetry/resource-detector-aws@2.8.0(@opentelemetry/api@1.9.0)': 4487 + dependencies: 4488 + '@opentelemetry/api': 1.9.0 4489 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4490 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4491 + '@opentelemetry/semantic-conventions': 1.38.0 4492 + 4493 + '@opentelemetry/resource-detector-azure@0.16.0(@opentelemetry/api@1.9.0)': 4494 + dependencies: 4495 + '@opentelemetry/api': 1.9.0 4496 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4497 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4498 + '@opentelemetry/semantic-conventions': 1.38.0 4499 + 4500 + '@opentelemetry/resource-detector-container@0.7.11(@opentelemetry/api@1.9.0)': 4501 + dependencies: 4502 + '@opentelemetry/api': 1.9.0 4503 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4504 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4505 + 4506 + '@opentelemetry/resource-detector-gcp@0.43.0(@opentelemetry/api@1.9.0)': 4507 + dependencies: 4508 + '@opentelemetry/api': 1.9.0 4509 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4510 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4511 + gcp-metadata: 6.1.1 4512 + transitivePeerDependencies: 4513 + - encoding 4514 + - supports-color 4515 + 4516 + '@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0)': 4517 + dependencies: 4518 + '@opentelemetry/api': 1.9.0 4519 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4520 + '@opentelemetry/semantic-conventions': 1.38.0 4521 + 4522 + '@opentelemetry/sdk-logs@0.208.0(@opentelemetry/api@1.9.0)': 4523 + dependencies: 4524 + '@opentelemetry/api': 1.9.0 4525 + '@opentelemetry/api-logs': 0.208.0 4526 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4527 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4528 + 4529 + '@opentelemetry/sdk-metrics@2.2.0(@opentelemetry/api@1.9.0)': 4530 + dependencies: 4531 + '@opentelemetry/api': 1.9.0 4532 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4533 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4534 + 4535 + '@opentelemetry/sdk-node@0.208.0(@opentelemetry/api@1.9.0)': 4536 + dependencies: 4537 + '@opentelemetry/api': 1.9.0 4538 + '@opentelemetry/api-logs': 0.208.0 4539 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4540 + '@opentelemetry/exporter-logs-otlp-grpc': 0.208.0(@opentelemetry/api@1.9.0) 4541 + '@opentelemetry/exporter-logs-otlp-http': 0.208.0(@opentelemetry/api@1.9.0) 4542 + '@opentelemetry/exporter-logs-otlp-proto': 0.208.0(@opentelemetry/api@1.9.0) 4543 + '@opentelemetry/exporter-metrics-otlp-grpc': 0.208.0(@opentelemetry/api@1.9.0) 4544 + '@opentelemetry/exporter-metrics-otlp-http': 0.208.0(@opentelemetry/api@1.9.0) 4545 + '@opentelemetry/exporter-metrics-otlp-proto': 0.208.0(@opentelemetry/api@1.9.0) 4546 + '@opentelemetry/exporter-prometheus': 0.208.0(@opentelemetry/api@1.9.0) 4547 + '@opentelemetry/exporter-trace-otlp-grpc': 0.208.0(@opentelemetry/api@1.9.0) 4548 + '@opentelemetry/exporter-trace-otlp-http': 0.208.0(@opentelemetry/api@1.9.0) 4549 + '@opentelemetry/exporter-trace-otlp-proto': 0.208.0(@opentelemetry/api@1.9.0) 4550 + '@opentelemetry/exporter-zipkin': 2.2.0(@opentelemetry/api@1.9.0) 4551 + '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0) 4552 + '@opentelemetry/propagator-b3': 2.2.0(@opentelemetry/api@1.9.0) 4553 + '@opentelemetry/propagator-jaeger': 2.2.0(@opentelemetry/api@1.9.0) 4554 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4555 + '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) 4556 + '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0) 4557 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4558 + '@opentelemetry/sdk-trace-node': 2.2.0(@opentelemetry/api@1.9.0) 4559 + '@opentelemetry/semantic-conventions': 1.38.0 4560 + transitivePeerDependencies: 4561 + - supports-color 4562 + 4563 + '@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0)': 4564 + dependencies: 4565 + '@opentelemetry/api': 1.9.0 4566 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4567 + '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) 4568 + '@opentelemetry/semantic-conventions': 1.38.0 4569 + 4570 + '@opentelemetry/sdk-trace-node@2.2.0(@opentelemetry/api@1.9.0)': 4571 + dependencies: 4572 + '@opentelemetry/api': 1.9.0 4573 + '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0) 4574 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4575 + '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) 4576 + 4577 + '@opentelemetry/semantic-conventions@1.38.0': {} 4578 + 4579 + '@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0)': 4580 + dependencies: 4581 + '@opentelemetry/api': 1.9.0 4582 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) 4583 + 3210 4584 '@polka/url@1.0.0-next.29': {} 3211 4585 4586 + '@protobufjs/aspromise@1.1.2': {} 4587 + 4588 + '@protobufjs/base64@1.1.2': {} 4589 + 4590 + '@protobufjs/codegen@2.0.4': {} 4591 + 4592 + '@protobufjs/eventemitter@1.1.0': {} 4593 + 4594 + '@protobufjs/fetch@1.1.0': 4595 + dependencies: 4596 + '@protobufjs/aspromise': 1.1.2 4597 + '@protobufjs/inquire': 1.1.0 4598 + 4599 + '@protobufjs/float@1.0.2': {} 4600 + 4601 + '@protobufjs/inquire@1.1.0': {} 4602 + 4603 + '@protobufjs/path@1.1.2': {} 4604 + 4605 + '@protobufjs/pool@1.1.0': {} 4606 + 4607 + '@protobufjs/utf8@1.1.0': {} 4608 + 3212 4609 '@rollup/plugin-commonjs@28.0.9(rollup@4.53.3)': 3213 4610 dependencies: 3214 4611 '@rollup/pluginutils': 5.3.0(rollup@4.53.3) ··· 3317 4714 dependencies: 3318 4715 acorn: 8.15.0 3319 4716 3320 - '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))': 4717 + '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))': 3321 4718 dependencies: 3322 - '@sveltejs/kit': 2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) 4719 + '@sveltejs/kit': 2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) 3323 4720 3324 - '@sveltejs/adapter-node@5.4.0(@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))': 4721 + '@sveltejs/adapter-node@5.4.0(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))': 3325 4722 dependencies: 3326 4723 '@rollup/plugin-commonjs': 28.0.9(rollup@4.53.3) 3327 4724 '@rollup/plugin-json': 6.1.0(rollup@4.53.3) 3328 4725 '@rollup/plugin-node-resolve': 16.0.3(rollup@4.53.3) 3329 - '@sveltejs/kit': 2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) 4726 + '@sveltejs/kit': 2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) 3330 4727 rollup: 4.53.3 3331 4728 3332 - '@sveltejs/kit@2.49.0(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))': 4729 + '@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))': 3333 4730 dependencies: 3334 4731 '@standard-schema/spec': 1.0.0 3335 4732 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) ··· 3347 4744 sirv: 3.0.2 3348 4745 svelte: 5.45.2 3349 4746 vite: 7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 4747 + optionalDependencies: 4748 + '@opentelemetry/api': 1.9.0 3350 4749 3351 4750 '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(svelte@5.45.2)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))': 3352 4751 dependencies: ··· 3443 4842 path-browserify: 1.0.1 3444 4843 tinyglobby: 0.2.15 3445 4844 4845 + '@types/aws-lambda@8.10.159': {} 4846 + 4847 + '@types/bunyan@1.8.11': 4848 + dependencies: 4849 + '@types/node': 22.19.1 4850 + 3446 4851 '@types/chai@5.2.3': 3447 4852 dependencies: 3448 4853 '@types/deep-eql': 4.0.2 3449 4854 assertion-error: 2.0.1 3450 4855 4856 + '@types/connect@3.4.38': 4857 + dependencies: 4858 + '@types/node': 22.19.1 4859 + 3451 4860 '@types/cookie@0.6.0': {} 3452 4861 3453 4862 '@types/deep-eql@4.0.2': {} ··· 3456 4865 3457 4866 '@types/json-schema@7.0.15': {} 3458 4867 4868 + '@types/memcached@2.2.10': 4869 + dependencies: 4870 + '@types/node': 22.19.1 4871 + 4872 + '@types/mysql@2.15.27': 4873 + dependencies: 4874 + '@types/node': 22.19.1 4875 + 3459 4876 '@types/node@22.19.1': 3460 4877 dependencies: 3461 4878 undici-types: 6.21.0 3462 4879 4880 + '@types/oracledb@6.5.2': 4881 + dependencies: 4882 + '@types/node': 22.19.1 4883 + 4884 + '@types/pg-pool@2.0.6': 4885 + dependencies: 4886 + '@types/pg': 8.15.6 4887 + 4888 + '@types/pg@8.15.6': 4889 + dependencies: 4890 + '@types/node': 22.19.1 4891 + pg-protocol: 1.10.3 4892 + pg-types: 2.2.0 4893 + 3463 4894 '@types/resolve@1.20.2': {} 4895 + 4896 + '@types/tedious@4.0.14': 4897 + dependencies: 4898 + '@types/node': 22.19.1 3464 4899 3465 4900 '@types/ws@8.18.1': 3466 4901 dependencies: ··· 3564 4999 '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) 3565 5000 playwright: 1.57.0 3566 5001 tinyrainbow: 3.0.3 3567 - vitest: 4.0.14(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 5002 + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 3568 5003 transitivePeerDependencies: 3569 5004 - bufferutil 3570 5005 - msw ··· 3580 5015 pngjs: 7.0.0 3581 5016 sirv: 3.0.2 3582 5017 tinyrainbow: 3.0.3 3583 - vitest: 4.0.14(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 5018 + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 3584 5019 ws: 8.18.3 3585 5020 transitivePeerDependencies: 3586 5021 - bufferutil ··· 3631 5066 dependencies: 3632 5067 event-target-shim: 5.0.1 3633 5068 5069 + acorn-import-attributes@1.9.5(acorn@8.15.0): 5070 + dependencies: 5071 + acorn: 8.15.0 5072 + 3634 5073 acorn-jsx@5.3.2(acorn@8.15.0): 3635 5074 dependencies: 3636 5075 acorn: 8.15.0 3637 5076 3638 5077 acorn@8.15.0: {} 5078 + 5079 + agent-base@7.1.4: {} 3639 5080 3640 5081 ajv@6.12.6: 3641 5082 dependencies: ··· 3668 5109 dependencies: 3669 5110 bindings: 1.5.0 3670 5111 prebuild-install: 7.1.3 5112 + 5113 + bignumber.js@9.3.1: {} 3671 5114 3672 5115 bindings@1.5.0: 3673 5116 dependencies: ··· 3717 5160 3718 5161 chownr@1.1.4: {} 3719 5162 5163 + cjs-module-lexer@1.4.3: {} 5164 + 3720 5165 cliui@8.0.1: 3721 5166 dependencies: 3722 5167 string-width: 4.2.3 ··· 3782 5227 transitivePeerDependencies: 3783 5228 - supports-color 3784 5229 3785 - drizzle-orm@0.44.7(@cloudflare/workers-types@4.20251205.0)(@libsql/client@0.15.15)(better-sqlite3@12.5.0): 5230 + drizzle-orm@0.44.7(@cloudflare/workers-types@4.20251205.0)(@libsql/client@0.15.15)(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(better-sqlite3@12.5.0): 3786 5231 optionalDependencies: 3787 5232 '@cloudflare/workers-types': 4.20251205.0 3788 5233 '@libsql/client': 0.15.15 5234 + '@opentelemetry/api': 1.9.0 5235 + '@types/pg': 8.15.6 3789 5236 better-sqlite3: 12.5.0 3790 5237 3791 5238 emoji-regex@8.0.0: {} ··· 4005 5452 4006 5453 expect-type@1.2.2: {} 4007 5454 5455 + extend@3.0.2: {} 5456 + 4008 5457 fast-deep-equal@3.1.3: {} 4009 5458 4010 5459 fast-json-stable-stringify@2.1.0: {} ··· 4044 5493 dependencies: 4045 5494 fetch-blob: 3.2.0 4046 5495 5496 + forwarded-parse@2.1.2: {} 5497 + 4047 5498 fs-constants@1.0.0: {} 4048 5499 4049 5500 fsevents@2.3.2: ··· 4054 5505 4055 5506 function-bind@1.1.2: {} 4056 5507 5508 + gaxios@6.7.1: 5509 + dependencies: 5510 + extend: 3.0.2 5511 + https-proxy-agent: 7.0.6 5512 + is-stream: 2.0.1 5513 + node-fetch: 2.7.0 5514 + uuid: 9.0.1 5515 + transitivePeerDependencies: 5516 + - encoding 5517 + - supports-color 5518 + 5519 + gcp-metadata@6.1.1: 5520 + dependencies: 5521 + gaxios: 6.7.1 5522 + google-logging-utils: 0.0.2 5523 + json-bigint: 1.0.0 5524 + transitivePeerDependencies: 5525 + - encoding 5526 + - supports-color 5527 + 4057 5528 get-caller-file@2.0.5: {} 4058 5529 4059 5530 get-tsconfig@4.13.0: ··· 4069 5540 globals@14.0.0: {} 4070 5541 4071 5542 globals@16.5.0: {} 5543 + 5544 + google-logging-utils@0.0.2: {} 4072 5545 4073 5546 graceful-fs@4.2.11: {} 4074 5547 ··· 4080 5553 dependencies: 4081 5554 function-bind: 1.1.2 4082 5555 5556 + https-proxy-agent@7.0.6: 5557 + dependencies: 5558 + agent-base: 7.1.4 5559 + debug: 4.4.3 5560 + transitivePeerDependencies: 5561 + - supports-color 5562 + 4083 5563 ieee754@1.2.1: {} 4084 5564 4085 5565 ignore@5.3.2: {} ··· 4090 5570 dependencies: 4091 5571 parent-module: 1.0.1 4092 5572 resolve-from: 4.0.0 5573 + 5574 + import-in-the-middle@2.0.0: 5575 + dependencies: 5576 + acorn: 8.15.0 5577 + acorn-import-attributes: 1.9.5(acorn@8.15.0) 5578 + cjs-module-lexer: 1.4.3 5579 + module-details-from-path: 1.0.4 4093 5580 4094 5581 imurmurhash@0.1.4: {} 4095 5582 ··· 4129 5616 dependencies: 4130 5617 '@types/estree': 1.0.8 4131 5618 5619 + is-stream@2.0.1: {} 5620 + 4132 5621 isexe@2.0.0: {} 4133 5622 4134 5623 iso-datestring-validator@2.2.2: {} ··· 4143 5632 dependencies: 4144 5633 argparse: 2.0.1 4145 5634 5635 + json-bigint@1.0.0: 5636 + dependencies: 5637 + bignumber.js: 9.3.1 5638 + 4146 5639 json-buffer@3.0.1: {} 4147 5640 4148 5641 json-schema-traverse@0.4.1: {} ··· 4234 5727 dependencies: 4235 5728 p-locate: 5.0.0 4236 5729 5730 + lodash.camelcase@4.3.0: {} 5731 + 4237 5732 lodash.merge@4.6.2: {} 5733 + 5734 + long@5.3.2: {} 4238 5735 4239 5736 lru-cache@10.4.3: {} 4240 5737 ··· 4260 5757 4261 5758 mkdirp-classic@0.5.3: {} 4262 5759 5760 + module-details-from-path@1.0.4: {} 5761 + 4263 5762 mri@1.2.0: {} 4264 5763 4265 5764 mrmime@2.0.1: {} ··· 4279 5778 semver: 7.7.3 4280 5779 4281 5780 node-domexception@1.0.0: {} 5781 + 5782 + node-fetch@2.7.0: 5783 + dependencies: 5784 + whatwg-url: 5.0.0 4282 5785 4283 5786 node-fetch@3.3.2: 4284 5787 dependencies: ··· 4325 5828 4326 5829 pathe@2.0.3: {} 4327 5830 5831 + pg-int8@1.0.1: {} 5832 + 5833 + pg-protocol@1.10.3: {} 5834 + 5835 + pg-types@2.2.0: 5836 + dependencies: 5837 + pg-int8: 1.0.1 5838 + postgres-array: 2.0.0 5839 + postgres-bytea: 1.0.0 5840 + postgres-date: 1.0.7 5841 + postgres-interval: 1.2.0 5842 + 4328 5843 picocolors@1.1.1: {} 4329 5844 4330 5845 picomatch@4.0.3: {} ··· 4390 5905 picocolors: 1.1.1 4391 5906 source-map-js: 1.2.1 4392 5907 5908 + postgres-array@2.0.0: {} 5909 + 5910 + postgres-bytea@1.0.0: {} 5911 + 5912 + postgres-date@1.0.7: {} 5913 + 5914 + postgres-interval@1.2.0: 5915 + dependencies: 5916 + xtend: 4.0.2 5917 + 4393 5918 prebuild-install@7.1.3: 4394 5919 dependencies: 4395 5920 detect-libc: 2.1.2 ··· 4420 5945 4421 5946 promise-limit@2.7.0: {} 4422 5947 5948 + protobufjs@7.5.4: 5949 + dependencies: 5950 + '@protobufjs/aspromise': 1.1.2 5951 + '@protobufjs/base64': 1.1.2 5952 + '@protobufjs/codegen': 2.0.4 5953 + '@protobufjs/eventemitter': 1.1.0 5954 + '@protobufjs/fetch': 1.1.0 5955 + '@protobufjs/float': 1.0.2 5956 + '@protobufjs/inquire': 1.1.0 5957 + '@protobufjs/path': 1.1.2 5958 + '@protobufjs/pool': 1.1.0 5959 + '@protobufjs/utf8': 1.1.0 5960 + '@types/node': 22.19.1 5961 + long: 5.3.2 5962 + 4423 5963 pump@3.0.3: 4424 5964 dependencies: 4425 5965 end-of-stream: 1.4.5 ··· 4456 5996 4457 5997 require-directory@2.1.1: {} 4458 5998 5999 + require-in-the-middle@8.0.1: 6000 + dependencies: 6001 + debug: 4.4.3 6002 + module-details-from-path: 1.0.4 6003 + transitivePeerDependencies: 6004 + - supports-color 6005 + 4459 6006 resolve-from@4.0.0: {} 4460 6007 4461 6008 resolve-pkg-maps@1.0.0: {} ··· 4648 6195 4649 6196 totalist@3.0.1: {} 4650 6197 6198 + tr46@0.0.3: {} 6199 + 4651 6200 ts-api-utils@2.1.0(typescript@5.9.3): 4652 6201 dependencies: 4653 6202 typescript: 5.9.3 ··· 4705 6254 4706 6255 util-deprecate@1.0.2: {} 4707 6256 6257 + uuid@9.0.1: {} 6258 + 4708 6259 varint@6.0.0: {} 4709 6260 4710 6261 vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0): ··· 4729 6280 vitest-browser-svelte@2.0.1(svelte@5.45.2)(vitest@4.0.14): 4730 6281 dependencies: 4731 6282 svelte: 5.45.2 4732 - vitest: 4.0.14(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 6283 + vitest: 4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 4733 6284 4734 - vitest@4.0.14(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0): 6285 + vitest@4.0.14(@opentelemetry/api@1.9.0)(@types/node@22.19.1)(@vitest/browser-playwright@4.0.14)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0): 4735 6286 dependencies: 4736 6287 '@vitest/expect': 4.0.14 4737 6288 '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)) ··· 4754 6305 vite: 7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0) 4755 6306 why-is-node-running: 2.3.0 4756 6307 optionalDependencies: 6308 + '@opentelemetry/api': 1.9.0 4757 6309 '@types/node': 22.19.1 4758 6310 '@vitest/browser-playwright': 4.0.14(playwright@1.57.0)(vite@7.2.4(@types/node@22.19.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))(vitest@4.0.14) 4759 6311 transitivePeerDependencies: ··· 4771 6323 4772 6324 web-streams-polyfill@3.3.3: {} 4773 6325 6326 + webidl-conversions@3.0.1: {} 6327 + 6328 + whatwg-url@5.0.0: 6329 + dependencies: 6330 + tr46: 0.0.3 6331 + webidl-conversions: 3.0.1 6332 + 4774 6333 which@2.0.2: 4775 6334 dependencies: 4776 6335 isexe: 2.0.0 ··· 4791 6350 wrappy@1.0.2: {} 4792 6351 4793 6352 ws@8.18.3: {} 6353 + 6354 + xtend@4.0.2: {} 4794 6355 4795 6356 y18n@5.0.8: {} 4796 6357
+65
src/ingester/cursor.ts
··· 1 + /** 2 + * Ingester cursor management. 3 + * Handles loading and saving cursor position for Jetstream resumption. 4 + */ 5 + 6 + import { eq } from 'drizzle-orm'; 7 + import type { LibSQLDatabase } from 'drizzle-orm/libsql'; 8 + 9 + // Schema reference - needs to be imported from caller's schema 10 + interface CursorTable { 11 + id: number; 12 + cursorUs: number; 13 + updatedAt: string; 14 + } 15 + 16 + /** 17 + * Load cursor from database. 18 + * @returns Cursor position in microseconds, or undefined if not found 19 + */ 20 + export async function loadCursor( 21 + db: LibSQLDatabase<any>, 22 + cursorTable: any 23 + ): Promise<number | undefined> { 24 + try { 25 + const result = await db.select().from(cursorTable).where(eq(cursorTable.id, 1)); 26 + if (result.length > 0) { 27 + const cursor = result[0].cursorUs; 28 + console.log(`[cursor] Resuming from cursor: ${cursor}`); 29 + return cursor; 30 + } 31 + console.log('[cursor] No cursor found, starting from now'); 32 + return undefined; 33 + } catch (err) { 34 + console.log('[cursor] Could not load cursor, starting fresh:', err); 35 + return undefined; 36 + } 37 + } 38 + 39 + /** 40 + * Save cursor to database using upsert. 41 + */ 42 + export async function saveCursor( 43 + db: LibSQLDatabase<any>, 44 + cursorTable: any, 45 + cursorUs: number 46 + ): Promise<void> { 47 + const now = new Date().toISOString(); 48 + await db 49 + .insert(cursorTable) 50 + .values({ id: 1, cursorUs, updatedAt: now }) 51 + .onConflictDoUpdate({ 52 + target: cursorTable.id, 53 + set: { cursorUs, updatedAt: now } 54 + }); 55 + } 56 + 57 + /** 58 + * Create a cursor setter function for use with Jetstream. 59 + */ 60 + export function createCursorSetter( 61 + db: LibSQLDatabase<any>, 62 + cursorTable: any 63 + ): (cursorUs: number) => Promise<void> { 64 + return (cursorUs: number) => saveCursor(db, cursorTable, cursorUs); 65 + }
+19 -10
src/ingester/handler.ts
··· 8 8 import { posts, comments, accounts } from '$lib/server/db/schema'; 9 9 import * as Post from '$lib/lexicons/one/papili/post.defs'; 10 10 import * as Comment from '$lib/lexicons/one/papili/comment.defs'; 11 + import { recordJetstreamEvent } from './instrumentation'; 11 12 12 13 const PAPILI_POST = 'one.papili.post'; 13 14 const PAPILI_COMMENT = 'one.papili.comment'; ··· 20 21 } 21 22 22 23 async handle(event: JetstreamEvent): Promise<void> { 23 - switch (event.kind) { 24 - case 'commit': 25 - await this.handleCommit(event); 26 - break; 27 - case 'account': 28 - await this.handleAccount(event); 29 - break; 30 - case 'identity': 31 - await this.handleIdentity(event); 32 - break; 24 + try { 25 + switch (event.kind) { 26 + case 'commit': 27 + await this.handleCommit(event); 28 + recordJetstreamEvent('commit', event.commit.collection, true); 29 + break; 30 + case 'account': 31 + await this.handleAccount(event); 32 + recordJetstreamEvent('account', undefined, true); 33 + break; 34 + case 'identity': 35 + await this.handleIdentity(event); 36 + recordJetstreamEvent('identity', undefined, true); 37 + break; 38 + } 39 + } catch (err) { 40 + recordJetstreamEvent(event.kind, event.kind === 'commit' ? event.commit.collection : undefined, false); 41 + throw err; 33 42 } 34 43 } 35 44
+141
src/ingester/instrumentation.ts
··· 1 + /** 2 + * OpenTelemetry instrumentation for the standalone ingester 3 + * 4 + * This must be imported before any other code in main.ts. 5 + * 6 + * Sends traces and metrics to Honeycomb via HTTP/protobuf. 7 + * 8 + * Configure via environment variables: 9 + * - HONEYCOMB_API_KEY: Honeycomb API key (required to enable telemetry) 10 + * - OTEL_SERVICE_NAME: Service name (default: papili-ingester) 11 + */ 12 + 13 + import { NodeSDK } from '@opentelemetry/sdk-node'; 14 + import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'; 15 + import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'; 16 + import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto'; 17 + import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'; 18 + import { resourceFromAttributes } from '@opentelemetry/resources'; 19 + import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions'; 20 + import { metrics } from '@opentelemetry/api'; 21 + 22 + // Honeycomb configuration (HTTP/protobuf) 23 + const HONEYCOMB_TRACES_ENDPOINT = 'https://api.honeycomb.io/v1/traces'; 24 + const HONEYCOMB_METRICS_ENDPOINT = 'https://api.honeycomb.io/v1/metrics'; 25 + 26 + let sdk: NodeSDK | null = null; 27 + 28 + export function initTracing(): void { 29 + const honeycombApiKey = process.env.HONEYCOMB_API_KEY; 30 + 31 + if (!honeycombApiKey) { 32 + console.log('[otel] Telemetry disabled (HONEYCOMB_API_KEY not set)'); 33 + return; 34 + } 35 + 36 + const serviceName = process.env.OTEL_SERVICE_NAME || 'papili-ingester'; 37 + const environment = process.env.NODE_ENV || 'development'; 38 + 39 + console.log(`[otel] Initializing telemetry for ${serviceName} -> Honeycomb (HTTP)`); 40 + 41 + // HTTP headers for Honeycomb authentication 42 + const headers = { 43 + 'x-honeycomb-team': honeycombApiKey 44 + }; 45 + 46 + sdk = new NodeSDK({ 47 + resource: resourceFromAttributes({ 48 + [ATTR_SERVICE_NAME]: serviceName, 49 + [ATTR_SERVICE_VERSION]: '0.0.1', 50 + 'deployment.environment': environment 51 + }), 52 + traceExporter: new OTLPTraceExporter({ 53 + url: HONEYCOMB_TRACES_ENDPOINT, 54 + headers 55 + }), 56 + metricReader: new PeriodicExportingMetricReader({ 57 + exporter: new OTLPMetricExporter({ 58 + url: HONEYCOMB_METRICS_ENDPOINT, 59 + headers 60 + }), 61 + exportIntervalMillis: 15000 // Export metrics every 15 seconds for faster feedback 62 + }), 63 + instrumentations: [ 64 + getNodeAutoInstrumentations({ 65 + // Disable noisy instrumentations 66 + '@opentelemetry/instrumentation-fs': { enabled: false }, 67 + '@opentelemetry/instrumentation-dns': { enabled: false } 68 + }) 69 + ] 70 + }); 71 + 72 + sdk.start(); 73 + initJetstreamMetrics(); 74 + console.log('[otel] Telemetry initialized (traces + metrics)'); 75 + } 76 + 77 + export async function shutdownTracing(): Promise<void> { 78 + if (sdk) { 79 + await sdk.shutdown(); 80 + console.log('[otel] Tracing shut down'); 81 + } 82 + } 83 + 84 + // Jetstream metrics 85 + let jetstreamMetrics: { 86 + eventsProcessed: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>; 87 + eventsErrored: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>; 88 + connectionState: ReturnType<ReturnType<typeof metrics.getMeter>['createUpDownCounter']>; 89 + cursorLag: ReturnType<ReturnType<typeof metrics.getMeter>['createGauge']>; 90 + } | null = null; 91 + 92 + function initJetstreamMetrics(): void { 93 + const meter = metrics.getMeter('papili-ingester'); 94 + 95 + jetstreamMetrics = { 96 + eventsProcessed: meter.createCounter('jetstream.events.processed', { 97 + description: 'Number of Jetstream events successfully processed', 98 + unit: '{events}' 99 + }), 100 + eventsErrored: meter.createCounter('jetstream.events.errored', { 101 + description: 'Number of Jetstream events that failed processing', 102 + unit: '{events}' 103 + }), 104 + connectionState: meter.createUpDownCounter('jetstream.connection.state', { 105 + description: 'Jetstream connection state (1=connected, 0=disconnected)', 106 + unit: '{state}' 107 + }), 108 + cursorLag: meter.createGauge('jetstream.cursor.lag', { 109 + description: 'Lag between current time and cursor position in microseconds', 110 + unit: 'us' 111 + }) 112 + }; 113 + } 114 + 115 + export function recordJetstreamEvent( 116 + eventType: 'commit' | 'identity' | 'account', 117 + collection?: string, 118 + success = true 119 + ): void { 120 + if (!jetstreamMetrics) return; 121 + 122 + const attributes = { event_type: eventType, collection: collection || 'n/a' }; 123 + 124 + if (success) { 125 + jetstreamMetrics.eventsProcessed.add(1, attributes); 126 + } else { 127 + jetstreamMetrics.eventsErrored.add(1, attributes); 128 + } 129 + } 130 + 131 + export function recordJetstreamConnection(connected: boolean): void { 132 + if (!jetstreamMetrics) return; 133 + jetstreamMetrics.connectionState.add(connected ? 1 : -1); 134 + } 135 + 136 + export function recordCursorLag(cursorMicros: number): void { 137 + if (!jetstreamMetrics) return; 138 + const nowMicros = Date.now() * 1000; 139 + const lag = nowMicros - cursorMicros; 140 + jetstreamMetrics.cursorLag.record(lag); 141 + }
+13 -6
src/ingester/jetstream.ts
··· 4 4 */ 5 5 6 6 import WebSocket from 'ws'; 7 + import { recordJetstreamConnection, recordCursorLag } from './instrumentation'; 7 8 8 9 // Event types from Jetstream 9 10 export type JetstreamEvent = { ··· 105 106 106 107 this.ws.on('open', () => { 107 108 console.log('[jetstream] Connection opened'); 109 + recordJetstreamConnection(true); 108 110 }); 109 111 110 112 this.ws.on('message', async (data) => { ··· 112 114 const event: JetstreamEvent = JSON.parse(data.toString()); 113 115 114 116 // Update cursor with throttling 115 - if (event.time_us !== undefined && this.config.setCursor) { 117 + if (event.time_us !== undefined) { 116 118 this.cursor = event.time_us; 117 - const now = Date.now(); 118 - if (now - this.lastCursorWrite >= CURSOR_WRITE_INTERVAL_MS) { 119 - this.lastCursorWrite = now; 120 - await this.config.setCursor(event.time_us); 121 - console.log(`[jetstream] Cursor saved: ${event.time_us}`); 119 + recordCursorLag(event.time_us); 120 + 121 + if (this.config.setCursor) { 122 + const now = Date.now(); 123 + if (now - this.lastCursorWrite >= CURSOR_WRITE_INTERVAL_MS) { 124 + this.lastCursorWrite = now; 125 + await this.config.setCursor(event.time_us); 126 + console.log(`[jetstream] Cursor saved: ${event.time_us}`); 127 + } 122 128 } 123 129 } 124 130 ··· 142 148 this.ws.on('close', (code, reason) => { 143 149 console.log(`[jetstream] Connection closed: ${code} ${reason?.toString() || ''}`); 144 150 this.isStarted = false; 151 + recordJetstreamConnection(false); 145 152 146 153 if (!this.isDestroyed) { 147 154 console.log(`[jetstream] Reconnecting in ${RECONNECT_DELAY_MS / 1000}s...`);
+12 -35
src/ingester/main.ts
··· 5 5 * It connects directly to SQLite without going through SvelteKit. 6 6 */ 7 7 8 + // Initialize tracing first (before other imports) 9 + import { initTracing, shutdownTracing } from './instrumentation'; 10 + initTracing(); 11 + 8 12 import { createClient } from '@libsql/client'; 9 13 import { drizzle } from 'drizzle-orm/libsql'; 10 - import { eq } from 'drizzle-orm'; 11 14 import * as contentSchema from '../lib/server/db/content-schema'; 12 15 import { Jetstream, type JetstreamEvent } from './jetstream'; 13 16 import { EventHandler } from './handler'; 17 + import { loadCursor, saveCursor, createCursorSetter } from './cursor'; 14 18 15 19 // Database path - on Fly.io this will be the LiteFS mount 16 20 const DB_PATH = process.env.CONTENT_DB_PATH || './data/content.db'; ··· 35 39 const finalCursor = jetstream.getCursor(); 36 40 if (finalCursor !== undefined) { 37 41 console.log(`[ingester] Saving final cursor: ${finalCursor}`); 38 - const now = new Date().toISOString(); 39 - await db 40 - .insert(contentSchema.ingestionCursor) 41 - .values({ id: 1, cursorUs: finalCursor, updatedAt: now }) 42 - .onConflictDoUpdate({ 43 - target: contentSchema.ingestionCursor.id, 44 - set: { cursorUs: finalCursor, updatedAt: now } 45 - }); 42 + await saveCursor(db, contentSchema.ingestionCursor, finalCursor); 46 43 } 47 44 48 45 jetstream.destroy(); 49 46 } 47 + 48 + // Shutdown tracing to flush any pending spans 49 + await shutdownTracing(); 50 50 51 51 console.log('[ingester] Shutdown complete'); 52 52 process.exit(0); ··· 60 60 console.log(`[ingester] Database path: ${DB_PATH}`); 61 61 62 62 // Load cursor from database 63 - let cursor: number | undefined; 64 - try { 65 - const result = await db 66 - .select() 67 - .from(contentSchema.ingestionCursor) 68 - .where(eq(contentSchema.ingestionCursor.id, 1)); 69 - if (result.length > 0) { 70 - cursor = result[0].cursorUs; 71 - console.log(`[ingester] Resuming from cursor: ${cursor}`); 72 - } else { 73 - console.log('[ingester] No cursor found, starting from now'); 74 - } 75 - } catch (err) { 76 - console.log('[ingester] Could not load cursor, starting fresh:', err); 77 - } 63 + const cursor = await loadCursor(db, contentSchema.ingestionCursor); 78 64 79 65 // Create event handler with our db connection 80 66 const handler = new EventHandler(db); 81 67 82 - // Save cursor to database 83 - async function setCursor(cursorUs: number): Promise<void> { 84 - const now = new Date().toISOString(); 85 - await db 86 - .insert(contentSchema.ingestionCursor) 87 - .values({ id: 1, cursorUs, updatedAt: now }) 88 - .onConflictDoUpdate({ 89 - target: contentSchema.ingestionCursor.id, 90 - set: { cursorUs, updatedAt: now } 91 - }); 92 - } 68 + // Create cursor setter 69 + const setCursor = createCursorSetter(db, contentSchema.ingestionCursor); 93 70 94 71 // Create Jetstream client 95 72 jetstream = new Jetstream({
+83
src/instrumentation.server.ts
··· 1 + /** 2 + * OpenTelemetry instrumentation for SvelteKit 3 + * 4 + * This file is loaded before the application code, enabling automatic 5 + * instrumentation of HTTP requests, database queries, and SvelteKit internals. 6 + * 7 + * Sends traces and metrics to Honeycomb via HTTP/protobuf. 8 + * 9 + * Configure via environment variables: 10 + * - HONEYCOMB_API_KEY: Honeycomb API key (required to enable telemetry) 11 + * - OTEL_SERVICE_NAME: Service name (default: papili-web) 12 + */ 13 + 14 + import { NodeSDK } from '@opentelemetry/sdk-node'; 15 + import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'; 16 + import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'; 17 + import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto'; 18 + import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'; 19 + import { resourceFromAttributes } from '@opentelemetry/resources'; 20 + import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions'; 21 + import { createAddHookMessageChannel } from 'import-in-the-middle'; 22 + import { register } from 'node:module'; 23 + 24 + // Set up import hooks for auto-instrumentation 25 + const { registerOptions } = createAddHookMessageChannel(); 26 + register('import-in-the-middle/hook.mjs', import.meta.url, registerOptions); 27 + 28 + // Honeycomb configuration (HTTP/protobuf) 29 + const HONEYCOMB_TRACES_ENDPOINT = 'https://api.honeycomb.io/v1/traces'; 30 + const HONEYCOMB_METRICS_ENDPOINT = 'https://api.honeycomb.io/v1/metrics'; 31 + const honeycombApiKey = process.env.HONEYCOMB_API_KEY; 32 + 33 + if (honeycombApiKey) { 34 + const serviceName = process.env.OTEL_SERVICE_NAME || 'papili-web'; 35 + const environment = process.env.NODE_ENV || 'development'; 36 + 37 + console.log(`[otel] Initializing telemetry for ${serviceName} -> Honeycomb (HTTP)`); 38 + 39 + // HTTP headers for Honeycomb authentication 40 + const headers = { 41 + 'x-honeycomb-team': honeycombApiKey 42 + }; 43 + 44 + const sdk = new NodeSDK({ 45 + resource: resourceFromAttributes({ 46 + [ATTR_SERVICE_NAME]: serviceName, 47 + [ATTR_SERVICE_VERSION]: '0.0.1', 48 + 'deployment.environment': environment 49 + }), 50 + traceExporter: new OTLPTraceExporter({ 51 + url: HONEYCOMB_TRACES_ENDPOINT, 52 + headers 53 + }), 54 + metricReader: new PeriodicExportingMetricReader({ 55 + exporter: new OTLPMetricExporter({ 56 + url: HONEYCOMB_METRICS_ENDPOINT, 57 + headers 58 + }), 59 + exportIntervalMillis: 15000 // Export metrics every 15 seconds for faster feedback 60 + }), 61 + instrumentations: [ 62 + getNodeAutoInstrumentations({ 63 + // Disable noisy instrumentations 64 + '@opentelemetry/instrumentation-fs': { enabled: false }, 65 + '@opentelemetry/instrumentation-dns': { enabled: false } 66 + }) 67 + ] 68 + }); 69 + 70 + sdk.start(); 71 + 72 + // Graceful shutdown 73 + process.on('SIGTERM', () => { 74 + sdk.shutdown() 75 + .then(() => console.log('[otel] Telemetry shut down')) 76 + .catch((err) => console.error('[otel] Error shutting down:', err)) 77 + .finally(() => process.exit(0)); 78 + }); 79 + 80 + console.log('[otel] Telemetry initialized (traces + metrics)'); 81 + } else { 82 + console.log('[otel] Telemetry disabled (HONEYCOMB_API_KEY not set)'); 83 + }
+4
src/lib/server/db/index.ts
··· 11 11 12 12 import { createClient } from '@libsql/client'; 13 13 import { drizzle } from 'drizzle-orm/libsql'; 14 + import { instrumentDrizzle } from '@kubiks/otel-drizzle'; 14 15 import * as contentSchema from './content-schema'; 15 16 import * as localSchema from './local-schema'; 16 17 ··· 19 20 const LOCAL_DB_PATH = process.env.LOCAL_DB_PATH || './data/local.db'; 20 21 21 22 // Content DB - posts, comments, accounts (read-only in webapp, write in ingester) 23 + // Instrument the client BEFORE passing to drizzle 22 24 export const contentClient = createClient({ 23 25 url: `file:${CONTENT_DB_PATH}` 24 26 }); 27 + instrumentDrizzle(contentClient, { dbSystem: 'sqlite', dbName: 'content' }); 25 28 export const contentDb = drizzle(contentClient, { schema: contentSchema }); 26 29 27 30 // Local DB - auth, votes (webapp only) 28 31 const localClient = createClient({ 29 32 url: `file:${LOCAL_DB_PATH}` 30 33 }); 34 + instrumentDrizzle(localClient, { dbSystem: 'sqlite', dbName: 'local' }); 31 35 export const localDb = drizzle(localClient, { schema: localSchema }); 32 36 33 37 // Type exports
+9 -1
svelte.config.js
··· 6 6 preprocess: vitePreprocess(), 7 7 8 8 kit: { 9 - adapter: adapter() 9 + adapter: adapter(), 10 + experimental: { 11 + tracing: { 12 + server: true 13 + }, 14 + instrumentation: { 15 + server: true 16 + } 17 + } 10 18 } 11 19 }; 12 20