@depup/sentry__server-utils 10.67.0-depup.0 → 10.68.0-depup.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/build/cjs/integrations/tracing-channel/dataloader.js +17 -7
- package/build/cjs/integrations/tracing-channel/dataloader.js.map +1 -1
- package/build/cjs/integrations/tracing-channel/fastify/index.js +2 -4
- package/build/cjs/integrations/tracing-channel/fastify/index.js.map +1 -1
- package/build/cjs/integrations/tracing-channel/fastify/utils.js.map +1 -1
- package/build/cjs/integrations/tracing-channel/firebase/firestore.js +78 -0
- package/build/cjs/integrations/tracing-channel/firebase/firestore.js.map +1 -0
- package/build/cjs/integrations/tracing-channel/firebase/functions.js +67 -0
- package/build/cjs/integrations/tracing-channel/firebase/functions.js.map +1 -0
- package/build/cjs/integrations/tracing-channel/firebase/index.js +24 -0
- package/build/cjs/integrations/tracing-channel/firebase/index.js.map +1 -0
- package/build/cjs/integrations/tracing-channel/firebase/instrumentation.js +66 -0
- package/build/cjs/integrations/tracing-channel/firebase/instrumentation.js.map +1 -0
- package/build/cjs/orchestrion/bundler/esbuild.js +24 -1
- package/build/cjs/orchestrion/bundler/esbuild.js.map +1 -1
- package/build/cjs/orchestrion/bundler/options.js +16 -2
- package/build/cjs/orchestrion/bundler/options.js.map +1 -1
- package/build/cjs/orchestrion/bundler/rollup.js +11 -1
- package/build/cjs/orchestrion/bundler/rollup.js.map +1 -1
- package/build/cjs/orchestrion/bundler/subscribeInjection.js +40 -0
- package/build/cjs/orchestrion/bundler/subscribeInjection.js.map +1 -0
- package/build/cjs/orchestrion/bundler/vite.js +13 -0
- package/build/cjs/orchestrion/bundler/vite.js.map +1 -1
- package/build/cjs/orchestrion/bundler/webpack.js +32 -1
- package/build/cjs/orchestrion/bundler/webpack.js.map +1 -1
- package/build/cjs/orchestrion/channels.js +0 -4
- package/build/cjs/orchestrion/channels.js.map +1 -1
- package/build/cjs/orchestrion/config/amqplib.js +4 -0
- package/build/cjs/orchestrion/config/amqplib.js.map +1 -1
- package/build/cjs/orchestrion/config/anthropic-ai.js +4 -0
- package/build/cjs/orchestrion/config/anthropic-ai.js.map +1 -1
- package/build/cjs/orchestrion/config/aws-sdk.js +4 -0
- package/build/cjs/orchestrion/config/aws-sdk.js.map +1 -1
- package/build/cjs/orchestrion/config/channel-integration-definitions.js +29 -0
- package/build/cjs/orchestrion/config/channel-integration-definitions.js.map +1 -0
- package/build/cjs/orchestrion/config/dataloader.js +4 -0
- package/build/cjs/orchestrion/config/dataloader.js.map +1 -1
- package/build/cjs/orchestrion/config/express.js +4 -0
- package/build/cjs/orchestrion/config/express.js.map +1 -1
- package/build/cjs/orchestrion/config/firebase.js +79 -2
- package/build/cjs/orchestrion/config/firebase.js.map +1 -1
- package/build/cjs/orchestrion/config/generic-pool.js +4 -0
- package/build/cjs/orchestrion/config/generic-pool.js.map +1 -1
- package/build/cjs/orchestrion/config/google-genai.js +4 -0
- package/build/cjs/orchestrion/config/google-genai.js.map +1 -1
- package/build/cjs/orchestrion/config/graphql.js +4 -0
- package/build/cjs/orchestrion/config/graphql.js.map +1 -1
- package/build/cjs/orchestrion/config/hapi.js +4 -0
- package/build/cjs/orchestrion/config/hapi.js.map +1 -1
- package/build/cjs/orchestrion/config/index.js +33 -5
- package/build/cjs/orchestrion/config/index.js.map +1 -1
- package/build/cjs/orchestrion/config/ioredis.js +4 -0
- package/build/cjs/orchestrion/config/ioredis.js.map +1 -1
- package/build/cjs/orchestrion/config/kafkajs.js +4 -0
- package/build/cjs/orchestrion/config/kafkajs.js.map +1 -1
- package/build/cjs/orchestrion/config/knex.js +4 -0
- package/build/cjs/orchestrion/config/knex.js.map +1 -1
- package/build/cjs/orchestrion/config/koa.js +4 -0
- package/build/cjs/orchestrion/config/koa.js.map +1 -1
- package/build/cjs/orchestrion/config/langchain.js +4 -0
- package/build/cjs/orchestrion/config/langchain.js.map +1 -1
- package/build/cjs/orchestrion/config/langgraph.js +4 -0
- package/build/cjs/orchestrion/config/langgraph.js.map +1 -1
- package/build/cjs/orchestrion/config/lru-memoizer.js +4 -0
- package/build/cjs/orchestrion/config/lru-memoizer.js.map +1 -1
- package/build/cjs/orchestrion/config/mongodb.js +4 -0
- package/build/cjs/orchestrion/config/mongodb.js.map +1 -1
- package/build/cjs/orchestrion/config/mongoose.js +4 -0
- package/build/cjs/orchestrion/config/mongoose.js.map +1 -1
- package/build/cjs/orchestrion/config/mysql.js +4 -0
- package/build/cjs/orchestrion/config/mysql.js.map +1 -1
- package/build/cjs/orchestrion/config/mysql2.js +4 -0
- package/build/cjs/orchestrion/config/mysql2.js.map +1 -1
- package/build/cjs/orchestrion/config/nestjs.js +4 -0
- package/build/cjs/orchestrion/config/nestjs.js.map +1 -1
- package/build/cjs/orchestrion/config/openai.js +4 -0
- package/build/cjs/orchestrion/config/openai.js.map +1 -1
- package/build/cjs/orchestrion/config/pg.js +4 -0
- package/build/cjs/orchestrion/config/pg.js.map +1 -1
- package/build/cjs/orchestrion/config/postgres.js +4 -0
- package/build/cjs/orchestrion/config/postgres.js.map +1 -1
- package/build/cjs/orchestrion/config/redis.js +4 -0
- package/build/cjs/orchestrion/config/redis.js.map +1 -1
- package/build/cjs/orchestrion/config/remix.js +4 -0
- package/build/cjs/orchestrion/config/remix.js.map +1 -1
- package/build/cjs/orchestrion/config/subscribe-injection.js +25 -0
- package/build/cjs/orchestrion/config/subscribe-injection.js.map +1 -0
- package/build/cjs/orchestrion/config/tedious.js +4 -0
- package/build/cjs/orchestrion/config/tedious.js.map +1 -1
- package/build/cjs/orchestrion/config/vercel-ai.js +4 -0
- package/build/cjs/orchestrion/config/vercel-ai.js.map +1 -1
- package/build/cjs/orchestrion/index.js +12 -7
- package/build/cjs/orchestrion/index.js.map +1 -1
- package/build/cjs/orchestrion/registerChannelIntegration.js +13 -0
- package/build/cjs/orchestrion/registerChannelIntegration.js.map +1 -0
- package/build/cjs/vercel-ai/index.js.map +1 -1
- package/build/esm/integrations/tracing-channel/dataloader.js +17 -7
- package/build/esm/integrations/tracing-channel/dataloader.js.map +1 -1
- package/build/esm/integrations/tracing-channel/fastify/index.js +2 -4
- package/build/esm/integrations/tracing-channel/fastify/index.js.map +1 -1
- package/build/esm/integrations/tracing-channel/fastify/utils.js.map +1 -1
- package/build/esm/integrations/tracing-channel/firebase/firestore.js +75 -0
- package/build/esm/integrations/tracing-channel/firebase/firestore.js.map +1 -0
- package/build/esm/integrations/tracing-channel/firebase/functions.js +65 -0
- package/build/esm/integrations/tracing-channel/firebase/functions.js.map +1 -0
- package/build/esm/integrations/tracing-channel/firebase/index.js +22 -0
- package/build/esm/integrations/tracing-channel/firebase/index.js.map +1 -0
- package/build/esm/integrations/tracing-channel/firebase/instrumentation.js +64 -0
- package/build/esm/integrations/tracing-channel/firebase/instrumentation.js.map +1 -0
- package/build/esm/orchestrion/bundler/esbuild.js +25 -2
- package/build/esm/orchestrion/bundler/esbuild.js.map +1 -1
- package/build/esm/orchestrion/bundler/options.js +15 -3
- package/build/esm/orchestrion/bundler/options.js.map +1 -1
- package/build/esm/orchestrion/bundler/rollup.js +12 -2
- package/build/esm/orchestrion/bundler/rollup.js.map +1 -1
- package/build/esm/orchestrion/bundler/subscribeInjection.js +38 -0
- package/build/esm/orchestrion/bundler/subscribeInjection.js.map +1 -0
- package/build/esm/orchestrion/bundler/vite.js +14 -1
- package/build/esm/orchestrion/bundler/vite.js.map +1 -1
- package/build/esm/orchestrion/bundler/webpack.js +33 -3
- package/build/esm/orchestrion/bundler/webpack.js.map +1 -1
- package/build/esm/orchestrion/channels.js +0 -4
- package/build/esm/orchestrion/channels.js.map +1 -1
- package/build/esm/orchestrion/config/amqplib.js +4 -1
- package/build/esm/orchestrion/config/amqplib.js.map +1 -1
- package/build/esm/orchestrion/config/anthropic-ai.js +4 -1
- package/build/esm/orchestrion/config/anthropic-ai.js.map +1 -1
- package/build/esm/orchestrion/config/aws-sdk.js +4 -1
- package/build/esm/orchestrion/config/aws-sdk.js.map +1 -1
- package/build/esm/orchestrion/config/channel-integration-definitions.js +26 -0
- package/build/esm/orchestrion/config/channel-integration-definitions.js.map +1 -0
- package/build/esm/orchestrion/config/dataloader.js +4 -1
- package/build/esm/orchestrion/config/dataloader.js.map +1 -1
- package/build/esm/orchestrion/config/express.js +4 -1
- package/build/esm/orchestrion/config/express.js.map +1 -1
- package/build/esm/orchestrion/config/firebase.js +79 -3
- package/build/esm/orchestrion/config/firebase.js.map +1 -1
- package/build/esm/orchestrion/config/generic-pool.js +4 -1
- package/build/esm/orchestrion/config/generic-pool.js.map +1 -1
- package/build/esm/orchestrion/config/google-genai.js +4 -1
- package/build/esm/orchestrion/config/google-genai.js.map +1 -1
- package/build/esm/orchestrion/config/graphql.js +4 -1
- package/build/esm/orchestrion/config/graphql.js.map +1 -1
- package/build/esm/orchestrion/config/hapi.js +4 -1
- package/build/esm/orchestrion/config/hapi.js.map +1 -1
- package/build/esm/orchestrion/config/index.js +61 -34
- package/build/esm/orchestrion/config/index.js.map +1 -1
- package/build/esm/orchestrion/config/ioredis.js +4 -1
- package/build/esm/orchestrion/config/ioredis.js.map +1 -1
- package/build/esm/orchestrion/config/kafkajs.js +4 -1
- package/build/esm/orchestrion/config/kafkajs.js.map +1 -1
- package/build/esm/orchestrion/config/knex.js +4 -1
- package/build/esm/orchestrion/config/knex.js.map +1 -1
- package/build/esm/orchestrion/config/koa.js +4 -1
- package/build/esm/orchestrion/config/koa.js.map +1 -1
- package/build/esm/orchestrion/config/langchain.js +4 -1
- package/build/esm/orchestrion/config/langchain.js.map +1 -1
- package/build/esm/orchestrion/config/langgraph.js +4 -1
- package/build/esm/orchestrion/config/langgraph.js.map +1 -1
- package/build/esm/orchestrion/config/lru-memoizer.js +4 -1
- package/build/esm/orchestrion/config/lru-memoizer.js.map +1 -1
- package/build/esm/orchestrion/config/mongodb.js +4 -1
- package/build/esm/orchestrion/config/mongodb.js.map +1 -1
- package/build/esm/orchestrion/config/mongoose.js +4 -1
- package/build/esm/orchestrion/config/mongoose.js.map +1 -1
- package/build/esm/orchestrion/config/mysql.js +4 -1
- package/build/esm/orchestrion/config/mysql.js.map +1 -1
- package/build/esm/orchestrion/config/mysql2.js +4 -1
- package/build/esm/orchestrion/config/mysql2.js.map +1 -1
- package/build/esm/orchestrion/config/nestjs.js +4 -1
- package/build/esm/orchestrion/config/nestjs.js.map +1 -1
- package/build/esm/orchestrion/config/openai.js +4 -1
- package/build/esm/orchestrion/config/openai.js.map +1 -1
- package/build/esm/orchestrion/config/pg.js +4 -1
- package/build/esm/orchestrion/config/pg.js.map +1 -1
- package/build/esm/orchestrion/config/postgres.js +4 -1
- package/build/esm/orchestrion/config/postgres.js.map +1 -1
- package/build/esm/orchestrion/config/redis.js +4 -1
- package/build/esm/orchestrion/config/redis.js.map +1 -1
- package/build/esm/orchestrion/config/remix.js +4 -1
- package/build/esm/orchestrion/config/remix.js.map +1 -1
- package/build/esm/orchestrion/config/subscribe-injection.js +22 -0
- package/build/esm/orchestrion/config/subscribe-injection.js.map +1 -0
- package/build/esm/orchestrion/config/tedious.js +4 -1
- package/build/esm/orchestrion/config/tedious.js.map +1 -1
- package/build/esm/orchestrion/config/vercel-ai.js +4 -1
- package/build/esm/orchestrion/config/vercel-ai.js.map +1 -1
- package/build/esm/orchestrion/index.js +5 -2
- package/build/esm/orchestrion/index.js.map +1 -1
- package/build/esm/orchestrion/registerChannelIntegration.js +11 -0
- package/build/esm/orchestrion/registerChannelIntegration.js.map +1 -0
- package/build/esm/package.json +1 -1
- package/build/esm/vercel-ai/index.js.map +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/index.d.ts.map +1 -1
- package/build/types/integrations/tracing-channel/dataloader.d.ts.map +1 -1
- package/build/types/integrations/tracing-channel/fastify/index.d.ts +2 -2
- package/build/types/integrations/tracing-channel/fastify/index.d.ts.map +1 -1
- package/build/types/integrations/tracing-channel/fastify/utils.d.ts +1 -1
- package/build/types/integrations/tracing-channel/fastify/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing-channel/firebase/firestore-types.d.ts +38 -0
- package/build/types/integrations/tracing-channel/firebase/firestore-types.d.ts.map +1 -0
- package/build/types/integrations/tracing-channel/firebase/firestore.d.ts +18 -0
- package/build/types/integrations/tracing-channel/firebase/firestore.d.ts.map +1 -0
- package/build/types/integrations/tracing-channel/firebase/functions.d.ts +15 -0
- package/build/types/integrations/tracing-channel/firebase/functions.d.ts.map +1 -0
- package/build/types/integrations/tracing-channel/firebase/index.d.ts +15 -0
- package/build/types/integrations/tracing-channel/firebase/index.d.ts.map +1 -0
- package/build/types/integrations/tracing-channel/firebase/instrumentation.d.ts +2 -0
- package/build/types/integrations/tracing-channel/firebase/instrumentation.d.ts.map +1 -0
- package/build/types/integrations/tracing-channel/vercel-ai.d.ts +1 -5
- package/build/types/integrations/tracing-channel/vercel-ai.d.ts.map +1 -1
- package/build/types/orchestrion/bundler/esbuild.d.ts +2 -3
- package/build/types/orchestrion/bundler/esbuild.d.ts.map +1 -1
- package/build/types/orchestrion/bundler/options.d.ts +34 -0
- package/build/types/orchestrion/bundler/options.d.ts.map +1 -1
- package/build/types/orchestrion/bundler/rollup.d.ts.map +1 -1
- package/build/types/orchestrion/bundler/subscribeInjection.d.ts +13 -0
- package/build/types/orchestrion/bundler/subscribeInjection.d.ts.map +1 -0
- package/build/types/orchestrion/bundler/vite.d.ts.map +1 -1
- package/build/types/orchestrion/bundler/webpack.d.ts +6 -1
- package/build/types/orchestrion/bundler/webpack.d.ts.map +1 -1
- package/build/types/orchestrion/channels.d.ts +15 -0
- package/build/types/orchestrion/channels.d.ts.map +1 -1
- package/build/types/orchestrion/config/amqplib.d.ts +2 -0
- package/build/types/orchestrion/config/amqplib.d.ts.map +1 -1
- package/build/types/orchestrion/config/anthropic-ai.d.ts +2 -0
- package/build/types/orchestrion/config/anthropic-ai.d.ts.map +1 -1
- package/build/types/orchestrion/config/aws-sdk.d.ts +2 -0
- package/build/types/orchestrion/config/aws-sdk.d.ts.map +1 -1
- package/build/types/orchestrion/config/channel-integration-definitions.d.ts +81 -0
- package/build/types/orchestrion/config/channel-integration-definitions.d.ts.map +1 -0
- package/build/types/orchestrion/config/dataloader.d.ts +2 -0
- package/build/types/orchestrion/config/dataloader.d.ts.map +1 -1
- package/build/types/orchestrion/config/express.d.ts +2 -0
- package/build/types/orchestrion/config/express.d.ts.map +1 -1
- package/build/types/orchestrion/config/firebase.d.ts +41 -2
- package/build/types/orchestrion/config/firebase.d.ts.map +1 -1
- package/build/types/orchestrion/config/generic-pool.d.ts +2 -0
- package/build/types/orchestrion/config/generic-pool.d.ts.map +1 -1
- package/build/types/orchestrion/config/google-genai.d.ts +2 -0
- package/build/types/orchestrion/config/google-genai.d.ts.map +1 -1
- package/build/types/orchestrion/config/graphql.d.ts +2 -0
- package/build/types/orchestrion/config/graphql.d.ts.map +1 -1
- package/build/types/orchestrion/config/hapi.d.ts +2 -0
- package/build/types/orchestrion/config/hapi.d.ts.map +1 -1
- package/build/types/orchestrion/config/index.d.ts +12 -0
- package/build/types/orchestrion/config/index.d.ts.map +1 -1
- package/build/types/orchestrion/config/ioredis.d.ts +1 -0
- package/build/types/orchestrion/config/ioredis.d.ts.map +1 -1
- package/build/types/orchestrion/config/kafkajs.d.ts +2 -0
- package/build/types/orchestrion/config/kafkajs.d.ts.map +1 -1
- package/build/types/orchestrion/config/knex.d.ts +1 -0
- package/build/types/orchestrion/config/knex.d.ts.map +1 -1
- package/build/types/orchestrion/config/koa.d.ts +2 -0
- package/build/types/orchestrion/config/koa.d.ts.map +1 -1
- package/build/types/orchestrion/config/langchain.d.ts +2 -0
- package/build/types/orchestrion/config/langchain.d.ts.map +1 -1
- package/build/types/orchestrion/config/langgraph.d.ts +2 -0
- package/build/types/orchestrion/config/langgraph.d.ts.map +1 -1
- package/build/types/orchestrion/config/lru-memoizer.d.ts +2 -0
- package/build/types/orchestrion/config/lru-memoizer.d.ts.map +1 -1
- package/build/types/orchestrion/config/mongodb.d.ts +2 -0
- package/build/types/orchestrion/config/mongodb.d.ts.map +1 -1
- package/build/types/orchestrion/config/mongoose.d.ts +2 -0
- package/build/types/orchestrion/config/mongoose.d.ts.map +1 -1
- package/build/types/orchestrion/config/mysql.d.ts +2 -0
- package/build/types/orchestrion/config/mysql.d.ts.map +1 -1
- package/build/types/orchestrion/config/mysql2.d.ts +2 -0
- package/build/types/orchestrion/config/mysql2.d.ts.map +1 -1
- package/build/types/orchestrion/config/nestjs.d.ts +1 -0
- package/build/types/orchestrion/config/nestjs.d.ts.map +1 -1
- package/build/types/orchestrion/config/openai.d.ts +2 -0
- package/build/types/orchestrion/config/openai.d.ts.map +1 -1
- package/build/types/orchestrion/config/pg.d.ts +2 -0
- package/build/types/orchestrion/config/pg.d.ts.map +1 -1
- package/build/types/orchestrion/config/postgres.d.ts +1 -0
- package/build/types/orchestrion/config/postgres.d.ts.map +1 -1
- package/build/types/orchestrion/config/redis.d.ts +2 -0
- package/build/types/orchestrion/config/redis.d.ts.map +1 -1
- package/build/types/orchestrion/config/remix.d.ts +1 -0
- package/build/types/orchestrion/config/remix.d.ts.map +1 -1
- package/build/types/orchestrion/config/subscribe-injection.d.ts +31 -0
- package/build/types/orchestrion/config/subscribe-injection.d.ts.map +1 -0
- package/build/types/orchestrion/config/tedious.d.ts +1 -0
- package/build/types/orchestrion/config/tedious.d.ts.map +1 -1
- package/build/types/orchestrion/config/vercel-ai.d.ts +1 -0
- package/build/types/orchestrion/config/vercel-ai.d.ts.map +1 -1
- package/build/types/orchestrion/index.d.ts +7 -6
- package/build/types/orchestrion/index.d.ts.map +1 -1
- package/build/types/orchestrion/registerChannelIntegration.d.ts +33 -0
- package/build/types/orchestrion/registerChannelIntegration.d.ts.map +1 -0
- package/build/types/vercel-ai/index.d.ts +2 -3
- package/build/types/vercel-ai/index.d.ts.map +1 -1
- package/build/types-ts3.8/index.d.ts +1 -1
- package/build/types-ts3.8/integrations/tracing-channel/fastify/index.d.ts +2 -2
- package/build/types-ts3.8/integrations/tracing-channel/fastify/utils.d.ts +1 -1
- package/build/types-ts3.8/integrations/tracing-channel/firebase/firestore-types.d.ts +38 -0
- package/build/types-ts3.8/integrations/tracing-channel/firebase/firestore.d.ts +18 -0
- package/build/types-ts3.8/integrations/tracing-channel/firebase/functions.d.ts +15 -0
- package/build/types-ts3.8/integrations/tracing-channel/firebase/index.d.ts +15 -0
- package/build/types-ts3.8/integrations/tracing-channel/firebase/instrumentation.d.ts +2 -0
- package/build/types-ts3.8/integrations/tracing-channel/vercel-ai.d.ts +1 -5
- package/build/types-ts3.8/orchestrion/bundler/esbuild.d.ts +2 -3
- package/build/types-ts3.8/orchestrion/bundler/options.d.ts +34 -0
- package/build/types-ts3.8/orchestrion/bundler/subscribeInjection.d.ts +13 -0
- package/build/types-ts3.8/orchestrion/bundler/webpack.d.ts +6 -1
- package/build/types-ts3.8/orchestrion/channels.d.ts +15 -0
- package/build/types-ts3.8/orchestrion/config/amqplib.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/anthropic-ai.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/aws-sdk.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/channel-integration-definitions.d.ts +139 -0
- package/build/types-ts3.8/orchestrion/config/dataloader.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/express.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/firebase.d.ts +41 -2
- package/build/types-ts3.8/orchestrion/config/generic-pool.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/google-genai.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/graphql.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/hapi.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/index.d.ts +12 -0
- package/build/types-ts3.8/orchestrion/config/ioredis.d.ts +1 -0
- package/build/types-ts3.8/orchestrion/config/kafkajs.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/knex.d.ts +1 -0
- package/build/types-ts3.8/orchestrion/config/koa.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/langchain.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/langgraph.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/lru-memoizer.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/mongodb.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/mongoose.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/mysql.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/mysql2.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/nestjs.d.ts +1 -0
- package/build/types-ts3.8/orchestrion/config/openai.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/pg.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/postgres.d.ts +1 -0
- package/build/types-ts3.8/orchestrion/config/redis.d.ts +2 -0
- package/build/types-ts3.8/orchestrion/config/remix.d.ts +1 -0
- package/build/types-ts3.8/orchestrion/config/subscribe-injection.d.ts +31 -0
- package/build/types-ts3.8/orchestrion/config/tedious.d.ts +1 -0
- package/build/types-ts3.8/orchestrion/config/vercel-ai.d.ts +1 -0
- package/build/types-ts3.8/orchestrion/index.d.ts +7 -6
- package/build/types-ts3.8/orchestrion/registerChannelIntegration.d.ts +33 -0
- package/build/types-ts3.8/vercel-ai/index.d.ts +2 -3
- package/changes.json +8 -4
- package/package.json +13 -8
- package/build/cjs/orchestrion/config/prisma.js +0 -8
- package/build/cjs/orchestrion/config/prisma.js.map +0 -1
- package/build/cjs/orchestrion/config/react-router.js +0 -8
- package/build/cjs/orchestrion/config/react-router.js.map +0 -1
- package/build/esm/orchestrion/config/prisma.js +0 -5
- package/build/esm/orchestrion/config/prisma.js.map +0 -1
- package/build/esm/orchestrion/config/react-router.js +0 -5
- package/build/esm/orchestrion/config/react-router.js.map +0 -1
- package/build/types/orchestrion/config/prisma.d.ts +0 -4
- package/build/types/orchestrion/config/prisma.d.ts.map +0 -1
- package/build/types/orchestrion/config/react-router.d.ts +0 -4
- package/build/types/orchestrion/config/react-router.d.ts.map +0 -1
- package/build/types-ts3.8/orchestrion/config/prisma.d.ts +0 -4
- package/build/types-ts3.8/orchestrion/config/react-router.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koa.js","sources":["../../../../src/orchestrion/config/koa.ts"],"sourcesContent":["import type { InstrumentationConfig } from '@apm-js-collab/code-transformer';\n\nexport const koaConfig = [\n {\n channelName: 'use',\n module: { name: 'koa', versionRange: '>=2.0.0 <4', filePath: 'lib/application.js' },\n functionQuery: { className: 'Application', methodName: 'use', kind: 'Sync' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const koaChannels = {\n KOA_USE: 'orchestrion:koa:use',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"koa.js","sources":["../../../../src/orchestrion/config/koa.ts"],"sourcesContent":["import type { InstrumentationConfig } from '@apm-js-collab/code-transformer';\nimport { toSubscribeInjections } from './subscribe-injection';\n\nexport const koaConfig = [\n {\n channelName: 'use',\n module: { name: 'koa', versionRange: '>=2.0.0 <4', filePath: 'lib/application.js' },\n functionQuery: { className: 'Application', methodName: 'use', kind: 'Sync' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const koaChannels = {\n KOA_USE: 'orchestrion:koa:use',\n} as const;\n\nexport const koaSubscribeInjection = toSubscribeInjections(koaConfig);\n"],"names":[],"mappings":";;AAGO,MAAM,SAAA,GAAY;AAAA,EACvB;AAAA,IACE,WAAA,EAAa,KAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,OAAO,YAAA,EAAc,YAAA,EAAc,UAAU,oBAAA,EAAqB;AAAA,IAClF,eAAe,EAAE,SAAA,EAAW,eAAe,UAAA,EAAY,KAAA,EAAO,MAAM,MAAA;AAAO;AAE/E;AAEO,MAAM,WAAA,GAAc;AAAA,EACzB,OAAA,EAAS;AACX;AAEO,MAAM,qBAAA,GAAwB,sBAAsB,SAAS;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const chatModelConfig = ["dist/language_models/chat_models.cjs", "dist/language_models/chat_models.js"].flatMap(
|
|
2
4
|
(filePath) => {
|
|
3
5
|
const module = { name: "@langchain/core", versionRange: ">=0.1.0 <2.0.0", filePath };
|
|
@@ -43,6 +45,7 @@ const langchainChannels = {
|
|
|
43
45
|
LANGCHAIN_CHAT_MODEL_INVOKE: "orchestrion:@langchain/core:chatModelInvoke",
|
|
44
46
|
LANGCHAIN_CHAT_MODEL_STREAM: "orchestrion:@langchain/core:chatModelStream"
|
|
45
47
|
};
|
|
48
|
+
const langchainSubscribeInjection = toSubscribeInjections(langchainConfig);
|
|
46
49
|
|
|
47
|
-
export { langchainChannels, langchainConfig, langchainEmbeddingsChannels };
|
|
50
|
+
export { langchainChannels, langchainConfig, langchainEmbeddingsChannels, langchainSubscribeInjection };
|
|
48
51
|
//# sourceMappingURL=langchain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain.js","sources":["../../../../src/orchestrion/config/langchain.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n// `@langchain/*` packages ship dual CJS/ESM builds (`.cjs` for `require`, `.js` for `import`) and the\n// matcher compares `filePath` exactly, so each hook is declared once per built file.\n\n// LangChain's chat model methods live on `BaseChatModel` in `@langchain/core` and are inherited by\n// every provider class (`ChatAnthropic`, `ChatOpenAI`, …), so a single hook there covers all\n// providers. `invoke` also backs `.batch()` (which calls `invoke` per item); `_streamIterator`\n// backs `.stream()`. The vendored OTel instrumentation instead patched each provider package to\n// dodge `@langchain/core` being bundled, but orchestrion transforms its source directly regardless\n// of bundling.\nconst chatModelConfig = ['dist/language_models/chat_models.cjs', 'dist/language_models/chat_models.js'].flatMap(\n filePath => {\n const module = { name: '@langchain/core', versionRange: '>=0.1.0 <2.0.0', filePath };\n\n return [\n {\n channelName: 'chatModelInvoke',\n module,\n functionQuery: { className: 'BaseChatModel', methodName: 'invoke', kind: 'Async' as const },\n },\n {\n channelName: 'chatModelStream',\n module,\n functionQuery: { className: 'BaseChatModel', methodName: '_streamIterator', kind: 'Async' as const },\n },\n ];\n },\n);\n\n// Embeddings have no shared concrete method on the base class (each provider implements\n// `embedQuery`/`embedDocuments`), so they're hooked per package. These are the provider packages the\n// vendored OTel instrumentation covered that actually ship an `Embeddings` subclass: `@langchain/openai`,\n// `@langchain/google-genai` and `@langchain/mistralai` define the two methods on their own class, while\n// `@langchain/google-vertexai` inherits them from the shared `@langchain/google-common` base, so that base\n// is the module hooked for it. (anthropic and groq are chat-only — they ship no embeddings class.) The\n// `embedQuery`/`embedDocuments` channel names are per-method; orchestrion prefixes them with the module\n// name, so the full channel strings stay distinct across packages.\nconst EMBED_QUERY = 'embedQuery';\nconst EMBED_DOCUMENTS = 'embedDocuments';\n\nconst EMBEDDINGS_PROVIDERS = [\n { name: '@langchain/openai', versionRange: '>=0.1.0 <2.0.0', methods: [EMBED_QUERY, EMBED_DOCUMENTS] },\n { name: '@langchain/google-genai', versionRange: '>=0.1.0 <3.0.0', methods: [EMBED_QUERY, EMBED_DOCUMENTS] },\n { name: '@langchain/mistralai', versionRange: '>=0.1.0 <2.0.0', methods: [EMBED_QUERY, EMBED_DOCUMENTS] },\n // `@langchain/google-vertexai` inherits its embed methods from this shared base. The base's\n // `embedQuery` delegates to `embedDocuments`, so hooking only `embedDocuments` still traces both\n // entry points as a single span each, instead of emitting a nested duplicate for `embedQuery`.\n { name: '@langchain/google-common', versionRange: '>=0.1.0 <3.0.0', methods: [EMBED_DOCUMENTS] },\n];\n\nconst embeddingsConfig = EMBEDDINGS_PROVIDERS.flatMap(({ name, versionRange, methods }) =>\n ['dist/embeddings.cjs', 'dist/embeddings.js'].flatMap(filePath =>\n methods.map(method => ({\n channelName: method,\n module: { name, versionRange, filePath },\n functionQuery: { methodName: method, kind: 'Async' as const },\n })),\n ),\n);\n\nexport const langchainConfig = [...chatModelConfig, ...embeddingsConfig] satisfies InstrumentationConfig[];\n\n// The embeddings channel strings the subscriber binds to, derived from the provider list above so that\n// adding a provider is a single edit that both instruments it and subscribes the listener to it.\nexport const langchainEmbeddingsChannels = EMBEDDINGS_PROVIDERS.flatMap(({ name, methods }) =>\n methods.map(method => `orchestrion:${name}:${method}`),\n);\n\nexport const langchainChannels = {\n LANGCHAIN_CHAT_MODEL_INVOKE: 'orchestrion:@langchain/core:chatModelInvoke',\n LANGCHAIN_CHAT_MODEL_STREAM: 'orchestrion:@langchain/core:chatModelStream',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"langchain.js","sources":["../../../../src/orchestrion/config/langchain.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n// `@langchain/*` packages ship dual CJS/ESM builds (`.cjs` for `require`, `.js` for `import`) and the\n// matcher compares `filePath` exactly, so each hook is declared once per built file.\n\n// LangChain's chat model methods live on `BaseChatModel` in `@langchain/core` and are inherited by\n// every provider class (`ChatAnthropic`, `ChatOpenAI`, …), so a single hook there covers all\n// providers. `invoke` also backs `.batch()` (which calls `invoke` per item); `_streamIterator`\n// backs `.stream()`. The vendored OTel instrumentation instead patched each provider package to\n// dodge `@langchain/core` being bundled, but orchestrion transforms its source directly regardless\n// of bundling.\nconst chatModelConfig = ['dist/language_models/chat_models.cjs', 'dist/language_models/chat_models.js'].flatMap(\n filePath => {\n const module = { name: '@langchain/core', versionRange: '>=0.1.0 <2.0.0', filePath };\n\n return [\n {\n channelName: 'chatModelInvoke',\n module,\n functionQuery: { className: 'BaseChatModel', methodName: 'invoke', kind: 'Async' as const },\n },\n {\n channelName: 'chatModelStream',\n module,\n functionQuery: { className: 'BaseChatModel', methodName: '_streamIterator', kind: 'Async' as const },\n },\n ];\n },\n);\n\n// Embeddings have no shared concrete method on the base class (each provider implements\n// `embedQuery`/`embedDocuments`), so they're hooked per package. These are the provider packages the\n// vendored OTel instrumentation covered that actually ship an `Embeddings` subclass: `@langchain/openai`,\n// `@langchain/google-genai` and `@langchain/mistralai` define the two methods on their own class, while\n// `@langchain/google-vertexai` inherits them from the shared `@langchain/google-common` base, so that base\n// is the module hooked for it. (anthropic and groq are chat-only — they ship no embeddings class.) The\n// `embedQuery`/`embedDocuments` channel names are per-method; orchestrion prefixes them with the module\n// name, so the full channel strings stay distinct across packages.\nconst EMBED_QUERY = 'embedQuery';\nconst EMBED_DOCUMENTS = 'embedDocuments';\n\nconst EMBEDDINGS_PROVIDERS = [\n { name: '@langchain/openai', versionRange: '>=0.1.0 <2.0.0', methods: [EMBED_QUERY, EMBED_DOCUMENTS] },\n { name: '@langchain/google-genai', versionRange: '>=0.1.0 <3.0.0', methods: [EMBED_QUERY, EMBED_DOCUMENTS] },\n { name: '@langchain/mistralai', versionRange: '>=0.1.0 <2.0.0', methods: [EMBED_QUERY, EMBED_DOCUMENTS] },\n // `@langchain/google-vertexai` inherits its embed methods from this shared base. The base's\n // `embedQuery` delegates to `embedDocuments`, so hooking only `embedDocuments` still traces both\n // entry points as a single span each, instead of emitting a nested duplicate for `embedQuery`.\n { name: '@langchain/google-common', versionRange: '>=0.1.0 <3.0.0', methods: [EMBED_DOCUMENTS] },\n];\n\nconst embeddingsConfig = EMBEDDINGS_PROVIDERS.flatMap(({ name, versionRange, methods }) =>\n ['dist/embeddings.cjs', 'dist/embeddings.js'].flatMap(filePath =>\n methods.map(method => ({\n channelName: method,\n module: { name, versionRange, filePath },\n functionQuery: { methodName: method, kind: 'Async' as const },\n })),\n ),\n);\n\nexport const langchainConfig = [...chatModelConfig, ...embeddingsConfig] satisfies InstrumentationConfig[];\n\n// The embeddings channel strings the subscriber binds to, derived from the provider list above so that\n// adding a provider is a single edit that both instruments it and subscribes the listener to it.\nexport const langchainEmbeddingsChannels = EMBEDDINGS_PROVIDERS.flatMap(({ name, methods }) =>\n methods.map(method => `orchestrion:${name}:${method}`),\n);\n\nexport const langchainChannels = {\n LANGCHAIN_CHAT_MODEL_INVOKE: 'orchestrion:@langchain/core:chatModelInvoke',\n LANGCHAIN_CHAT_MODEL_STREAM: 'orchestrion:@langchain/core:chatModelStream',\n} as const;\n\nexport const langchainSubscribeInjection = toSubscribeInjections(langchainConfig);\n"],"names":[],"mappings":";;AAYA,MAAM,eAAA,GAAkB,CAAC,sCAAA,EAAwC,qCAAqC,CAAA,CAAE,OAAA;AAAA,EACtG,CAAA,QAAA,KAAY;AACV,IAAA,MAAM,SAAS,EAAE,IAAA,EAAM,iBAAA,EAAmB,YAAA,EAAc,kBAAkB,QAAA,EAAS;AAEnF,IAAA,OAAO;AAAA,MACL;AAAA,QACE,WAAA,EAAa,iBAAA;AAAA,QACb,MAAA;AAAA,QACA,eAAe,EAAE,SAAA,EAAW,iBAAiB,UAAA,EAAY,QAAA,EAAU,MAAM,OAAA;AAAiB,OAC5F;AAAA,MACA;AAAA,QACE,WAAA,EAAa,iBAAA;AAAA,QACb,MAAA;AAAA,QACA,eAAe,EAAE,SAAA,EAAW,iBAAiB,UAAA,EAAY,iBAAA,EAAmB,MAAM,OAAA;AAAiB;AACrG,KACF;AAAA,EACF;AACF,CAAA;AAUA,MAAM,WAAA,GAAc,YAAA;AACpB,MAAM,eAAA,GAAkB,gBAAA;AAExB,MAAM,oBAAA,GAAuB;AAAA,EAC3B,EAAE,MAAM,mBAAA,EAAqB,YAAA,EAAc,kBAAkB,OAAA,EAAS,CAAC,WAAA,EAAa,eAAe,CAAA,EAAE;AAAA,EACrG,EAAE,MAAM,yBAAA,EAA2B,YAAA,EAAc,kBAAkB,OAAA,EAAS,CAAC,WAAA,EAAa,eAAe,CAAA,EAAE;AAAA,EAC3G,EAAE,MAAM,sBAAA,EAAwB,YAAA,EAAc,kBAAkB,OAAA,EAAS,CAAC,WAAA,EAAa,eAAe,CAAA,EAAE;AAAA;AAAA;AAAA;AAAA,EAIxG,EAAE,MAAM,0BAAA,EAA4B,YAAA,EAAc,kBAAkB,OAAA,EAAS,CAAC,eAAe,CAAA;AAC/F,CAAA;AAEA,MAAM,mBAAmB,oBAAA,CAAqB,OAAA;AAAA,EAAQ,CAAC,EAAE,IAAA,EAAM,YAAA,EAAc,SAAQ,KACnF,CAAC,qBAAA,EAAuB,oBAAoB,CAAA,CAAE,OAAA;AAAA,IAAQ,CAAA,QAAA,KACpD,OAAA,CAAQ,GAAA,CAAI,CAAA,MAAA,MAAW;AAAA,MACrB,WAAA,EAAa,MAAA;AAAA,MACb,MAAA,EAAQ,EAAE,IAAA,EAAM,YAAA,EAAc,QAAA,EAAS;AAAA,MACvC,aAAA,EAAe,EAAE,UAAA,EAAY,MAAA,EAAQ,MAAM,OAAA;AAAiB,KAC9D,CAAE;AAAA;AAEN,CAAA;AAEO,MAAM,eAAA,GAAkB,CAAC,GAAG,eAAA,EAAiB,GAAG,gBAAgB;AAIhE,MAAM,8BAA8B,oBAAA,CAAqB,OAAA;AAAA,EAAQ,CAAC,EAAE,IAAA,EAAM,OAAA,EAAQ,KACvF,OAAA,CAAQ,GAAA,CAAI,CAAA,MAAA,KAAU,CAAA,YAAA,EAAe,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;AACvD;AAEO,MAAM,iBAAA,GAAoB;AAAA,EAC/B,2BAAA,EAA6B,6CAAA;AAAA,EAC7B,2BAAA,EAA6B;AAC/B;AAEO,MAAM,2BAAA,GAA8B,sBAAsB,eAAe;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const module$1 = (filePath) => ({
|
|
2
4
|
name: "@langchain/langgraph",
|
|
3
5
|
versionRange: ">=0.0.0 <2.0.0",
|
|
@@ -20,6 +22,7 @@ const langgraphChannels = {
|
|
|
20
22
|
LANGGRAPH_STATE_GRAPH_COMPILE: "orchestrion:@langchain/langgraph:stateGraphCompile",
|
|
21
23
|
LANGGRAPH_CREATE_REACT_AGENT: "orchestrion:@langchain/langgraph:createReactAgent"
|
|
22
24
|
};
|
|
25
|
+
const langgraphSubscribeInjection = toSubscribeInjections(langgraphConfig);
|
|
23
26
|
|
|
24
|
-
export { langgraphChannels, langgraphConfig };
|
|
27
|
+
export { langgraphChannels, langgraphConfig, langgraphSubscribeInjection };
|
|
25
28
|
//# sourceMappingURL=langgraph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langgraph.js","sources":["../../../../src/orchestrion/config/langgraph.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n// `@langchain/langgraph` ships dual CJS/ESM builds (`.cjs` for `require`, `.js` for `import`) and the\n// matcher compares `filePath` exactly, so each hook is declared once per built file. `StateGraph.compile`\n// and `createReactAgent` both return synchronously; the subscriber wraps the returned compiled graph's\n// `invoke` (mirroring the vendored OTel instrumentation, which patched these on the module exports).\nconst module = (filePath: string): InstrumentationConfig['module'] => ({\n name: '@langchain/langgraph',\n versionRange: '>=0.0.0 <2.0.0',\n filePath,\n});\n\nconst compileConfig = ['dist/graph/state.cjs', 'dist/graph/state.js'].map(filePath => ({\n channelName: 'stateGraphCompile',\n module: module(filePath),\n functionQuery: { className: 'StateGraph', methodName: 'compile', kind: 'Sync' as const },\n}));\n\n// `createReactAgent` is a single function declaration re-exported from both `@langchain/langgraph` and\n// `@langchain/langgraph/prebuilt`; hooking its definition file covers every import path.\nconst createReactAgentConfig = ['dist/prebuilt/react_agent_executor.cjs', 'dist/prebuilt/react_agent_executor.js'].map(\n filePath => ({\n channelName: 'createReactAgent',\n module: module(filePath),\n functionQuery: { functionName: 'createReactAgent', kind: 'Sync' as const },\n }),\n);\n\nexport const langgraphConfig = [...compileConfig, ...createReactAgentConfig] satisfies InstrumentationConfig[];\n\nexport const langgraphChannels = {\n LANGGRAPH_STATE_GRAPH_COMPILE: 'orchestrion:@langchain/langgraph:stateGraphCompile',\n LANGGRAPH_CREATE_REACT_AGENT: 'orchestrion:@langchain/langgraph:createReactAgent',\n} as const;\n"],"names":["module"],"mappings":"
|
|
1
|
+
{"version":3,"file":"langgraph.js","sources":["../../../../src/orchestrion/config/langgraph.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n// `@langchain/langgraph` ships dual CJS/ESM builds (`.cjs` for `require`, `.js` for `import`) and the\n// matcher compares `filePath` exactly, so each hook is declared once per built file. `StateGraph.compile`\n// and `createReactAgent` both return synchronously; the subscriber wraps the returned compiled graph's\n// `invoke` (mirroring the vendored OTel instrumentation, which patched these on the module exports).\nconst module = (filePath: string): InstrumentationConfig['module'] => ({\n name: '@langchain/langgraph',\n versionRange: '>=0.0.0 <2.0.0',\n filePath,\n});\n\nconst compileConfig = ['dist/graph/state.cjs', 'dist/graph/state.js'].map(filePath => ({\n channelName: 'stateGraphCompile',\n module: module(filePath),\n functionQuery: { className: 'StateGraph', methodName: 'compile', kind: 'Sync' as const },\n}));\n\n// `createReactAgent` is a single function declaration re-exported from both `@langchain/langgraph` and\n// `@langchain/langgraph/prebuilt`; hooking its definition file covers every import path.\nconst createReactAgentConfig = ['dist/prebuilt/react_agent_executor.cjs', 'dist/prebuilt/react_agent_executor.js'].map(\n filePath => ({\n channelName: 'createReactAgent',\n module: module(filePath),\n functionQuery: { functionName: 'createReactAgent', kind: 'Sync' as const },\n }),\n);\n\nexport const langgraphConfig = [...compileConfig, ...createReactAgentConfig] satisfies InstrumentationConfig[];\n\nexport const langgraphChannels = {\n LANGGRAPH_STATE_GRAPH_COMPILE: 'orchestrion:@langchain/langgraph:stateGraphCompile',\n LANGGRAPH_CREATE_REACT_AGENT: 'orchestrion:@langchain/langgraph:createReactAgent',\n} as const;\n\nexport const langgraphSubscribeInjection = toSubscribeInjections(langgraphConfig);\n"],"names":["module"],"mappings":";;AAOA,MAAMA,QAAA,GAAS,CAAC,QAAA,MAAuD;AAAA,EACrE,IAAA,EAAM,sBAAA;AAAA,EACN,YAAA,EAAc,gBAAA;AAAA,EACd;AACF,CAAA,CAAA;AAEA,MAAM,gBAAgB,CAAC,sBAAA,EAAwB,qBAAqB,CAAA,CAAE,IAAI,CAAA,QAAA,MAAa;AAAA,EACrF,WAAA,EAAa,mBAAA;AAAA,EACb,MAAA,EAAQA,SAAO,QAAQ,CAAA;AAAA,EACvB,eAAe,EAAE,SAAA,EAAW,cAAc,UAAA,EAAY,SAAA,EAAW,MAAM,MAAA;AACzE,CAAA,CAAE,CAAA;AAIF,MAAM,sBAAA,GAAyB,CAAC,wCAAA,EAA0C,uCAAuC,CAAA,CAAE,GAAA;AAAA,EACjH,CAAA,QAAA,MAAa;AAAA,IACX,WAAA,EAAa,kBAAA;AAAA,IACb,MAAA,EAAQA,SAAO,QAAQ,CAAA;AAAA,IACvB,aAAA,EAAe,EAAE,YAAA,EAAc,kBAAA,EAAoB,MAAM,MAAA;AAAgB,GAC3E;AACF,CAAA;AAEO,MAAM,eAAA,GAAkB,CAAC,GAAG,aAAA,EAAe,GAAG,sBAAsB;AAEpE,MAAM,iBAAA,GAAoB;AAAA,EAC/B,6BAAA,EAA+B,oDAAA;AAAA,EAC/B,4BAAA,EAA8B;AAChC;AAEO,MAAM,2BAAA,GAA8B,sBAAsB,eAAe;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const lruMemoizerConfig = [
|
|
2
4
|
{
|
|
3
5
|
channelName: "load",
|
|
@@ -9,6 +11,7 @@ const lruMemoizerConfig = [
|
|
|
9
11
|
const lruMemoizerChannels = {
|
|
10
12
|
LRU_MEMOIZER_LOAD: "orchestrion:lru-memoizer:load"
|
|
11
13
|
};
|
|
14
|
+
const lruMemoizerSubscribeInjection = toSubscribeInjections(lruMemoizerConfig);
|
|
12
15
|
|
|
13
|
-
export { lruMemoizerChannels, lruMemoizerConfig };
|
|
16
|
+
export { lruMemoizerChannels, lruMemoizerConfig, lruMemoizerSubscribeInjection };
|
|
14
17
|
//# sourceMappingURL=lru-memoizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-memoizer.js","sources":["../../../../src/orchestrion/config/lru-memoizer.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\nexport const lruMemoizerConfig = [\n {\n channelName: 'load',\n // `>=2.1.0` only: the named `function memoizedFunction()` the selector targets exists from 2.1.0\n module: { name: 'lru-memoizer', versionRange: '>=2.1.0 <4', filePath: 'lib/async.js' },\n functionQuery: { functionName: 'memoizedFunction', kind: 'Callback' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const lruMemoizerChannels = {\n LRU_MEMOIZER_LOAD: 'orchestrion:lru-memoizer:load',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lru-memoizer.js","sources":["../../../../src/orchestrion/config/lru-memoizer.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\nexport const lruMemoizerConfig = [\n {\n channelName: 'load',\n // `>=2.1.0` only: the named `function memoizedFunction()` the selector targets exists from 2.1.0\n module: { name: 'lru-memoizer', versionRange: '>=2.1.0 <4', filePath: 'lib/async.js' },\n functionQuery: { functionName: 'memoizedFunction', kind: 'Callback' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const lruMemoizerChannels = {\n LRU_MEMOIZER_LOAD: 'orchestrion:lru-memoizer:load',\n} as const;\n\nexport const lruMemoizerSubscribeInjection = toSubscribeInjections(lruMemoizerConfig);\n"],"names":[],"mappings":";;AAGO,MAAM,iBAAA,GAAoB;AAAA,EAC/B;AAAA,IACE,WAAA,EAAa,MAAA;AAAA;AAAA,IAEb,QAAQ,EAAE,IAAA,EAAM,gBAAgB,YAAA,EAAc,YAAA,EAAc,UAAU,cAAA,EAAe;AAAA,IACrF,aAAA,EAAe,EAAE,YAAA,EAAc,kBAAA,EAAoB,MAAM,UAAA;AAAW;AAExE;AAEO,MAAM,mBAAA,GAAsB;AAAA,EACjC,iBAAA,EAAmB;AACrB;AAEO,MAAM,6BAAA,GAAgC,sBAAsB,iBAAiB;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const module$1 = { name: "mongodb" };
|
|
2
4
|
const mongodbConfig = [
|
|
3
5
|
// Band 1: mongodb >= 6.4 — promise-based command.
|
|
@@ -59,6 +61,7 @@ const mongodbChannels = {
|
|
|
59
61
|
MONGODB_V3_QUERY: "orchestrion:mongodb:v3_query",
|
|
60
62
|
MONGODB_V3_GET_MORE: "orchestrion:mongodb:v3_get_more"
|
|
61
63
|
};
|
|
64
|
+
const mongodbSubscribeInjection = toSubscribeInjections(mongodbConfig);
|
|
62
65
|
|
|
63
|
-
export { mongodbChannels, mongodbConfig };
|
|
66
|
+
export { mongodbChannels, mongodbConfig, mongodbSubscribeInjection };
|
|
64
67
|
//# sourceMappingURL=mongodb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb.js","sources":["../../../../src/orchestrion/config/mongodb.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n// The mongodb driver's command architecture changed across majors, mirrored in the vendored OTel\n// instrumentation's version bands:\n// - >= 6.4: promise-based `Connection.prototype.command`\n// - >= 4.0 < 6.4: callback-based `Connection.prototype.command` + `ConnectionPool.checkOut`\n// (the pool runs the checkout callback in a detached context, so the channel re-propagates the\n// caller's async context to it — see the subscriber)\n// - >= 3.3 < 4: the `lib/core/wireprotocol` module functions\nconst module = { name: 'mongodb' } as const;\n\nexport const mongodbConfig = [\n // Band 1: mongodb >= 6.4 — promise-based command.\n // `methodName`-only (no `className`): the code-transformer's `className` matcher throws on classes\n // containing ES2022 `static {}` blocks (mongodb 7.x's `Connection`/`ConnectionPool` have them — see\n // `transformer-bug.md`), and `methodName` alone matches exactly the base method across all versions.\n {\n channelName: 'command',\n module: { ...module, versionRange: '>=6.4.0 <8', filePath: 'lib/cmap/connection.js' },\n functionQuery: { methodName: 'command', kind: 'Async' },\n },\n // Band 2: mongodb >= 4.0 < 6.4 — callback-based command (same `command` channel, different kind).\n {\n channelName: 'command',\n module: { ...module, versionRange: '>=4.0.0 <6.4', filePath: 'lib/cmap/connection.js' },\n functionQuery: { methodName: 'command', kind: 'Callback' },\n },\n // Band 2: the pool runs the checkout callback in a detached async context, so the operation's\n // `command()` (invoked inside it) loses the caller's active span. Hooking `checkOut` re-propagates\n // that context to the callback (the subscriber creates no span — see `getSpan` returning undefined).\n // Only needed < 6.4; from 6.4 `checkOut` is promise-based and the context survives natively.\n {\n channelName: 'checkout',\n module: { ...module, versionRange: '>=4.0.0 <6.4', filePath: 'lib/cmap/connection_pool.js' },\n functionQuery: { methodName: 'checkOut', kind: 'Callback' },\n },\n // Band 3: mongodb >= 3.3 < 4 — the driver had no unified `command`; each operation is a separate\n // `lib/core/wireprotocol` function, all callback-style. `insert`/`update`/`remove` are named\n // function expressions in the `index.js` `module.exports` object (matched by `expressionName`);\n // `command`/`query`/`getMore` are single-function modules (matched by `functionName`).\n ...(['insert', 'update', 'remove'] as const).map(op => ({\n channelName: `v3_${op}`,\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/index.js' },\n functionQuery: { expressionName: op, kind: 'Callback' as const },\n })),\n {\n channelName: 'v3_command',\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/command.js' },\n functionQuery: { functionName: 'command', kind: 'Callback' },\n },\n {\n channelName: 'v3_query',\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/query.js' },\n functionQuery: { functionName: 'query', kind: 'Callback' },\n },\n {\n channelName: 'v3_get_more',\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/get_more.js' },\n functionQuery: { functionName: 'getMore', kind: 'Callback' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const mongodbChannels = {\n MONGODB_COMMAND: 'orchestrion:mongodb:command',\n MONGODB_CHECKOUT: 'orchestrion:mongodb:checkout',\n MONGODB_V3_INSERT: 'orchestrion:mongodb:v3_insert',\n MONGODB_V3_UPDATE: 'orchestrion:mongodb:v3_update',\n MONGODB_V3_REMOVE: 'orchestrion:mongodb:v3_remove',\n MONGODB_V3_COMMAND: 'orchestrion:mongodb:v3_command',\n MONGODB_V3_QUERY: 'orchestrion:mongodb:v3_query',\n MONGODB_V3_GET_MORE: 'orchestrion:mongodb:v3_get_more',\n} as const;\n"],"names":["module"],"mappings":"
|
|
1
|
+
{"version":3,"file":"mongodb.js","sources":["../../../../src/orchestrion/config/mongodb.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n// The mongodb driver's command architecture changed across majors, mirrored in the vendored OTel\n// instrumentation's version bands:\n// - >= 6.4: promise-based `Connection.prototype.command`\n// - >= 4.0 < 6.4: callback-based `Connection.prototype.command` + `ConnectionPool.checkOut`\n// (the pool runs the checkout callback in a detached context, so the channel re-propagates the\n// caller's async context to it — see the subscriber)\n// - >= 3.3 < 4: the `lib/core/wireprotocol` module functions\nconst module = { name: 'mongodb' } as const;\n\nexport const mongodbConfig = [\n // Band 1: mongodb >= 6.4 — promise-based command.\n // `methodName`-only (no `className`): the code-transformer's `className` matcher throws on classes\n // containing ES2022 `static {}` blocks (mongodb 7.x's `Connection`/`ConnectionPool` have them — see\n // `transformer-bug.md`), and `methodName` alone matches exactly the base method across all versions.\n {\n channelName: 'command',\n module: { ...module, versionRange: '>=6.4.0 <8', filePath: 'lib/cmap/connection.js' },\n functionQuery: { methodName: 'command', kind: 'Async' },\n },\n // Band 2: mongodb >= 4.0 < 6.4 — callback-based command (same `command` channel, different kind).\n {\n channelName: 'command',\n module: { ...module, versionRange: '>=4.0.0 <6.4', filePath: 'lib/cmap/connection.js' },\n functionQuery: { methodName: 'command', kind: 'Callback' },\n },\n // Band 2: the pool runs the checkout callback in a detached async context, so the operation's\n // `command()` (invoked inside it) loses the caller's active span. Hooking `checkOut` re-propagates\n // that context to the callback (the subscriber creates no span — see `getSpan` returning undefined).\n // Only needed < 6.4; from 6.4 `checkOut` is promise-based and the context survives natively.\n {\n channelName: 'checkout',\n module: { ...module, versionRange: '>=4.0.0 <6.4', filePath: 'lib/cmap/connection_pool.js' },\n functionQuery: { methodName: 'checkOut', kind: 'Callback' },\n },\n // Band 3: mongodb >= 3.3 < 4 — the driver had no unified `command`; each operation is a separate\n // `lib/core/wireprotocol` function, all callback-style. `insert`/`update`/`remove` are named\n // function expressions in the `index.js` `module.exports` object (matched by `expressionName`);\n // `command`/`query`/`getMore` are single-function modules (matched by `functionName`).\n ...(['insert', 'update', 'remove'] as const).map(op => ({\n channelName: `v3_${op}`,\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/index.js' },\n functionQuery: { expressionName: op, kind: 'Callback' as const },\n })),\n {\n channelName: 'v3_command',\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/command.js' },\n functionQuery: { functionName: 'command', kind: 'Callback' },\n },\n {\n channelName: 'v3_query',\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/query.js' },\n functionQuery: { functionName: 'query', kind: 'Callback' },\n },\n {\n channelName: 'v3_get_more',\n module: { ...module, versionRange: '>=3.3.0 <4', filePath: 'lib/core/wireprotocol/get_more.js' },\n functionQuery: { functionName: 'getMore', kind: 'Callback' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const mongodbChannels = {\n MONGODB_COMMAND: 'orchestrion:mongodb:command',\n MONGODB_CHECKOUT: 'orchestrion:mongodb:checkout',\n MONGODB_V3_INSERT: 'orchestrion:mongodb:v3_insert',\n MONGODB_V3_UPDATE: 'orchestrion:mongodb:v3_update',\n MONGODB_V3_REMOVE: 'orchestrion:mongodb:v3_remove',\n MONGODB_V3_COMMAND: 'orchestrion:mongodb:v3_command',\n MONGODB_V3_QUERY: 'orchestrion:mongodb:v3_query',\n MONGODB_V3_GET_MORE: 'orchestrion:mongodb:v3_get_more',\n} as const;\n\nexport const mongodbSubscribeInjection = toSubscribeInjections(mongodbConfig);\n"],"names":["module"],"mappings":";;AAUA,MAAMA,QAAA,GAAS,EAAE,IAAA,EAAM,SAAA,EAAU;AAE1B,MAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,EAK3B;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,QAAQ,EAAE,GAAGA,UAAQ,YAAA,EAAc,YAAA,EAAc,UAAU,wBAAA,EAAyB;AAAA,IACpF,aAAA,EAAe,EAAE,UAAA,EAAY,SAAA,EAAW,MAAM,OAAA;AAAQ,GACxD;AAAA;AAAA,EAEA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,QAAQ,EAAE,GAAGA,UAAQ,YAAA,EAAc,cAAA,EAAgB,UAAU,wBAAA,EAAyB;AAAA,IACtF,aAAA,EAAe,EAAE,UAAA,EAAY,SAAA,EAAW,MAAM,UAAA;AAAW,GAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA,IACE,WAAA,EAAa,UAAA;AAAA,IACb,QAAQ,EAAE,GAAGA,UAAQ,YAAA,EAAc,cAAA,EAAgB,UAAU,6BAAA,EAA8B;AAAA,IAC3F,aAAA,EAAe,EAAE,UAAA,EAAY,UAAA,EAAY,MAAM,UAAA;AAAW,GAC5D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,GAAI,CAAC,QAAA,EAAU,UAAU,QAAQ,CAAA,CAAY,IAAI,CAAA,EAAA,MAAO;AAAA,IACtD,WAAA,EAAa,MAAM,EAAE,CAAA,CAAA;AAAA,IACrB,QAAQ,EAAE,GAAGA,UAAQ,YAAA,EAAc,YAAA,EAAc,UAAU,gCAAA,EAAiC;AAAA,IAC5F,aAAA,EAAe,EAAE,cAAA,EAAgB,EAAA,EAAI,MAAM,UAAA;AAAoB,GACjE,CAAE,CAAA;AAAA,EACF;AAAA,IACE,WAAA,EAAa,YAAA;AAAA,IACb,QAAQ,EAAE,GAAGA,UAAQ,YAAA,EAAc,YAAA,EAAc,UAAU,kCAAA,EAAmC;AAAA,IAC9F,aAAA,EAAe,EAAE,YAAA,EAAc,SAAA,EAAW,MAAM,UAAA;AAAW,GAC7D;AAAA,EACA;AAAA,IACE,WAAA,EAAa,UAAA;AAAA,IACb,QAAQ,EAAE,GAAGA,UAAQ,YAAA,EAAc,YAAA,EAAc,UAAU,gCAAA,EAAiC;AAAA,IAC5F,aAAA,EAAe,EAAE,YAAA,EAAc,OAAA,EAAS,MAAM,UAAA;AAAW,GAC3D;AAAA,EACA;AAAA,IACE,WAAA,EAAa,aAAA;AAAA,IACb,QAAQ,EAAE,GAAGA,UAAQ,YAAA,EAAc,YAAA,EAAc,UAAU,mCAAA,EAAoC;AAAA,IAC/F,aAAA,EAAe,EAAE,YAAA,EAAc,SAAA,EAAW,MAAM,UAAA;AAAW;AAE/D;AAEO,MAAM,eAAA,GAAkB;AAAA,EAC7B,eAAA,EAAiB,6BAAA;AAAA,EACjB,gBAAA,EAAkB,8BAAA;AAAA,EAClB,iBAAA,EAAmB,+BAAA;AAAA,EACnB,iBAAA,EAAmB,+BAAA;AAAA,EACnB,iBAAA,EAAmB,+BAAA;AAAA,EACnB,kBAAA,EAAoB,gCAAA;AAAA,EACpB,gBAAA,EAAkB,8BAAA;AAAA,EAClB,mBAAA,EAAqB;AACvB;AAEO,MAAM,yBAAA,GAA4B,sBAAsB,aAAa;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const module$1 = { name: "mongoose", versionRange: ">=5.9.7 <9.7.0" };
|
|
2
4
|
const CONTEXT_CAPTURE_QUERY_METHODS = [
|
|
3
5
|
"find",
|
|
@@ -98,6 +100,7 @@ const mongooseChannels = {
|
|
|
98
100
|
const MONGOOSE_CONTEXT_CAPTURE_CHANNELS = CONTEXT_CAPTURE_QUERY_METHODS.map(
|
|
99
101
|
(methodName) => `orchestrion:mongoose:ctx_${methodName}`
|
|
100
102
|
);
|
|
103
|
+
const mongooseSubscribeInjection = toSubscribeInjections(mongooseConfig);
|
|
101
104
|
|
|
102
|
-
export { MONGOOSE_CONTEXT_CAPTURE_CHANNELS, mongooseChannels, mongooseConfig };
|
|
105
|
+
export { MONGOOSE_CONTEXT_CAPTURE_CHANNELS, mongooseChannels, mongooseConfig, mongooseSubscribeInjection };
|
|
103
106
|
//# sourceMappingURL=mongoose.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoose.js","sources":["../../../../src/orchestrion/config/mongoose.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n// mongoose >= 9.7.0 publishes via its own `node:diagnostics_channel` tracing channels (handled by\n// `subscribeMongooseDiagnosticChannels`), so this transform is gated to `< 9.7.0` to avoid emitting\n// two spans per operation. The lower bound mirrors the vendored OTel IITM patcher's supported range.\nconst module = { name: 'mongoose', versionRange: '>=5.9.7 <9.7.0' } as const;\n\n// mongoose defines its prototype/static methods as assignments\n// (`Query.prototype.find = function(...)`, most of them anonymous), so the\n// transform matches the assigned property name via `expressionName`\n// rather than the function name. Entries whose method does not exist in a\n// given major are simply inert.\n\n// Builder methods that run synchronously and return a `Query`/`Aggregate`.\n// They don't get their own span; the subscriber only reads the active span\n// at build time and stashes it on the query so the later `exec()` can parent\n// to where the query was *built*, not where it is awaited. `kind: 'Sync'`\n// so the returned thenable isn't mistaken for the traced operation's result.\nconst CONTEXT_CAPTURE_QUERY_METHODS = [\n 'find',\n 'findOne',\n 'deleteOne',\n 'deleteMany',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n // 5/6/7 only (removed in 8), inert in recent versions\n 'remove',\n 'count',\n 'findOneAndRemove',\n] as const;\n\nexport const mongooseConfig = [\n // Query execution\n // the span for most read/write operations. `op`, collection and model are\n // read off the `Query` at exec time.\n {\n channelName: 'query_exec',\n module: { ...module, filePath: 'lib/query.js' },\n functionQuery: { expressionName: 'exec', kind: 'Auto' },\n },\n // Aggregation pipeline execution.\n {\n channelName: 'aggregate_exec',\n module: { ...module, filePath: 'lib/aggregate.js' },\n functionQuery: { expressionName: 'exec', kind: 'Auto' },\n },\n // `doc.save()` (and its `$save` alias, which mongoose points at `save` on\n // require. the alias picks up the transformed body automatically, so no\n // separate entry is needed).\n {\n channelName: 'model_save',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'save', kind: 'Auto' },\n },\n // Static batch operations.\n {\n channelName: 'model_insert_many',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'insertMany', kind: 'Auto' },\n },\n {\n channelName: 'model_bulk_write',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'bulkWrite', kind: 'Auto' },\n },\n // `doc.remove()` (a document method, deprecated in 6 and removed in 7)\n // `expressionName: 'remove'` also matches the sibling `Model.remove`\n // *static* in this file, which no matcher can tell apart from the prototype\n // method; that static is deprecated and would just produce a redundant span\n // so the collision is accepted rather than dropping the doc-method span.\n {\n channelName: 'model_remove',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'remove', kind: 'Auto' },\n },\n // NOTE: document `updateOne`/`deleteOne` (mongoose 8.21+) are deliberately\n // NOT hooked here. The vendored OTel/IITM patcher wraps\n // `Model.prototype.updateOne`/`deleteOne`, but those delegate to\n // `Query.exec`, which the `query_exec` channel above already instruments\n // (its `this.op` is the right operation). Verified by the `mongoose-v8`\n // suite against a real mongoose 8.21+ under orchestrion. A dedicated hook\n // is also not possible cleanly: `expressionName: 'updateOne'` in\n // `lib/model.js` can't be told apart from the same-named `Model.updateOne`\n // *static* (the common query-builder form), so hooking it would double-span\n // every `Model.updateOne(...)` call.\n //\n // `Model.aggregate()` builds an `Aggregate` with no method to hook for\n // context capture, so hook the static itself and stash the active span\n // on the returned aggregate. `Sync`: it returns the aggregate.\n {\n channelName: 'model_aggregate',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'aggregate', kind: 'Sync' },\n },\n ...CONTEXT_CAPTURE_QUERY_METHODS.map(methodName => ({\n channelName: `ctx_${methodName}`,\n module: { ...module, filePath: 'lib/query.js' },\n functionQuery: { expressionName: methodName, kind: 'Sync' as const },\n })),\n] satisfies InstrumentationConfig[];\n\nexport const mongooseChannels = {\n MONGOOSE_QUERY_EXEC: 'orchestrion:mongoose:query_exec',\n MONGOOSE_AGGREGATE_EXEC: 'orchestrion:mongoose:aggregate_exec',\n MONGOOSE_MODEL_SAVE: 'orchestrion:mongoose:model_save',\n MONGOOSE_MODEL_INSERT_MANY: 'orchestrion:mongoose:model_insert_many',\n MONGOOSE_MODEL_BULK_WRITE: 'orchestrion:mongoose:model_bulk_write',\n MONGOOSE_MODEL_REMOVE: 'orchestrion:mongoose:model_remove',\n MONGOOSE_MODEL_AGGREGATE: 'orchestrion:mongoose:model_aggregate',\n} as const;\n\n/**\n * Fully-qualified names of the context-capture channels, derived from the\n * same method list the transform config uses so the two can't drift. The\n * subscriber subscribes to all of them uniformly to stash the build-time\n * parent span (see `mongooseChannels` for the span-creating channels).\n */\nexport const MONGOOSE_CONTEXT_CAPTURE_CHANNELS: string[] = CONTEXT_CAPTURE_QUERY_METHODS.map(\n methodName => `orchestrion:mongoose:ctx_${methodName}`,\n);\n"],"names":["module"],"mappings":"
|
|
1
|
+
{"version":3,"file":"mongoose.js","sources":["../../../../src/orchestrion/config/mongoose.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n// mongoose >= 9.7.0 publishes via its own `node:diagnostics_channel` tracing channels (handled by\n// `subscribeMongooseDiagnosticChannels`), so this transform is gated to `< 9.7.0` to avoid emitting\n// two spans per operation. The lower bound mirrors the vendored OTel IITM patcher's supported range.\nconst module = { name: 'mongoose', versionRange: '>=5.9.7 <9.7.0' } as const;\n\n// mongoose defines its prototype/static methods as assignments\n// (`Query.prototype.find = function(...)`, most of them anonymous), so the\n// transform matches the assigned property name via `expressionName`\n// rather than the function name. Entries whose method does not exist in a\n// given major are simply inert.\n\n// Builder methods that run synchronously and return a `Query`/`Aggregate`.\n// They don't get their own span; the subscriber only reads the active span\n// at build time and stashes it on the query so the later `exec()` can parent\n// to where the query was *built*, not where it is awaited. `kind: 'Sync'`\n// so the returned thenable isn't mistaken for the traced operation's result.\nconst CONTEXT_CAPTURE_QUERY_METHODS = [\n 'find',\n 'findOne',\n 'deleteOne',\n 'deleteMany',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n // 5/6/7 only (removed in 8), inert in recent versions\n 'remove',\n 'count',\n 'findOneAndRemove',\n] as const;\n\nexport const mongooseConfig = [\n // Query execution\n // the span for most read/write operations. `op`, collection and model are\n // read off the `Query` at exec time.\n {\n channelName: 'query_exec',\n module: { ...module, filePath: 'lib/query.js' },\n functionQuery: { expressionName: 'exec', kind: 'Auto' },\n },\n // Aggregation pipeline execution.\n {\n channelName: 'aggregate_exec',\n module: { ...module, filePath: 'lib/aggregate.js' },\n functionQuery: { expressionName: 'exec', kind: 'Auto' },\n },\n // `doc.save()` (and its `$save` alias, which mongoose points at `save` on\n // require. the alias picks up the transformed body automatically, so no\n // separate entry is needed).\n {\n channelName: 'model_save',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'save', kind: 'Auto' },\n },\n // Static batch operations.\n {\n channelName: 'model_insert_many',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'insertMany', kind: 'Auto' },\n },\n {\n channelName: 'model_bulk_write',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'bulkWrite', kind: 'Auto' },\n },\n // `doc.remove()` (a document method, deprecated in 6 and removed in 7)\n // `expressionName: 'remove'` also matches the sibling `Model.remove`\n // *static* in this file, which no matcher can tell apart from the prototype\n // method; that static is deprecated and would just produce a redundant span\n // so the collision is accepted rather than dropping the doc-method span.\n {\n channelName: 'model_remove',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'remove', kind: 'Auto' },\n },\n // NOTE: document `updateOne`/`deleteOne` (mongoose 8.21+) are deliberately\n // NOT hooked here. The vendored OTel/IITM patcher wraps\n // `Model.prototype.updateOne`/`deleteOne`, but those delegate to\n // `Query.exec`, which the `query_exec` channel above already instruments\n // (its `this.op` is the right operation). Verified by the `mongoose-v8`\n // suite against a real mongoose 8.21+ under orchestrion. A dedicated hook\n // is also not possible cleanly: `expressionName: 'updateOne'` in\n // `lib/model.js` can't be told apart from the same-named `Model.updateOne`\n // *static* (the common query-builder form), so hooking it would double-span\n // every `Model.updateOne(...)` call.\n //\n // `Model.aggregate()` builds an `Aggregate` with no method to hook for\n // context capture, so hook the static itself and stash the active span\n // on the returned aggregate. `Sync`: it returns the aggregate.\n {\n channelName: 'model_aggregate',\n module: { ...module, filePath: 'lib/model.js' },\n functionQuery: { expressionName: 'aggregate', kind: 'Sync' },\n },\n ...CONTEXT_CAPTURE_QUERY_METHODS.map(methodName => ({\n channelName: `ctx_${methodName}`,\n module: { ...module, filePath: 'lib/query.js' },\n functionQuery: { expressionName: methodName, kind: 'Sync' as const },\n })),\n] satisfies InstrumentationConfig[];\n\nexport const mongooseChannels = {\n MONGOOSE_QUERY_EXEC: 'orchestrion:mongoose:query_exec',\n MONGOOSE_AGGREGATE_EXEC: 'orchestrion:mongoose:aggregate_exec',\n MONGOOSE_MODEL_SAVE: 'orchestrion:mongoose:model_save',\n MONGOOSE_MODEL_INSERT_MANY: 'orchestrion:mongoose:model_insert_many',\n MONGOOSE_MODEL_BULK_WRITE: 'orchestrion:mongoose:model_bulk_write',\n MONGOOSE_MODEL_REMOVE: 'orchestrion:mongoose:model_remove',\n MONGOOSE_MODEL_AGGREGATE: 'orchestrion:mongoose:model_aggregate',\n} as const;\n\n/**\n * Fully-qualified names of the context-capture channels, derived from the\n * same method list the transform config uses so the two can't drift. The\n * subscriber subscribes to all of them uniformly to stash the build-time\n * parent span (see `mongooseChannels` for the span-creating channels).\n */\nexport const MONGOOSE_CONTEXT_CAPTURE_CHANNELS: string[] = CONTEXT_CAPTURE_QUERY_METHODS.map(\n methodName => `orchestrion:mongoose:ctx_${methodName}`,\n);\n\nexport const mongooseSubscribeInjection = toSubscribeInjections(mongooseConfig);\n"],"names":["module"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const mysqlConfig = [
|
|
2
4
|
{
|
|
3
5
|
channelName: "query",
|
|
@@ -8,6 +10,7 @@ const mysqlConfig = [
|
|
|
8
10
|
const mysqlChannels = {
|
|
9
11
|
MYSQL_QUERY: "orchestrion:mysql:query"
|
|
10
12
|
};
|
|
13
|
+
const mysqlSubscribeInjection = toSubscribeInjections(mysqlConfig);
|
|
11
14
|
|
|
12
|
-
export { mysqlChannels, mysqlConfig };
|
|
15
|
+
export { mysqlChannels, mysqlConfig, mysqlSubscribeInjection };
|
|
13
16
|
//# sourceMappingURL=mysql.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql.js","sources":["../../../../src/orchestrion/config/mysql.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\nexport const mysqlConfig = [\n {\n channelName: 'query',\n module: { name: 'mysql', versionRange: '>=2.0.0 <3', filePath: 'lib/Connection.js' },\n functionQuery: { expressionName: 'query', kind: 'Auto' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const mysqlChannels = {\n MYSQL_QUERY: 'orchestrion:mysql:query',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mysql.js","sources":["../../../../src/orchestrion/config/mysql.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\nexport const mysqlConfig = [\n {\n channelName: 'query',\n module: { name: 'mysql', versionRange: '>=2.0.0 <3', filePath: 'lib/Connection.js' },\n functionQuery: { expressionName: 'query', kind: 'Auto' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const mysqlChannels = {\n MYSQL_QUERY: 'orchestrion:mysql:query',\n} as const;\n\nexport const mysqlSubscribeInjection = toSubscribeInjections(mysqlConfig);\n"],"names":[],"mappings":";;AAGO,MAAM,WAAA,GAAc;AAAA,EACzB;AAAA,IACE,WAAA,EAAa,OAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,SAAS,YAAA,EAAc,YAAA,EAAc,UAAU,mBAAA,EAAoB;AAAA,IACnF,aAAA,EAAe,EAAE,cAAA,EAAgB,OAAA,EAAS,MAAM,MAAA;AAAO;AAE3D;AAEO,MAAM,aAAA,GAAgB;AAAA,EAC3B,WAAA,EAAa;AACf;AAEO,MAAM,uBAAA,GAA0B,sBAAsB,WAAW;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const mysql2Config = [
|
|
2
4
|
{
|
|
3
5
|
channelName: "query",
|
|
@@ -24,6 +26,7 @@ const mysql2Channels = {
|
|
|
24
26
|
MYSQL2_QUERY: "orchestrion:mysql2:query",
|
|
25
27
|
MYSQL2_EXECUTE: "orchestrion:mysql2:execute"
|
|
26
28
|
};
|
|
29
|
+
const mysql2SubscribeInjection = toSubscribeInjections(mysql2Config);
|
|
27
30
|
|
|
28
|
-
export { mysql2Channels, mysql2Config };
|
|
31
|
+
export { mysql2Channels, mysql2Config, mysql2SubscribeInjection };
|
|
29
32
|
//# sourceMappingURL=mysql2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql2.js","sources":["../../../../src/orchestrion/config/mysql2.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n// Ports `@opentelemetry/instrumentation-mysql2` (which patches `query`/`execute` on the connection\n// prototype) to orchestrion channel injection.\n//\n// Two file layouts across the supported range:\n// - `< 3.11.5` → `class Connection` with `query`/`execute` in `lib/connection.js`\n// - `>= 3.11.5` → the methods moved to `class BaseConnection` in `lib/base/connection.js`\n//\n// Gated to `< 3.20.0`: from 3.20.0 mysql2 publishes to `node:diagnostics_channel` natively, and\n// that path is instrumented by `subscribeMysql2DiagnosticChannels` instead. Injecting there too\n// would emit two spans per query.\n//\n// `Callback` traces the callback shapes: `query(sql, cb)`, `query(sql, values, cb)`, and — since the\n// promise API funnels through the callback form — `await connection.query(sql)`. `execute` never\n// delegates to `query` internally, so instrumenting both is safe.\n//\n// NOT `Auto`: `Auto`'s no-callback branch probes the return value for `.then`, but mysql2's callback-\n// less `query(sql)` returns a `Query` whose `.then()` throws (mysql2's \"use the promise wrapper\"\n// guard) — so `Auto` would crash streamed queries. `Callback` leaves that shape untouched (a rare,\n// row-streaming use that consumes the emitter's events), the tradeoff being it isn't traced.\nexport const mysql2Config = [\n {\n channelName: 'query',\n module: { name: 'mysql2', versionRange: '>=1.4.2 <3.11.5', filePath: 'lib/connection.js' },\n functionQuery: { className: 'Connection', methodName: 'query', kind: 'Callback' },\n },\n {\n channelName: 'execute',\n module: { name: 'mysql2', versionRange: '>=1.4.2 <3.11.5', filePath: 'lib/connection.js' },\n functionQuery: { className: 'Connection', methodName: 'execute', kind: 'Callback' },\n },\n {\n channelName: 'query',\n module: { name: 'mysql2', versionRange: '>=3.11.5 <3.20.0', filePath: 'lib/base/connection.js' },\n functionQuery: { className: 'BaseConnection', methodName: 'query', kind: 'Callback' },\n },\n {\n channelName: 'execute',\n module: { name: 'mysql2', versionRange: '>=3.11.5 <3.20.0', filePath: 'lib/base/connection.js' },\n functionQuery: { className: 'BaseConnection', methodName: 'execute', kind: 'Callback' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const mysql2Channels = {\n MYSQL2_QUERY: 'orchestrion:mysql2:query',\n MYSQL2_EXECUTE: 'orchestrion:mysql2:execute',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mysql2.js","sources":["../../../../src/orchestrion/config/mysql2.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n// Ports `@opentelemetry/instrumentation-mysql2` (which patches `query`/`execute` on the connection\n// prototype) to orchestrion channel injection.\n//\n// Two file layouts across the supported range:\n// - `< 3.11.5` → `class Connection` with `query`/`execute` in `lib/connection.js`\n// - `>= 3.11.5` → the methods moved to `class BaseConnection` in `lib/base/connection.js`\n//\n// Gated to `< 3.20.0`: from 3.20.0 mysql2 publishes to `node:diagnostics_channel` natively, and\n// that path is instrumented by `subscribeMysql2DiagnosticChannels` instead. Injecting there too\n// would emit two spans per query.\n//\n// `Callback` traces the callback shapes: `query(sql, cb)`, `query(sql, values, cb)`, and — since the\n// promise API funnels through the callback form — `await connection.query(sql)`. `execute` never\n// delegates to `query` internally, so instrumenting both is safe.\n//\n// NOT `Auto`: `Auto`'s no-callback branch probes the return value for `.then`, but mysql2's callback-\n// less `query(sql)` returns a `Query` whose `.then()` throws (mysql2's \"use the promise wrapper\"\n// guard) — so `Auto` would crash streamed queries. `Callback` leaves that shape untouched (a rare,\n// row-streaming use that consumes the emitter's events), the tradeoff being it isn't traced.\nexport const mysql2Config = [\n {\n channelName: 'query',\n module: { name: 'mysql2', versionRange: '>=1.4.2 <3.11.5', filePath: 'lib/connection.js' },\n functionQuery: { className: 'Connection', methodName: 'query', kind: 'Callback' },\n },\n {\n channelName: 'execute',\n module: { name: 'mysql2', versionRange: '>=1.4.2 <3.11.5', filePath: 'lib/connection.js' },\n functionQuery: { className: 'Connection', methodName: 'execute', kind: 'Callback' },\n },\n {\n channelName: 'query',\n module: { name: 'mysql2', versionRange: '>=3.11.5 <3.20.0', filePath: 'lib/base/connection.js' },\n functionQuery: { className: 'BaseConnection', methodName: 'query', kind: 'Callback' },\n },\n {\n channelName: 'execute',\n module: { name: 'mysql2', versionRange: '>=3.11.5 <3.20.0', filePath: 'lib/base/connection.js' },\n functionQuery: { className: 'BaseConnection', methodName: 'execute', kind: 'Callback' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const mysql2Channels = {\n MYSQL2_QUERY: 'orchestrion:mysql2:query',\n MYSQL2_EXECUTE: 'orchestrion:mysql2:execute',\n} as const;\n\nexport const mysql2SubscribeInjection = toSubscribeInjections(mysql2Config);\n"],"names":[],"mappings":";;AAsBO,MAAM,YAAA,GAAe;AAAA,EAC1B;AAAA,IACE,WAAA,EAAa,OAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,UAAU,YAAA,EAAc,iBAAA,EAAmB,UAAU,mBAAA,EAAoB;AAAA,IACzF,eAAe,EAAE,SAAA,EAAW,cAAc,UAAA,EAAY,OAAA,EAAS,MAAM,UAAA;AAAW,GAClF;AAAA,EACA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,UAAU,YAAA,EAAc,iBAAA,EAAmB,UAAU,mBAAA,EAAoB;AAAA,IACzF,eAAe,EAAE,SAAA,EAAW,cAAc,UAAA,EAAY,SAAA,EAAW,MAAM,UAAA;AAAW,GACpF;AAAA,EACA;AAAA,IACE,WAAA,EAAa,OAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,UAAU,YAAA,EAAc,kBAAA,EAAoB,UAAU,wBAAA,EAAyB;AAAA,IAC/F,eAAe,EAAE,SAAA,EAAW,kBAAkB,UAAA,EAAY,OAAA,EAAS,MAAM,UAAA;AAAW,GACtF;AAAA,EACA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,UAAU,YAAA,EAAc,kBAAA,EAAoB,UAAU,wBAAA,EAAyB;AAAA,IAC/F,eAAe,EAAE,SAAA,EAAW,kBAAkB,UAAA,EAAY,SAAA,EAAW,MAAM,UAAA;AAAW;AAE1F;AAEO,MAAM,cAAA,GAAiB;AAAA,EAC5B,YAAA,EAAc,0BAAA;AAAA,EACd,cAAA,EAAgB;AAClB;AAEO,MAAM,wBAAA,GAA2B,sBAAsB,YAAY;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
function astQueryInstrumentation(config) {
|
|
2
4
|
return config;
|
|
3
5
|
}
|
|
@@ -114,6 +116,7 @@ const nestjsChannels = {
|
|
|
114
116
|
NESTJS_ONEVENT: "orchestrion:@nestjs/event-emitter:onEventDecorator",
|
|
115
117
|
NESTJS_PROCESSOR: "orchestrion:@nestjs/bullmq:processorDecorator"
|
|
116
118
|
};
|
|
119
|
+
const nestjsSubscribeInjection = toSubscribeInjections(nestjsConfig);
|
|
117
120
|
|
|
118
|
-
export { nestjsChannels, nestjsConfig };
|
|
121
|
+
export { nestjsChannels, nestjsConfig, nestjsSubscribeInjection };
|
|
119
122
|
//# sourceMappingURL=nestjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nestjs.js","sources":["../../../../src/orchestrion/config/nestjs.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n/**\n * Wrap an instrumentation that targets nodes via a raw esquery selector\n * (`NstQuery`) rather than the structured `functionQuery`. Needed when the\n * target can't be named, e.g. the anonymous arrow a decorator factory returns\n * The transformer supports `astQuery` at runtime (it takes precedence over\n * `functionQuery`, which then only supplies `kind`), but it isn't in the\n * published `InstrumentationConfig` type. Hence the cast.\n */\nfunction astQueryInstrumentation(config: {\n channelName: string;\n module: InstrumentationConfig['module'];\n astQuery: string;\n functionQuery: { kind: 'Sync' | 'Async' | 'Callback' | 'Auto' };\n}): InstrumentationConfig {\n return config as unknown as InstrumentationConfig;\n}\n\n/**\n * NestJS is different from the other instrumentations here. It's a standalone\n * metaframework SDK (`@sentry/nestjs`), so its channel LISTENER lives in that\n * package rather than in `server-utils`. Only the code-transform config (and\n * the channel names below) live here, so `@nestjs/*` is transformed whenever\n * orchestrion is enabled, same as every other library.\n *\n * `@sentry/nestjs` imports {@link nestjsChannels} to subscribe, and picks the\n * channel-vs-OTel path based on the global injection flag.\n */\nexport const nestjsConfig = [\n {\n channelName: 'nestFactoryCreate',\n module: { name: '@nestjs/core', versionRange: '>=8.0.0 <12', filePath: 'nest-factory.js' },\n functionQuery: { className: 'NestFactoryStatic', methodName: 'create', kind: 'Async' },\n },\n {\n channelName: 'routerExecutionContextCreate',\n module: { name: '@nestjs/core', versionRange: '>=8.0.0 <12', filePath: 'router/router-execution-context.js' },\n functionQuery: { className: 'RouterExecutionContext', methodName: 'create', kind: 'Sync' },\n },\n astQueryInstrumentation({\n // `@nestjs/common/decorators/core/injectable.decorator.js`:\n // `function Injectable(options) { return (target) => { ... }; }`\n // The inner decorator arrow is anonymous + returned, so only a raw\n // `astQuery` can target it. The subscriber's `start` receives the\n // decorated class as `arguments[0]` and patches its prototype\n // use/canActivate/transform/intercept methods, reproducing the\n // vendored `SentryNestInstrumentation` middleware/guard/pipe/interceptor\n // spans. No span on the decorator itself, so `kind: 'Sync'`.\n channelName: 'injectableDecorator',\n module: {\n name: '@nestjs/common',\n versionRange: '>=8.0.0 <12',\n filePath: 'decorators/core/injectable.decorator.js',\n },\n astQuery: 'FunctionDeclaration[id.name=\"Injectable\"] ReturnStatement > ArrowFunctionExpression',\n functionQuery: { kind: 'Sync' },\n }),\n astQueryInstrumentation({\n // `@nestjs/common/decorators/core/catch.decorator.js`:\n // `function Catch(...exceptions) { return (target) => { ... }; }`\n // Same anonymous-returned-arrow shape as `Injectable`. The subscriber's\n // `start` patches the exception filter's prototype `catch` method to\n // open an `exception_filter` span.\n //\n // Mirrors the vendored `SentryNestInstrumentation` `@Catch` wrap.\n channelName: 'catchDecorator',\n module: { name: '@nestjs/common', versionRange: '>=8.0.0 <12', filePath: 'decorators/core/catch.decorator.js' },\n astQuery: 'FunctionDeclaration[id.name=\"Catch\"] ReturnStatement > ArrowFunctionExpression',\n functionQuery: { kind: 'Sync' },\n }),\n // @nestjs/schedule @Cron/@Interval/@Timeout:\n // `function Cron(...) { return applyDecorators(...); }`\n // The returned decorator has no inline arrow to target, so we match the\n // factory function and reassign `data.result` in `end` to wrap the\n // decorator it returns (which rewrites the user handler `descriptor.value`\n // with isolation-scope + error capture).\n // Mirrors `SentryNestScheduleInstrumentation`, whose supported range we\n // match so opting in doesn't drop coverage the OTel path had. The compiled\n // `function Cron(...)` declaration is unchanged across 2.x–5.x.\n {\n channelName: 'cronDecorator',\n module: { name: '@nestjs/schedule', versionRange: '>=2.0.0', filePath: 'dist/decorators/cron.decorator.js' },\n functionQuery: { functionName: 'Cron', kind: 'Sync' },\n },\n {\n channelName: 'intervalDecorator',\n module: { name: '@nestjs/schedule', versionRange: '>=2.0.0', filePath: 'dist/decorators/interval.decorator.js' },\n functionQuery: { functionName: 'Interval', kind: 'Sync' },\n },\n {\n channelName: 'timeoutDecorator',\n module: { name: '@nestjs/schedule', versionRange: '>=2.0.0', filePath: 'dist/decorators/timeout.decorator.js' },\n functionQuery: { functionName: 'Timeout', kind: 'Sync' },\n },\n {\n // @nestjs/event-emitter @OnEvent:\n // `const OnEvent = (event, options) => {\n // const decoratorFactory = (t, k, d) => {...}; return decoratorFactory;\n // }`\n // `OnEvent` is an arrow assigned to a const, so `expressionName`. `end`\n // reassigns `data.result` to wrap the returned decorator, which rewrites\n // the handler to open an `event.nestjs` span.\n // Mirrors `SentryNestEventInstrumentation`; the `const OnEvent = (...) =>`\n // shape is unchanged across 2.x–3.x.\n channelName: 'onEventDecorator',\n module: {\n name: '@nestjs/event-emitter',\n versionRange: '>=2.0.0',\n filePath: 'dist/decorators/on-event.decorator.js',\n },\n functionQuery: { expressionName: 'OnEvent', kind: 'Sync' },\n },\n {\n // @nestjs/bullmq @Processor:\n // `function Processor(...) { return (target) => {...}; }`\n // The factory arg carries the queue name, so we match the factory and\n // reassign `data.result` in `end` to wrap the returned class decorator\n // (which patches `target.prototype.process`).\n // Mirrors `SentryNestBullMQInstrumentation`; the `function Processor(...)`\n // declaration is unchanged across\n // 10.x–11.x.\n channelName: 'processorDecorator',\n module: {\n name: '@nestjs/bullmq',\n versionRange: '>=10.0.0',\n filePath: 'dist/decorators/processor.decorator.js',\n },\n functionQuery: { functionName: 'Processor', kind: 'Sync' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const nestjsChannels = {\n NESTJS_APP_CREATION: 'orchestrion:@nestjs/core:nestFactoryCreate',\n NESTJS_ROUTER_CONTEXT: 'orchestrion:@nestjs/core:routerExecutionContextCreate',\n NESTJS_INJECTABLE: 'orchestrion:@nestjs/common:injectableDecorator',\n NESTJS_CATCH: 'orchestrion:@nestjs/common:catchDecorator',\n NESTJS_SCHEDULE_CRON: 'orchestrion:@nestjs/schedule:cronDecorator',\n NESTJS_SCHEDULE_INTERVAL: 'orchestrion:@nestjs/schedule:intervalDecorator',\n NESTJS_SCHEDULE_TIMEOUT: 'orchestrion:@nestjs/schedule:timeoutDecorator',\n NESTJS_ONEVENT: 'orchestrion:@nestjs/event-emitter:onEventDecorator',\n NESTJS_PROCESSOR: 'orchestrion:@nestjs/bullmq:processorDecorator',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nestjs.js","sources":["../../../../src/orchestrion/config/nestjs.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n/**\n * Wrap an instrumentation that targets nodes via a raw esquery selector\n * (`NstQuery`) rather than the structured `functionQuery`. Needed when the\n * target can't be named, e.g. the anonymous arrow a decorator factory returns\n * The transformer supports `astQuery` at runtime (it takes precedence over\n * `functionQuery`, which then only supplies `kind`), but it isn't in the\n * published `InstrumentationConfig` type. Hence the cast.\n */\nfunction astQueryInstrumentation(config: {\n channelName: string;\n module: InstrumentationConfig['module'];\n astQuery: string;\n functionQuery: { kind: 'Sync' | 'Async' | 'Callback' | 'Auto' };\n}): InstrumentationConfig {\n return config as unknown as InstrumentationConfig;\n}\n\n/**\n * NestJS is different from the other instrumentations here. It's a standalone\n * metaframework SDK (`@sentry/nestjs`), so its channel LISTENER lives in that\n * package rather than in `server-utils`. Only the code-transform config (and\n * the channel names below) live here, so `@nestjs/*` is transformed whenever\n * orchestrion is enabled, same as every other library.\n *\n * `@sentry/nestjs` imports {@link nestjsChannels} to subscribe, and picks the\n * channel-vs-OTel path based on the global injection flag.\n */\nexport const nestjsConfig = [\n {\n channelName: 'nestFactoryCreate',\n module: { name: '@nestjs/core', versionRange: '>=8.0.0 <12', filePath: 'nest-factory.js' },\n functionQuery: { className: 'NestFactoryStatic', methodName: 'create', kind: 'Async' },\n },\n {\n channelName: 'routerExecutionContextCreate',\n module: { name: '@nestjs/core', versionRange: '>=8.0.0 <12', filePath: 'router/router-execution-context.js' },\n functionQuery: { className: 'RouterExecutionContext', methodName: 'create', kind: 'Sync' },\n },\n astQueryInstrumentation({\n // `@nestjs/common/decorators/core/injectable.decorator.js`:\n // `function Injectable(options) { return (target) => { ... }; }`\n // The inner decorator arrow is anonymous + returned, so only a raw\n // `astQuery` can target it. The subscriber's `start` receives the\n // decorated class as `arguments[0]` and patches its prototype\n // use/canActivate/transform/intercept methods, reproducing the\n // vendored `SentryNestInstrumentation` middleware/guard/pipe/interceptor\n // spans. No span on the decorator itself, so `kind: 'Sync'`.\n channelName: 'injectableDecorator',\n module: {\n name: '@nestjs/common',\n versionRange: '>=8.0.0 <12',\n filePath: 'decorators/core/injectable.decorator.js',\n },\n astQuery: 'FunctionDeclaration[id.name=\"Injectable\"] ReturnStatement > ArrowFunctionExpression',\n functionQuery: { kind: 'Sync' },\n }),\n astQueryInstrumentation({\n // `@nestjs/common/decorators/core/catch.decorator.js`:\n // `function Catch(...exceptions) { return (target) => { ... }; }`\n // Same anonymous-returned-arrow shape as `Injectable`. The subscriber's\n // `start` patches the exception filter's prototype `catch` method to\n // open an `exception_filter` span.\n //\n // Mirrors the vendored `SentryNestInstrumentation` `@Catch` wrap.\n channelName: 'catchDecorator',\n module: { name: '@nestjs/common', versionRange: '>=8.0.0 <12', filePath: 'decorators/core/catch.decorator.js' },\n astQuery: 'FunctionDeclaration[id.name=\"Catch\"] ReturnStatement > ArrowFunctionExpression',\n functionQuery: { kind: 'Sync' },\n }),\n // @nestjs/schedule @Cron/@Interval/@Timeout:\n // `function Cron(...) { return applyDecorators(...); }`\n // The returned decorator has no inline arrow to target, so we match the\n // factory function and reassign `data.result` in `end` to wrap the\n // decorator it returns (which rewrites the user handler `descriptor.value`\n // with isolation-scope + error capture).\n // Mirrors `SentryNestScheduleInstrumentation`, whose supported range we\n // match so opting in doesn't drop coverage the OTel path had. The compiled\n // `function Cron(...)` declaration is unchanged across 2.x–5.x.\n {\n channelName: 'cronDecorator',\n module: { name: '@nestjs/schedule', versionRange: '>=2.0.0', filePath: 'dist/decorators/cron.decorator.js' },\n functionQuery: { functionName: 'Cron', kind: 'Sync' },\n },\n {\n channelName: 'intervalDecorator',\n module: { name: '@nestjs/schedule', versionRange: '>=2.0.0', filePath: 'dist/decorators/interval.decorator.js' },\n functionQuery: { functionName: 'Interval', kind: 'Sync' },\n },\n {\n channelName: 'timeoutDecorator',\n module: { name: '@nestjs/schedule', versionRange: '>=2.0.0', filePath: 'dist/decorators/timeout.decorator.js' },\n functionQuery: { functionName: 'Timeout', kind: 'Sync' },\n },\n {\n // @nestjs/event-emitter @OnEvent:\n // `const OnEvent = (event, options) => {\n // const decoratorFactory = (t, k, d) => {...}; return decoratorFactory;\n // }`\n // `OnEvent` is an arrow assigned to a const, so `expressionName`. `end`\n // reassigns `data.result` to wrap the returned decorator, which rewrites\n // the handler to open an `event.nestjs` span.\n // Mirrors `SentryNestEventInstrumentation`; the `const OnEvent = (...) =>`\n // shape is unchanged across 2.x–3.x.\n channelName: 'onEventDecorator',\n module: {\n name: '@nestjs/event-emitter',\n versionRange: '>=2.0.0',\n filePath: 'dist/decorators/on-event.decorator.js',\n },\n functionQuery: { expressionName: 'OnEvent', kind: 'Sync' },\n },\n {\n // @nestjs/bullmq @Processor:\n // `function Processor(...) { return (target) => {...}; }`\n // The factory arg carries the queue name, so we match the factory and\n // reassign `data.result` in `end` to wrap the returned class decorator\n // (which patches `target.prototype.process`).\n // Mirrors `SentryNestBullMQInstrumentation`; the `function Processor(...)`\n // declaration is unchanged across\n // 10.x–11.x.\n channelName: 'processorDecorator',\n module: {\n name: '@nestjs/bullmq',\n versionRange: '>=10.0.0',\n filePath: 'dist/decorators/processor.decorator.js',\n },\n functionQuery: { functionName: 'Processor', kind: 'Sync' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const nestjsChannels = {\n NESTJS_APP_CREATION: 'orchestrion:@nestjs/core:nestFactoryCreate',\n NESTJS_ROUTER_CONTEXT: 'orchestrion:@nestjs/core:routerExecutionContextCreate',\n NESTJS_INJECTABLE: 'orchestrion:@nestjs/common:injectableDecorator',\n NESTJS_CATCH: 'orchestrion:@nestjs/common:catchDecorator',\n NESTJS_SCHEDULE_CRON: 'orchestrion:@nestjs/schedule:cronDecorator',\n NESTJS_SCHEDULE_INTERVAL: 'orchestrion:@nestjs/schedule:intervalDecorator',\n NESTJS_SCHEDULE_TIMEOUT: 'orchestrion:@nestjs/schedule:timeoutDecorator',\n NESTJS_ONEVENT: 'orchestrion:@nestjs/event-emitter:onEventDecorator',\n NESTJS_PROCESSOR: 'orchestrion:@nestjs/bullmq:processorDecorator',\n} as const;\n\nexport const nestjsSubscribeInjection = toSubscribeInjections(nestjsConfig);\n"],"names":[],"mappings":";;AAWA,SAAS,wBAAwB,MAAA,EAKP;AACxB,EAAA,OAAO,MAAA;AACT;AAYO,MAAM,YAAA,GAAe;AAAA,EAC1B;AAAA,IACE,WAAA,EAAa,mBAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,gBAAgB,YAAA,EAAc,aAAA,EAAe,UAAU,iBAAA,EAAkB;AAAA,IACzF,eAAe,EAAE,SAAA,EAAW,qBAAqB,UAAA,EAAY,QAAA,EAAU,MAAM,OAAA;AAAQ,GACvF;AAAA,EACA;AAAA,IACE,WAAA,EAAa,8BAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,gBAAgB,YAAA,EAAc,aAAA,EAAe,UAAU,oCAAA,EAAqC;AAAA,IAC5G,eAAe,EAAE,SAAA,EAAW,0BAA0B,UAAA,EAAY,QAAA,EAAU,MAAM,MAAA;AAAO,GAC3F;AAAA,EACA,uBAAA,CAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAStB,WAAA,EAAa,qBAAA;AAAA,IACb,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,gBAAA;AAAA,MACN,YAAA,EAAc,aAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,QAAA,EAAU,qFAAA;AAAA,IACV,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA;AAAO,GAC/B,CAAA;AAAA,EACD,uBAAA,CAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQtB,WAAA,EAAa,gBAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,kBAAkB,YAAA,EAAc,aAAA,EAAe,UAAU,oCAAA,EAAqC;AAAA,IAC9G,QAAA,EAAU,gFAAA;AAAA,IACV,aAAA,EAAe,EAAE,IAAA,EAAM,MAAA;AAAO,GAC/B,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD;AAAA,IACE,WAAA,EAAa,eAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,oBAAoB,YAAA,EAAc,SAAA,EAAW,UAAU,mCAAA,EAAoC;AAAA,IAC3G,aAAA,EAAe,EAAE,YAAA,EAAc,MAAA,EAAQ,MAAM,MAAA;AAAO,GACtD;AAAA,EACA;AAAA,IACE,WAAA,EAAa,mBAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,oBAAoB,YAAA,EAAc,SAAA,EAAW,UAAU,uCAAA,EAAwC;AAAA,IAC/G,aAAA,EAAe,EAAE,YAAA,EAAc,UAAA,EAAY,MAAM,MAAA;AAAO,GAC1D;AAAA,EACA;AAAA,IACE,WAAA,EAAa,kBAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,oBAAoB,YAAA,EAAc,SAAA,EAAW,UAAU,sCAAA,EAAuC;AAAA,IAC9G,aAAA,EAAe,EAAE,YAAA,EAAc,SAAA,EAAW,MAAM,MAAA;AAAO,GACzD;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUE,WAAA,EAAa,kBAAA;AAAA,IACb,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,uBAAA;AAAA,MACN,YAAA,EAAc,SAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,aAAA,EAAe,EAAE,cAAA,EAAgB,SAAA,EAAW,MAAM,MAAA;AAAO,GAC3D;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASE,WAAA,EAAa,oBAAA;AAAA,IACb,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,gBAAA;AAAA,MACN,YAAA,EAAc,UAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,aAAA,EAAe,EAAE,YAAA,EAAc,WAAA,EAAa,MAAM,MAAA;AAAO;AAE7D;AAEO,MAAM,cAAA,GAAiB;AAAA,EAC5B,mBAAA,EAAqB,4CAAA;AAAA,EACrB,qBAAA,EAAuB,uDAAA;AAAA,EACvB,iBAAA,EAAmB,gDAAA;AAAA,EACnB,YAAA,EAAc,2CAAA;AAAA,EACd,oBAAA,EAAsB,4CAAA;AAAA,EACtB,wBAAA,EAA0B,gDAAA;AAAA,EAC1B,uBAAA,EAAyB,+CAAA;AAAA,EACzB,cAAA,EAAgB,oDAAA;AAAA,EAChB,gBAAA,EAAkB;AACpB;AAEO,MAAM,wBAAA,GAA2B,sBAAsB,YAAY;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const openaiConfig = [
|
|
2
4
|
// OpenAI chat completions. `Completions.create` returns a thenable `APIPromise` with no callback arg,
|
|
3
5
|
// so `kind: 'Auto'` resolves to `wrapPromise`. openai ships dual CJS/ESM and the matcher compares
|
|
@@ -32,6 +34,7 @@ const openaiChannels = {
|
|
|
32
34
|
OPENAI_CHAT: "orchestrion:openai:chat",
|
|
33
35
|
OPENAI_EMBEDDINGS: "orchestrion:openai:embeddings"
|
|
34
36
|
};
|
|
37
|
+
const openaiSubscribeInjection = toSubscribeInjections(openaiConfig);
|
|
35
38
|
|
|
36
|
-
export { openaiChannels, openaiConfig };
|
|
39
|
+
export { openaiChannels, openaiConfig, openaiSubscribeInjection };
|
|
37
40
|
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sources":["../../../../src/orchestrion/config/openai.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\nexport const openaiConfig = [\n // OpenAI chat completions. `Completions.create` returns a thenable `APIPromise` with no callback arg,\n // so `kind: 'Auto'` resolves to `wrapPromise`. openai ships dual CJS/ESM and the matcher compares\n // `filePath` exactly, hence one entry per built file (`.js` for `require`, `.mjs` for `import`).\n ...['resources/chat/completions/completions.js', 'resources/chat/completions/completions.mjs'].map(filePath => ({\n channelName: 'chat',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Completions', methodName: 'create', kind: 'Auto' as const },\n })),\n // OpenAI responses API — same `create(body, options)` shape as chat completions.\n ...['resources/responses/responses.js', 'resources/responses/responses.mjs'].map(filePath => ({\n channelName: 'chat',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Responses', methodName: 'create', kind: 'Auto' as const },\n })),\n // OpenAI embeddings API — same `create(body, options)` shape as chat completions.\n ...['resources/embeddings.js', 'resources/embeddings.mjs'].map(filePath => ({\n channelName: 'embeddings',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Embeddings', methodName: 'create', kind: 'Auto' as const },\n })),\n // OpenAI conversations API — same `create(body, options)` shape as chat completions.\n ...['resources/conversations/conversations.js', 'resources/conversations/conversations.mjs'].map(filePath => ({\n channelName: 'chat',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Conversations', methodName: 'create', kind: 'Auto' as const },\n })),\n] satisfies InstrumentationConfig[];\n\nexport const openaiChannels = {\n // Chat completions, the responses API, and the conversations API all report a `chat` operation with\n // identical span handling, so they share one channel.\n OPENAI_CHAT: 'orchestrion:openai:chat',\n OPENAI_EMBEDDINGS: 'orchestrion:openai:embeddings',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openai.js","sources":["../../../../src/orchestrion/config/openai.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\nexport const openaiConfig = [\n // OpenAI chat completions. `Completions.create` returns a thenable `APIPromise` with no callback arg,\n // so `kind: 'Auto'` resolves to `wrapPromise`. openai ships dual CJS/ESM and the matcher compares\n // `filePath` exactly, hence one entry per built file (`.js` for `require`, `.mjs` for `import`).\n ...['resources/chat/completions/completions.js', 'resources/chat/completions/completions.mjs'].map(filePath => ({\n channelName: 'chat',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Completions', methodName: 'create', kind: 'Auto' as const },\n })),\n // OpenAI responses API — same `create(body, options)` shape as chat completions.\n ...['resources/responses/responses.js', 'resources/responses/responses.mjs'].map(filePath => ({\n channelName: 'chat',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Responses', methodName: 'create', kind: 'Auto' as const },\n })),\n // OpenAI embeddings API — same `create(body, options)` shape as chat completions.\n ...['resources/embeddings.js', 'resources/embeddings.mjs'].map(filePath => ({\n channelName: 'embeddings',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Embeddings', methodName: 'create', kind: 'Auto' as const },\n })),\n // OpenAI conversations API — same `create(body, options)` shape as chat completions.\n ...['resources/conversations/conversations.js', 'resources/conversations/conversations.mjs'].map(filePath => ({\n channelName: 'chat',\n module: { name: 'openai', versionRange: '>=4.0.0 <7', filePath },\n functionQuery: { className: 'Conversations', methodName: 'create', kind: 'Auto' as const },\n })),\n] satisfies InstrumentationConfig[];\n\nexport const openaiChannels = {\n // Chat completions, the responses API, and the conversations API all report a `chat` operation with\n // identical span handling, so they share one channel.\n OPENAI_CHAT: 'orchestrion:openai:chat',\n OPENAI_EMBEDDINGS: 'orchestrion:openai:embeddings',\n} as const;\n\nexport const openaiSubscribeInjection = toSubscribeInjections(openaiConfig);\n"],"names":[],"mappings":";;AAGO,MAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA,EAI1B,GAAG,CAAC,2CAAA,EAA6C,4CAA4C,CAAA,CAAE,IAAI,CAAA,QAAA,MAAa;AAAA,IAC9G,WAAA,EAAa,MAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,cAAc,QAAA,EAAS;AAAA,IAC/D,eAAe,EAAE,SAAA,EAAW,eAAe,UAAA,EAAY,QAAA,EAAU,MAAM,MAAA;AAAgB,GACzF,CAAE,CAAA;AAAA;AAAA,EAEF,GAAG,CAAC,kCAAA,EAAoC,mCAAmC,CAAA,CAAE,IAAI,CAAA,QAAA,MAAa;AAAA,IAC5F,WAAA,EAAa,MAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,cAAc,QAAA,EAAS;AAAA,IAC/D,eAAe,EAAE,SAAA,EAAW,aAAa,UAAA,EAAY,QAAA,EAAU,MAAM,MAAA;AAAgB,GACvF,CAAE,CAAA;AAAA;AAAA,EAEF,GAAG,CAAC,yBAAA,EAA2B,0BAA0B,CAAA,CAAE,IAAI,CAAA,QAAA,MAAa;AAAA,IAC1E,WAAA,EAAa,YAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,cAAc,QAAA,EAAS;AAAA,IAC/D,eAAe,EAAE,SAAA,EAAW,cAAc,UAAA,EAAY,QAAA,EAAU,MAAM,MAAA;AAAgB,GACxF,CAAE,CAAA;AAAA;AAAA,EAEF,GAAG,CAAC,0CAAA,EAA4C,2CAA2C,CAAA,CAAE,IAAI,CAAA,QAAA,MAAa;AAAA,IAC5G,WAAA,EAAa,MAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,cAAc,QAAA,EAAS;AAAA,IAC/D,eAAe,EAAE,SAAA,EAAW,iBAAiB,UAAA,EAAY,QAAA,EAAU,MAAM,MAAA;AAAgB,GAC3F,CAAE;AACJ;AAEO,MAAM,cAAA,GAAiB;AAAA;AAAA;AAAA,EAG5B,WAAA,EAAa,yBAAA;AAAA,EACb,iBAAA,EAAmB;AACrB;AAEO,MAAM,wBAAA,GAA2B,sBAAsB,YAAY;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const pgConfig = [
|
|
2
4
|
// `pg` (node-postgres).
|
|
3
5
|
// instruments `Client.prototype.query`/`connect` (both the JS and native
|
|
@@ -43,6 +45,7 @@ const pgChannels = {
|
|
|
43
45
|
PG_CONNECT: "orchestrion:pg:connect",
|
|
44
46
|
PGPOOL_CONNECT: "orchestrion:pg-pool:connect"
|
|
45
47
|
};
|
|
48
|
+
const pgSubscribeInjection = toSubscribeInjections(pgConfig);
|
|
46
49
|
|
|
47
|
-
export { pgChannels, pgConfig };
|
|
50
|
+
export { pgChannels, pgConfig, pgSubscribeInjection };
|
|
48
51
|
//# sourceMappingURL=pg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.js","sources":["../../../../src/orchestrion/config/pg.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\nexport const pgConfig = [\n // `pg` (node-postgres).\n // instruments `Client.prototype.query`/`connect` (both the JS and native\n // clients) plus `pg-pool`'s `Pool.prototype.connect`.\n // `Auto` covers the callback, promise, and streamable-`Submittable`\n // call shapes (like mysql).\n // `pg/lib/client.js` is `class Client { query() {...} connect() {...} }`,\n // so `className`+`methodName` matches directly.\n {\n channelName: 'query',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/client.js' },\n functionQuery: { className: 'Client', methodName: 'query', kind: 'Auto' },\n },\n {\n channelName: 'connect',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/client.js' },\n functionQuery: { className: 'Client', methodName: 'connect', kind: 'Auto' },\n },\n // The native client (`pg/lib/native/client.js`) is a constructor function,\n // not a class.\n // `Client.prototype.query = function (config, values, callback) {...}`\n // so it needs `expressionName` (the mysql shape), publishing to the SAME\n // `orchestrion:pg:query`/`:connect` channels as the JS client.\n {\n channelName: 'query',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/native/client.js' },\n functionQuery: { expressionName: 'query', kind: 'Auto' },\n },\n {\n channelName: 'connect',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/native/client.js' },\n functionQuery: { expressionName: 'connect', kind: 'Auto' },\n },\n // `pg-pool` is `class Pool extends EventEmitter { connect(cb) {...} }`.\n {\n channelName: 'connect',\n module: { name: 'pg-pool', versionRange: '>=2.0.0 <4', filePath: 'index.js' },\n functionQuery: { className: 'Pool', methodName: 'connect', kind: 'Auto' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const pgChannels = {\n PG_QUERY: 'orchestrion:pg:query',\n PG_CONNECT: 'orchestrion:pg:connect',\n PGPOOL_CONNECT: 'orchestrion:pg-pool:connect',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pg.js","sources":["../../../../src/orchestrion/config/pg.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\nexport const pgConfig = [\n // `pg` (node-postgres).\n // instruments `Client.prototype.query`/`connect` (both the JS and native\n // clients) plus `pg-pool`'s `Pool.prototype.connect`.\n // `Auto` covers the callback, promise, and streamable-`Submittable`\n // call shapes (like mysql).\n // `pg/lib/client.js` is `class Client { query() {...} connect() {...} }`,\n // so `className`+`methodName` matches directly.\n {\n channelName: 'query',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/client.js' },\n functionQuery: { className: 'Client', methodName: 'query', kind: 'Auto' },\n },\n {\n channelName: 'connect',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/client.js' },\n functionQuery: { className: 'Client', methodName: 'connect', kind: 'Auto' },\n },\n // The native client (`pg/lib/native/client.js`) is a constructor function,\n // not a class.\n // `Client.prototype.query = function (config, values, callback) {...}`\n // so it needs `expressionName` (the mysql shape), publishing to the SAME\n // `orchestrion:pg:query`/`:connect` channels as the JS client.\n {\n channelName: 'query',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/native/client.js' },\n functionQuery: { expressionName: 'query', kind: 'Auto' },\n },\n {\n channelName: 'connect',\n module: { name: 'pg', versionRange: '>=8.0.3 <9', filePath: 'lib/native/client.js' },\n functionQuery: { expressionName: 'connect', kind: 'Auto' },\n },\n // `pg-pool` is `class Pool extends EventEmitter { connect(cb) {...} }`.\n {\n channelName: 'connect',\n module: { name: 'pg-pool', versionRange: '>=2.0.0 <4', filePath: 'index.js' },\n functionQuery: { className: 'Pool', methodName: 'connect', kind: 'Auto' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const pgChannels = {\n PG_QUERY: 'orchestrion:pg:query',\n PG_CONNECT: 'orchestrion:pg:connect',\n PGPOOL_CONNECT: 'orchestrion:pg-pool:connect',\n} as const;\n\nexport const pgSubscribeInjection = toSubscribeInjections(pgConfig);\n"],"names":[],"mappings":";;AAGO,MAAM,QAAA,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtB;AAAA,IACE,WAAA,EAAa,OAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,MAAM,YAAA,EAAc,YAAA,EAAc,UAAU,eAAA,EAAgB;AAAA,IAC5E,eAAe,EAAE,SAAA,EAAW,UAAU,UAAA,EAAY,OAAA,EAAS,MAAM,MAAA;AAAO,GAC1E;AAAA,EACA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,MAAM,YAAA,EAAc,YAAA,EAAc,UAAU,eAAA,EAAgB;AAAA,IAC5E,eAAe,EAAE,SAAA,EAAW,UAAU,UAAA,EAAY,SAAA,EAAW,MAAM,MAAA;AAAO,GAC5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA,IACE,WAAA,EAAa,OAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,MAAM,YAAA,EAAc,YAAA,EAAc,UAAU,sBAAA,EAAuB;AAAA,IACnF,aAAA,EAAe,EAAE,cAAA,EAAgB,OAAA,EAAS,MAAM,MAAA;AAAO,GACzD;AAAA,EACA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,MAAM,YAAA,EAAc,YAAA,EAAc,UAAU,sBAAA,EAAuB;AAAA,IACnF,aAAA,EAAe,EAAE,cAAA,EAAgB,SAAA,EAAW,MAAM,MAAA;AAAO,GAC3D;AAAA;AAAA,EAEA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,QAAQ,EAAE,IAAA,EAAM,WAAW,YAAA,EAAc,YAAA,EAAc,UAAU,UAAA,EAAW;AAAA,IAC5E,eAAe,EAAE,SAAA,EAAW,QAAQ,UAAA,EAAY,SAAA,EAAW,MAAM,MAAA;AAAO;AAE5E;AAEO,MAAM,UAAA,GAAa;AAAA,EACxB,QAAA,EAAU,sBAAA;AAAA,EACV,UAAA,EAAY,wBAAA;AAAA,EACZ,cAAA,EAAgB;AAClB;AAEO,MAAM,oBAAA,GAAuB,sBAAsB,QAAQ;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const postgresJsInstrumentationConfig = (dir) => [
|
|
2
4
|
// `Query.prototype.handle` (`class Query extends Promise`) is the single
|
|
3
5
|
// funnel every query passes through (`then`/`catch`/`finally`/`.execute()`/
|
|
@@ -42,6 +44,7 @@ const postgresJsChannels = {
|
|
|
42
44
|
POSTGRESJS_EXECUTE: "orchestrion:postgres:execute",
|
|
43
45
|
POSTGRESJS_CONNECT: "orchestrion:postgres:connect"
|
|
44
46
|
};
|
|
47
|
+
const postgresJsSubscribeInjection = toSubscribeInjections(postgresJsConfig);
|
|
45
48
|
|
|
46
|
-
export { postgresJsChannels, postgresJsConfig };
|
|
49
|
+
export { postgresJsChannels, postgresJsConfig, postgresJsSubscribeInjection };
|
|
47
50
|
//# sourceMappingURL=postgres.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sources":["../../../../src/orchestrion/config/postgres.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n// postgres.js (`postgres` npm package, v3.x). Named after the npm package;\n// `postgres` doesn't collide with `pg.ts` (that file instruments `pg`/`pg-pool`).\n//\n// The ESM build lives under `src/*`, the CJS build under `cjs/src/*` (the\n// `cf/*` workerd build has no channel subscribers, see the integration).\n// Both builds share the same class/function shapes, so a single `flatMap`\n// over the two dirs emits one entry per (dir, target).\nconst postgresJsInstrumentationConfig = (dir: string): InstrumentationConfig[] => [\n // `Query.prototype.handle` (`class Query extends Promise`) is the single\n // funnel every query passes through (`then`/`catch`/`finally`/`.execute()`/\n // `.forEach()`/cursor all call it), guarded by `this.executed`. `Async`\n // because `handle` is `async`.\n {\n channelName: 'handle',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/query.js` },\n functionQuery: { className: 'Query', methodName: 'handle', kind: 'Async' },\n },\n // `function Connection(options, ...)` (default export of `connection.js`)\n // returns the connection object; used to build the endpoint registry that\n // resolves `server.address`/`server.port`/`db.namespace`.\n {\n channelName: 'connection',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/connection.js` },\n functionQuery: { functionName: 'Connection', kind: 'Sync' },\n },\n // The nested `function execute(q)` inside `Connection`; the per-connection\n // hook that attaches connection attributes to the query's span.\n {\n channelName: 'execute',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/connection.js` },\n functionQuery: { functionName: 'execute', kind: 'Sync' },\n },\n // The connection object's `connect(query)` method. Matched by `methodName`\n // (an object-literal method): `functionName` would hit the unrelated\n // socket-level `async function connect()` in the same file. `self` is the\n // connection object and `arguments[0]` the query, so the first query that\n // opens a connection (dispatched via a bare `execute` with no `self`) still\n // gets connection attributes in multi-endpoint apps.\n {\n channelName: 'connect',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/connection.js` },\n functionQuery: { methodName: 'connect', kind: 'Sync' },\n },\n];\n\nexport const postgresJsConfig = ['src', 'cjs/src'].flatMap(postgresJsInstrumentationConfig);\n\nexport const postgresJsChannels = {\n POSTGRESJS_HANDLE: 'orchestrion:postgres:handle',\n POSTGRESJS_CONNECTION: 'orchestrion:postgres:connection',\n POSTGRESJS_EXECUTE: 'orchestrion:postgres:execute',\n POSTGRESJS_CONNECT: 'orchestrion:postgres:connect',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres.js","sources":["../../../../src/orchestrion/config/postgres.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n// postgres.js (`postgres` npm package, v3.x). Named after the npm package;\n// `postgres` doesn't collide with `pg.ts` (that file instruments `pg`/`pg-pool`).\n//\n// The ESM build lives under `src/*`, the CJS build under `cjs/src/*` (the\n// `cf/*` workerd build has no channel subscribers, see the integration).\n// Both builds share the same class/function shapes, so a single `flatMap`\n// over the two dirs emits one entry per (dir, target).\nconst postgresJsInstrumentationConfig = (dir: string): InstrumentationConfig[] => [\n // `Query.prototype.handle` (`class Query extends Promise`) is the single\n // funnel every query passes through (`then`/`catch`/`finally`/`.execute()`/\n // `.forEach()`/cursor all call it), guarded by `this.executed`. `Async`\n // because `handle` is `async`.\n {\n channelName: 'handle',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/query.js` },\n functionQuery: { className: 'Query', methodName: 'handle', kind: 'Async' },\n },\n // `function Connection(options, ...)` (default export of `connection.js`)\n // returns the connection object; used to build the endpoint registry that\n // resolves `server.address`/`server.port`/`db.namespace`.\n {\n channelName: 'connection',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/connection.js` },\n functionQuery: { functionName: 'Connection', kind: 'Sync' },\n },\n // The nested `function execute(q)` inside `Connection`; the per-connection\n // hook that attaches connection attributes to the query's span.\n {\n channelName: 'execute',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/connection.js` },\n functionQuery: { functionName: 'execute', kind: 'Sync' },\n },\n // The connection object's `connect(query)` method. Matched by `methodName`\n // (an object-literal method): `functionName` would hit the unrelated\n // socket-level `async function connect()` in the same file. `self` is the\n // connection object and `arguments[0]` the query, so the first query that\n // opens a connection (dispatched via a bare `execute` with no `self`) still\n // gets connection attributes in multi-endpoint apps.\n {\n channelName: 'connect',\n module: { name: 'postgres', versionRange: '>=3.0.0 <4', filePath: `${dir}/connection.js` },\n functionQuery: { methodName: 'connect', kind: 'Sync' },\n },\n];\n\nexport const postgresJsConfig = ['src', 'cjs/src'].flatMap(postgresJsInstrumentationConfig);\n\nexport const postgresJsChannels = {\n POSTGRESJS_HANDLE: 'orchestrion:postgres:handle',\n POSTGRESJS_CONNECTION: 'orchestrion:postgres:connection',\n POSTGRESJS_EXECUTE: 'orchestrion:postgres:execute',\n POSTGRESJS_CONNECT: 'orchestrion:postgres:connect',\n} as const;\n\nexport const postgresJsSubscribeInjection = toSubscribeInjections(postgresJsConfig);\n"],"names":[],"mappings":";;AAUA,MAAM,+BAAA,GAAkC,CAAC,GAAA,KAAyC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhF;AAAA,IACE,WAAA,EAAa,QAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,SAAA,CAAA,EAAY;AAAA,IACpF,eAAe,EAAE,SAAA,EAAW,SAAS,UAAA,EAAY,QAAA,EAAU,MAAM,OAAA;AAAQ,GAC3E;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,IACE,WAAA,EAAa,YAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,cAAA,CAAA,EAAiB;AAAA,IACzF,aAAA,EAAe,EAAE,YAAA,EAAc,YAAA,EAAc,MAAM,MAAA;AAAO,GAC5D;AAAA;AAAA;AAAA,EAGA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,cAAA,CAAA,EAAiB;AAAA,IACzF,aAAA,EAAe,EAAE,YAAA,EAAc,SAAA,EAAW,MAAM,MAAA;AAAO,GACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA;AAAA,IACE,WAAA,EAAa,SAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,UAAA,EAAY,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,cAAA,CAAA,EAAiB;AAAA,IACzF,aAAA,EAAe,EAAE,UAAA,EAAY,SAAA,EAAW,MAAM,MAAA;AAAO;AAEzD,CAAA;AAEO,MAAM,mBAAmB,CAAC,KAAA,EAAO,SAAS,CAAA,CAAE,QAAQ,+BAA+B;AAEnF,MAAM,kBAAA,GAAqB;AAAA,EAChC,iBAAA,EAAmB,6BAAA;AAAA,EACnB,qBAAA,EAAuB,iCAAA;AAAA,EACvB,kBAAA,EAAoB,8BAAA;AAAA,EACpB,kBAAA,EAAoB;AACtB;AAEO,MAAM,4BAAA,GAA+B,sBAAsB,gBAAgB;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const redisConfig = [
|
|
2
4
|
// redis `>=2.6.0 <4` (standalone `redis`). `internal_send_command` is an
|
|
3
5
|
// anonymous prototype assignment (`expressionName`); it settles via the nested
|
|
@@ -68,6 +70,7 @@ const redisChannels = {
|
|
|
68
70
|
NODE_REDIS_PIPELINE: "orchestrion:@redis/client:pipeline",
|
|
69
71
|
NODE_REDIS_BATCH: "orchestrion:@redis/client:batch"
|
|
70
72
|
};
|
|
73
|
+
const redisSubscribeInjection = toSubscribeInjections(redisConfig);
|
|
71
74
|
|
|
72
|
-
export { redisChannels, redisConfig };
|
|
75
|
+
export { redisChannels, redisConfig, redisSubscribeInjection };
|
|
73
76
|
//# sourceMappingURL=redis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.js","sources":["../../../../src/orchestrion/config/redis.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\nexport const redisConfig = [\n // redis `>=2.6.0 <4` (standalone `redis`). `internal_send_command` is an\n // anonymous prototype assignment (`expressionName`); it settles via the nested\n // `command_obj.callback`, so `kind: 'Sync'` and the subscriber wraps that callback.\n {\n channelName: 'command',\n module: { name: 'redis', versionRange: '>=2.6.0 <4', filePath: 'index.js' },\n functionQuery: { expressionName: 'internal_send_command', kind: 'Sync' },\n },\n // node-redis v4 (`@redis/client` v1). The real chokepoint (private `#sendCommand`)\n // isn't matchable, so wrap both public entry points: `commandsExecutor` (friendly\n // commands) and `sendCommand` (direct calls). They never overlap, so no double span.\n {\n channelName: 'executor',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'commandsExecutor', kind: 'Async' },\n },\n {\n channelName: 'command',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'sendCommand', kind: 'Async' },\n },\n {\n channelName: 'connect',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'connect', kind: 'Async' },\n },\n // node-redis `>=5.0.0 <5.12.0` (`@redis/client` v5; >=5.12.0 has its own\n // `node-redis:*` diagnostics_channel, see `redis-dc-subscriber.ts`). Friendly\n // commands route through the public `sendCommand`, so it covers them all — no\n // `executor` entry (would double-count).\n {\n channelName: 'command',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'sendCommand', kind: 'Async' },\n },\n {\n channelName: 'connect',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'connect', kind: 'Async' },\n },\n // Batch (multi/pipeline) — one span per `exec`. Batched commands bypass `sendCommand`,\n // so they go through the client's batch executors, which receive the queued commands\n // array (→ batch size). v5 splits MULTI/PIPELINE into two methods; v4's single\n // `multiExecutor` is MULTI when a `chainId` arg is present, PIPELINE otherwise.\n {\n channelName: 'multi',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: '_executeMulti', kind: 'Async' },\n },\n {\n channelName: 'pipeline',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: '_executePipeline', kind: 'Async' },\n },\n {\n channelName: 'batch',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'multiExecutor', kind: 'Async' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const redisChannels = {\n REDIS_COMMAND: 'orchestrion:redis:command',\n NODE_REDIS_COMMAND: 'orchestrion:@redis/client:command',\n NODE_REDIS_EXECUTOR: 'orchestrion:@redis/client:executor',\n NODE_REDIS_CONNECT: 'orchestrion:@redis/client:connect',\n NODE_REDIS_MULTI: 'orchestrion:@redis/client:multi',\n NODE_REDIS_PIPELINE: 'orchestrion:@redis/client:pipeline',\n NODE_REDIS_BATCH: 'orchestrion:@redis/client:batch',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"redis.js","sources":["../../../../src/orchestrion/config/redis.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\nexport const redisConfig = [\n // redis `>=2.6.0 <4` (standalone `redis`). `internal_send_command` is an\n // anonymous prototype assignment (`expressionName`); it settles via the nested\n // `command_obj.callback`, so `kind: 'Sync'` and the subscriber wraps that callback.\n {\n channelName: 'command',\n module: { name: 'redis', versionRange: '>=2.6.0 <4', filePath: 'index.js' },\n functionQuery: { expressionName: 'internal_send_command', kind: 'Sync' },\n },\n // node-redis v4 (`@redis/client` v1). The real chokepoint (private `#sendCommand`)\n // isn't matchable, so wrap both public entry points: `commandsExecutor` (friendly\n // commands) and `sendCommand` (direct calls). They never overlap, so no double span.\n {\n channelName: 'executor',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'commandsExecutor', kind: 'Async' },\n },\n {\n channelName: 'command',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'sendCommand', kind: 'Async' },\n },\n {\n channelName: 'connect',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'connect', kind: 'Async' },\n },\n // node-redis `>=5.0.0 <5.12.0` (`@redis/client` v5; >=5.12.0 has its own\n // `node-redis:*` diagnostics_channel, see `redis-dc-subscriber.ts`). Friendly\n // commands route through the public `sendCommand`, so it covers them all — no\n // `executor` entry (would double-count).\n {\n channelName: 'command',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'sendCommand', kind: 'Async' },\n },\n {\n channelName: 'connect',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'connect', kind: 'Async' },\n },\n // Batch (multi/pipeline) — one span per `exec`. Batched commands bypass `sendCommand`,\n // so they go through the client's batch executors, which receive the queued commands\n // array (→ batch size). v5 splits MULTI/PIPELINE into two methods; v4's single\n // `multiExecutor` is MULTI when a `chainId` arg is present, PIPELINE otherwise.\n {\n channelName: 'multi',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: '_executeMulti', kind: 'Async' },\n },\n {\n channelName: 'pipeline',\n module: { name: '@redis/client', versionRange: '>=5.0.0 <5.12.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: '_executePipeline', kind: 'Async' },\n },\n {\n channelName: 'batch',\n module: { name: '@redis/client', versionRange: '^1.0.0', filePath: 'dist/lib/client/index.js' },\n functionQuery: { className: 'RedisClient', methodName: 'multiExecutor', kind: 'Async' },\n },\n] satisfies InstrumentationConfig[];\n\nexport const redisChannels = {\n REDIS_COMMAND: 'orchestrion:redis:command',\n NODE_REDIS_COMMAND: 'orchestrion:@redis/client:command',\n NODE_REDIS_EXECUTOR: 'orchestrion:@redis/client:executor',\n NODE_REDIS_CONNECT: 'orchestrion:@redis/client:connect',\n NODE_REDIS_MULTI: 'orchestrion:@redis/client:multi',\n NODE_REDIS_PIPELINE: 'orchestrion:@redis/client:pipeline',\n NODE_REDIS_BATCH: 'orchestrion:@redis/client:batch',\n} as const;\n\nexport const redisSubscribeInjection = toSubscribeInjections(redisConfig);\n"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { toSubscribeInjections } from './subscribe-injection.js';
|
|
2
|
+
|
|
1
3
|
const remixInstrumentationConfig = (dir) => [
|
|
2
4
|
// `createRequestHandler` returns `async function requestHandler(request, loadContext)` — the main
|
|
3
5
|
// server span. We target the returned handler (so the span wraps each request, not the one-time
|
|
@@ -46,6 +48,7 @@ const remixChannels = {
|
|
|
46
48
|
REMIX_CALL_ROUTE_LOADER: "orchestrion:@remix-run/server-runtime:callRouteLoader",
|
|
47
49
|
REMIX_CALL_ROUTE_ACTION: "orchestrion:@remix-run/server-runtime:callRouteAction"
|
|
48
50
|
};
|
|
51
|
+
const remixSubscribeInjection = toSubscribeInjections(remixConfig);
|
|
49
52
|
|
|
50
|
-
export { remixChannels, remixConfig };
|
|
53
|
+
export { remixChannels, remixConfig, remixSubscribeInjection };
|
|
51
54
|
//# sourceMappingURL=remix.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remix.js","sources":["../../../../src/orchestrion/config/remix.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\n\n// Four concepts, one channel each:\n// - `requestHandler` → the async handler returned by `createRequestHandler` (the server span)\n// - `matchServerRoutes` → sync route match; enriches the active span (creates no span of its own)\n// - `callRouteLoader` → LOADER span. Remix 2.0–2.8 named it `callRouteLoaderRR`\n// - `callRouteAction` → ACTION span. Remix 2.0–2.8 named it `callRouteActionRR`\n//\n// Emitted for both the CJS (`dist/*`) and ESM (`dist/esm/*`) builds, which share function shapes.\nconst remixInstrumentationConfig = (dir: string): InstrumentationConfig[] => [\n // `createRequestHandler` returns `async function requestHandler(request, loadContext)` — the main\n // server span. We target the returned handler (so the span wraps each request, not the one-time\n // handler construction). It's a *named function expression*, which name-based `functionQuery`\n // can't match (that only sees declarations), so we select it with `astQuery`; `functionQuery`\n // then just carries the behaviour (`kind: 'Async'`).\n {\n channelName: 'requestHandler',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <3', filePath: `${dir}/server.js` },\n astQuery: 'FunctionExpression[id.name=\"requestHandler\"]',\n functionQuery: { kind: 'Async' },\n },\n // Sync; the subscriber reads its result to set `http.route` on the active request span.\n {\n channelName: 'matchServerRoutes',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <3', filePath: `${dir}/routeMatching.js` },\n functionQuery: { functionName: 'matchServerRoutes', kind: 'Sync' },\n },\n // Remix >= 2.9.0\n {\n channelName: 'callRouteLoader',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.9.0 <3', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteLoader', kind: 'Async' },\n },\n {\n channelName: 'callRouteAction',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.9.0 <3', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteAction', kind: 'Async' },\n },\n // Remix 2.0.0 – 2.8.x: the same functions were suffixed `…RR`. Same channels as above.\n {\n channelName: 'callRouteLoader',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <2.9.0', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteLoaderRR', kind: 'Async' },\n },\n {\n channelName: 'callRouteAction',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <2.9.0', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteActionRR', kind: 'Async' },\n },\n];\n\nexport const remixConfig = ['dist', 'dist/esm'].flatMap(remixInstrumentationConfig);\n\nexport const remixChannels = {\n REMIX_REQUEST_HANDLER: 'orchestrion:@remix-run/server-runtime:requestHandler',\n REMIX_MATCH_SERVER_ROUTES: 'orchestrion:@remix-run/server-runtime:matchServerRoutes',\n REMIX_CALL_ROUTE_LOADER: 'orchestrion:@remix-run/server-runtime:callRouteLoader',\n REMIX_CALL_ROUTE_ACTION: 'orchestrion:@remix-run/server-runtime:callRouteAction',\n} as const;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remix.js","sources":["../../../../src/orchestrion/config/remix.ts"],"sourcesContent":["import type { InstrumentationConfig } from '..';\nimport { toSubscribeInjections } from './subscribe-injection';\n\n// Four concepts, one channel each:\n// - `requestHandler` → the async handler returned by `createRequestHandler` (the server span)\n// - `matchServerRoutes` → sync route match; enriches the active span (creates no span of its own)\n// - `callRouteLoader` → LOADER span. Remix 2.0–2.8 named it `callRouteLoaderRR`\n// - `callRouteAction` → ACTION span. Remix 2.0–2.8 named it `callRouteActionRR`\n//\n// Emitted for both the CJS (`dist/*`) and ESM (`dist/esm/*`) builds, which share function shapes.\nconst remixInstrumentationConfig = (dir: string): InstrumentationConfig[] => [\n // `createRequestHandler` returns `async function requestHandler(request, loadContext)` — the main\n // server span. We target the returned handler (so the span wraps each request, not the one-time\n // handler construction). It's a *named function expression*, which name-based `functionQuery`\n // can't match (that only sees declarations), so we select it with `astQuery`; `functionQuery`\n // then just carries the behaviour (`kind: 'Async'`).\n {\n channelName: 'requestHandler',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <3', filePath: `${dir}/server.js` },\n astQuery: 'FunctionExpression[id.name=\"requestHandler\"]',\n functionQuery: { kind: 'Async' },\n },\n // Sync; the subscriber reads its result to set `http.route` on the active request span.\n {\n channelName: 'matchServerRoutes',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <3', filePath: `${dir}/routeMatching.js` },\n functionQuery: { functionName: 'matchServerRoutes', kind: 'Sync' },\n },\n // Remix >= 2.9.0\n {\n channelName: 'callRouteLoader',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.9.0 <3', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteLoader', kind: 'Async' },\n },\n {\n channelName: 'callRouteAction',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.9.0 <3', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteAction', kind: 'Async' },\n },\n // Remix 2.0.0 – 2.8.x: the same functions were suffixed `…RR`. Same channels as above.\n {\n channelName: 'callRouteLoader',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <2.9.0', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteLoaderRR', kind: 'Async' },\n },\n {\n channelName: 'callRouteAction',\n module: { name: '@remix-run/server-runtime', versionRange: '>=2.0.0 <2.9.0', filePath: `${dir}/data.js` },\n functionQuery: { functionName: 'callRouteActionRR', kind: 'Async' },\n },\n];\n\nexport const remixConfig = ['dist', 'dist/esm'].flatMap(remixInstrumentationConfig);\n\nexport const remixChannels = {\n REMIX_REQUEST_HANDLER: 'orchestrion:@remix-run/server-runtime:requestHandler',\n REMIX_MATCH_SERVER_ROUTES: 'orchestrion:@remix-run/server-runtime:matchServerRoutes',\n REMIX_CALL_ROUTE_LOADER: 'orchestrion:@remix-run/server-runtime:callRouteLoader',\n REMIX_CALL_ROUTE_ACTION: 'orchestrion:@remix-run/server-runtime:callRouteAction',\n} as const;\n\nexport const remixSubscribeInjection = toSubscribeInjections(remixConfig);\n"],"names":[],"mappings":";;AAUA,MAAM,0BAAA,GAA6B,CAAC,GAAA,KAAyC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3E;AAAA,IACE,WAAA,EAAa,gBAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,2BAAA,EAA6B,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,UAAA,CAAA,EAAa;AAAA,IACtG,QAAA,EAAU,8CAAA;AAAA,IACV,aAAA,EAAe,EAAE,IAAA,EAAM,OAAA;AAAQ,GACjC;AAAA;AAAA,EAEA;AAAA,IACE,WAAA,EAAa,mBAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,2BAAA,EAA6B,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,iBAAA,CAAA,EAAoB;AAAA,IAC7G,aAAA,EAAe,EAAE,YAAA,EAAc,mBAAA,EAAqB,MAAM,MAAA;AAAO,GACnE;AAAA;AAAA,EAEA;AAAA,IACE,WAAA,EAAa,iBAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,2BAAA,EAA6B,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,QAAA,CAAA,EAAW;AAAA,IACpG,aAAA,EAAe,EAAE,YAAA,EAAc,iBAAA,EAAmB,MAAM,OAAA;AAAQ,GAClE;AAAA,EACA;AAAA,IACE,WAAA,EAAa,iBAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,2BAAA,EAA6B,cAAc,YAAA,EAAc,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,QAAA,CAAA,EAAW;AAAA,IACpG,aAAA,EAAe,EAAE,YAAA,EAAc,iBAAA,EAAmB,MAAM,OAAA;AAAQ,GAClE;AAAA;AAAA,EAEA;AAAA,IACE,WAAA,EAAa,iBAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,2BAAA,EAA6B,cAAc,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,QAAA,CAAA,EAAW;AAAA,IACxG,aAAA,EAAe,EAAE,YAAA,EAAc,mBAAA,EAAqB,MAAM,OAAA;AAAQ,GACpE;AAAA,EACA;AAAA,IACE,WAAA,EAAa,iBAAA;AAAA,IACb,MAAA,EAAQ,EAAE,IAAA,EAAM,2BAAA,EAA6B,cAAc,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,GAAG,CAAA,QAAA,CAAA,EAAW;AAAA,IACxG,aAAA,EAAe,EAAE,YAAA,EAAc,mBAAA,EAAqB,MAAM,OAAA;AAAQ;AAEtE,CAAA;AAEO,MAAM,cAAc,CAAC,MAAA,EAAQ,UAAU,CAAA,CAAE,QAAQ,0BAA0B;AAE3E,MAAM,aAAA,GAAgB;AAAA,EAC3B,qBAAA,EAAuB,sDAAA;AAAA,EACvB,yBAAA,EAA2B,yDAAA;AAAA,EAC3B,uBAAA,EAAyB,uDAAA;AAAA,EACzB,uBAAA,EAAyB;AAC3B;AAEO,MAAM,uBAAA,GAA0B,sBAAsB,WAAW;;;;"}
|