From d2d12c5d6adeea18e3ef780ccc942cd08e9fb4da Mon Sep 17 00:00:00 2001 From: "Arend van Beelen jr." Date: Mon, 30 Oct 2023 17:16:27 +0100 Subject: [PATCH] Rewrite NPM packages using Rollup --- deno.json | 8 +- deno.lock | 382 +++++++++++++++++- examples/deno-fresh/deno.json | 9 +- justfile | 2 +- packages/autometrics/src/buildInfo.ts | 2 +- .../autometrics/src/exporter-otlp-http/mod.ts | 4 +- .../registerExporterInternal.ts | 2 +- .../exporter-prometheus-push-gateway/mod.ts | 2 +- .../pushGatewayExporter.ts | 8 +- .../exporter-prometheus/PrometheusExporter.ts | 2 +- .../PrometheusSerializer.ts | 8 +- .../src/exporter-prometheus/mod.ts | 2 +- packages/autometrics/src/histograms.ts | 5 +- packages/autometrics/src/instrumentation.ts | 7 +- packages/autometrics/src/temporaryMeter.ts | 2 +- packages/autometrics/src/wrappers.ts | 7 +- .../autometrics/tests/temporality.test.ts | 2 +- packages/autometrics/tests/testUtils.ts | 2 +- scripts/build_npm.ts | 243 ++++++----- tsconfig.json | 9 + 20 files changed, 577 insertions(+), 131 deletions(-) create mode 100644 tsconfig.json diff --git a/deno.json b/deno.json index 8d805c1..433da44 100644 --- a/deno.json +++ b/deno.json @@ -4,6 +4,12 @@ "strict": true }, "imports": { - "$std/": "https://deno.land/std@0.203.0/" + "$std/": "https://deno.land/std@0.203.0/", + "$otel/api": "npm:@opentelemetry/api@^1.6.0", + "$otel/core": "npm:@opentelemetry/core@^1.17.0", + "$otel/exporter-metrics-otlp-http": "npm:@opentelemetry/exporter-metrics-otlp-http@^0.43.0", + "$otel/exporter-prometheus": "npm:@opentelemetry/exporter-prometheus@^0.43.0", + "$otel/resources": "npm:@opentelemetry/resources@^1.17.0", + "$otel/sdk-metrics": "npm:@opentelemetry/sdk-metrics@^1.17.0" } } diff --git a/deno.lock b/deno.lock index 2fdc9cd..e4cc827 100644 --- a/deno.lock +++ b/deno.lock @@ -8,11 +8,114 @@ "npm:@opentelemetry/exporter-prometheus@^0.43.0": "npm:@opentelemetry/exporter-prometheus@0.43.0_@opentelemetry+api@1.6.0", "npm:@opentelemetry/resources@^1.17.0": "npm:@opentelemetry/resources@1.17.0_@opentelemetry+api@1.6.0", "npm:@opentelemetry/sdk-metrics@^1.17.0": "npm:@opentelemetry/sdk-metrics@1.17.0_@opentelemetry+api@1.6.0", + "npm:@rollup/plugin-alias@5.0.1": "npm:@rollup/plugin-alias@5.0.1_rollup@3.29.4", "npm:@types/express@4.17.18": "npm:@types/express@4.17.18", "npm:@types/node": "npm:@types/node@18.16.19", - "npm:express@4.18.2": "npm:express@4.18.2" + "npm:express@4.18.2": "npm:express@4.18.2", + "npm:rollup-plugin-alias": "npm:rollup-plugin-alias@2.2.0", + "npm:rollup-plugin-dts": "npm:rollup-plugin-dts@6.1.0_rollup@3.29.4_typescript@5.2.2", + "npm:rollup-plugin-dts@6.1.0": "npm:rollup-plugin-dts@6.1.0_rollup@3.29.4_typescript@5.2.2", + "npm:rollup-plugin-swc3@0.10.3": "npm:rollup-plugin-swc3@0.10.3_@swc+core@1.3.93_rollup@4.1.4", + "npm:rollup@3.29.4": "npm:rollup@3.29.4" }, "npm": { + "@babel/code-frame@7.22.13": { + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dependencies": { + "@babel/highlight": "@babel/highlight@7.22.20", + "chalk": "chalk@2.4.2" + } + }, + "@babel/helper-validator-identifier@7.22.20": { + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dependencies": {} + }, + "@babel/highlight@7.22.20": { + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dependencies": { + "@babel/helper-validator-identifier": "@babel/helper-validator-identifier@7.22.20", + "chalk": "chalk@2.4.2", + "js-tokens": "js-tokens@4.0.0" + } + }, + "@fastify/deepmerge@1.3.0": { + "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==", + "dependencies": {} + }, + "@jridgewell/sourcemap-codec@1.4.15": { + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dependencies": {} + }, + "@napi-rs/magic-string-android-arm-eabi@0.3.4": { + "integrity": "sha512-sszAYxqtzzJ4FDerDNHcqL9NhqPhj8W4DNiOanXYy50mA5oojlRtaAFPiB5ZMrWDBM32v5Q30LrmxQ4eTtu2Dg==", + "dependencies": {} + }, + "@napi-rs/magic-string-android-arm64@0.3.4": { + "integrity": "sha512-jdQ6HuO0X5rkX4MauTcWR4HWdgjakTOmmzqXg8L26+jOHVVG1LZE+Su5qvV4bP8vMb2h+vPE+JsnwqSmWymu3Q==", + "dependencies": {} + }, + "@napi-rs/magic-string-darwin-arm64@0.3.4": { + "integrity": "sha512-6NmMtvURce9/oq09XBZmuIeI6lPLGtEJ2ZPO/QzL3nLZa6wygiCnO/sFACKYNg5/73ET5HMMTeuogE1JI+r2Lw==", + "dependencies": {} + }, + "@napi-rs/magic-string-darwin-x64@0.3.4": { + "integrity": "sha512-f9LmfMiUAKDOtl0meOuLYeVb6OERrgGzrTg1Tn3R3fTAShM2kxRbfAuPE9ljuXxIFzOv/uqRNLSl/LqCJwpREA==", + "dependencies": {} + }, + "@napi-rs/magic-string-freebsd-x64@0.3.4": { + "integrity": "sha512-rqduQ4odiDK4QdM45xHWRTU4wtFIfpp8g8QGpz+3qqg7ivldDqbbNOrBaf6Oeu77uuEvWggnkyuChotfKgJdJQ==", + "dependencies": {} + }, + "@napi-rs/magic-string-linux-arm-gnueabihf@0.3.4": { + "integrity": "sha512-pVaJEdEpiPqIfq3M4+yMAATS7Z9muDcWYn8H7GFH1ygh8GwgLgKfy/n/lG2M6zp18Mwd0x7E2E/qg9GgCyUzoQ==", + "dependencies": {} + }, + "@napi-rs/magic-string-linux-arm64-gnu@0.3.4": { + "integrity": "sha512-9FwoAih/0tzEZx0BjYYIxWkSRMjonIn91RFM3q3MBs/evmThXUYXUqLNa1PPIkK1JoksswtDi48qWWLt8nGflQ==", + "dependencies": {} + }, + "@napi-rs/magic-string-linux-arm64-musl@0.3.4": { + "integrity": "sha512-wCR7R+WPOcAKmVQc1s6h6HwfwW1vL9pM8BjUY9Ljkdb8wt1LmZEmV2Sgfc1SfbRQzbyl+pKeufP6adRRQVzYDA==", + "dependencies": {} + }, + "@napi-rs/magic-string-linux-x64-gnu@0.3.4": { + "integrity": "sha512-sbxFDpYnt5WFbxQ1xozwOvh5A7IftqSI0WnE9O7KsQIOi0ej2dvFbfOW4tmFkvH/YP8KJELo5AhP2+kEq1DpYA==", + "dependencies": {} + }, + "@napi-rs/magic-string-linux-x64-musl@0.3.4": { + "integrity": "sha512-jN4h/7e2Ul8v3UK5IZu38NXLMdzVWhY4uEDlnwuUAhwRh26wBQ1/pLD97Uy/Z3dFNBQPcsv60XS9fOM1YDNT6w==", + "dependencies": {} + }, + "@napi-rs/magic-string-win32-arm64-msvc@0.3.4": { + "integrity": "sha512-gMUyTRHLWpzX2ntJFCbW2Gnla9Y/WUmbkZuW5SBAo/Jo8QojHn76Y4PNgnoXdzcsV9b/45RBxurYKAfFg9WTyg==", + "dependencies": {} + }, + "@napi-rs/magic-string-win32-ia32-msvc@0.3.4": { + "integrity": "sha512-QIMauMOvEHgL00K9np/c9CT/CRtLOz3mRTQqcZ9XGzSoAMrpxH71KSpDJrKl7h7Ro6TZ+hJ0C3T+JVuTCZNv4A==", + "dependencies": {} + }, + "@napi-rs/magic-string-win32-x64-msvc@0.3.4": { + "integrity": "sha512-V8FMSf828MzOI3P6/765MR7zHU6CUZqiyPhmAnwYoKFNxfv7oCviN/G6NcENeCdcYOvNgh5fYzaNLB96ndId5A==", + "dependencies": {} + }, + "@napi-rs/magic-string@0.3.4": { + "integrity": "sha512-DEWl/B99RQsyMT3F9bvrXuhL01/eIQp/dtNSE3G1jQ4mTGRcP4iHWxoPZ577WrbjUinrNgvRA5+08g8fkPgimQ==", + "dependencies": { + "@napi-rs/magic-string-android-arm-eabi": "@napi-rs/magic-string-android-arm-eabi@0.3.4", + "@napi-rs/magic-string-android-arm64": "@napi-rs/magic-string-android-arm64@0.3.4", + "@napi-rs/magic-string-darwin-arm64": "@napi-rs/magic-string-darwin-arm64@0.3.4", + "@napi-rs/magic-string-darwin-x64": "@napi-rs/magic-string-darwin-x64@0.3.4", + "@napi-rs/magic-string-freebsd-x64": "@napi-rs/magic-string-freebsd-x64@0.3.4", + "@napi-rs/magic-string-linux-arm-gnueabihf": "@napi-rs/magic-string-linux-arm-gnueabihf@0.3.4", + "@napi-rs/magic-string-linux-arm64-gnu": "@napi-rs/magic-string-linux-arm64-gnu@0.3.4", + "@napi-rs/magic-string-linux-arm64-musl": "@napi-rs/magic-string-linux-arm64-musl@0.3.4", + "@napi-rs/magic-string-linux-x64-gnu": "@napi-rs/magic-string-linux-x64-gnu@0.3.4", + "@napi-rs/magic-string-linux-x64-musl": "@napi-rs/magic-string-linux-x64-musl@0.3.4", + "@napi-rs/magic-string-win32-arm64-msvc": "@napi-rs/magic-string-win32-arm64-msvc@0.3.4", + "@napi-rs/magic-string-win32-ia32-msvc": "@napi-rs/magic-string-win32-ia32-msvc@0.3.4", + "@napi-rs/magic-string-win32-x64-msvc": "@napi-rs/magic-string-win32-x64-msvc@0.3.4" + } + }, "@opentelemetry/api-logs@0.43.0": { "integrity": "sha512-0CXMOYPXgAdLM2OzVkiUfAL6QQwWVhnMfUXCqLsITY42FZ9TxAhZIHkoc4mfVxvPuXsBnRYGR8UQZX86p87z4A==", "dependencies": { @@ -108,6 +211,135 @@ "integrity": "sha512-+fguCd2d8d2qruk0H0DsCEy2CTK3t0Tugg7MhZ/UQMvmewbZLNnJ6heSYyzIZWG5IPfAXzoj4f4F/qpM7l4VBA==", "dependencies": {} }, + "@rollup/plugin-alias@5.0.1_rollup@3.29.4": { + "integrity": "sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q==", + "dependencies": { + "rollup": "rollup@3.29.4", + "slash": "slash@4.0.0" + } + }, + "@rollup/pluginutils@5.0.5_rollup@4.1.4": { + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", + "dependencies": { + "@types/estree": "@types/estree@1.0.3", + "estree-walker": "estree-walker@2.0.2", + "picomatch": "picomatch@2.3.1", + "rollup": "rollup@4.1.4" + } + }, + "@rollup/rollup-android-arm-eabi@4.1.4": { + "integrity": "sha512-WlzkuFvpKl6CLFdc3V6ESPt7gq5Vrimd2Yv9IzKXdOpgbH4cdDSS1JLiACX8toygihtH5OlxyQzhXOph7Ovlpw==", + "dependencies": {} + }, + "@rollup/rollup-android-arm64@4.1.4": { + "integrity": "sha512-D1e+ABe56T9Pq2fD+R3ybe1ylCDzu3tY4Qm2Mj24R9wXNCq35+JbFbOpc2yrroO2/tGhTobmEl2Bm5xfE/n8RA==", + "dependencies": {} + }, + "@rollup/rollup-darwin-arm64@4.1.4": { + "integrity": "sha512-7vTYrgEiOrjxnjsgdPB+4i7EMxbVp7XXtS+50GJYj695xYTTEMn3HZVEvgtwjOUkAP/Q4HDejm4fIAjLeAfhtg==", + "dependencies": {} + }, + "@rollup/rollup-darwin-x64@4.1.4": { + "integrity": "sha512-eGJVZScKSLZkYjhTAESCtbyTBq9SXeW9+TX36ki5gVhDqJtnQ5k0f9F44jNK5RhAMgIj0Ht9+n6HAgH0gUUyWQ==", + "dependencies": {} + }, + "@rollup/rollup-linux-arm-gnueabihf@4.1.4": { + "integrity": "sha512-HnigYSEg2hOdX1meROecbk++z1nVJDpEofw9V2oWKqOWzTJlJf1UXVbDE6Hg30CapJxZu5ga4fdAQc/gODDkKg==", + "dependencies": {} + }, + "@rollup/rollup-linux-arm64-gnu@4.1.4": { + "integrity": "sha512-TzJ+N2EoTLWkaClV2CUhBlj6ljXofaYzF/R9HXqQ3JCMnCHQZmQnbnZllw7yTDp0OG5whP4gIPozR4QiX+00MQ==", + "dependencies": {} + }, + "@rollup/rollup-linux-arm64-musl@4.1.4": { + "integrity": "sha512-aVPmNMdp6Dlo2tWkAduAD/5TL/NT5uor290YvjvFvCv0Q3L7tVdlD8MOGDL+oRSw5XKXKAsDzHhUOPUNPRHVTQ==", + "dependencies": {} + }, + "@rollup/rollup-linux-x64-gnu@4.1.4": { + "integrity": "sha512-77Fb79ayiDad0grvVsz4/OB55wJRyw9Ao+GdOBA9XywtHpuq5iRbVyHToGxWquYWlEf6WHFQQnFEttsAzboyKg==", + "dependencies": {} + }, + "@rollup/rollup-linux-x64-musl@4.1.4": { + "integrity": "sha512-/t6C6niEQTqmQTVTD9TDwUzxG91Mlk69/v0qodIPUnjjB3wR4UA3klg+orR2SU3Ux2Cgf2pWPL9utK80/1ek8g==", + "dependencies": {} + }, + "@rollup/rollup-win32-arm64-msvc@4.1.4": { + "integrity": "sha512-ZY5BHHrOPkMbCuGWFNpJH0t18D2LU6GMYKGaqaWTQ3CQOL57Fem4zE941/Ek5pIsVt70HyDXssVEFQXlITI5Gg==", + "dependencies": {} + }, + "@rollup/rollup-win32-ia32-msvc@4.1.4": { + "integrity": "sha512-XG2mcRfFrJvYyYaQmvCIvgfkaGinfXrpkBuIbJrTl9SaIQ8HumheWTIwkNz2mktCKwZfXHQNpO7RgXLIGQ7HXA==", + "dependencies": {} + }, + "@rollup/rollup-win32-x64-msvc@4.1.4": { + "integrity": "sha512-ANFqWYPwkhIqPmXw8vm0GpBEHiPpqcm99jiiAp71DbCSqLDhrtr019C5vhD0Bw4My+LmMvciZq6IsWHqQpl2ZQ==", + "dependencies": {} + }, + "@swc/core-darwin-arm64@1.3.93": { + "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", + "dependencies": {} + }, + "@swc/core-darwin-x64@1.3.93": { + "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", + "dependencies": {} + }, + "@swc/core-linux-arm-gnueabihf@1.3.93": { + "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", + "dependencies": {} + }, + "@swc/core-linux-arm64-gnu@1.3.93": { + "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", + "dependencies": {} + }, + "@swc/core-linux-arm64-musl@1.3.93": { + "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", + "dependencies": {} + }, + "@swc/core-linux-x64-gnu@1.3.93": { + "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", + "dependencies": {} + }, + "@swc/core-linux-x64-musl@1.3.93": { + "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", + "dependencies": {} + }, + "@swc/core-win32-arm64-msvc@1.3.93": { + "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", + "dependencies": {} + }, + "@swc/core-win32-ia32-msvc@1.3.93": { + "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", + "dependencies": {} + }, + "@swc/core-win32-x64-msvc@1.3.93": { + "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", + "dependencies": {} + }, + "@swc/core@1.3.93": { + "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", + "dependencies": { + "@swc/core-darwin-arm64": "@swc/core-darwin-arm64@1.3.93", + "@swc/core-darwin-x64": "@swc/core-darwin-x64@1.3.93", + "@swc/core-linux-arm-gnueabihf": "@swc/core-linux-arm-gnueabihf@1.3.93", + "@swc/core-linux-arm64-gnu": "@swc/core-linux-arm64-gnu@1.3.93", + "@swc/core-linux-arm64-musl": "@swc/core-linux-arm64-musl@1.3.93", + "@swc/core-linux-x64-gnu": "@swc/core-linux-x64-gnu@1.3.93", + "@swc/core-linux-x64-musl": "@swc/core-linux-x64-musl@1.3.93", + "@swc/core-win32-arm64-msvc": "@swc/core-win32-arm64-msvc@1.3.93", + "@swc/core-win32-ia32-msvc": "@swc/core-win32-ia32-msvc@1.3.93", + "@swc/core-win32-x64-msvc": "@swc/core-win32-x64-msvc@1.3.93", + "@swc/counter": "@swc/counter@0.1.2", + "@swc/types": "@swc/types@0.1.5" + } + }, + "@swc/counter@0.1.2": { + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dependencies": {} + }, + "@swc/types@0.1.5": { + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dependencies": {} + }, "@types/body-parser@1.19.3": { "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", "dependencies": { @@ -121,6 +353,10 @@ "@types/node": "@types/node@18.16.19" } }, + "@types/estree@1.0.3": { + "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", + "dependencies": {} + }, "@types/express-serve-static-core@4.17.37": { "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", "dependencies": { @@ -185,6 +421,12 @@ "negotiator": "negotiator@0.6.3" } }, + "ansi-styles@3.2.1": { + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "color-convert@1.9.3" + } + }, "array-flatten@1.1.1": { "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dependencies": {} @@ -217,6 +459,24 @@ "get-intrinsic": "get-intrinsic@1.2.1" } }, + "chalk@2.4.2": { + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "ansi-styles@3.2.1", + "escape-string-regexp": "escape-string-regexp@1.0.5", + "supports-color": "supports-color@5.5.0" + } + }, + "color-convert@1.9.3": { + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "color-name@1.1.3" + } + }, + "color-name@1.1.3": { + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dependencies": {} + }, "content-disposition@0.5.4": { "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { @@ -261,6 +521,14 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dependencies": {} }, + "escape-string-regexp@1.0.5": { + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dependencies": {} + }, + "estree-walker@2.0.2": { + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dependencies": {} + }, "etag@1.8.1": { "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dependencies": {} @@ -321,6 +589,10 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dependencies": {} }, + "fsevents@2.3.3": { + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dependencies": {} + }, "function-bind@1.1.1": { "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dependencies": {} @@ -334,6 +606,16 @@ "has-symbols": "has-symbols@1.0.3" } }, + "get-tsconfig@4.7.2": { + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dependencies": { + "resolve-pkg-maps": "resolve-pkg-maps@1.0.0" + } + }, + "has-flag@3.0.0": { + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dependencies": {} + }, "has-proto@1.0.1": { "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dependencies": {} @@ -372,10 +654,20 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dependencies": {} }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dependencies": {} + }, "lodash.merge@4.6.2": { "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dependencies": {} }, + "magic-string@0.30.5": { + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "@jridgewell/sourcemap-codec@1.4.15" + } + }, "media-typer@0.3.0": { "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dependencies": {} @@ -432,6 +724,10 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dependencies": {} }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dependencies": {} + }, "proxy-addr@2.0.7": { "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { @@ -458,6 +754,68 @@ "unpipe": "unpipe@1.0.0" } }, + "resolve-pkg-maps@1.0.0": { + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dependencies": {} + }, + "rollup-plugin-alias@2.2.0": { + "integrity": "sha512-9ZK410qeFed4gGrHoojBpxLsHF74vPgsheGg9JRW5RbALAxqdvJbd357mSqWBqUrBfRVnZnNUXTZdYLxxQEA5A==", + "dependencies": { + "slash": "slash@3.0.0" + } + }, + "rollup-plugin-dts@6.1.0_rollup@3.29.4_typescript@5.2.2": { + "integrity": "sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==", + "dependencies": { + "@babel/code-frame": "@babel/code-frame@7.22.13", + "magic-string": "magic-string@0.30.5", + "rollup": "rollup@3.29.4", + "typescript": "typescript@5.2.2" + } + }, + "rollup-plugin-swc3@0.10.3_@swc+core@1.3.93_rollup@4.1.4": { + "integrity": "sha512-GWoMkm3ATumN8EPHBKLrpCufcRNn7SfLyvMKWUfCVLidPuPjlQZfNBeQXP6OEiHBguZzriCssX43EnV3+Y54bA==", + "dependencies": { + "@fastify/deepmerge": "@fastify/deepmerge@1.3.0", + "@rollup/pluginutils": "@rollup/pluginutils@5.0.5_rollup@4.1.4", + "@swc/core": "@swc/core@1.3.93", + "get-tsconfig": "get-tsconfig@4.7.2", + "rollup": "rollup@4.1.4", + "rollup-swc-preserve-directives": "rollup-swc-preserve-directives@0.5.0_@swc+core@1.3.93_rollup@3.29.4" + } + }, + "rollup-swc-preserve-directives@0.5.0_@swc+core@1.3.93_rollup@3.29.4": { + "integrity": "sha512-6lnPZn2laSsdYcdCSE28z4Dwg2mCN5loF+/wBjybh25GJmONjHTf3orWa5j1zjEWY3RcGRjJ8K/52ePqtfy6dw==", + "dependencies": { + "@napi-rs/magic-string": "@napi-rs/magic-string@0.3.4", + "@swc/core": "@swc/core@1.3.93", + "rollup": "rollup@3.29.4" + } + }, + "rollup@3.29.4": { + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dependencies": { + "fsevents": "fsevents@2.3.3" + } + }, + "rollup@4.1.4": { + "integrity": "sha512-U8Yk1lQRKqCkDBip/pMYT+IKaN7b7UesK3fLSTuHBoBJacCE+oBqo/dfG/gkUdQNNB2OBmRP98cn2C2bkYZkyw==", + "dependencies": { + "@rollup/rollup-android-arm-eabi": "@rollup/rollup-android-arm-eabi@4.1.4", + "@rollup/rollup-android-arm64": "@rollup/rollup-android-arm64@4.1.4", + "@rollup/rollup-darwin-arm64": "@rollup/rollup-darwin-arm64@4.1.4", + "@rollup/rollup-darwin-x64": "@rollup/rollup-darwin-x64@4.1.4", + "@rollup/rollup-linux-arm-gnueabihf": "@rollup/rollup-linux-arm-gnueabihf@4.1.4", + "@rollup/rollup-linux-arm64-gnu": "@rollup/rollup-linux-arm64-gnu@4.1.4", + "@rollup/rollup-linux-arm64-musl": "@rollup/rollup-linux-arm64-musl@4.1.4", + "@rollup/rollup-linux-x64-gnu": "@rollup/rollup-linux-x64-gnu@4.1.4", + "@rollup/rollup-linux-x64-musl": "@rollup/rollup-linux-x64-musl@4.1.4", + "@rollup/rollup-win32-arm64-msvc": "@rollup/rollup-win32-arm64-msvc@4.1.4", + "@rollup/rollup-win32-ia32-msvc": "@rollup/rollup-win32-ia32-msvc@4.1.4", + "@rollup/rollup-win32-x64-msvc": "@rollup/rollup-win32-x64-msvc@4.1.4", + "fsevents": "fsevents@2.3.3" + } + }, "safe-buffer@5.2.1": { "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dependencies": {} @@ -505,10 +863,24 @@ "object-inspect": "object-inspect@1.12.3" } }, + "slash@3.0.0": { + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dependencies": {} + }, + "slash@4.0.0": { + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dependencies": {} + }, "statuses@2.0.1": { "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dependencies": {} }, + "supports-color@5.5.0": { + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "has-flag@3.0.0" + } + }, "toidentifier@1.0.1": { "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dependencies": {} @@ -520,6 +892,10 @@ "mime-types": "mime-types@2.1.35" } }, + "typescript@5.2.2": { + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dependencies": {} + }, "unpipe@1.0.0": { "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dependencies": {} @@ -534,6 +910,10 @@ } } }, + "redirects": { + "https://esm.sh/rollup-plugin-swc": "https://esm.sh/rollup-plugin-swc@0.2.1", + "https://esm.sh/rollup-plugin-swc3": "https://esm.sh/rollup-plugin-swc3@0.10.3" + }, "remote": { "https://deno.land/std@0.140.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", "https://deno.land/std@0.140.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", diff --git a/examples/deno-fresh/deno.json b/examples/deno-fresh/deno.json index 9a785a2..bb395c6 100644 --- a/examples/deno-fresh/deno.json +++ b/examples/deno-fresh/deno.json @@ -8,11 +8,16 @@ "imports": { "$autometrics/": "../../packages/autometrics/", "$fresh/": "https://deno.land/x/fresh@1.5.2/", + "$otel/api": "npm:@opentelemetry/api@^1.6.0", + "$otel/core": "npm:@opentelemetry/core@^1.17.0", + "$otel/exporter-metrics-otlp-http": "npm:@opentelemetry/exporter-metrics-otlp-http@^0.43.0", + "$otel/resources": "npm:@opentelemetry/resources@^1.17.0", + "$otel/sdk-metrics": "npm:@opentelemetry/sdk-metrics@^1.17.0", + "$std/": "https://deno.land/std@0.203.0/", "preact": "https://esm.sh/preact@10.18.1", "preact/": "https://esm.sh/preact@10.18.1/", "preact-render-to-string": "https://esm.sh/*preact-render-to-string@6.2.2", "@preact/signals": "https://esm.sh/*@preact/signals@1.2.1", - "@preact/signals-core": "https://esm.sh/*@preact/signals-core@1.5.0", - "$std/": "https://deno.land/std@0.203.0/" + "@preact/signals-core": "https://esm.sh/*@preact/signals-core@1.5.0" } } diff --git a/justfile b/justfile index bc2a053..a790a0d 100644 --- a/justfile +++ b/justfile @@ -11,7 +11,7 @@ test_permissions := "--allow-env --allow-net --allow-read --allow-sys" build: (build-npm "") build-npm version: - deno run --allow-env --allow-net=deno.land --allow-read --allow-run=yarn --allow-write=dist scripts/build_npm.ts {{version}} + deno run --allow-env --allow-ffi --allow-net=deno.land --allow-read --allow-run --allow-sys --allow-write=dist scripts/build_npm.ts {{version}} build-examples: #!/usr/bin/env bash diff --git a/packages/autometrics/src/buildInfo.ts b/packages/autometrics/src/buildInfo.ts index e9a2d22..ad76c0c 100644 --- a/packages/autometrics/src/buildInfo.ts +++ b/packages/autometrics/src/buildInfo.ts @@ -1,4 +1,4 @@ -import type { UpDownCounter } from "npm:@opentelemetry/api@^1.6.0"; +import type { UpDownCounter } from "$otel/api"; import { BUILD_INFO_DESCRIPTION, BUILD_INFO_NAME } from "./constants.ts"; import { getMeter } from "./instrumentation.ts"; diff --git a/packages/autometrics/src/exporter-otlp-http/mod.ts b/packages/autometrics/src/exporter-otlp-http/mod.ts index f23daf5..5702204 100644 --- a/packages/autometrics/src/exporter-otlp-http/mod.ts +++ b/packages/autometrics/src/exporter-otlp-http/mod.ts @@ -1,8 +1,8 @@ import { AggregationTemporalityPreference, OTLPMetricExporter, -} from "npm:@opentelemetry/exporter-metrics-otlp-http@^0.43.0"; -import { PeriodicExportingMetricReader } from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +} from "$otel/exporter-metrics-otlp-http"; +import { PeriodicExportingMetricReader } from "$otel/sdk-metrics"; import { BuildInfo, diff --git a/packages/autometrics/src/exporter-otlp-http/registerExporterInternal.ts b/packages/autometrics/src/exporter-otlp-http/registerExporterInternal.ts index abecc85..8ff07b9 100644 --- a/packages/autometrics/src/exporter-otlp-http/registerExporterInternal.ts +++ b/packages/autometrics/src/exporter-otlp-http/registerExporterInternal.ts @@ -1,4 +1,4 @@ -import { MetricReader } from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +import { MetricReader } from "$otel/sdk-metrics"; import { ExporterOptions, registerExporter } from "../../mod.ts"; diff --git a/packages/autometrics/src/exporter-prometheus-push-gateway/mod.ts b/packages/autometrics/src/exporter-prometheus-push-gateway/mod.ts index 31d0b13..8ae471b 100644 --- a/packages/autometrics/src/exporter-prometheus-push-gateway/mod.ts +++ b/packages/autometrics/src/exporter-prometheus-push-gateway/mod.ts @@ -1,4 +1,4 @@ -import { PeriodicExportingMetricReader } from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +import { PeriodicExportingMetricReader } from "$otel/sdk-metrics"; import { BuildInfo, diff --git a/packages/autometrics/src/exporter-prometheus-push-gateway/pushGatewayExporter.ts b/packages/autometrics/src/exporter-prometheus-push-gateway/pushGatewayExporter.ts index 877619f..32b80df 100644 --- a/packages/autometrics/src/exporter-prometheus-push-gateway/pushGatewayExporter.ts +++ b/packages/autometrics/src/exporter-prometheus-push-gateway/pushGatewayExporter.ts @@ -1,14 +1,10 @@ -import { - BindOnceFuture, - ExportResult, - ExportResultCode, -} from "npm:@opentelemetry/core@^1.17.0"; +import { BindOnceFuture, ExportResult, ExportResultCode } from "$otel/core"; import { AggregationTemporality, InstrumentType, PushMetricExporter, ResourceMetrics, -} from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +} from "$otel/sdk-metrics"; import { amLogger } from "../../mod.ts"; import { PrometheusSerializer } from "../exporter-prometheus/PrometheusSerializer.ts"; diff --git a/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts b/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts index 7042ee2..1c225c9 100644 --- a/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts +++ b/packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts @@ -18,7 +18,7 @@ import { Aggregation, AggregationTemporality, MetricReader, -} from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +} from "$otel/sdk-metrics"; import { amLogger } from "../../mod.ts"; import { PrometheusSerializer } from "./PrometheusSerializer.ts"; diff --git a/packages/autometrics/src/exporter-prometheus/PrometheusSerializer.ts b/packages/autometrics/src/exporter-prometheus/PrometheusSerializer.ts index 6b2cbe0..19de813 100644 --- a/packages/autometrics/src/exporter-prometheus/PrometheusSerializer.ts +++ b/packages/autometrics/src/exporter-prometheus/PrometheusSerializer.ts @@ -14,9 +14,9 @@ * limitations under the License. */ -import type { AttributeValue, Attributes } from "npm:@opentelemetry/api@^1.6.0"; -import { hrTimeToMilliseconds } from "npm:@opentelemetry/core@^1.17.0"; -import type { IResource } from "npm:@opentelemetry/resources@^1.17.0"; +import type { AttributeValue, Attributes } from "$otel/api"; +import { hrTimeToMilliseconds } from "$otel/core"; +import type { IResource } from "$otel/resources"; import { DataPoint, DataPointType, @@ -25,7 +25,7 @@ import { MetricData, ResourceMetrics, ScopeMetrics, -} from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +} from "$otel/sdk-metrics"; import { amLogger } from "../../mod.ts"; diff --git a/packages/autometrics/src/exporter-prometheus/mod.ts b/packages/autometrics/src/exporter-prometheus/mod.ts index 3f7ea03..3bf9071 100644 --- a/packages/autometrics/src/exporter-prometheus/mod.ts +++ b/packages/autometrics/src/exporter-prometheus/mod.ts @@ -1,4 +1,4 @@ -import { MetricReader } from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +import { MetricReader } from "$otel/sdk-metrics"; import { BuildInfo, diff --git a/packages/autometrics/src/histograms.ts b/packages/autometrics/src/histograms.ts index c9a2d54..5ebc92c 100644 --- a/packages/autometrics/src/histograms.ts +++ b/packages/autometrics/src/histograms.ts @@ -1,7 +1,4 @@ -import { - ExplicitBucketHistogramAggregation, - View, -} from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +import { ExplicitBucketHistogramAggregation, View } from "$otel/sdk-metrics"; import { HISTOGRAM_NAME } from "./constants.ts"; diff --git a/packages/autometrics/src/instrumentation.ts b/packages/autometrics/src/instrumentation.ts index fb535fb..a80d7b5 100644 --- a/packages/autometrics/src/instrumentation.ts +++ b/packages/autometrics/src/instrumentation.ts @@ -1,8 +1,5 @@ -import type { Meter } from "npm:@opentelemetry/api@^1.6.0"; -import { - MeterProvider, - MetricReader, -} from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +import type { Meter } from "$otel/api"; +import { MeterProvider, MetricReader } from "$otel/sdk-metrics"; import { createDefaultHistogramView } from "./histograms.ts"; import { TemporaryMeter } from "./temporaryMeter.ts"; diff --git a/packages/autometrics/src/temporaryMeter.ts b/packages/autometrics/src/temporaryMeter.ts index 8e56f04..d0da03d 100644 --- a/packages/autometrics/src/temporaryMeter.ts +++ b/packages/autometrics/src/temporaryMeter.ts @@ -13,7 +13,7 @@ import { ObservableUpDownCounter, UpDownCounter, createNoopMeter, -} from "npm:@opentelemetry/api@^1.6.0"; +} from "$otel/api"; import { warn } from "./logger.ts"; diff --git a/packages/autometrics/src/wrappers.ts b/packages/autometrics/src/wrappers.ts index 7498dd6..8bd9245 100644 --- a/packages/autometrics/src/wrappers.ts +++ b/packages/autometrics/src/wrappers.ts @@ -1,6 +1,5 @@ -import { Attributes, ValueType } from "npm:@opentelemetry/api@^1.6.0"; +import { Attributes, ValueType } from "$otel/api"; -import { amLogger } from "../mod.ts"; import { COUNTER_DESCRIPTION, COUNTER_NAME, @@ -517,9 +516,7 @@ export function Autometrics( } default: - amLogger.warn( - "Autometrics decorator can only be used on classes and methods", - ); + warn("Autometrics decorator can only be used on classes and methods"); } }; } diff --git a/packages/autometrics/tests/temporality.test.ts b/packages/autometrics/tests/temporality.test.ts index ab91dbd..e5e487f 100644 --- a/packages/autometrics/tests/temporality.test.ts +++ b/packages/autometrics/tests/temporality.test.ts @@ -1,6 +1,6 @@ import { assertEquals } from "$std/assert/mod.ts"; -import { MetricData } from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +import { MetricData } from "$otel/sdk-metrics"; import { autometrics } from "../mod.ts"; import { COUNTER_NAME } from "../src/constants.ts"; import { diff --git a/packages/autometrics/tests/testUtils.ts b/packages/autometrics/tests/testUtils.ts index 147f24a..9e33e4e 100644 --- a/packages/autometrics/tests/testUtils.ts +++ b/packages/autometrics/tests/testUtils.ts @@ -3,7 +3,7 @@ import { InMemoryMetricExporter, MetricReader, PeriodicExportingMetricReader, -} from "npm:@opentelemetry/sdk-metrics@^1.17.0"; +} from "$otel/sdk-metrics"; import { registerExporter } from "../mod.ts"; import { PrometheusSerializer } from "../src/exporter-prometheus/PrometheusSerializer.ts"; diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts index a7186ae..bf83c2b 100644 --- a/scripts/build_npm.ts +++ b/scripts/build_npm.ts @@ -1,17 +1,24 @@ -import { - build, - emptyDir, - PackageJson, -} from "https://deno.land/x/dnt@0.38.1/mod.ts"; import { bold, cyan, green } from "$std/fmt/colors.ts"; +import { emptyDir, PackageJson } from "https://deno.land/x/dnt@0.38.1/mod.ts"; +import { rollup, Plugin } from "npm:rollup@3.29.4"; +import { dts } from "npm:rollup-plugin-dts@6.1.0"; +import { swc, defineRollupSwcOption } from "npm:rollup-plugin-swc3@0.10.3"; const OUT_DIR = "./dist"; const version = getVersion(); -const exporterMappings = { - "./packages/autometrics/mod.ts": "@autometrics/autometrics", -}; +const { imports } = readJson<{ imports: Record }>( + "./deno.json", +); + +const otelImports = Object.entries(imports) + .filter(([key]) => key.startsWith("$otel/")) + .reduce((imports, [key, value]) => { + // Strip `npm:` prefix and version specifier: + imports[key] = value.slice(4, value.lastIndexOf("@")); + return imports; + }, {} as Record); const packages = { "mod.ts": { @@ -21,6 +28,7 @@ const packages = { "and actually understand them using automatically customized Prometheus queries", readme: "packages/autometrics/README.node.md", mappings: { + ...pick(otelImports, "$otel/api", "$otel/sdk-metrics"), "./packages/autometrics/src/platform.deno.ts": "./packages/autometrics/src/platform.node.ts", }, @@ -29,7 +37,15 @@ const packages = { name: "exporter-otlp-http", description: "Export metrics using OTLP over HTTP/JSON", readme: "packages/autometrics/src/exporter-otlp-http/README.node.md", - mappings: exporterMappings, + mappings: { + ...pick( + otelImports, + "$otel/api", + "$otel/exporter-metrics-otlp-http", + "$otel/sdk-metrics", + ), + "./packages/autometrics/mod.ts": "@autometrics/autometrics", + }, }, "exporter-prometheus.ts": { name: "exporter-prometheus", @@ -37,7 +53,8 @@ const packages = { "Export metrics by pushing them to a Prometheus-compatible gateway", readme: "packages/autometrics/src/exporter-prometheus/README.node.md", mappings: { - ...exporterMappings, + ...pick(otelImports, "$otel/api", "$otel/sdk-metrics"), + "./packages/autometrics/mod.ts": "@autometrics/autometrics", "./packages/autometrics/src/exporter-prometheus/PrometheusExporter.ts": "@opentelemetry/exporter-prometheus", }, @@ -48,19 +65,26 @@ const packages = { readme: "packages/autometrics/src/exporter-prometheus-push-gateway/README.node.md", mappings: { - ...exporterMappings, + ...pick(otelImports, "$otel/api", "$otel/core", "$otel/sdk-metrics"), + "./packages/autometrics/mod.ts": "@autometrics/autometrics", "./packages/autometrics/src/exporter-prometheus/PrometheusSerializer.ts": "@opentelemetry/exporter-prometheus", }, }, }; -const { specifiers } = readJson<{ packages: { specifiers: Array } }>( - "./deno.lock", -).packages; - const packageJsonFields = { version, + type: "module", + exports: { + browser: "./index.web.js", + import: "./index.mjs", + require: "./index.cjs", + }, + main: "./index.cjs", + module: "./index.mjs", + browser: "./index.web.js", + types: "./index.d.ts", author: "Fiberplane ", contributors: [ "Brett Beutell", @@ -87,6 +111,20 @@ const packageJsonFields = { }, }; +const dtsPlugin = dts(); +const swcPlugin = swc( + defineRollupSwcOption({ + jsc: { + target: "es2021", + transform: { + decoratorMetadata: true, + legacyDecorator: true, + }, + }, + sourceMaps: true, + }), +); + for (const [entrypoint, packageInfo] of Object.entries(packages)) { const { name, description, mappings, readme } = packageInfo; console.log(bold(`Building ${cyan(`@autometrics/${name}`)} package...`)); @@ -94,112 +132,83 @@ for (const [entrypoint, packageInfo] of Object.entries(packages)) { const outDir = `${OUT_DIR}/${name}`; await emptyDir(outDir); + const nodeBuild = await rollup({ + input: `./packages/autometrics/${entrypoint}`, + external: ["node:async_hooks", ...Object.values(mappings)], + plugins: [/*dtsPlugin,*/ rewriteMappings(mappings), swcPlugin], + }); + await nodeBuild.write({ file: `${outDir}/index.mjs`, format: "esm" }); + await nodeBuild.write({ file: `${outDir}/index.cjs`, format: "commonjs" }); + await nodeBuild.close(); + + const webBuild = await rollup({ + input: `./packages/autometrics/${entrypoint}`, + external: Object.values(mappings), + plugins: [ + rewriteMappings({ + ...mappings, + "./packages/autometrics/src/platform.deno.ts": + "./packages/autometrics/src/platform.web.ts", + }), + swcPlugin, + ], + }); + await webBuild.write({ file: `${outDir}/index.web.js`, format: "esm" }); + await webBuild.close(); + const packageJson: PackageJson = { name: `@autometrics/${name}`, description, ...packageJsonFields, }; - if (name === "autometrics") { - packageJson.browser = { - "./esm/src/platform.node.js": "./esm/src/platform.web.js", - "./script/src/platform.node.js": "./script/src/platform.web.js", - }; - } else { - packageJson.dependencies = { - // will trigger unmet peer dependency warnings if omitted: - "@opentelemetry/api": getNpmVersionRange("@opentelemetry/api"), - }; - - for (const npmPackage of Object.values(mappings).filter( - (target) => !target.startsWith("."), - )) { - packageJson.dependencies[npmPackage] = + packageJson.dependencies = Object.values(mappings) + .filter((target) => !target.startsWith(".")) + .reduce((dependencies, npmPackage) => { + dependencies[npmPackage] = npmPackage === "@autometrics/autometrics" ? version : getNpmVersionRange(npmPackage); - } - } + return dependencies; + }, {} as Record); - await build({ - entryPoints: [`packages/autometrics/${entrypoint}`], - outDir, - compilerOptions: { - lib: ["ESNext", "DOM"], - }, - shims: { deno: false }, - package: packageJson, - mappings, - packageManager: "yarn", - test: false, - filterDiagnostic: (diagnostic) => - // Ignore messages about `fetch` in Node.js. It's a TODO to have a better - // fallback, but there's already a guard around its usage. - !diagnostic.messageText.toString().includes("Cannot find name 'fetch'"), - async postBuild() { - if (name === "autometrics") { - await buildWebPlatform(); - } + Deno.writeFileSync( + `${OUT_DIR}/${name}/package.json`, + new TextEncoder().encode(JSON.stringify(packageJson, null, 2)), + ); - // steps to run after building and before running the tests - Deno.copyFileSync("LICENSE", `${OUT_DIR}/${name}/LICENSE`); - Deno.copyFileSync(readme, `${OUT_DIR}/${name}/README.md`); - }, - }); + Deno.copyFileSync("LICENSE", `${OUT_DIR}/${name}/LICENSE`); + Deno.copyFileSync(readme, `${OUT_DIR}/${name}/README.md`); } console.log(bold(green("Done."))); -/** - * Builds `platform.web.js` and places it next to the already compiled - * `platform.node.js` to enable the NPM package to support both Node and web. - */ -async function buildWebPlatform() { - const targets = [ - { dir: "esm", module: "es2022" }, - { dir: "script", module: "commonjs" }, - ]; - - for (const { dir, module } of targets) { - const source = "packages/autometrics/src/platform.web.ts"; - const outDir = `dist/autometrics/${dir}/src`; - const command = new Deno.Command("yarn", { - args: ["tsc", "--outDir", outDir, "-m", module, source], - stdout: "inherit", - stderr: "inherit", - }); - const output = await command.output(); - if (!output.success) { - throw new Error(`Could not generate ${outDir}/platform.web.js`); - } - } -} - /** * Returns the version range to use for a given NPM package by extracting it - * from `deno.lock`. + * from the `imports` mapping in `deno.json`. * * This helps us to avoid hard-coding version numbers in this script. */ -function getNpmVersionRange(npmPackageName: string): string { - const keyPrefix = `npm:${npmPackageName}@`; - for (const key of Object.keys(specifiers)) { - if (key.startsWith(keyPrefix)) { - return key.slice(keyPrefix.length); +function getNpmVersionRange(npmPackage: string): string { + const prefix = `npm:${npmPackage}@`; + for (const value of Object.values(imports)) { + if (value.startsWith(prefix)) { + return value.slice(prefix.length); } } - throw new Error( - `Cannot find version range for ${npmPackageName} in deno.lock`, - ); + throw new Error(`Cannot find version range for ${npmPackage} in deno.json`); } /** - * Takes the version from the CLI arguments (defaults to "beta") and returns it - * in the format as it should be in the `package.json`. + * Takes the version from the CLI arguments and returns it in the format as it + * should be in the `package.json`. * * This supports taking GitHub tag refs to extract the version from them and * will strip any leading `v` if present. + * + * If no version is given as a CLI argument, the version specified in the root + * `package.json` is returned. */ function getVersion() { let version = Deno.args[0] || readJson("./package.json").version; @@ -212,7 +221,57 @@ function getVersion() { return version; } +/** + * Creates an object from the specified input object's properties. + */ +export function pick< + T extends Record, + K extends Array, +>(object: T, ...propNames: K): Pick { + return Object.fromEntries( + Object.entries(object).filter(([key]) => propNames.includes(key)), + ) as Pick; +} + function readJson(path: string): T { const decoder = new TextDecoder("utf-8"); return JSON.parse(decoder.decode(Deno.readFileSync(path))); } + +/** + * Rollup plugin for rewriting our mappings. + */ +function rewriteMappings(mappings: Record): Plugin { + const entries = Object.entries(mappings).map(([from, to]) => ({ from, to })); + const cwd = Deno.cwd(); + + return { + name: "rewriteMappings", + async resolveId(importee, importer, resolveOptions) { + // We first call the regular resolver. This allows us to map based on the + // resolved path. + const resolved = await this.resolve( + importee, + importer, + Object.assign({ skipSelf: true }, resolveOptions), + ); + + const mapped = entries.find( + resolved + ? (entry) => { + const path = resolved.id.startsWith(cwd) + ? `./${resolved.id.slice(cwd.length + 1)}` + : resolved.id; + return entry.from === path; + } + : (entry) => entry.from === importee, + ); + + if (mapped) { + return mapped.to.startsWith("./") + ? { id: `${cwd}/${mapped.to.slice(2)}` } + : { id: mapped.to }; + } + }, + }; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..df55aa2 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "lib": ["ESNext"], + "moduleResolution": "Bundler", + "noEmit": true, + "strict": true + } +}