fix(runfiles): permit workspace-absolute labels

Also recognize the environment variables set by rules_js, which differ from rules_nodejs.

fixes https://github.com/aspect-build/rules_js/issues/406
diff --git a/packages/runfiles/runfiles.ts b/packages/runfiles/runfiles.ts
index 37528d8..e067963 100755
--- a/packages/runfiles/runfiles.ts
+++ b/packages/runfiles/runfiles.ts
@@ -44,11 +44,16 @@
                  --spawn_strategy=standalone to the command line.`);
     }
     // Bazel starts actions with pwd=execroot/my_wksp or pwd=runfiles/my_wksp
-    this.workspace = _env['BAZEL_WORKSPACE'] || undefined;
+    this.workspace = _env['BAZEL_WORKSPACE'] || _env['JS_BINARY__WORKSPACE'] || undefined;
     // If target is from an external workspace such as @npm//rollup/bin:rollup
     // resolvePackageRelative is not supported since package is in an external
     // workspace.
-    const target = _env['BAZEL_TARGET'];
+    // However, if the target is formatted as @//some:target that's fine, it's
+    // syntax-sugar for "the workspace the build is in"
+    let target = _env['BAZEL_TARGET'] || _env['JS_BINARY__TARGET'];
+    if (target.startsWith('@//')) {
+      target = target.substring(3)
+    }
     if (!!target && !target.startsWith('@')) {
       // //path/to:target -> path/to
       this.package = target.split(':')[0].replace(/^\/\//, '');