diff --git a/packages/core/package.json b/packages/core/package.json index 0e50a7c126..d5cb472e63 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -83,7 +83,7 @@ "@sentry-internal/eslint-config-sdk": "10.31.0", "@sentry-internal/eslint-plugin-sdk": "10.31.0", "@sentry-internal/typescript": "10.31.0", - "@sentry/wizard": "6.9.0", + "@sentry/wizard": "6.10.0", "@testing-library/react-native": "^13.2.2", "@types/jest": "^29.5.13", "@types/node": "^20.9.3", diff --git a/packages/core/src/js/tools/metroMiddleware.ts b/packages/core/src/js/tools/metroMiddleware.ts index 66b9e6157d..9e6de7cf08 100644 --- a/packages/core/src/js/tools/metroMiddleware.ts +++ b/packages/core/src/js/tools/metroMiddleware.ts @@ -14,6 +14,7 @@ const readFileAsync = promisify(readFile); export const stackFramesContextMiddleware: Middleware = async ( request: IncomingMessage, response: ServerResponse, + _next: () => void, ): Promise => { debug.log('[@sentry/react-native/metro] Received request for stack frames context.'); request.setEncoding('utf8'); @@ -89,11 +90,15 @@ const SENTRY_CONTEXT_REQUEST_PATH = `${SENTRY_MIDDLEWARE_PATH}/context`; * Creates a middleware that adds source context to the Sentry formatted stack frames. */ export const createSentryMetroMiddleware = (middleware: Middleware): Middleware => { - return (request: IncomingMessage, response: ServerResponse, next: unknown) => { + return (request: IncomingMessage, response: ServerResponse, next: () => void) => { if (request.url?.startsWith(SENTRY_CONTEXT_REQUEST_PATH)) { - return stackFramesContextMiddleware(request, response); + return stackFramesContextMiddleware(request, response, next); } - return middleware(request, response, next); + return (middleware as (req: IncomingMessage, res: ServerResponse, next: () => void) => void)( + request, + response, + next, + ); }; }; diff --git a/packages/core/test/tools/metroMiddleware.test.ts b/packages/core/test/tools/metroMiddleware.test.ts index 426d3dea69..a12421e99f 100644 --- a/packages/core/test/tools/metroMiddleware.test.ts +++ b/packages/core/test/tools/metroMiddleware.test.ts @@ -78,7 +78,7 @@ describe('metroMiddleware', () => { } as any; testedMiddleware(sentryRequest, response, next); expect(defaultMiddleware).not.toHaveBeenCalled(); - expect(spiedStackFramesContextMiddleware).toHaveBeenCalledWith(sentryRequest, response); + expect(spiedStackFramesContextMiddleware).toHaveBeenCalledWith(sentryRequest, response, next); }); it('should call default middleware for non-sentry requests', () => { @@ -97,6 +97,7 @@ describe('metroMiddleware', () => { describe('stackFramesContextMiddleware', () => { let request: any; let response: any; + const next = jest.fn(); let testData: string = ''; @@ -124,13 +125,13 @@ describe('metroMiddleware', () => { }); it('should set request encoding to utf8', async () => { - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(request.setEncoding).toHaveBeenCalledWith('utf8'); }); it('should return 400 for missing request body', async () => { - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(response.statusCode).toBe(400); expect(response.end).toHaveBeenCalledWith('Invalid request body. Expected a JSON object.'); @@ -138,14 +139,14 @@ describe('metroMiddleware', () => { it('should return 400 for invalid request body', async () => { testData = 'invalid'; - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(response.statusCode).toBe(400); }); it('should return 400 when stack is not an array', async () => { testData = '{"stack": "not an array"}'; - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(response.statusCode).toBe(400); expect(response.end).toHaveBeenCalledWith('Invalid stack frames. Expected an array.'); @@ -153,14 +154,14 @@ describe('metroMiddleware', () => { it('should set content type to application/json for valid response', async () => { testData = '{"stack":[]}'; - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(response.setHeader).toHaveBeenCalledWith('Content-Type', 'application/json'); }); it('should return 200 for valid empty stack', async () => { testData = '{"stack":[]}'; - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(response.statusCode).toBe(200); }); @@ -181,7 +182,7 @@ describe('metroMiddleware', () => { mockReadFileOnce(readFileSpy, 'test.js', 'line1\nline2\nline3\nline4\nline5'); - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(response.statusCode).toBe(200); expect(JSON.parse(response.end.mock.calls[0][0])).toEqual({ @@ -213,7 +214,7 @@ describe('metroMiddleware', () => { ], } satisfies { stack: StackFrame[] }); - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(readFileSpy).not.toHaveBeenCalled(); expect(response.statusCode).toBe(200); @@ -243,7 +244,7 @@ describe('metroMiddleware', () => { ], } satisfies { stack: StackFrame[] }); - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(readFileSpy).not.toHaveBeenCalled(); expect(response.statusCode).toBe(200); @@ -295,7 +296,7 @@ describe('metroMiddleware', () => { ], } satisfies { stack: StackFrame[] }); - await stackFramesContextMiddleware(request, response); + await stackFramesContextMiddleware(request, response, next); expect(response.statusCode).toBe(200); expect(JSON.parse(response.end.mock.calls[0][0])).toEqual({ diff --git a/yarn.lock b/yarn.lock index 5cb08cb6ac..8de24b2bc3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,6 +39,24 @@ __metadata: languageName: node linkType: hard +"@apm-js-collab/code-transformer@npm:^0.8.0": + version: 0.8.2 + resolution: "@apm-js-collab/code-transformer@npm:0.8.2" + checksum: af9457907be1b0a63cc6d1ed2933213cd5e0e76db6348c7d7fe15cd0ed1c7e46313b85e707b83a02ebf2ef9efbda0217e22ee7dea4169e96abc687df11377470 + languageName: node + linkType: hard + +"@apm-js-collab/tracing-hooks@npm:^0.3.1": + version: 0.3.1 + resolution: "@apm-js-collab/tracing-hooks@npm:0.3.1" + dependencies: + "@apm-js-collab/code-transformer": ^0.8.0 + debug: ^4.4.1 + module-details-from-path: ^1.0.4 + checksum: 95750e36d5a0d2f4131ce50a6c34400f0d92f42996d5082b2ddf530ad8a9c99e900c89689aec0405388330a380b3764b1ed2f731f51d3ca14d64a3ebf5f30d01 + languageName: node + linkType: hard + "@appium/base-driver@npm:^9.0.0, @appium/base-driver@npm:^9.1.0, @appium/base-driver@npm:^9.11.3, @appium/base-driver@npm:^9.5.0": version: 9.11.3 resolution: "@appium/base-driver@npm:9.11.3" @@ -7412,6 +7430,378 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/api-logs@npm:0.208.0": + version: 0.208.0 + resolution: "@opentelemetry/api-logs@npm:0.208.0" + dependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 98aa12c0c4a193714fe2b0f7a2d595cba3d87a6256e6291ed5768005af03885db9db5d74f2616532ecffc424b2ebf3ac87c6719d8fcb2d82b126736bfd1b6287 + languageName: node + linkType: hard + +"@opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.9.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 + languageName: node + linkType: hard + +"@opentelemetry/context-async-hooks@npm:^2.2.0": + version: 2.2.0 + resolution: "@opentelemetry/context-async-hooks@npm:2.2.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: cc8996d01a2538f44e01a87b25d7cfe94ff6d230d1bbb53d83cad4d6025d357ead455e4210eba7c86687e2efec9ae6b7835375716f38041f702eba1a8ff86482 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:2.2.0, @opentelemetry/core@npm:^2.0.0, @opentelemetry/core@npm:^2.2.0": + version: 2.2.0 + resolution: "@opentelemetry/core@npm:2.2.0" + dependencies: + "@opentelemetry/semantic-conventions": ^1.29.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: cfb75e67b91086ce47783b3ff30e4b0d3099630a6ead821c69dfc7c37925498e9e398d610ec5b87c2b5b86e17900dd8a5bb4a3d9dea6e122ed1add54efdcd149 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-amqplib@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/instrumentation-amqplib@npm:0.55.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: ea70fcd91a641b8e881eae227733614f2b6c443d6357114db5a20b46e82a496c1311d94e469a59a11edd313d173301e96b71047ea1c327a985c7eda0d764b480 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-connect@npm:0.52.0": + version: 0.52.0 + resolution: "@opentelemetry/instrumentation-connect@npm:0.52.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + "@types/connect": 3.4.38 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 61c705d4cd43cd50239e719f99baa9d4626f3b31ca01a87b8630ca0b2533e7d909d4175e9bceebd37a6bb13028b5a4d93fe74e9d7c0b42ea231126863473f1ce + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-dataloader@npm:0.26.0": + version: 0.26.0 + resolution: "@opentelemetry/instrumentation-dataloader@npm:0.26.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 7f61ce861b8659d41e85a9d88cee842e3bc460d2b462553515ab9614382e8f166918f37ce3c4a8245703d9b2998732eede5836c8ef13326025496d7d7d54f7df + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-express@npm:0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/instrumentation-express@npm:0.57.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 12133392a615bb20aaec4dc7d098c88e23cc266ec19e3340690d5e7cb028ed440ee3d53f2b5b851e762a59d2173f0f71c5379d02cc70b48ef08c89c47deefd42 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-fs@npm:0.28.0": + version: 0.28.0 + resolution: "@opentelemetry/instrumentation-fs@npm:0.28.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: bbc7d585d2759448a411b70419bbc58f86cd58d0e5ba1e0acf7122be8b878e49676cab66aa8803bae9e1a572f04019c2f12f9709b1264bcd2e9d185afc12ef4b + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-generic-pool@npm:0.52.0": + version: 0.52.0 + resolution: "@opentelemetry/instrumentation-generic-pool@npm:0.52.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: a1b26052d7eb244949e0f5f06350400e443cb0fd6d146b101a313a1a7bfd214d32208784157cd4219f11ee94fdef55a8cd4b7df0d83962b5d3125ff647e37a67 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-graphql@npm:0.56.0": + version: 0.56.0 + resolution: "@opentelemetry/instrumentation-graphql@npm:0.56.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 6aceee262922948af5839325e7b7ba1c176b977af7de3dfec659859009111c9222b11f77f06bea61b3035f8971bec73c5479d389c76a7e03c88edfa05b521531 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-hapi@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/instrumentation-hapi@npm:0.55.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 4218387ba2eefdfac3bf00ae1dc83399bc72caa01224553857f75c7c8a5ea74cb6f59a38ce4ed8e85556602a6c23a5ce13272345b5d3b4f288bb7f3dcdedbe64 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-http@npm:0.208.0": + version: 0.208.0 + resolution: "@opentelemetry/instrumentation-http@npm:0.208.0" + dependencies: + "@opentelemetry/core": 2.2.0 + "@opentelemetry/instrumentation": 0.208.0 + "@opentelemetry/semantic-conventions": ^1.29.0 + forwarded-parse: 2.1.2 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: a11307416f7d46194a05d0aae9f3003d811143b6fbf86d55a6c409f9e082da8a07238136534ae473befc95618592f9be6085a9c22464200a6bec486edeabecd0 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-ioredis@npm:0.56.0": + version: 0.56.0 + resolution: "@opentelemetry/instrumentation-ioredis@npm:0.56.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/redis-common": ^0.38.2 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 2f3d56673a362fe036fe1e138031faf0d5138c4bacd9f9ca614859818eeb4f420362c3417f004c23f1433046e4baee0e15d9543027e91c5ffd9bea24d960dfd9 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-kafkajs@npm:0.18.0": + version: 0.18.0 + resolution: "@opentelemetry/instrumentation-kafkajs@npm:0.18.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.30.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: adac4efe046a9d2f3134fcf111cedd6820c81447cc8cb6db92305638f4204ae85a2e313bbaa17ec958349308c3498bb31abc488352c5cf349c10e72e901cea0f + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-knex@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/instrumentation-knex@npm:0.53.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.33.1 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: f64361b9a687732088d22e8e2aa3686dc4e817db0e37b0ef3e8d0f1de6570ffeaba68b17edfbcd7352e6227c41c7634432d657e31fcbbc5a36dc57c5123acf31 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-koa@npm:0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/instrumentation-koa@npm:0.57.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.36.0 + peerDependencies: + "@opentelemetry/api": ^1.9.0 + checksum: 32b26e3e20d4d81a7fb92c2a0da8b11b82517768c796252225210f30efc1301dcf14163eb744aefd4453fa2ed68026c274888593851f21de996b94fea72c48f2 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-lru-memoizer@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/instrumentation-lru-memoizer@npm:0.53.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: bd866616080aff7e07a6f5141b3489d71e8b9868f4376b07e37255de4cf6f82c708915275bba021c2c2b0a114e9e53e28c4c0baf781105568cb1f1d8ec15ac87 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-mongodb@npm:0.61.0": + version: 0.61.0 + resolution: "@opentelemetry/instrumentation-mongodb@npm:0.61.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 324410300453320f812a5149e1f3a0c0d8744022ea6028a9338bc7094adb9452da742264d5651e2550eadd93b1c81fff5dc378bc2209936557806f049aeb0cdd + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-mongoose@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/instrumentation-mongoose@npm:0.55.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: dbefe4d7a1449da658c0625b656318c64bda8f1d602c7baf9d4e9b085fc9b71c24ccea2d2c4332aaf4e7aeea3543d7f0579ac2869d4140a829f9b6f37b75b698 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-mysql2@npm:0.55.0": + version: 0.55.0 + resolution: "@opentelemetry/instrumentation-mysql2@npm:0.55.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.33.0 + "@opentelemetry/sql-common": ^0.41.2 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: cccf0864c24b7e36db7a89b13f85a8aa3879ee8056687d3ab5b416fed49d787ebe36b34d8a96019a57dfee951365633679d83b83f59a626aca52babfd1f24696 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-mysql@npm:0.54.0": + version: 0.54.0 + resolution: "@opentelemetry/instrumentation-mysql@npm:0.54.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + "@types/mysql": 2.15.27 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 45719d19571e36c0b28b47d9352955f9fe6adf036b4647ca5b1fe17d9be1a6a6e00b3d65deced8fd9fed82eec04c0613293c3e443e5da2de3116c4c12711ddd7 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-pg@npm:0.61.0": + version: 0.61.0 + resolution: "@opentelemetry/instrumentation-pg@npm:0.61.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.34.0 + "@opentelemetry/sql-common": ^0.41.2 + "@types/pg": 8.15.6 + "@types/pg-pool": 2.0.6 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 134f99e4f3bf5e5c7238956d5caaadbaa70ddaa79984ab580bf2e9d85b7d47c76e1a678f0e750a0243717fd72e85efa974caebacae51235d783170cf6286fdc3 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-redis@npm:0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/instrumentation-redis@npm:0.57.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/redis-common": ^0.38.2 + "@opentelemetry/semantic-conventions": ^1.27.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: ba03ff147c0d80d7db05b8c9af3b932fe85eeb24579cf20c015c8afebeabcf22acdc2b8f7aad5aef5700d50c3c74d59f1616d4bcf74227c253e1251c393a1544 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-tedious@npm:0.27.0": + version: 0.27.0 + resolution: "@opentelemetry/instrumentation-tedious@npm:0.27.0" + dependencies: + "@opentelemetry/instrumentation": ^0.208.0 + "@types/tedious": ^4.0.14 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: dbd717e4a9c7bfafbab114d6ebb5e42ab6919ebc940805540b95e798d3b085fb175ff8ed02e0e5d99ee3c4210aefe219e866a66e867481b2333840ad9744ae50 + languageName: node + linkType: hard + +"@opentelemetry/instrumentation-undici@npm:0.19.0": + version: 0.19.0 + resolution: "@opentelemetry/instrumentation-undici@npm:0.19.0" + dependencies: + "@opentelemetry/core": ^2.0.0 + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/semantic-conventions": ^1.24.0 + peerDependencies: + "@opentelemetry/api": ^1.7.0 + checksum: 252887784a377fab5986bbbfc014fd9bb56b8bac605360a9b6bed464ccc1fce7d95f12e5dc340db6a3b6b0b7a6288f3ee5fbd8b6684936b12ea1435c9aa343ad + languageName: node + linkType: hard + +"@opentelemetry/instrumentation@npm:0.208.0, @opentelemetry/instrumentation@npm:>=0.52.0 <1, @opentelemetry/instrumentation@npm:^0.208.0": + version: 0.208.0 + resolution: "@opentelemetry/instrumentation@npm:0.208.0" + dependencies: + "@opentelemetry/api-logs": 0.208.0 + import-in-the-middle: ^2.0.0 + require-in-the-middle: ^8.0.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 9913128805eba76ba8de21af615e5150bf5fa26ce47a06c0be8b7b7ecdb91895f16e43f145a6ec7e8c05e102779cdb0f3364bd8a63a8ff2524b58234ab08f600 + languageName: node + linkType: hard + +"@opentelemetry/redis-common@npm:^0.38.2": + version: 0.38.2 + resolution: "@opentelemetry/redis-common@npm:0.38.2" + checksum: 8074531481e02c697ea098185cb5471b52d80de54121c596de1e9e8dc973dba81f85414971b8adb147749d0624a3e0323e4a28416ae381237a6592c82e0b96e2 + languageName: node + linkType: hard + +"@opentelemetry/resources@npm:2.2.0, @opentelemetry/resources@npm:^2.2.0": + version: 2.2.0 + resolution: "@opentelemetry/resources@npm:2.2.0" + dependencies: + "@opentelemetry/core": 2.2.0 + "@opentelemetry/semantic-conventions": ^1.29.0 + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 437332f09f138577c0b2f4b15bbd63851083f19f8e30843ca50f16abf9012eedc32c5d86ed21305c40383dbc09b865dd2f399bf08f995c8cdcfe7472d29fd5c5 + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:^2.2.0": + version: 2.2.0 + resolution: "@opentelemetry/sdk-trace-base@npm:2.2.0" + dependencies: + "@opentelemetry/core": 2.2.0 + "@opentelemetry/resources": 2.2.0 + "@opentelemetry/semantic-conventions": ^1.29.0 + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 3ea674ff6383644222cdc9e79bc7531ba5ba0c0134369bfb3159c0f761474828ef9b89db90c02f9d6b3c2e29e30784abc45ef631c6f1c612895171abc937c264 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:^1.24.0, @opentelemetry/semantic-conventions@npm:^1.27.0, @opentelemetry/semantic-conventions@npm:^1.29.0, @opentelemetry/semantic-conventions@npm:^1.30.0, @opentelemetry/semantic-conventions@npm:^1.33.0, @opentelemetry/semantic-conventions@npm:^1.33.1, @opentelemetry/semantic-conventions@npm:^1.34.0, @opentelemetry/semantic-conventions@npm:^1.36.0, @opentelemetry/semantic-conventions@npm:^1.37.0": + version: 1.38.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.38.0" + checksum: 15f3cf77c86efd54cf321a1a04aa6ed04679eea635411ec85f4e0e2843b6d50f5139e28bd80a4cebc8e2aade4f867d9b972850a19b18064d69b2a01c6c61752e + languageName: node + linkType: hard + +"@opentelemetry/sql-common@npm:^0.41.2": + version: 0.41.2 + resolution: "@opentelemetry/sql-common@npm:0.41.2" + dependencies: + "@opentelemetry/core": ^2.0.0 + peerDependencies: + "@opentelemetry/api": ^1.1.0 + checksum: e54bf4ed09f406814867159f2cac9e2aa36307b70eabb00ccdec85782577063e11151f01e14b6b7e7016c9d62ba4c24c103bcf17ceed858f78fc42942b201101 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -7426,6 +7816,17 @@ __metadata: languageName: node linkType: hard +"@prisma/instrumentation@npm:6.19.0": + version: 6.19.0 + resolution: "@prisma/instrumentation@npm:6.19.0" + dependencies: + "@opentelemetry/instrumentation": ">=0.52.0 <1" + peerDependencies: + "@opentelemetry/api": ^1.8 + checksum: cac22e88ba214cc167dfd72d72fd289ecaa4cf87fceb41398d875f1ce1327bfe1634523a9f38d3940336a4093c245c46d23056bf1e78d6e5a872c6665345f648 + languageName: node + linkType: hard + "@promptbook/utils@npm:0.68.0-0": version: 0.68.0-0 resolution: "@promptbook/utils@npm:0.68.0-0" @@ -9575,17 +9976,6 @@ __metadata: languageName: node linkType: hard -"@sentry-internal/tracing@npm:7.119.2": - version: 7.119.2 - resolution: "@sentry-internal/tracing@npm:7.119.2" - dependencies: - "@sentry/core": 7.119.2 - "@sentry/types": 7.119.2 - "@sentry/utils": 7.119.2 - checksum: 62648c62395f80520da758d753d7df5fabf64e0c00dc14f4b738d9886c162fb8fdccb6f59f8b4ebc2f920f903601da62f72f1a87ec8bcd1566eef9d18b6e2153 - languageName: node - linkType: hard - "@sentry-internal/typescript@npm:10.31.0": version: 10.31.0 resolution: "@sentry-internal/typescript@npm:10.31.0" @@ -9718,38 +10108,81 @@ __metadata: languageName: node linkType: hard -"@sentry/core@npm:7.119.2": - version: 7.119.2 - resolution: "@sentry/core@npm:7.119.2" +"@sentry/node-core@npm:10.31.0": + version: 10.31.0 + resolution: "@sentry/node-core@npm:10.31.0" dependencies: - "@sentry/types": 7.119.2 - "@sentry/utils": 7.119.2 - checksum: ba74c2a36aa759e8860f27fe5eea7c3c788b130cc7599ee6b0ecff91cf3ff8790f1c7319a8ef3fca121db84ee9a538e2e3b883f622bb416668ea9f19442a2200 + "@apm-js-collab/tracing-hooks": ^0.3.1 + "@sentry/core": 10.31.0 + "@sentry/opentelemetry": 10.31.0 + import-in-the-middle: ^2 + peerDependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-async-hooks": ^1.30.1 || ^2.1.0 || ^2.2.0 + "@opentelemetry/core": ^1.30.1 || ^2.1.0 || ^2.2.0 + "@opentelemetry/instrumentation": ">=0.57.1 <1" + "@opentelemetry/resources": ^1.30.1 || ^2.1.0 || ^2.2.0 + "@opentelemetry/sdk-trace-base": ^1.30.1 || ^2.1.0 || ^2.2.0 + "@opentelemetry/semantic-conventions": ^1.37.0 + checksum: 3b13e37b1483ad673950744ba8f45249744099b30002f423ab0f0fa88b05cb333d2bf39399d2ade1f0da7ce5ba824cbabe7acd1e275fed222b5aacf1e6fc2d6c languageName: node linkType: hard -"@sentry/integrations@npm:7.119.2": - version: 7.119.2 - resolution: "@sentry/integrations@npm:7.119.2" - dependencies: - "@sentry/core": 7.119.2 - "@sentry/types": 7.119.2 - "@sentry/utils": 7.119.2 - localforage: ^1.8.1 - checksum: 28529b6ce6c51ea7c03629c5d02346a4106aa819c84cd35363fb6dc49ef396303399ab9a9596adbd5e15a05425d214fe0db7b83f43e0c1680a64c51d9feee7bd +"@sentry/node@npm:^10.29.0": + version: 10.31.0 + resolution: "@sentry/node@npm:10.31.0" + dependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-async-hooks": ^2.2.0 + "@opentelemetry/core": ^2.2.0 + "@opentelemetry/instrumentation": ^0.208.0 + "@opentelemetry/instrumentation-amqplib": 0.55.0 + "@opentelemetry/instrumentation-connect": 0.52.0 + "@opentelemetry/instrumentation-dataloader": 0.26.0 + "@opentelemetry/instrumentation-express": 0.57.0 + "@opentelemetry/instrumentation-fs": 0.28.0 + "@opentelemetry/instrumentation-generic-pool": 0.52.0 + "@opentelemetry/instrumentation-graphql": 0.56.0 + "@opentelemetry/instrumentation-hapi": 0.55.0 + "@opentelemetry/instrumentation-http": 0.208.0 + "@opentelemetry/instrumentation-ioredis": 0.56.0 + "@opentelemetry/instrumentation-kafkajs": 0.18.0 + "@opentelemetry/instrumentation-knex": 0.53.0 + "@opentelemetry/instrumentation-koa": 0.57.0 + "@opentelemetry/instrumentation-lru-memoizer": 0.53.0 + "@opentelemetry/instrumentation-mongodb": 0.61.0 + "@opentelemetry/instrumentation-mongoose": 0.55.0 + "@opentelemetry/instrumentation-mysql": 0.54.0 + "@opentelemetry/instrumentation-mysql2": 0.55.0 + "@opentelemetry/instrumentation-pg": 0.61.0 + "@opentelemetry/instrumentation-redis": 0.57.0 + "@opentelemetry/instrumentation-tedious": 0.27.0 + "@opentelemetry/instrumentation-undici": 0.19.0 + "@opentelemetry/resources": ^2.2.0 + "@opentelemetry/sdk-trace-base": ^2.2.0 + "@opentelemetry/semantic-conventions": ^1.37.0 + "@prisma/instrumentation": 6.19.0 + "@sentry/core": 10.31.0 + "@sentry/node-core": 10.31.0 + "@sentry/opentelemetry": 10.31.0 + import-in-the-middle: ^2 + minimatch: ^9.0.0 + checksum: bd0dd6659d4256002301857f7ffa88e935e96bb03e7d251f66aa8c518c5ffe85a1366df44b8d3892da0e5c495f5729b219fbbcd9eb8535a071f2a94ee30ad3cc languageName: node linkType: hard -"@sentry/node@npm:^7.119.2": - version: 7.119.2 - resolution: "@sentry/node@npm:7.119.2" +"@sentry/opentelemetry@npm:10.31.0": + version: 10.31.0 + resolution: "@sentry/opentelemetry@npm:10.31.0" dependencies: - "@sentry-internal/tracing": 7.119.2 - "@sentry/core": 7.119.2 - "@sentry/integrations": 7.119.2 - "@sentry/types": 7.119.2 - "@sentry/utils": 7.119.2 - checksum: 3145fd2e25f561f65d000cd00d36894af4578b898c5dd2e7f06719d40b5b7cc5c6b7e467b8bd4cf742847aefe5f0b3c232e9c128bb4c1c9b630b1ef3a36c3c12 + "@sentry/core": 10.31.0 + peerDependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-async-hooks": ^1.30.1 || ^2.1.0 || ^2.2.0 + "@opentelemetry/core": ^1.30.1 || ^2.1.0 || ^2.2.0 + "@opentelemetry/sdk-trace-base": ^1.30.1 || ^2.1.0 || ^2.2.0 + "@opentelemetry/semantic-conventions": ^1.37.0 + checksum: d76b7d8397acdafac70bd8de87e83fda0231f1a14f1cfb0f31332b7e9b84411d8dec4a3127ed3d6e8ee1a3c7700992f30f4c54561e8088b9cb17d0a0fc777f78 languageName: node linkType: hard @@ -9770,7 +10203,7 @@ __metadata: "@sentry/core": 10.31.0 "@sentry/react": 10.31.0 "@sentry/types": 10.31.0 - "@sentry/wizard": 6.9.0 + "@sentry/wizard": 6.10.0 "@testing-library/react-native": ^13.2.2 "@types/jest": ^29.5.13 "@types/node": ^20.9.3 @@ -9839,28 +10272,12 @@ __metadata: languageName: node linkType: hard -"@sentry/types@npm:7.119.2": - version: 7.119.2 - resolution: "@sentry/types@npm:7.119.2" - checksum: 8417841df4d2bc24e1d553b9b0a320e0f641ac173cbb85a05537a4722e28b2e2010e31012f2363e75dcbc53f9a154bdff684fd5de40716d003887d73e6fca809 - languageName: node - linkType: hard - -"@sentry/utils@npm:7.119.2": - version: 7.119.2 - resolution: "@sentry/utils@npm:7.119.2" - dependencies: - "@sentry/types": 7.119.2 - checksum: 30044c5f420bf1194807664bc27f5e6c76ac210188a62c75fb76bf9262ee88455ba771d53f1d393c1bd581eb2b346023825aff00dd4f7739b638d63243c409b0 - languageName: node - linkType: hard - -"@sentry/wizard@npm:6.9.0": - version: 6.9.0 - resolution: "@sentry/wizard@npm:6.9.0" +"@sentry/wizard@npm:6.10.0": + version: 6.10.0 + resolution: "@sentry/wizard@npm:6.10.0" dependencies: "@clack/prompts": 0.7.0 - "@sentry/node": ^7.119.2 + "@sentry/node": ^10.29.0 axios: 1.12.0 chalk: ^2.4.1 glob: 9.3.5 @@ -9876,7 +10293,7 @@ __metadata: yargs: ^16.2.0 bin: sentry-wizard: dist/bin.js - checksum: e2620e8ac97f1d2a1c1c57f6887966e2291371539d4746750cf92f9aa9550b331091c56cfa2f171bf7bcfaf8b4083a6f4bf8e941a7e3b5a53011dbdc917a5b3f + checksum: 2974d2c41967ef888901d0a710e4f42920c117de8785d58d83986f5c59268d6994e05d562d3e50d03b22f43c056f3ab5fe62fbab06387e0b2ba37ebeffe585d0 languageName: node linkType: hard @@ -10255,7 +10672,7 @@ __metadata: languageName: node linkType: hard -"@types/connect@npm:*": +"@types/connect@npm:*, @types/connect@npm:3.4.38": version: 3.4.38 resolution: "@types/connect@npm:3.4.38" dependencies: @@ -10488,6 +10905,15 @@ __metadata: languageName: node linkType: hard +"@types/mysql@npm:2.15.27": + version: 2.15.27 + resolution: "@types/mysql@npm:2.15.27" + dependencies: + "@types/node": "*" + checksum: a6a7caa0344f903770d90da76fc75d6d56742ea382e53ff6efc946e4e8f5a8dfd846e33ca4ff0a19914ed7d3cb1f1f839d1266ca266cc2efa51b9620804f2810 + languageName: node + linkType: hard + "@types/ncp@npm:2.0.8": version: 2.0.8 resolution: "@types/ncp@npm:2.0.8" @@ -10558,6 +10984,37 @@ __metadata: languageName: node linkType: hard +"@types/pg-pool@npm:2.0.6": + version: 2.0.6 + resolution: "@types/pg-pool@npm:2.0.6" + dependencies: + "@types/pg": "*" + checksum: cc54ce97115effc982bd052f79901a78215e76554aca0ecc92e78eb907e4fb2962924039369cd9aaf48075f1637593ce14647c62d3a2eb03789ce5d1c6df750b + languageName: node + linkType: hard + +"@types/pg@npm:*": + version: 8.16.0 + resolution: "@types/pg@npm:8.16.0" + dependencies: + "@types/node": "*" + pg-protocol: "*" + pg-types: ^2.2.0 + checksum: 98b5c95650659e78a512699814097ecd29102adb4299f198072d7152508dfda56191b5ca6036f5164d8b364cf1d9fe16dd3d9d26bd40845a3eea59a7e7032415 + languageName: node + linkType: hard + +"@types/pg@npm:8.15.6": + version: 8.15.6 + resolution: "@types/pg@npm:8.15.6" + dependencies: + "@types/node": "*" + pg-protocol: "*" + pg-types: ^2.2.0 + checksum: 35a8fe848552be8f3f5d4d8428edf525bc48c96607992ef068edf2ed5c64bb015132b46a3f7f5524a911a055c76f103ac3407f2a9b9330a11d1174cbbafdb20e + languageName: node + linkType: hard + "@types/pluralize@npm:0.0.33": version: 0.0.33 resolution: "@types/pluralize@npm:0.0.33" @@ -10741,6 +11198,15 @@ __metadata: languageName: node linkType: hard +"@types/tedious@npm:^4.0.14": + version: 4.0.14 + resolution: "@types/tedious@npm:4.0.14" + dependencies: + "@types/node": "*" + checksum: 88505dda8b8e57e1da58ce74fb29bc2b4d64d90e9c34dc1d4b4010116b9785e23ce43f1e8016901bd27037e17d9d148e34d4ebd5f57d060212847e0df91cf024 + languageName: node + linkType: hard + "@types/teen_process@npm:2.0.4, @types/teen_process@npm:^2.0.0": version: 2.0.4 resolution: "@types/teen_process@npm:2.0.4" @@ -11574,6 +12040,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 1c0c49b6a244503964ae46ae850baccf306e84caf99bc2010ed6103c69a423987b07b520a6c619f075d215388bd4923eccac995886a54309eda049ab78a4be95 + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -11601,7 +12076,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0": +"acorn@npm:^8.14.0, acorn@npm:^8.15.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -13824,6 +14299,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^1.2.2": + version: 1.4.3 + resolution: "cjs-module-lexer@npm:1.4.3" + checksum: 221a1661a9ff4944b472c85ac7cd5029b2f2dc7f6c5f4ecf887f261503611110b43a48acb6c07f8f04109c772d1637fdb20b31252bf27058f35aa97bf5ad8b12 + languageName: node + linkType: hard + "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -17806,6 +18288,13 @@ __metadata: languageName: node linkType: hard +"forwarded-parse@npm:2.1.2": + version: 2.1.2 + resolution: "forwarded-parse@npm:2.1.2" + checksum: fca4df8898248d123d9d29a9fdf48005dd757366c2c17c1e195e8311a9aa89caf9f5e592f58f7d3d635087675ff39e85c32c6205838510f6f1fa4109de519930 + languageName: node + linkType: hard + "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -18966,6 +19455,18 @@ __metadata: languageName: node linkType: hard +"import-in-the-middle@npm:^2, import-in-the-middle@npm:^2.0.0": + version: 2.0.0 + resolution: "import-in-the-middle@npm:2.0.0" + dependencies: + acorn: ^8.14.0 + acorn-import-attributes: ^1.9.5 + cjs-module-lexer: ^1.2.2 + module-details-from-path: ^1.0.3 + checksum: 4886b0a58692e03c3a187e1f15cb811025f8637c6eed51b26afa43eb90027f972c018f88ae175f76c45387db9fe2a131410898524d8359831e69670737bfb960 + languageName: node + linkType: hard + "import-local@npm:3.1.0": version: 3.1.0 resolution: "import-local@npm:3.1.0" @@ -21194,15 +21695,6 @@ __metadata: languageName: node linkType: hard -"lie@npm:3.1.1": - version: 3.1.1 - resolution: "lie@npm:3.1.1" - dependencies: - immediate: "npm:~3.0.5" - checksum: 6da9f2121d2dbd15f1eca44c0c7e211e66a99c7b326ec8312645f3648935bc3a658cf0e9fa7b5f10144d9e2641500b4f55bd32754607c3de945b5f443e50ddd1 - languageName: node - linkType: hard - "lie@npm:~3.3.0": version: 3.3.0 resolution: "lie@npm:3.3.0" @@ -21384,15 +21876,6 @@ __metadata: languageName: node linkType: hard -"localforage@npm:^1.8.1": - version: 1.10.0 - resolution: "localforage@npm:1.10.0" - dependencies: - lie: "npm:3.1.1" - checksum: f2978b434dafff9bcb0d9498de57d97eba165402419939c944412e179cab1854782830b5ec196212560b22712d1dd03918939f59cf1d4fc1d756fca7950086cf - languageName: node - linkType: hard - "locate-app@npm:^2.1.0": version: 2.4.33 resolution: "locate-app@npm:2.4.33" @@ -23410,6 +23893,13 @@ __metadata: languageName: node linkType: hard +"module-details-from-path@npm:^1.0.3, module-details-from-path@npm:^1.0.4": + version: 1.0.4 + resolution: "module-details-from-path@npm:1.0.4" + checksum: 2ebfada5358492f6ab496b70f70a1042f2ee7a4c79d29467f59ed6704f741fb4461d7cecb5082144ed39a05fec4d19e9ff38b731c76228151be97227240a05b2 + languageName: node + linkType: hard + "module-lookup-amd@npm:^7.0.1": version: 7.0.1 resolution: "module-lookup-amd@npm:7.0.1" @@ -24976,6 +25466,33 @@ __metadata: languageName: node linkType: hard +"pg-int8@npm:1.0.1": + version: 1.0.1 + resolution: "pg-int8@npm:1.0.1" + checksum: a1e3a05a69005ddb73e5f324b6b4e689868a447c5fa280b44cd4d04e6916a344ac289e0b8d2695d66e8e89a7fba023affb9e0e94778770ada5df43f003d664c9 + languageName: node + linkType: hard + +"pg-protocol@npm:*": + version: 1.10.3 + resolution: "pg-protocol@npm:1.10.3" + checksum: 2d8c3b2747526706d37fdf35fc6e87c4a170cf8deb89fac65c562df26b4e0f42b76d62c6d1dbd096725e9a081a8725796f27af874c9e72753499c794472faad7 + languageName: node + linkType: hard + +"pg-types@npm:^2.2.0": + version: 2.2.0 + resolution: "pg-types@npm:2.2.0" + dependencies: + pg-int8: 1.0.1 + postgres-array: ~2.0.0 + postgres-bytea: ~1.0.0 + postgres-date: ~1.0.4 + postgres-interval: ^1.1.0 + checksum: bf4ec3f594743442857fb3a8dfe5d2478a04c98f96a0a47365014557cbc0b4b0cee01462c79adca863b93befbf88f876299b75b72c665b5fb84a2c94fbd10316 + languageName: node + linkType: hard + "picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": version: 1.0.1 resolution: "picocolors@npm:1.0.1" @@ -25189,6 +25706,36 @@ __metadata: languageName: node linkType: hard +"postgres-array@npm:~2.0.0": + version: 2.0.0 + resolution: "postgres-array@npm:2.0.0" + checksum: 0e1e659888147c5de579d229a2d95c0d83ebdbffc2b9396d890a123557708c3b758a0a97ed305ce7f58edfa961fa9f0bbcd1ea9f08b6e5df73322e683883c464 + languageName: node + linkType: hard + +"postgres-bytea@npm:~1.0.0": + version: 1.0.1 + resolution: "postgres-bytea@npm:1.0.1" + checksum: fc5fa49f59ac1f0eba841db55bd6b6c2232d1575d1734311e2097a2d5fd8b58e1239cbd64eeaf0b6752268fe7d2819e002bf90b0afd333be9f2b9d157d2cd7e7 + languageName: node + linkType: hard + +"postgres-date@npm:~1.0.4": + version: 1.0.7 + resolution: "postgres-date@npm:1.0.7" + checksum: 5745001d47e51cd767e46bcb1710649cd705d91a24d42fa661c454b6dcbb7353c066a5047983c90a626cd3bbfea9e626cc6fa84a35ec57e5bbb28b49f78e13ed + languageName: node + linkType: hard + +"postgres-interval@npm:^1.1.0": + version: 1.2.0 + resolution: "postgres-interval@npm:1.2.0" + dependencies: + xtend: ^4.0.0 + checksum: 746b71f93805ae33b03528e429dc624706d1f9b20ee81bf743263efb6a0cd79ae02a642a8a480dbc0f09547b4315ab7df6ce5ec0be77ed700bac42730f5c76b2 + languageName: node + linkType: hard + "precinct@npm:^8.1.0": version: 8.3.1 resolution: "precinct@npm:8.3.1" @@ -26953,6 +27500,16 @@ __metadata: languageName: node linkType: hard +"require-in-the-middle@npm:^8.0.0": + version: 8.0.1 + resolution: "require-in-the-middle@npm:8.0.1" + dependencies: + debug: ^4.3.5 + module-details-from-path: ^1.0.3 + checksum: 0de06b99a7e57bdf45b226e41f5c617bbf529a9c845b704e83bccdfe4ab6b6019173b60b4a22a53d8f6907cccec6413c7e509b419156086e52bcfbd458931be1 + languageName: node + linkType: hard + "require-main-filename@npm:^2.0.0": version: 2.0.0 resolution: "require-main-filename@npm:2.0.0" @@ -31169,7 +31726,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:~4.0.1": +"xtend@npm:^4.0.0, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a