Skip to content

Commit decb591

Browse files
author
Luca Forstner
authored
fix(esbuild): Use absolute path for virtual file resolving (#269)
1 parent aaadca7 commit decb591

File tree

3 files changed

+175
-31
lines changed

3 files changed

+175
-31
lines changed

packages/esbuild-plugin/src/index.ts

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,69 @@
11
import { sentryUnpluginFactory, Options, getDebugIdSnippet } from "@sentry/bundler-plugin-core";
22
import type { UnpluginOptions } from "unplugin";
3+
import * as path from "path";
34

45
import { v4 as uuidv4 } from "uuid";
56

67
function esbuildReleaseInjectionPlugin(injectionCode: string): UnpluginOptions {
78
const pluginName = "sentry-esbuild-release-injection-plugin";
8-
const virtualReleaseInjectionFilePath = "_sentry-release-injection-file";
9+
const virtualReleaseInjectionFilePath = path.resolve("_sentry-release-injection-stub"); // needs to be an absolute path for older eslint versions
910

1011
return {
1112
name: pluginName,
1213

1314
esbuild: {
14-
setup({ initialOptions, onLoad }) {
15+
setup({ initialOptions, onLoad, onResolve }) {
1516
initialOptions.inject = initialOptions.inject || [];
1617
initialOptions.inject.push(virtualReleaseInjectionFilePath);
1718

18-
onLoad(
19-
{
20-
filter: /_sentry-release-injection-file$/,
21-
},
22-
() => {
23-
return {
24-
loader: "js",
25-
pluginName,
26-
contents: injectionCode,
27-
};
28-
}
29-
);
19+
onResolve({ filter: /_sentry-release-injection-stub/ }, (args) => {
20+
return {
21+
path: args.path,
22+
sideEffects: true,
23+
pluginName,
24+
};
25+
});
26+
27+
onLoad({ filter: /_sentry-release-injection-stub/ }, () => {
28+
return {
29+
loader: "js",
30+
pluginName,
31+
contents: injectionCode,
32+
};
33+
});
3034
},
3135
},
3236
};
3337
}
3438

3539
function esbuildDebugIdInjectionPlugin(): UnpluginOptions {
3640
const pluginName = "sentry-esbuild-debug-id-injection-plugin";
37-
const virtualReleaseInjectionFilePath = "_sentry-debug-id-injection-file";
38-
39-
const debugIdSnippet = getDebugIdSnippet(uuidv4());
41+
const virtualReleaseInjectionFilePath = path.resolve("_sentry-debug-id-injection-stub"); // needs to be an absolute path for older eslint versions
4042

4143
return {
4244
name: pluginName,
4345

4446
esbuild: {
45-
setup({ initialOptions, onLoad }) {
47+
setup({ initialOptions, onLoad, onResolve }) {
4648
initialOptions.inject = initialOptions.inject || [];
4749
initialOptions.inject.push(virtualReleaseInjectionFilePath);
4850

49-
onLoad(
50-
{
51-
filter: /_sentry-debug-id-injection-file$/,
52-
},
53-
() => {
54-
return {
55-
loader: "js",
56-
pluginName,
57-
contents: debugIdSnippet,
58-
};
59-
}
60-
);
51+
onResolve({ filter: /_sentry-debug-id-injection-stub/ }, (args) => {
52+
return {
53+
path: args.path,
54+
sideEffects: true,
55+
pluginName,
56+
suffix: "?sentry-module-id=" + uuidv4(), // create different module, each time this is resolved
57+
};
58+
});
59+
60+
onLoad({ filter: /_sentry-debug-id-injection-stub/ }, () => {
61+
return {
62+
loader: "js",
63+
pluginName,
64+
contents: getDebugIdSnippet(uuidv4()),
65+
};
66+
});
6167
},
6268
},
6369
};

packages/playground/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"@sentry/node": "7.50",
2424
"@types/express": "^4.17.13",
2525
"@types/http-proxy": "^1.17.9",
26-
"esbuild": "0.14.49",
26+
"esbuild": "0.17.19",
2727
"express": "^4.18.1",
2828
"http-proxy": "^1.18.1",
2929
"rollup": "3.2.0",

yarn.lock

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -977,11 +977,121 @@
977977
dependencies:
978978
"@jridgewell/trace-mapping" "0.3.9"
979979

980+
"@esbuild/android-arm64@0.17.19":
981+
version "0.17.19"
982+
resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
983+
integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
984+
985+
"@esbuild/android-arm@0.17.19":
986+
version "0.17.19"
987+
resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
988+
integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
989+
990+
"@esbuild/android-x64@0.17.19":
991+
version "0.17.19"
992+
resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
993+
integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
994+
995+
"@esbuild/darwin-arm64@0.17.19":
996+
version "0.17.19"
997+
resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276"
998+
integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
999+
1000+
"@esbuild/darwin-x64@0.17.19":
1001+
version "0.17.19"
1002+
resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
1003+
integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
1004+
1005+
"@esbuild/freebsd-arm64@0.17.19":
1006+
version "0.17.19"
1007+
resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
1008+
integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
1009+
1010+
"@esbuild/freebsd-x64@0.17.19":
1011+
version "0.17.19"
1012+
resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
1013+
integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
1014+
1015+
"@esbuild/linux-arm64@0.17.19":
1016+
version "0.17.19"
1017+
resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
1018+
integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
1019+
1020+
"@esbuild/linux-arm@0.17.19":
1021+
version "0.17.19"
1022+
resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
1023+
integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
1024+
1025+
"@esbuild/linux-ia32@0.17.19":
1026+
version "0.17.19"
1027+
resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
1028+
integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
1029+
9801030
"@esbuild/linux-loong64@0.14.54":
9811031
version "0.14.54"
9821032
resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
9831033
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
9841034

1035+
"@esbuild/linux-loong64@0.17.19":
1036+
version "0.17.19"
1037+
resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
1038+
integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
1039+
1040+
"@esbuild/linux-mips64el@0.17.19":
1041+
version "0.17.19"
1042+
resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
1043+
integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
1044+
1045+
"@esbuild/linux-ppc64@0.17.19":
1046+
version "0.17.19"
1047+
resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
1048+
integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
1049+
1050+
"@esbuild/linux-riscv64@0.17.19":
1051+
version "0.17.19"
1052+
resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
1053+
integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
1054+
1055+
"@esbuild/linux-s390x@0.17.19":
1056+
version "0.17.19"
1057+
resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
1058+
integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
1059+
1060+
"@esbuild/linux-x64@0.17.19":
1061+
version "0.17.19"
1062+
resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
1063+
integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
1064+
1065+
"@esbuild/netbsd-x64@0.17.19":
1066+
version "0.17.19"
1067+
resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
1068+
integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
1069+
1070+
"@esbuild/openbsd-x64@0.17.19":
1071+
version "0.17.19"
1072+
resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
1073+
integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
1074+
1075+
"@esbuild/sunos-x64@0.17.19":
1076+
version "0.17.19"
1077+
resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
1078+
integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
1079+
1080+
"@esbuild/win32-arm64@0.17.19":
1081+
version "0.17.19"
1082+
resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
1083+
integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
1084+
1085+
"@esbuild/win32-ia32@0.17.19":
1086+
version "0.17.19"
1087+
resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
1088+
integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
1089+
1090+
"@esbuild/win32-x64@0.17.19":
1091+
version "0.17.19"
1092+
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
1093+
integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
1094+
9851095
"@eslint-community/eslint-utils@^4.2.0":
9861096
version "4.4.0"
9871097
resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
@@ -5251,6 +5361,34 @@ esbuild@0.14.49:
52515361
esbuild-windows-64 "0.14.49"
52525362
esbuild-windows-arm64 "0.14.49"
52535363

5364+
esbuild@0.17.19:
5365+
version "0.17.19"
5366+
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
5367+
integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==
5368+
optionalDependencies:
5369+
"@esbuild/android-arm" "0.17.19"
5370+
"@esbuild/android-arm64" "0.17.19"
5371+
"@esbuild/android-x64" "0.17.19"
5372+
"@esbuild/darwin-arm64" "0.17.19"
5373+
"@esbuild/darwin-x64" "0.17.19"
5374+
"@esbuild/freebsd-arm64" "0.17.19"
5375+
"@esbuild/freebsd-x64" "0.17.19"
5376+
"@esbuild/linux-arm" "0.17.19"
5377+
"@esbuild/linux-arm64" "0.17.19"
5378+
"@esbuild/linux-ia32" "0.17.19"
5379+
"@esbuild/linux-loong64" "0.17.19"
5380+
"@esbuild/linux-mips64el" "0.17.19"
5381+
"@esbuild/linux-ppc64" "0.17.19"
5382+
"@esbuild/linux-riscv64" "0.17.19"
5383+
"@esbuild/linux-s390x" "0.17.19"
5384+
"@esbuild/linux-x64" "0.17.19"
5385+
"@esbuild/netbsd-x64" "0.17.19"
5386+
"@esbuild/openbsd-x64" "0.17.19"
5387+
"@esbuild/sunos-x64" "0.17.19"
5388+
"@esbuild/win32-arm64" "0.17.19"
5389+
"@esbuild/win32-ia32" "0.17.19"
5390+
"@esbuild/win32-x64" "0.17.19"
5391+
52545392
esbuild@^0.14.47:
52555393
version "0.14.54"
52565394
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"

0 commit comments

Comments
 (0)