From cba2158b27d159427a740fc16524bf5a28eff2cc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 05:40:20 +0000 Subject: [PATCH 01/11] chore(deps): update dependency aspect_bazel_lib to v2.15.0 --- js/repositories.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/repositories.bzl b/js/repositories.bzl index 25d0e7690..73f6cd3b9 100644 --- a/js/repositories.bzl +++ b/js/repositories.bzl @@ -23,7 +23,7 @@ def rules_js_dependencies(): http_archive( name = "aspect_bazel_lib", - sha256 = "40ba9d0f62deac87195723f0f891a9803a7b720d7b89206981ca5570ef9df15b", - strip_prefix = "bazel-lib-2.14.0", - url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v2.14.0/bazel-lib-v2.14.0.tar.gz", + sha256 = "0b9b764ee5af1cbec01bcd2ca9ebd4aa4bbd700b17d7b8bb015769195fd88d20", + strip_prefix = "bazel-lib-2.15.0", + url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v2.15.0/bazel-lib-v2.15.0.tar.gz", ) From 5f708e89f7bea7b816dd196a16c0a052ff8c1122 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Mon, 21 Apr 2025 23:12:00 -0700 Subject: [PATCH 02/11] test: aliases to local link: packages --- .../npm_translate_lock_LTE4Nzc1MDcwNjU= | 4 +-- e2e/pnpm_lockfiles/base/aliases-test.js | 8 +++++ e2e/pnpm_lockfiles/base/package.json | 1 + e2e/pnpm_lockfiles/lockfile-test.bzl | 5 +++ e2e/pnpm_lockfiles/v54/pnpm-lock.yaml | 2 ++ e2e/pnpm_lockfiles/v54/snapshots/defs.bzl | 34 +++++++++++++++++++ e2e/pnpm_lockfiles/v60/pnpm-lock.yaml | 3 ++ e2e/pnpm_lockfiles/v60/snapshots/defs.bzl | 34 +++++++++++++++++++ e2e/pnpm_lockfiles/v61/pnpm-lock.yaml | 3 ++ e2e/pnpm_lockfiles/v61/snapshots/defs.bzl | 34 +++++++++++++++++++ e2e/pnpm_lockfiles/v90/pnpm-lock.yaml | 3 ++ e2e/pnpm_lockfiles/v90/snapshots/defs.bzl | 34 +++++++++++++++++++ examples/js_lib_pkg/b/package.json | 3 +- examples/js_lib_pkg/b/test.js | 3 +- npm/private/test/snapshots/npm_defs.bzl | 34 +++++++++++++++++++ pnpm-lock.yaml | 3 ++ 16 files changed, 204 insertions(+), 4 deletions(-) diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= b/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= index 9ec82435a..a14a779e1 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU= @@ -4,7 +4,7 @@ .npmrc=-2065072158 examples/js_binary/package.json=-41174383 examples/js_lib_pkg/a/package.json=740602849 -examples/js_lib_pkg/b/package.json=641686424 +examples/js_lib_pkg/b/package.json=-1743538483 examples/linked_consumer/package.json=-1109186228 examples/linked_empty_node_modules/package.json=-1039372825 examples/linked_lib/package.json=1590632845 @@ -32,5 +32,5 @@ npm/private/test/vendored/is-odd/package.json=1041695223 npm/private/test/vendored/lodash-4.17.21.tgz=-1206623349 npm/private/test/vendored/semver-max/package.json=578664053 package.json=1510979981 -pnpm-lock.yaml=314196172 +pnpm-lock.yaml=-1502245311 pnpm-workspace.yaml=854106668 diff --git a/e2e/pnpm_lockfiles/base/aliases-test.js b/e2e/pnpm_lockfiles/base/aliases-test.js index 400665827..d71a57d89 100644 --- a/e2e/pnpm_lockfiles/base/aliases-test.js +++ b/e2e/pnpm_lockfiles/base/aliases-test.js @@ -5,6 +5,14 @@ if (require('@aspect-test/a') !== require('@aspect-test/a2')) { ) } +// Alias to a local package +if ( + require(`@scoped/a/package.json`) !== + require(`alias-project-a/package.json`) +) { + throw new Error(`alias-project-a should be alias of @scoped/a`) +} + // Various other aliases with odd scoping for (const pkg of [ '@aspect-test/a2', diff --git a/e2e/pnpm_lockfiles/base/package.json b/e2e/pnpm_lockfiles/base/package.json index e013c6944..12be38625 100644 --- a/e2e/pnpm_lockfiles/base/package.json +++ b/e2e/pnpm_lockfiles/base/package.json @@ -32,6 +32,7 @@ "@scoped/b": "link:../projects/b", "@scoped/c": "file:../projects/c", "@scoped/d": "../projects/d", + "alias-project-a": "link:../projects/a", "test-c200-d200": "workspace:*", "test-c201-d200": "workspace:*" }, diff --git a/e2e/pnpm_lockfiles/lockfile-test.bzl b/e2e/pnpm_lockfiles/lockfile-test.bzl index eadca3de8..3be434824 100644 --- a/e2e/pnpm_lockfiles/lockfile-test.bzl +++ b/e2e/pnpm_lockfiles/lockfile-test.bzl @@ -72,8 +72,10 @@ def lockfile_test(npm_link_all_packages, name = None): ":node_modules/aspect-test-a/no-at", ":node_modules/@aspect-test-a-bad-scope", ":node_modules/@aspect-test-custom-scope/a", + ":node_modules/@scoped/a", ":node_modules/@types/node", ":node_modules/alias-only-sizzle", + ":node_modules/alias-project-a", ":node_modules/alias-types-node", ":node_modules/is-odd", ":node_modules/is-odd-alias", @@ -151,6 +153,9 @@ def lockfile_test(npm_link_all_packages, name = None): ":node_modules/@aspect-test-custom-scope", # target for the scope ":node_modules/@aspect-test-custom-scope/a", + # alias via link: + ":node_modules/alias-project-a", + # npm: alias to alternate versions ":node_modules/is-odd-v0", ":node_modules/is-odd-v1", diff --git a/e2e/pnpm_lockfiles/v54/pnpm-lock.yaml b/e2e/pnpm_lockfiles/v54/pnpm-lock.yaml index 5ca205b7a..02ac69e8f 100644 --- a/e2e/pnpm_lockfiles/v54/pnpm-lock.yaml +++ b/e2e/pnpm_lockfiles/v54/pnpm-lock.yaml @@ -32,6 +32,7 @@ importers: '@types/archiver': 5.3.1 '@types/node': 16.18.11 alias-only-sizzle: npm:@types/sizzle@~2.3.9 + alias-project-a: link:../projects/a alias-types-node: npm:@types/node@~16.18.11 aspect-test-a-no-scope: npm:@aspect-test/a aspect-test-a/no-at: npm:@aspect-test/a @@ -66,6 +67,7 @@ importers: '@scoped/b': link:../projects/b '@scoped/c': file:../projects/c_@scoped+b@projects+b '@scoped/d': link:../projects/d + alias-project-a: link:../projects/a aspect-test-a-no-scope: /@aspect-test/a/5.0.2 aspect-test-a/no-at: /@aspect-test/a/5.0.2 debug: github.com/ngokevin/debug/9742c5f383a6f8046241920156236ade8ec30d53 diff --git a/e2e/pnpm_lockfiles/v54/snapshots/defs.bzl b/e2e/pnpm_lockfiles/v54/snapshots/defs.bzl index 795971624..4e57004b0 100644 --- a/e2e/pnpm_lockfiles/v54/snapshots/defs.bzl +++ b/e2e/pnpm_lockfiles/v54/snapshots/defs.bzl @@ -460,6 +460,37 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): else: scope_targets["@scoped"].append(link_targets[-1]) + if is_root: + _npm_package_store( + name = ".aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + src = "//projects/a:pkg", + package = "alias-project-a", + version = "0.0.0", + deps = {}, + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + if bazel_package in [""]: + # terminal target for direct dependencies + _npm_link_package_store( + name = "{}/alias-project-a".format(name), + src = "//:.aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + # filegroup target that provides a single file which is + # package directory for use in $(execpath) and $(rootpath) + native.filegroup( + name = "{}/alias-project-a/dir".format(name), + srcs = [":{}/alias-project-a".format(name)], + output_group = "package_directory", + visibility = ["//visibility:public"], + tags = ["manual"], + ) + link_targets.append(":{}/alias-project-a".format(name)) + if is_root: _npm_package_store( name = ".aspect_rules_js/{}/scoped+bad@0.0.0".format(name), @@ -672,6 +703,9 @@ def npm_link_targets(name = "node_modules", package = None): if bazel_package in [""]: link_targets.append(":{}/@scoped/d".format(name)) + if bazel_package in [""]: + link_targets.append(":{}/alias-project-a".format(name)) + if bazel_package in [""]: link_targets.append(":{}/scoped/bad".format(name)) diff --git a/e2e/pnpm_lockfiles/v60/pnpm-lock.yaml b/e2e/pnpm_lockfiles/v60/pnpm-lock.yaml index ed2c69aef..d35b36b0a 100644 --- a/e2e/pnpm_lockfiles/v60/pnpm-lock.yaml +++ b/e2e/pnpm_lockfiles/v60/pnpm-lock.yaml @@ -48,6 +48,9 @@ importers: '@scoped/d': specifier: ../projects/d version: link:../projects/d + alias-project-a: + specifier: link:../projects/a + version: link:../projects/a aspect-test-a-no-scope: specifier: npm:@aspect-test/a version: /@aspect-test/a@5.0.2 diff --git a/e2e/pnpm_lockfiles/v60/snapshots/defs.bzl b/e2e/pnpm_lockfiles/v60/snapshots/defs.bzl index bd2b8b679..681884afe 100644 --- a/e2e/pnpm_lockfiles/v60/snapshots/defs.bzl +++ b/e2e/pnpm_lockfiles/v60/snapshots/defs.bzl @@ -469,6 +469,37 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): else: scope_targets["@scoped"].append(link_targets[-1]) + if is_root: + _npm_package_store( + name = ".aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + src = "//projects/a:pkg", + package = "alias-project-a", + version = "0.0.0", + deps = {}, + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + if bazel_package in [""]: + # terminal target for direct dependencies + _npm_link_package_store( + name = "{}/alias-project-a".format(name), + src = "//:.aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + # filegroup target that provides a single file which is + # package directory for use in $(execpath) and $(rootpath) + native.filegroup( + name = "{}/alias-project-a/dir".format(name), + srcs = [":{}/alias-project-a".format(name)], + output_group = "package_directory", + visibility = ["//visibility:public"], + tags = ["manual"], + ) + link_targets.append(":{}/alias-project-a".format(name)) + if is_root: _npm_package_store( name = ".aspect_rules_js/{}/scoped+bad@0.0.0".format(name), @@ -682,6 +713,9 @@ def npm_link_targets(name = "node_modules", package = None): if bazel_package in [""]: link_targets.append(":{}/@scoped/d".format(name)) + if bazel_package in [""]: + link_targets.append(":{}/alias-project-a".format(name)) + if bazel_package in [""]: link_targets.append(":{}/scoped/bad".format(name)) diff --git a/e2e/pnpm_lockfiles/v61/pnpm-lock.yaml b/e2e/pnpm_lockfiles/v61/pnpm-lock.yaml index 25c256582..b882d9d0f 100644 --- a/e2e/pnpm_lockfiles/v61/pnpm-lock.yaml +++ b/e2e/pnpm_lockfiles/v61/pnpm-lock.yaml @@ -52,6 +52,9 @@ importers: '@scoped/d': specifier: ../projects/d version: link:../projects/d + alias-project-a: + specifier: link:../projects/a + version: link:../projects/a aspect-test-a-no-scope: specifier: npm:@aspect-test/a version: /@aspect-test/a@5.0.2 diff --git a/e2e/pnpm_lockfiles/v61/snapshots/defs.bzl b/e2e/pnpm_lockfiles/v61/snapshots/defs.bzl index bd2b8b679..681884afe 100644 --- a/e2e/pnpm_lockfiles/v61/snapshots/defs.bzl +++ b/e2e/pnpm_lockfiles/v61/snapshots/defs.bzl @@ -469,6 +469,37 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): else: scope_targets["@scoped"].append(link_targets[-1]) + if is_root: + _npm_package_store( + name = ".aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + src = "//projects/a:pkg", + package = "alias-project-a", + version = "0.0.0", + deps = {}, + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + if bazel_package in [""]: + # terminal target for direct dependencies + _npm_link_package_store( + name = "{}/alias-project-a".format(name), + src = "//:.aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + # filegroup target that provides a single file which is + # package directory for use in $(execpath) and $(rootpath) + native.filegroup( + name = "{}/alias-project-a/dir".format(name), + srcs = [":{}/alias-project-a".format(name)], + output_group = "package_directory", + visibility = ["//visibility:public"], + tags = ["manual"], + ) + link_targets.append(":{}/alias-project-a".format(name)) + if is_root: _npm_package_store( name = ".aspect_rules_js/{}/scoped+bad@0.0.0".format(name), @@ -682,6 +713,9 @@ def npm_link_targets(name = "node_modules", package = None): if bazel_package in [""]: link_targets.append(":{}/@scoped/d".format(name)) + if bazel_package in [""]: + link_targets.append(":{}/alias-project-a".format(name)) + if bazel_package in [""]: link_targets.append(":{}/scoped/bad".format(name)) diff --git a/e2e/pnpm_lockfiles/v90/pnpm-lock.yaml b/e2e/pnpm_lockfiles/v90/pnpm-lock.yaml index 99d623676..aef9c7577 100644 --- a/e2e/pnpm_lockfiles/v90/pnpm-lock.yaml +++ b/e2e/pnpm_lockfiles/v90/pnpm-lock.yaml @@ -49,6 +49,9 @@ importers: '@scoped/d': specifier: ../projects/d version: link:../projects/d + alias-project-a: + specifier: link:../projects/a + version: link:../projects/a aspect-test-a-no-scope: specifier: npm:@aspect-test/a version: '@aspect-test/a@5.0.2' diff --git a/e2e/pnpm_lockfiles/v90/snapshots/defs.bzl b/e2e/pnpm_lockfiles/v90/snapshots/defs.bzl index 5f234c621..baba13d84 100644 --- a/e2e/pnpm_lockfiles/v90/snapshots/defs.bzl +++ b/e2e/pnpm_lockfiles/v90/snapshots/defs.bzl @@ -469,6 +469,37 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): else: scope_targets["@scoped"].append(link_targets[-1]) + if is_root: + _npm_package_store( + name = ".aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + src = "//projects/a:pkg", + package = "alias-project-a", + version = "0.0.0", + deps = {}, + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + if bazel_package in [""]: + # terminal target for direct dependencies + _npm_link_package_store( + name = "{}/alias-project-a".format(name), + src = "//:.aspect_rules_js/{}/alias-project-a@0.0.0".format(name), + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + # filegroup target that provides a single file which is + # package directory for use in $(execpath) and $(rootpath) + native.filegroup( + name = "{}/alias-project-a/dir".format(name), + srcs = [":{}/alias-project-a".format(name)], + output_group = "package_directory", + visibility = ["//visibility:public"], + tags = ["manual"], + ) + link_targets.append(":{}/alias-project-a".format(name)) + if is_root: _npm_package_store( name = ".aspect_rules_js/{}/scoped+bad@0.0.0".format(name), @@ -682,6 +713,9 @@ def npm_link_targets(name = "node_modules", package = None): if bazel_package in [""]: link_targets.append(":{}/@scoped/d".format(name)) + if bazel_package in [""]: + link_targets.append(":{}/alias-project-a".format(name)) + if bazel_package in [""]: link_targets.append(":{}/scoped/bad".format(name)) diff --git a/examples/js_lib_pkg/b/package.json b/examples/js_lib_pkg/b/package.json index 7abd2fa51..cb7949a0f 100644 --- a/examples/js_lib_pkg/b/package.json +++ b/examples/js_lib_pkg/b/package.json @@ -1,7 +1,8 @@ { "name": "js_lib_pkg_b", "dependencies": { - "js_lib_pkg_a": "workspace:*" + "js_lib_pkg_a": "workspace:*", + "js_lib_pkg_a-alias": "link:../a" }, "devDependencies": { "@types/node": "18.19.54" diff --git a/examples/js_lib_pkg/b/test.js b/examples/js_lib_pkg/b/test.js index 0b8390fe3..8eeb25dcb 100644 --- a/examples/js_lib_pkg/b/test.js +++ b/examples/js_lib_pkg/b/test.js @@ -1,3 +1,4 @@ const { strict: assert } = require('node:assert') const { test } = require('js_lib_pkg_a') -assert.equal(test, 'test') +const { test: test2 } = require('js_lib_pkg_a-alias') +assert.equal(test, test2, 'test') diff --git a/npm/private/test/snapshots/npm_defs.bzl b/npm/private/test/snapshots/npm_defs.bzl index 7d5724090..60e2e4e07 100644 --- a/npm/private/test/snapshots/npm_defs.bzl +++ b/npm/private/test/snapshots/npm_defs.bzl @@ -2654,6 +2654,37 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): ) link_targets.append(":{}/js_lib_pkg_a".format(name)) + if is_root: + _npm_package_store( + name = ".aspect_rules_js/{}/js_lib_pkg_a-alias@0.0.0".format(name), + src = "//examples/js_lib_pkg/a:pkg", + package = "js_lib_pkg_a-alias", + version = "0.0.0", + deps = {}, + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + if bazel_package in ["examples/js_lib_pkg/b"]: + # terminal target for direct dependencies + _npm_link_package_store( + name = "{}/js_lib_pkg_a-alias".format(name), + src = "//:.aspect_rules_js/{}/js_lib_pkg_a-alias@0.0.0".format(name), + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + # filegroup target that provides a single file which is + # package directory for use in $(execpath) and $(rootpath) + native.filegroup( + name = "{}/js_lib_pkg_a-alias/dir".format(name), + srcs = [":{}/js_lib_pkg_a-alias".format(name)], + output_group = "package_directory", + visibility = ["//visibility:public"], + tags = ["manual"], + ) + link_targets.append(":{}/js_lib_pkg_a-alias".format(name)) + if is_root: _npm_package_store( name = ".aspect_rules_js/{}/@lib+test@0.0.0".format(name), @@ -2985,6 +3016,9 @@ def npm_link_targets(name = "node_modules", package = None): if bazel_package in ["examples/js_lib_pkg/b"]: link_targets.append(":{}/js_lib_pkg_a".format(name)) + if bazel_package in ["examples/js_lib_pkg/b"]: + link_targets.append(":{}/js_lib_pkg_a-alias".format(name)) + if bazel_package in ["examples/linked_consumer"]: link_targets.append(":{}/@lib/test".format(name)) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6715830c4..eb58ad4b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,6 +53,9 @@ importers: js_lib_pkg_a: specifier: workspace:* version: link:../a + js_lib_pkg_a-alias: + specifier: link:../a + version: link:../a devDependencies: '@types/node': specifier: 18.19.54 From 9e87f82f3800f960ab992cb68517feea88fb82fe Mon Sep 17 00:00:00 2001 From: alexeagle <47395+alexeagle@users.noreply.github.com> Date: Tue, 22 Apr 2025 06:50:09 +0000 Subject: [PATCH 03/11] chore: mirror external releases --- npm/private/versions.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/private/versions.bzl b/npm/private/versions.bzl index 5c665eb9e..946654917 100644 --- a/npm/private/versions.bzl +++ b/npm/private/versions.bzl @@ -871,4 +871,5 @@ PNPM_VERSIONS = { "10.7.1": "sha512-LZLIa3ko3IKE9TSU+0IB+YPaZfD7Tw1Auq+lz2KPox2uPllo8SRm8X336XMQ4w80OmSLrqG5s1BoXa+v/99YCA==", "10.8.0": "sha512-DoJxTRtbQ8dGEBk8sgc0iXwdAN6J0OGEIK68WXf6E9eAqcsFc0Yk6B69gcyHbNRkeUhQZBxIuVRDJrViLKKZcQ==", "10.8.1": "sha512-xQCIupmMZ7jKjJnfil4C/Sri4rKaryOP6qnhJCSNP0j5+22yQklJ/5Ac/7teDwzBrWrttgLNKUUHUdEcNQI2dw==", + "10.9.0": "sha512-BIbjlGQNPB+zydQ9Sc+Sh5/3T4UWlZwjUwj1qPYuLhlSimXNwqMFj1h83nHro9W1YyfIwzqX5MQFHKSKEMotXw==", } From f976e6fc4070d57b71c167b7be57a71e511ffbee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 06:06:30 +0000 Subject: [PATCH 04/11] chore(deps): update dependency aspect_bazel_lib to v2.15.3 --- js/repositories.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/repositories.bzl b/js/repositories.bzl index 73f6cd3b9..18126edaa 100644 --- a/js/repositories.bzl +++ b/js/repositories.bzl @@ -23,7 +23,7 @@ def rules_js_dependencies(): http_archive( name = "aspect_bazel_lib", - sha256 = "0b9b764ee5af1cbec01bcd2ca9ebd4aa4bbd700b17d7b8bb015769195fd88d20", - strip_prefix = "bazel-lib-2.15.0", - url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v2.15.0/bazel-lib-v2.15.0.tar.gz", + sha256 = "2be8a5df0b20b0ed37604b050da01dbf7ad45ad44768c0d478b64779b9f58412", + strip_prefix = "bazel-lib-2.15.3", + url = "https://github.com/bazel-contrib/bazel-lib/releases/download/v2.15.3/bazel-lib-v2.15.3.tar.gz", ) From f44732f6abcdb445ca63e78ae45e0afa98083f37 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Wed, 16 Apr 2025 19:51:45 -0700 Subject: [PATCH 05/11] refactor: normalize npm file/link: paths at parse time --- npm/private/npm_translate_lock_generate.bzl | 13 ++++---- npm/private/pnpm.bzl | 37 ++++++++++++++------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/npm/private/npm_translate_lock_generate.bzl b/npm/private/npm_translate_lock_generate.bzl index 088e3aef5..a4cc79fe2 100644 --- a/npm/private/npm_translate_lock_generate.bzl +++ b/npm/private/npm_translate_lock_generate.bzl @@ -122,11 +122,11 @@ sh_binary( } # Look for first-party file: links in packages - for package_info in packages.values(): + for package_key, package_info in packages.items(): name = package_info.get("name") version = package_info.get("version") deps = package_info.get("dependencies") - if version.startswith("file:"): + if package_key.startswith("file:"): if version in packages and packages[version]["id"] and packages[version]["id"].startswith("file:"): dep_path = helpers.link_package(root_package, packages[version]["id"][len("file:"):]) else: @@ -170,17 +170,16 @@ sh_binary( fail(msg) fp_links[dep_key]["link_packages"][link_package] = True elif dep_version.startswith("link:"): - dep_version = dep_version[len("link:"):] - dep_importer = paths.normalize("{}/{}".format(import_path, dep_version) if import_path else dep_version) - dep_path = helpers.link_package(root_package, import_path, dep_version) + dep_link = dep_version[len("link:"):] + dep_path = helpers.link_package(root_package, dep_link) dep_key = "{}+{}".format(dep_package, dep_path) if fp_links.get(dep_key, False): fp_links[dep_key]["link_packages"][link_package] = True else: transitive_deps = {} raw_deps = {} - if importers.get(dep_importer, False): - raw_deps = importers.get(dep_importer).get("deps") + if importers.get(dep_link, False): + raw_deps = importers.get(dep_link).get("deps") for raw_package, raw_version in raw_deps.items(): package_store_name = utils.package_store_name(raw_package, raw_version) dep_store_target = """"//{root_package}:{package_store_root}/{{}}/{package_store_name}".format(name)""".format( diff --git a/npm/private/pnpm.bzl b/npm/private/pnpm.bzl index 4ba936236..90d38da95 100644 --- a/npm/private/pnpm.bzl +++ b/npm/private/pnpm.bzl @@ -1,5 +1,6 @@ "Pnpm lockfile parsing and conversion to rules_js format." +load("@bazel_skylib//lib:paths.bzl", "paths") load("@bazel_skylib//lib:types.bzl", "types") load(":utils.bzl", "DEFAULT_REGISTRY_DOMAIN_SLASH", "utils") @@ -134,7 +135,7 @@ def _strip_v5_default_registry_to_version(name, version): # Strip the default registry/name@ from the version string return version.removeprefix(DEFAULT_REGISTRY_DOMAIN_SLASH + name + "/") -def _convert_v5_importer_dependency_map(specifiers, deps): +def _convert_v5_importer_dependency_map(import_path, specifiers, deps): result = {} for name, version in deps.items(): specifier = specifiers.get(name) @@ -145,6 +146,10 @@ def _convert_v5_importer_dependency_map(specifiers, deps): alias, version = _strip_v5_v6_default_registry(version).lstrip("/").rsplit("/", 1) version = _convert_pnpm_v5_version_peer_dep(version) version = "npm:{}@{}".format(alias, version) + elif version.startswith("link:"): + version = version[:5] + paths.normalize(paths.join(import_path, version[5:])) + elif version.startswith("file:"): + version = _convert_pnpm_v5_version_peer_dep(version) else: # Transition [registry/]name/version[_patch][_peer_data] to a rules_js version format version = _convert_pnpm_v5_version_peer_dep(_strip_v5_default_registry_to_version(name, version)) @@ -158,9 +163,9 @@ def _convert_v5_importers(importers): specifiers = importer.get("specifiers", {}) result[import_path] = _new_import_info( - dependencies = _convert_v5_importer_dependency_map(specifiers, importer.get("dependencies", {})), - dev_dependencies = _convert_v5_importer_dependency_map(specifiers, importer.get("devDependencies", {})), - optional_dependencies = _convert_v5_importer_dependency_map(specifiers, importer.get("optionalDependencies", {})), + dependencies = _convert_v5_importer_dependency_map(import_path, specifiers, importer.get("dependencies", {})), + dev_dependencies = _convert_v5_importer_dependency_map(import_path, specifiers, importer.get("devDependencies", {})), + optional_dependencies = _convert_v5_importer_dependency_map(import_path, specifiers, importer.get("optionalDependencies", {})), ) return result @@ -293,7 +298,7 @@ def _strip_v6_default_registry_to_version(name, version): # Strip the default registry/name@ from the version string return version.removeprefix(DEFAULT_REGISTRY_DOMAIN_SLASH + name + "@") -def _convert_pnpm_v6_importer_dependency_map(deps): +def _convert_pnpm_v6_importer_dependency_map(import_path, deps): result = {} for name, attributes in deps.items(): specifier = attributes.get("specifier") @@ -305,6 +310,10 @@ def _convert_pnpm_v6_importer_dependency_map(deps): alias, version = _split_name_at_version(_strip_v5_v6_default_registry(version).lstrip("/")) version = _convert_pnpm_v6_v9_version_peer_dep(version) version = "npm:{}@{}".format(alias, version) + elif version.startswith("link:"): + version = version[:5] + paths.normalize(paths.join(import_path, version[5:])) + elif version.startswith("file:"): + version = _convert_pnpm_v6_v9_version_peer_dep(version) else: # Transition [registry/]name@version[(peer)(data)] to a rules_js version format version = _convert_pnpm_v6_v9_version_peer_dep(_strip_v6_default_registry_to_version(name, version)) @@ -339,9 +348,9 @@ def _convert_v6_importers(importers): result = {} for import_path, importer in importers.items(): result[import_path] = _new_import_info( - dependencies = _convert_pnpm_v6_importer_dependency_map(importer.get("dependencies", {})), - dev_dependencies = _convert_pnpm_v6_importer_dependency_map(importer.get("devDependencies", {})), - optional_dependencies = _convert_pnpm_v6_importer_dependency_map(importer.get("optionalDependencies", {})), + dependencies = _convert_pnpm_v6_importer_dependency_map(import_path, importer.get("dependencies", {})), + dev_dependencies = _convert_pnpm_v6_importer_dependency_map(import_path, importer.get("devDependencies", {})), + optional_dependencies = _convert_pnpm_v6_importer_dependency_map(import_path, importer.get("optionalDependencies", {})), ) return result @@ -443,7 +452,7 @@ def _convert_pnpm_v9_package_dependency_map(snapshots, deps): result[name] = _convert_pnpm_v9_package_dependency_version(snapshots, name, version) return result -def _convert_pnpm_v9_importer_dependency_map(deps): +def _convert_pnpm_v9_importer_dependency_map(import_path, deps): result = {} for name, attributes in deps.items(): specifier = attributes.get("specifier") @@ -455,6 +464,10 @@ def _convert_pnpm_v9_importer_dependency_map(deps): if specifier.startswith("npm:") and not specifier.startswith("npm:{}@".format(name)): # Keep the npm: specifier for aliased dependencies version = "npm:{}".format(version) + elif version.startswith("link:"): + version = version[:5] + paths.normalize(paths.join(import_path, version[5:])) + elif version.startswith("file:"): + version = _convert_pnpm_v6_v9_version_peer_dep(version) result[name] = version return result @@ -466,9 +479,9 @@ def _convert_v9_importers(importers): result = {} for import_path, importer in importers.items(): result[import_path] = _new_import_info( - dependencies = _convert_pnpm_v9_importer_dependency_map(importer.get("dependencies", {})), - dev_dependencies = _convert_pnpm_v9_importer_dependency_map(importer.get("devDependencies", {})), - optional_dependencies = _convert_pnpm_v9_importer_dependency_map(importer.get("optionalDependencies", {})), + dependencies = _convert_pnpm_v9_importer_dependency_map(import_path, importer.get("dependencies", {})), + dev_dependencies = _convert_pnpm_v9_importer_dependency_map(import_path, importer.get("devDependencies", {})), + optional_dependencies = _convert_pnpm_v9_importer_dependency_map(import_path, importer.get("optionalDependencies", {})), ) return result From 30e32e8193d257a5d413ec99b8f1cb68bb46ad92 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Wed, 23 Apr 2025 01:59:14 -0700 Subject: [PATCH 06/11] refactor: remove unnecessary label path distinction --- npm/private/npm_import.bzl | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/npm/private/npm_import.bzl b/npm/private/npm_import.bzl index 4192e565f..8b92c718f 100644 --- a/npm/private/npm_import.bzl +++ b/npm/private/npm_import.bzl @@ -667,12 +667,7 @@ def _npm_import_links_rule_impl(rctx): deps[dep_store_target].append(dep_name) else: for (dep_name, dep_version) in rctx.attr.deps.items(): - if dep_version.startswith("link:") or dep_version.startswith("file:"): - dep_store_target = """"//{root_package}:{package_store_root}/{{}}/{package_store_name}".format(link_root_name)""" - else: - dep_store_target = """":{package_store_root}/{{}}/{package_store_name}".format(link_root_name)""" - dep_store_target = dep_store_target.format( - root_package = rctx.attr.root_package, + dep_store_target = """":{package_store_root}/{{}}/{package_store_name}".format(link_root_name)""".format( package_store_name = utils.package_store_name(dep_name, dep_version), package_store_root = utils.package_store_root, ) From 12ddc9eaf203bcde053a32a297512330245554d0 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Wed, 23 Apr 2025 02:18:01 -0700 Subject: [PATCH 07/11] refactor: remove use of pnpm <9 lockfile id field --- npm/private/npm_translate_lock_generate.bzl | 10 ++++----- npm/private/pnpm.bzl | 23 +-------------------- npm/private/test/parse_pnpm_lock_tests.bzl | 2 -- 3 files changed, 5 insertions(+), 30 deletions(-) diff --git a/npm/private/npm_translate_lock_generate.bzl b/npm/private/npm_translate_lock_generate.bzl index a4cc79fe2..8997ae54a 100644 --- a/npm/private/npm_translate_lock_generate.bzl +++ b/npm/private/npm_translate_lock_generate.bzl @@ -122,15 +122,13 @@ sh_binary( } # Look for first-party file: links in packages - for package_key, package_info in packages.items(): + for package_info in packages.values(): name = package_info.get("name") version = package_info.get("version") deps = package_info.get("dependencies") - if package_key.startswith("file:"): - if version in packages and packages[version]["id"] and packages[version]["id"].startswith("file:"): - dep_path = helpers.link_package(root_package, packages[version]["id"][len("file:"):]) - else: - dep_path = helpers.link_package(root_package, version[len("file:"):]) + resolution = package_info.get("resolution") + if resolution.get("type", None) == "directory": + dep_path = helpers.link_package(root_package, resolution.get("directory")) dep_key = "{}+{}".format(name, version) transitive_deps = {} for raw_package, raw_version in deps.items(): diff --git a/npm/private/pnpm.bzl b/npm/private/pnpm.bzl index 90d38da95..59f10feb3 100644 --- a/npm/private/pnpm.bzl +++ b/npm/private/pnpm.bzl @@ -35,14 +35,6 @@ def _new_import_info(dependencies, dev_dependencies, optional_dependencies): # have data normalized across lockfiles. # # Args: -# id: a "universal identifier of the package" only present when the id is not the same as the key -# Normally present when the package is an odd version (such as file: or link: package) while -# also having peer dependencies in the key. -# -# Removed in lockfile v9+ where snapshots/packages are separate. -# -# See https://github.com/pnpm/spec/blob/master/lockfile/6.0.md#packagesdependencypathid -# # name: # version: # dependencies: @@ -65,9 +57,8 @@ def _new_import_info(dependencies, dev_dependencies, optional_dependencies): # See https://github.com/pnpm/spec/blob/master/lockfile/6.0.md#packagesdependencypathrequiresbuild # # resolution: the lockfile resolution field -def _new_package_info(id, name, dependencies, optional_dependencies, dev_only, has_bin, optional, requires_build, version, friendly_version, resolution): +def _new_package_info(name, dependencies, optional_dependencies, dev_only, has_bin, optional, requires_build, version, friendly_version, resolution): return { - "id": id, "name": name, "dependencies": dependencies, "optional_dependencies": optional_dependencies, @@ -241,7 +232,6 @@ def _convert_v5_packages(packages): package_key = _to_package_key(name, version) package_info = _new_package_info( - id = package_snapshot.get("id", None), name = name, version = version, friendly_version = friendly_version, @@ -412,7 +402,6 @@ def _convert_v6_packages(packages): package_key = _to_package_key(name, version) package_info = _new_package_info( - id = package_snapshot.get("id", None), name = name, version = version, friendly_version = friendly_version, @@ -543,16 +532,7 @@ def _convert_v9_packages(packages, snapshots): package_key = _convert_pnpm_v6_v9_version_peer_dep(package_key) - # pnpm v9+ no longer contains an id field - # but we will use it to support some edge cases - id = None - if version.startswith("file:"): - # Keep the file: path as the 'id' for later use when linking to the path - peer_index = version.find("(") - if peer_index != -1: - id = version[:peer_index] - version, friendly_version = _convert_v9_file_package_version(version, package_data) version = _convert_pnpm_v6_v9_version_peer_dep(version) @@ -565,7 +545,6 @@ def _convert_v9_packages(packages, snapshots): friendly_version = package_data["version"] if "version" in package_data else static_key[version_index + 1:] package_info = _new_package_info( - id = id, name = name, version = version, friendly_version = friendly_version, diff --git a/npm/private/test/parse_pnpm_lock_tests.bzl b/npm/private/test/parse_pnpm_lock_tests.bzl index c62d98362..b36cac0b0 100644 --- a/npm/private/test/parse_pnpm_lock_tests.bzl +++ b/npm/private/test/parse_pnpm_lock_tests.bzl @@ -27,7 +27,6 @@ expected_importers = { } expected_packages = { "@aspect-test/a@5.0.0": { - "id": None, "name": "@aspect-test/a", "dependencies": { "@aspect-test/b": "5.0.0", @@ -46,7 +45,6 @@ expected_packages = { }, }, "lodash@4.17.21": { - "id": None, "name": "lodash", "dependencies": {}, "optional_dependencies": {}, From b4ee6f63458b08fc0e64998a730f827f9e5c5c1b Mon Sep 17 00:00:00 2001 From: David Zbarsky Date: Wed, 23 Apr 2025 16:38:30 -0400 Subject: [PATCH 08/11] perf: make better use of macros in generated package_json.bzl files (#2155) --- .bazelrc | 2 + .../v54/snapshots/rollup3_package_json.bzl | 72 ++++++---------- .../v54/snapshots/rollup_package_json.bzl | 72 ++++++---------- .../v60/snapshots/rollup3_package_json.bzl | 72 ++++++---------- .../v60/snapshots/rollup_package_json.bzl | 72 ++++++---------- .../v61/snapshots/rollup3_package_json.bzl | 72 ++++++---------- .../v61/snapshots/rollup_package_json.bzl | 72 ++++++---------- .../v90/snapshots/rollup3_package_json.bzl | 72 ++++++---------- .../v90/snapshots/rollup_package_json.bzl | 72 ++++++---------- npm/private/BUILD.bazel | 2 + npm/private/npm_import.bzl | 83 +++++++++++++------ npm/private/test/snapshots/package_json.bzl | 72 ++++++---------- .../snapshots/package_json_with_dashes.bzl | 72 ++++++---------- 13 files changed, 330 insertions(+), 477 deletions(-) diff --git a/.bazelrc b/.bazelrc index 0498dd01d..2766b0045 100644 --- a/.bazelrc +++ b/.bazelrc @@ -8,6 +8,8 @@ import %workspace%/.aspect/bazelrc/performance.bazelrc ### YOUR PROJECT SPECIFIC OPTIONS GO HERE ### +common --repo_env=CACHE_BUSTER="04/05/2025" + # We have some empty globs in rules_js common --noincompatible_disallow_empty_glob diff --git a/e2e/pnpm_lockfiles/v54/snapshots/rollup3_package_json.bzl b/e2e/pnpm_lockfiles/v54/snapshots/rollup3_package_json.bzl index 5aec8f3de..776ae8930 100644 --- a/e2e/pnpm_lockfiles/v54/snapshots/rollup3_package_json.bzl +++ b/e2e/pnpm_lockfiles/v54/snapshots/rollup3_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@3.29.4" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@3.29.4" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/e2e/pnpm_lockfiles/v54/snapshots/rollup_package_json.bzl b/e2e/pnpm_lockfiles/v54/snapshots/rollup_package_json.bzl index fd61e273f..cf712bbdd 100644 --- a/e2e/pnpm_lockfiles/v54/snapshots/rollup_package_json.bzl +++ b/e2e/pnpm_lockfiles/v54/snapshots/rollup_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@2.14.0" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@2.14.0" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/e2e/pnpm_lockfiles/v60/snapshots/rollup3_package_json.bzl b/e2e/pnpm_lockfiles/v60/snapshots/rollup3_package_json.bzl index 5aec8f3de..776ae8930 100644 --- a/e2e/pnpm_lockfiles/v60/snapshots/rollup3_package_json.bzl +++ b/e2e/pnpm_lockfiles/v60/snapshots/rollup3_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@3.29.4" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@3.29.4" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/e2e/pnpm_lockfiles/v60/snapshots/rollup_package_json.bzl b/e2e/pnpm_lockfiles/v60/snapshots/rollup_package_json.bzl index fd61e273f..cf712bbdd 100644 --- a/e2e/pnpm_lockfiles/v60/snapshots/rollup_package_json.bzl +++ b/e2e/pnpm_lockfiles/v60/snapshots/rollup_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@2.14.0" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@2.14.0" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/e2e/pnpm_lockfiles/v61/snapshots/rollup3_package_json.bzl b/e2e/pnpm_lockfiles/v61/snapshots/rollup3_package_json.bzl index 5aec8f3de..776ae8930 100644 --- a/e2e/pnpm_lockfiles/v61/snapshots/rollup3_package_json.bzl +++ b/e2e/pnpm_lockfiles/v61/snapshots/rollup3_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@3.29.4" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@3.29.4" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/e2e/pnpm_lockfiles/v61/snapshots/rollup_package_json.bzl b/e2e/pnpm_lockfiles/v61/snapshots/rollup_package_json.bzl index fd61e273f..cf712bbdd 100644 --- a/e2e/pnpm_lockfiles/v61/snapshots/rollup_package_json.bzl +++ b/e2e/pnpm_lockfiles/v61/snapshots/rollup_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@2.14.0" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@2.14.0" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/e2e/pnpm_lockfiles/v90/snapshots/rollup3_package_json.bzl b/e2e/pnpm_lockfiles/v90/snapshots/rollup3_package_json.bzl index 5aec8f3de..776ae8930 100644 --- a/e2e/pnpm_lockfiles/v90/snapshots/rollup3_package_json.bzl +++ b/e2e/pnpm_lockfiles/v90/snapshots/rollup3_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@3.29.4" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@3.29.4" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@3.29.4".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/e2e/pnpm_lockfiles/v90/snapshots/rollup_package_json.bzl b/e2e/pnpm_lockfiles/v90/snapshots/rollup_package_json.bzl index fd61e273f..cf712bbdd 100644 --- a/e2e/pnpm_lockfiles/v90/snapshots/rollup_package_json.bzl +++ b/e2e/pnpm_lockfiles/v90/snapshots/rollup_package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@2.14.0" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@2.14.0" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "./dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "./dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/npm/private/BUILD.bazel b/npm/private/BUILD.bazel index 2dbe2be7c..8bc3865df 100644 --- a/npm/private/BUILD.bazel +++ b/npm/private/BUILD.bazel @@ -91,9 +91,11 @@ bzl_library( ":starlark_codegen_utils", ":tar", ":utils", + "@aspect_bazel_lib//lib:directory_path", "@aspect_bazel_lib//lib:repo_utils", "@aspect_bazel_lib//lib:repositories", "@aspect_bazel_lib//lib:utils", + "@aspect_rules_js//js:defs", "@bazel_skylib//lib:dicts", "@bazel_tools//tools/build_defs/repo:git_worker.bzl", ], diff --git a/npm/private/npm_import.bzl b/npm/private/npm_import.bzl index 8b92c718f..ad91ec735 100644 --- a/npm/private/npm_import.bzl +++ b/npm/private/npm_import.bzl @@ -17,7 +17,9 @@ See [`npm_translate_lock`](#npm_translate_lock) for the primary user-facing API for a given lockfile. """ +load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") load("@aspect_bazel_lib//lib:repo_utils.bzl", "patch", "repo_utils") +load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") load("@bazel_skylib//lib:dicts.bzl", "dicts") load("@bazel_skylib//lib:paths.bzl", "paths") load( @@ -252,59 +254,91 @@ def npm_link_imported_package( return (link_targets, scoped_targets) """ -_BIN_MACRO_TMPL = """ -def _{bin_name}_internal(name, link_root_name, **kwargs): - store_target_name = "{package_store_root}/{{}}/{package_store_name}".format(link_root_name) +def bin_internal(name, link_workspace_and_package, link_root_name, package_store_name, bin_path, bin_mnemonic, **kwargs): + target = "%s:%s/%s/%s" % (link_workspace_and_package, utils.package_store_root, link_root_name, package_store_name) _directory_path( name = "%s__entry_point" % name, - directory = "@{link_workspace}//{root_package}:{{}}/dir".format(store_target_name), - path = "{bin_path}", + directory = target + "/dir", + path = bin_path, tags = ["manual"], ) _js_binary( name = "%s__js_binary" % name, entry_point = ":%s__entry_point" % name, - data = ["@{link_workspace}//{root_package}:{{}}".format(store_target_name)], + data = [target], include_npm = kwargs.pop("include_npm", False), tags = ["manual"], ) _js_run_binary( name = name, tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "{bin_mnemonic}"), + mnemonic = kwargs.pop("mnemonic", bin_mnemonic), **kwargs ) -def _{bin_name}_test_internal(name, link_root_name, **kwargs): - store_target_name = "{package_store_root}/{{}}/{package_store_name}".format(link_root_name) +def bin_test_internal(name, link_workspace_and_package, link_root_name, package_store_name, bin_path, **kwargs): + target = "%s:%s/%s/%s" % (link_workspace_and_package, utils.package_store_root, link_root_name, package_store_name) _directory_path( name = "%s__entry_point" % name, - directory = "@{link_workspace}//{root_package}:{{}}/dir".format(store_target_name), - path = "{bin_path}", + directory = target + "/dir", + path = bin_path, tags = ["manual"], ) _js_test( name = name, entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@{link_workspace}//{root_package}:{{}}".format(store_target_name)], + data = kwargs.pop("data", []) + [target], **kwargs ) -def _{bin_name}_binary_internal(name, link_root_name, **kwargs): - store_target_name = "{package_store_root}/{{}}/{package_store_name}".format(link_root_name) +def bin_binary_internal(name, link_workspace_and_package, link_root_name, package_store_name, bin_path, **kwargs): + target = "%s:%s/%s/%s" % (link_workspace_and_package, utils.package_store_root, link_root_name, package_store_name) _directory_path( name = "%s__entry_point" % name, - directory = "@{link_workspace}//{root_package}:{{}}/dir".format(store_target_name), - path = "{bin_path}", + directory = target + "/dir", + path = bin_path, tags = ["manual"], ) _js_binary( name = name, entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@{link_workspace}//{root_package}:{{}}".format(store_target_name)], + data = kwargs.pop("data", []) + [target], **kwargs ) +_BIN_MACRO_TMPL = """ +def _{bin_name}_internal(name, link_root_name, **kwargs): + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "{bin_path}", + bin_mnemonic = "{bin_mnemonic}", + **kwargs, + ) + +def _{bin_name}_test_internal(name, link_root_name, **kwargs): + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "{bin_path}", + **kwargs, + ) + + +def _{bin_name}_binary_internal(name, link_root_name, **kwargs): + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "{bin_path}", + **kwargs, + ) + def {bin_name}(name, **kwargs): _{bin_name}_internal(name, "node_modules", **kwargs) @@ -331,8 +365,7 @@ bzl_library( name = "{name}_bzl_library", srcs = ["{src}"], deps = [ - "@aspect_bazel_lib//lib:directory_path", - "@aspect_rules_js//js:defs", + "@aspect_rules_js//npm/private:npm_import", ], visibility = ["//visibility:public"], )""" @@ -523,8 +556,10 @@ def _npm_import_rule_impl(rctx): for link_package in rctx.attr.link_packages.keys(): bin_bzl = [ generated_by_prefix, - """load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path")""", - """load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test")""", + """load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal")""", + "", + '_link_workspace_and_package = "@%s//%s"' % (rctx.attr.link_workspace, rctx.attr.root_package), + '_package_store_name = "%s"' % package_store_name, ] for name in bins: bin_name = _sanitize_bin_name(name) @@ -533,12 +568,6 @@ def _npm_import_rule_impl(rctx): bin_name = bin_name, bin_mnemonic = _mnemonic_for_bin(bin_name), bin_path = bins[name], - link_workspace = rctx.attr.link_workspace, - package = rctx.attr.package, - root_package = rctx.attr.root_package, - version = rctx.attr.version, - package_store_name = package_store_name, - package_store_root = utils.package_store_root, ), ) diff --git a/npm/private/test/snapshots/package_json.bzl b/npm/private/test/snapshots/package_json.bzl index fa1b4075b..a571bbee8 100644 --- a/npm/private/test/snapshots/package_json.bzl +++ b/npm/private/test/snapshots/package_json.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package rollup@2.70.2" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "rollup@2.70.2" def _rollup_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.70.2".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "Rollup"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + bin_mnemonic = "Rollup", + **kwargs, ) def _rollup_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.70.2".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) + def _rollup_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/rollup@2.70.2".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "dist/bin/rollup", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "dist/bin/rollup", + **kwargs, ) def rollup(name, **kwargs): diff --git a/npm/private/test/snapshots/package_json_with_dashes.bzl b/npm/private/test/snapshots/package_json_with_dashes.bzl index b0830f610..9eec94458 100644 --- a/npm/private/test/snapshots/package_json_with_dashes.bzl +++ b/npm/private/test/snapshots/package_json_with_dashes.bzl @@ -1,58 +1,40 @@ "@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package webpack-bundle-analyzer@4.5.0_bufferutil_4.0.8" -load("@aspect_bazel_lib//lib:directory_path.bzl", _directory_path = "directory_path") -load("@aspect_rules_js//js:defs.bzl", _js_binary = "js_binary", _js_run_binary = "js_run_binary", _js_test = "js_test") +load("@aspect_rules_js//npm/private:npm_import.bzl", "bin_binary_internal", "bin_internal", "bin_test_internal") + +_link_workspace_and_package = "@@//" +_package_store_name = "webpack-bundle-analyzer@4.5.0_bufferutil_4.0.8" def _webpack_bundle_analyzer_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/webpack-bundle-analyzer@4.5.0_bufferutil_4.0.8".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "lib/bin/analyzer.js", - tags = ["manual"], - ) - _js_binary( - name = "%s__js_binary" % name, - entry_point = ":%s__entry_point" % name, - data = ["@@//:{}".format(store_target_name)], - include_npm = kwargs.pop("include_npm", False), - tags = ["manual"], - ) - _js_run_binary( - name = name, - tool = ":%s__js_binary" % name, - mnemonic = kwargs.pop("mnemonic", "WebpackBundleAnalyzer"), - **kwargs + bin_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "lib/bin/analyzer.js", + bin_mnemonic = "WebpackBundleAnalyzer", + **kwargs, ) def _webpack_bundle_analyzer_test_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/webpack-bundle-analyzer@4.5.0_bufferutil_4.0.8".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "lib/bin/analyzer.js", - tags = ["manual"], - ) - _js_test( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_test_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "lib/bin/analyzer.js", + **kwargs, ) + def _webpack_bundle_analyzer_binary_internal(name, link_root_name, **kwargs): - store_target_name = ".aspect_rules_js/{}/webpack-bundle-analyzer@4.5.0_bufferutil_4.0.8".format(link_root_name) - _directory_path( - name = "%s__entry_point" % name, - directory = "@@//:{}/dir".format(store_target_name), - path = "lib/bin/analyzer.js", - tags = ["manual"], - ) - _js_binary( - name = name, - entry_point = ":%s__entry_point" % name, - data = kwargs.pop("data", []) + ["@@//:{}".format(store_target_name)], - **kwargs + bin_binary_internal( + name, + link_workspace_and_package = _link_workspace_and_package, + link_root_name = link_root_name, + package_store_name = _package_store_name, + bin_path = "lib/bin/analyzer.js", + **kwargs, ) def webpack_bundle_analyzer(name, **kwargs): From 7149f69d376a8a90b3388d83a91d3017d7cfca6e Mon Sep 17 00:00:00 2001 From: David Zbarsky Date: Wed, 23 Apr 2025 17:22:56 -0400 Subject: [PATCH 09/11] perf: make better use of macros in generated defs.bzl files (#2157) --- .bazelrc | 2 - .../bzlmod/segfault-handler_defs.bzl | 642 +++++++----------- .../snapshots/wksp/segfault-handler_defs.bzl | 642 +++++++----------- .../snapshots/aspect_test_c_links_defs.bzl | 165 ++--- .../v54/snapshots/rollup_links_defs.bzl | 172 ++--- .../v60/snapshots/rollup_links_defs.bzl | 172 ++--- .../v61/snapshots/rollup_links_defs.bzl | 172 ++--- .../v90/snapshots/rollup_links_defs.bzl | 172 ++--- npm/private/BUILD.bazel | 3 + npm/private/npm_import.bzl | 424 +++++++----- .../test/snapshots/fsevents_links_defs.bzl | 235 ++----- .../test/snapshots/rollup_links_defs.bzl | 172 ++--- .../test/snapshots/unused_links_defs.bzl | 183 ++--- 13 files changed, 1213 insertions(+), 1943 deletions(-) diff --git a/.bazelrc b/.bazelrc index 2766b0045..0498dd01d 100644 --- a/.bazelrc +++ b/.bazelrc @@ -8,8 +8,6 @@ import %workspace%/.aspect/bazelrc/performance.bazelrc ### YOUR PROJECT SPECIFIC OPTIONS GO HERE ### -common --repo_env=CACHE_BUSTER="04/05/2025" - # We have some empty globs in rules_js common --noincompatible_disallow_empty_glob diff --git a/e2e/gyp_no_install_script/snapshots/bzlmod/segfault-handler_defs.bzl b/e2e/gyp_no_install_script/snapshots/bzlmod/segfault-handler_defs.bzl index 25c755265..ad0d61c6f 100644 --- a/e2e/gyp_no_install_script/snapshots/bzlmod/segfault-handler_defs.bzl +++ b/e2e/gyp_no_install_script/snapshots/bzlmod/segfault-handler_defs.bzl @@ -4,370 +4,258 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") -load("@aspect_rules_js//js:defs.bzl", _js_run_binary = "js_run_binary") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") -# buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_package_internal.bzl", _npm_package_internal = "npm_package_internal") +PACKAGE = "segfault-handler" +VERSION = "1.3.0" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "segfault-handler@1.3.0" # Generated npm_package_store targets for npm package segfault-handler@1.3.0 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package segfault-handler@1.3.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/@gar+promisify@1.1.3/pkg".format(link_root_name): "@gar/promisify", - ":.aspect_rules_js/{}/@npmcli+fs@2.1.2/pkg".format(link_root_name): "@npmcli/fs", - ":.aspect_rules_js/{}/@npmcli+move-file@2.0.1/pkg".format(link_root_name): "@npmcli/move-file", - ":.aspect_rules_js/{}/@tootallnate+once@2.0.0/pkg".format(link_root_name): "@tootallnate/once", - ":.aspect_rules_js/{}/abbrev@1.1.1/pkg".format(link_root_name): "abbrev", - ":.aspect_rules_js/{}/agent-base@6.0.2/pkg".format(link_root_name): "agent-base", - ":.aspect_rules_js/{}/agentkeepalive@4.2.1/pkg".format(link_root_name): "agentkeepalive", - ":.aspect_rules_js/{}/aggregate-error@3.1.0/pkg".format(link_root_name): "aggregate-error", - ":.aspect_rules_js/{}/ansi-regex@5.0.1/pkg".format(link_root_name): "ansi-regex", - ":.aspect_rules_js/{}/aproba@2.0.0/pkg".format(link_root_name): "aproba", - ":.aspect_rules_js/{}/are-we-there-yet@3.0.1/pkg".format(link_root_name): "are-we-there-yet", - ":.aspect_rules_js/{}/balanced-match@1.0.2/pkg".format(link_root_name): "balanced-match", - ":.aspect_rules_js/{}/bindings@1.5.0/pkg".format(link_root_name): "bindings", - ":.aspect_rules_js/{}/brace-expansion@1.1.11/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/brace-expansion@2.0.1/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/cacache@16.1.3/pkg".format(link_root_name): "cacache", - ":.aspect_rules_js/{}/chownr@2.0.0/pkg".format(link_root_name): "chownr", - ":.aspect_rules_js/{}/clean-stack@2.2.0/pkg".format(link_root_name): "clean-stack", - ":.aspect_rules_js/{}/color-support@1.1.3/pkg".format(link_root_name): "color-support", - ":.aspect_rules_js/{}/concat-map@0.0.1/pkg".format(link_root_name): "concat-map", - ":.aspect_rules_js/{}/console-control-strings@1.1.0/pkg".format(link_root_name): "console-control-strings", - ":.aspect_rules_js/{}/debug@4.3.4/pkg".format(link_root_name): "debug", - ":.aspect_rules_js/{}/delegates@1.0.0/pkg".format(link_root_name): "delegates", - ":.aspect_rules_js/{}/depd@1.1.2/pkg".format(link_root_name): "depd", - ":.aspect_rules_js/{}/emoji-regex@8.0.0/pkg".format(link_root_name): "emoji-regex", - ":.aspect_rules_js/{}/encoding@0.1.13/pkg".format(link_root_name): "encoding", - ":.aspect_rules_js/{}/env-paths@2.2.1/pkg".format(link_root_name): "env-paths", - ":.aspect_rules_js/{}/err-code@2.0.3/pkg".format(link_root_name): "err-code", - ":.aspect_rules_js/{}/file-uri-to-path@1.0.0/pkg".format(link_root_name): "file-uri-to-path", - ":.aspect_rules_js/{}/fs-minipass@2.1.0/pkg".format(link_root_name): "fs-minipass", - ":.aspect_rules_js/{}/fs.realpath@1.0.0/pkg".format(link_root_name): "fs.realpath", - ":.aspect_rules_js/{}/gauge@4.0.4/pkg".format(link_root_name): "gauge", - ":.aspect_rules_js/{}/glob@7.2.3/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/glob@8.1.0/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/graceful-fs@4.2.10/pkg".format(link_root_name): "graceful-fs", - ":.aspect_rules_js/{}/has-unicode@2.0.1/pkg".format(link_root_name): "has-unicode", - ":.aspect_rules_js/{}/http-cache-semantics@4.1.1/pkg".format(link_root_name): "http-cache-semantics", - ":.aspect_rules_js/{}/http-proxy-agent@5.0.0/pkg".format(link_root_name): "http-proxy-agent", - ":.aspect_rules_js/{}/https-proxy-agent@5.0.1/pkg".format(link_root_name): "https-proxy-agent", - ":.aspect_rules_js/{}/humanize-ms@1.2.1/pkg".format(link_root_name): "humanize-ms", - ":.aspect_rules_js/{}/iconv-lite@0.6.3/pkg".format(link_root_name): "iconv-lite", - ":.aspect_rules_js/{}/imurmurhash@0.1.4/pkg".format(link_root_name): "imurmurhash", - ":.aspect_rules_js/{}/indent-string@4.0.0/pkg".format(link_root_name): "indent-string", - ":.aspect_rules_js/{}/infer-owner@1.0.4/pkg".format(link_root_name): "infer-owner", - ":.aspect_rules_js/{}/inflight@1.0.6/pkg".format(link_root_name): "inflight", - ":.aspect_rules_js/{}/inherits@2.0.4/pkg".format(link_root_name): "inherits", - ":.aspect_rules_js/{}/ip@2.0.0/pkg".format(link_root_name): "ip", - ":.aspect_rules_js/{}/is-fullwidth-code-point@3.0.0/pkg".format(link_root_name): "is-fullwidth-code-point", - ":.aspect_rules_js/{}/is-lambda@1.0.1/pkg".format(link_root_name): "is-lambda", - ":.aspect_rules_js/{}/isexe@2.0.0/pkg".format(link_root_name): "isexe", - ":.aspect_rules_js/{}/lru-cache@6.0.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/lru-cache@7.17.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/make-fetch-happen@10.2.1/pkg".format(link_root_name): "make-fetch-happen", - ":.aspect_rules_js/{}/minimatch@3.1.2/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minimatch@5.1.6/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minipass@3.3.6/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass@4.2.4/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass-collect@1.0.2/pkg".format(link_root_name): "minipass-collect", - ":.aspect_rules_js/{}/minipass-fetch@2.1.2/pkg".format(link_root_name): "minipass-fetch", - ":.aspect_rules_js/{}/minipass-flush@1.0.5/pkg".format(link_root_name): "minipass-flush", - ":.aspect_rules_js/{}/minipass-pipeline@1.2.4/pkg".format(link_root_name): "minipass-pipeline", - ":.aspect_rules_js/{}/minipass-sized@1.0.3/pkg".format(link_root_name): "minipass-sized", - ":.aspect_rules_js/{}/minizlib@2.1.2/pkg".format(link_root_name): "minizlib", - ":.aspect_rules_js/{}/mkdirp@1.0.4/pkg".format(link_root_name): "mkdirp", - ":.aspect_rules_js/{}/ms@2.1.3/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/ms@2.1.2/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/nan@2.17.0/pkg".format(link_root_name): "nan", - ":.aspect_rules_js/{}/negotiator@0.6.3/pkg".format(link_root_name): "negotiator", - ":.aspect_rules_js/{}/node-gyp@9.3.1/pkg".format(link_root_name): "node-gyp", - ":.aspect_rules_js/{}/nopt@6.0.0/pkg".format(link_root_name): "nopt", - ":.aspect_rules_js/{}/npmlog@6.0.2/pkg".format(link_root_name): "npmlog", - ":.aspect_rules_js/{}/once@1.4.0/pkg".format(link_root_name): "once", - ":.aspect_rules_js/{}/p-map@4.0.0/pkg".format(link_root_name): "p-map", - ":.aspect_rules_js/{}/path-is-absolute@1.0.1/pkg".format(link_root_name): "path-is-absolute", - ":.aspect_rules_js/{}/promise-inflight@1.0.1/pkg".format(link_root_name): "promise-inflight", - ":.aspect_rules_js/{}/promise-retry@2.0.1/pkg".format(link_root_name): "promise-retry", - ":.aspect_rules_js/{}/readable-stream@3.6.1/pkg".format(link_root_name): "readable-stream", - ":.aspect_rules_js/{}/retry@0.12.0/pkg".format(link_root_name): "retry", - ":.aspect_rules_js/{}/rimraf@3.0.2/pkg".format(link_root_name): "rimraf", - ":.aspect_rules_js/{}/safe-buffer@5.2.1/pkg".format(link_root_name): "safe-buffer", - ":.aspect_rules_js/{}/safer-buffer@2.1.2/pkg".format(link_root_name): "safer-buffer", - ":.aspect_rules_js/{}/segfault-handler@1.3.0/pkg".format(link_root_name): "segfault-handler", - ":.aspect_rules_js/{}/semver@7.3.8/pkg".format(link_root_name): "semver", - ":.aspect_rules_js/{}/set-blocking@2.0.0/pkg".format(link_root_name): "set-blocking", - ":.aspect_rules_js/{}/signal-exit@3.0.7/pkg".format(link_root_name): "signal-exit", - ":.aspect_rules_js/{}/smart-buffer@4.2.0/pkg".format(link_root_name): "smart-buffer", - ":.aspect_rules_js/{}/socks@2.7.1/pkg".format(link_root_name): "socks", - ":.aspect_rules_js/{}/socks-proxy-agent@7.0.0/pkg".format(link_root_name): "socks-proxy-agent", - ":.aspect_rules_js/{}/ssri@9.0.1/pkg".format(link_root_name): "ssri", - ":.aspect_rules_js/{}/string-width@4.2.3/pkg".format(link_root_name): "string-width", - ":.aspect_rules_js/{}/string_decoder@1.3.0/pkg".format(link_root_name): "string_decoder", - ":.aspect_rules_js/{}/strip-ansi@6.0.1/pkg".format(link_root_name): "strip-ansi", - ":.aspect_rules_js/{}/tar@6.1.13/pkg".format(link_root_name): "tar", - ":.aspect_rules_js/{}/unique-filename@2.0.1/pkg".format(link_root_name): "unique-filename", - ":.aspect_rules_js/{}/unique-slug@3.0.0/pkg".format(link_root_name): "unique-slug", - ":.aspect_rules_js/{}/util-deprecate@1.0.2/pkg".format(link_root_name): "util-deprecate", - ":.aspect_rules_js/{}/which@2.0.2/pkg".format(link_root_name): "which", - ":.aspect_rules_js/{}/wide-align@1.1.5/pkg".format(link_root_name): "wide-align", - ":.aspect_rules_js/{}/wrappy@1.0.2/pkg".format(link_root_name): "wrappy", - ":.aspect_rules_js/{}/yallist@4.0.0/pkg".format(link_root_name): "yallist", - } - ref_deps = { - ":.aspect_rules_js/{}/bindings@1.5.0/ref".format(link_root_name): "bindings", - ":.aspect_rules_js/{}/nan@2.17.0/ref".format(link_root_name): "nan", - ":.aspect_rules_js/{}/node-gyp@9.3.1/ref".format(link_root_name): "node-gyp", - } - - store_target_name = ".aspect_rules_js/{}/segfault-handler@1.3.0".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", - dev = False, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if True else "@@aspect_rules_js~~npm~npm__segfault-handler__1.3.0//:pkg", - package = "segfault-handler", - version = "1.3.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@aspect_rules_js~~npm~npm__segfault-handler__1.3.0//:pkg", - package = "segfault-handler", - version = "1.3.0", - dev = False, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - lc_deps = { - ":.aspect_rules_js/{}/@gar+promisify@1.1.3/pkg".format(link_root_name): "@gar/promisify", - ":.aspect_rules_js/{}/@npmcli+fs@2.1.2/pkg".format(link_root_name): "@npmcli/fs", - ":.aspect_rules_js/{}/@npmcli+move-file@2.0.1/pkg".format(link_root_name): "@npmcli/move-file", - ":.aspect_rules_js/{}/@tootallnate+once@2.0.0/pkg".format(link_root_name): "@tootallnate/once", - ":.aspect_rules_js/{}/abbrev@1.1.1/pkg".format(link_root_name): "abbrev", - ":.aspect_rules_js/{}/agent-base@6.0.2/pkg".format(link_root_name): "agent-base", - ":.aspect_rules_js/{}/agentkeepalive@4.2.1/pkg".format(link_root_name): "agentkeepalive", - ":.aspect_rules_js/{}/aggregate-error@3.1.0/pkg".format(link_root_name): "aggregate-error", - ":.aspect_rules_js/{}/ansi-regex@5.0.1/pkg".format(link_root_name): "ansi-regex", - ":.aspect_rules_js/{}/aproba@2.0.0/pkg".format(link_root_name): "aproba", - ":.aspect_rules_js/{}/are-we-there-yet@3.0.1/pkg".format(link_root_name): "are-we-there-yet", - ":.aspect_rules_js/{}/balanced-match@1.0.2/pkg".format(link_root_name): "balanced-match", - ":.aspect_rules_js/{}/bindings@1.5.0/pkg".format(link_root_name): "bindings", - ":.aspect_rules_js/{}/brace-expansion@1.1.11/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/brace-expansion@2.0.1/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/cacache@16.1.3/pkg".format(link_root_name): "cacache", - ":.aspect_rules_js/{}/chownr@2.0.0/pkg".format(link_root_name): "chownr", - ":.aspect_rules_js/{}/clean-stack@2.2.0/pkg".format(link_root_name): "clean-stack", - ":.aspect_rules_js/{}/color-support@1.1.3/pkg".format(link_root_name): "color-support", - ":.aspect_rules_js/{}/concat-map@0.0.1/pkg".format(link_root_name): "concat-map", - ":.aspect_rules_js/{}/console-control-strings@1.1.0/pkg".format(link_root_name): "console-control-strings", - ":.aspect_rules_js/{}/debug@4.3.4/pkg".format(link_root_name): "debug", - ":.aspect_rules_js/{}/delegates@1.0.0/pkg".format(link_root_name): "delegates", - ":.aspect_rules_js/{}/depd@1.1.2/pkg".format(link_root_name): "depd", - ":.aspect_rules_js/{}/emoji-regex@8.0.0/pkg".format(link_root_name): "emoji-regex", - ":.aspect_rules_js/{}/encoding@0.1.13/pkg".format(link_root_name): "encoding", - ":.aspect_rules_js/{}/env-paths@2.2.1/pkg".format(link_root_name): "env-paths", - ":.aspect_rules_js/{}/err-code@2.0.3/pkg".format(link_root_name): "err-code", - ":.aspect_rules_js/{}/file-uri-to-path@1.0.0/pkg".format(link_root_name): "file-uri-to-path", - ":.aspect_rules_js/{}/fs-minipass@2.1.0/pkg".format(link_root_name): "fs-minipass", - ":.aspect_rules_js/{}/fs.realpath@1.0.0/pkg".format(link_root_name): "fs.realpath", - ":.aspect_rules_js/{}/gauge@4.0.4/pkg".format(link_root_name): "gauge", - ":.aspect_rules_js/{}/glob@7.2.3/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/glob@8.1.0/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/graceful-fs@4.2.10/pkg".format(link_root_name): "graceful-fs", - ":.aspect_rules_js/{}/has-unicode@2.0.1/pkg".format(link_root_name): "has-unicode", - ":.aspect_rules_js/{}/http-cache-semantics@4.1.1/pkg".format(link_root_name): "http-cache-semantics", - ":.aspect_rules_js/{}/http-proxy-agent@5.0.0/pkg".format(link_root_name): "http-proxy-agent", - ":.aspect_rules_js/{}/https-proxy-agent@5.0.1/pkg".format(link_root_name): "https-proxy-agent", - ":.aspect_rules_js/{}/humanize-ms@1.2.1/pkg".format(link_root_name): "humanize-ms", - ":.aspect_rules_js/{}/iconv-lite@0.6.3/pkg".format(link_root_name): "iconv-lite", - ":.aspect_rules_js/{}/imurmurhash@0.1.4/pkg".format(link_root_name): "imurmurhash", - ":.aspect_rules_js/{}/indent-string@4.0.0/pkg".format(link_root_name): "indent-string", - ":.aspect_rules_js/{}/infer-owner@1.0.4/pkg".format(link_root_name): "infer-owner", - ":.aspect_rules_js/{}/inflight@1.0.6/pkg".format(link_root_name): "inflight", - ":.aspect_rules_js/{}/inherits@2.0.4/pkg".format(link_root_name): "inherits", - ":.aspect_rules_js/{}/ip@2.0.0/pkg".format(link_root_name): "ip", - ":.aspect_rules_js/{}/is-fullwidth-code-point@3.0.0/pkg".format(link_root_name): "is-fullwidth-code-point", - ":.aspect_rules_js/{}/is-lambda@1.0.1/pkg".format(link_root_name): "is-lambda", - ":.aspect_rules_js/{}/isexe@2.0.0/pkg".format(link_root_name): "isexe", - ":.aspect_rules_js/{}/lru-cache@6.0.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/lru-cache@7.17.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/make-fetch-happen@10.2.1/pkg".format(link_root_name): "make-fetch-happen", - ":.aspect_rules_js/{}/minimatch@3.1.2/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minimatch@5.1.6/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minipass@3.3.6/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass@4.2.4/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass-collect@1.0.2/pkg".format(link_root_name): "minipass-collect", - ":.aspect_rules_js/{}/minipass-fetch@2.1.2/pkg".format(link_root_name): "minipass-fetch", - ":.aspect_rules_js/{}/minipass-flush@1.0.5/pkg".format(link_root_name): "minipass-flush", - ":.aspect_rules_js/{}/minipass-pipeline@1.2.4/pkg".format(link_root_name): "minipass-pipeline", - ":.aspect_rules_js/{}/minipass-sized@1.0.3/pkg".format(link_root_name): "minipass-sized", - ":.aspect_rules_js/{}/minizlib@2.1.2/pkg".format(link_root_name): "minizlib", - ":.aspect_rules_js/{}/mkdirp@1.0.4/pkg".format(link_root_name): "mkdirp", - ":.aspect_rules_js/{}/ms@2.1.3/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/ms@2.1.2/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/nan@2.17.0/pkg".format(link_root_name): "nan", - ":.aspect_rules_js/{}/negotiator@0.6.3/pkg".format(link_root_name): "negotiator", - ":.aspect_rules_js/{}/node-gyp@9.3.1/pkg".format(link_root_name): "node-gyp", - ":.aspect_rules_js/{}/nopt@6.0.0/pkg".format(link_root_name): "nopt", - ":.aspect_rules_js/{}/npmlog@6.0.2/pkg".format(link_root_name): "npmlog", - ":.aspect_rules_js/{}/once@1.4.0/pkg".format(link_root_name): "once", - ":.aspect_rules_js/{}/p-map@4.0.0/pkg".format(link_root_name): "p-map", - ":.aspect_rules_js/{}/path-is-absolute@1.0.1/pkg".format(link_root_name): "path-is-absolute", - ":.aspect_rules_js/{}/promise-inflight@1.0.1/pkg".format(link_root_name): "promise-inflight", - ":.aspect_rules_js/{}/promise-retry@2.0.1/pkg".format(link_root_name): "promise-retry", - ":.aspect_rules_js/{}/readable-stream@3.6.1/pkg".format(link_root_name): "readable-stream", - ":.aspect_rules_js/{}/retry@0.12.0/pkg".format(link_root_name): "retry", - ":.aspect_rules_js/{}/rimraf@3.0.2/pkg".format(link_root_name): "rimraf", - ":.aspect_rules_js/{}/safe-buffer@5.2.1/pkg".format(link_root_name): "safe-buffer", - ":.aspect_rules_js/{}/safer-buffer@2.1.2/pkg".format(link_root_name): "safer-buffer", - ":.aspect_rules_js/{}/segfault-handler@1.3.0/pkg_pre_lc_lite".format(link_root_name): "segfault-handler", - ":.aspect_rules_js/{}/semver@7.3.8/pkg".format(link_root_name): "semver", - ":.aspect_rules_js/{}/set-blocking@2.0.0/pkg".format(link_root_name): "set-blocking", - ":.aspect_rules_js/{}/signal-exit@3.0.7/pkg".format(link_root_name): "signal-exit", - ":.aspect_rules_js/{}/smart-buffer@4.2.0/pkg".format(link_root_name): "smart-buffer", - ":.aspect_rules_js/{}/socks@2.7.1/pkg".format(link_root_name): "socks", - ":.aspect_rules_js/{}/socks-proxy-agent@7.0.0/pkg".format(link_root_name): "socks-proxy-agent", - ":.aspect_rules_js/{}/ssri@9.0.1/pkg".format(link_root_name): "ssri", - ":.aspect_rules_js/{}/string-width@4.2.3/pkg".format(link_root_name): "string-width", - ":.aspect_rules_js/{}/string_decoder@1.3.0/pkg".format(link_root_name): "string_decoder", - ":.aspect_rules_js/{}/strip-ansi@6.0.1/pkg".format(link_root_name): "strip-ansi", - ":.aspect_rules_js/{}/tar@6.1.13/pkg".format(link_root_name): "tar", - ":.aspect_rules_js/{}/unique-filename@2.0.1/pkg".format(link_root_name): "unique-filename", - ":.aspect_rules_js/{}/unique-slug@3.0.0/pkg".format(link_root_name): "unique-slug", - ":.aspect_rules_js/{}/util-deprecate@1.0.2/pkg".format(link_root_name): "util-deprecate", - ":.aspect_rules_js/{}/which@2.0.2/pkg".format(link_root_name): "which", - ":.aspect_rules_js/{}/wide-align@1.1.5/pkg".format(link_root_name): "wide-align", - ":.aspect_rules_js/{}/wrappy@1.0.2/pkg".format(link_root_name): "wrappy", - ":.aspect_rules_js/{}/yallist@4.0.0/pkg".format(link_root_name): "yallist", - } - - # pre-lifecycle target with reference deps for use terminal pre-lifecycle target - _npm_package_store( - name = "{}/pkg_pre_lc_lite".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # terminal pre-lifecycle target for use in lifecycle build target below - _npm_package_store( - name = "{}/pkg_pre_lc".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/@gar+promisify@1.1.3/pkg": "@gar/promisify", + ":.aspect_rules_js/{link_root_name}/@npmcli+fs@2.1.2/pkg": "@npmcli/fs", + ":.aspect_rules_js/{link_root_name}/@npmcli+move-file@2.0.1/pkg": "@npmcli/move-file", + ":.aspect_rules_js/{link_root_name}/@tootallnate+once@2.0.0/pkg": "@tootallnate/once", + ":.aspect_rules_js/{link_root_name}/abbrev@1.1.1/pkg": "abbrev", + ":.aspect_rules_js/{link_root_name}/agent-base@6.0.2/pkg": "agent-base", + ":.aspect_rules_js/{link_root_name}/agentkeepalive@4.2.1/pkg": "agentkeepalive", + ":.aspect_rules_js/{link_root_name}/aggregate-error@3.1.0/pkg": "aggregate-error", + ":.aspect_rules_js/{link_root_name}/ansi-regex@5.0.1/pkg": "ansi-regex", + ":.aspect_rules_js/{link_root_name}/aproba@2.0.0/pkg": "aproba", + ":.aspect_rules_js/{link_root_name}/are-we-there-yet@3.0.1/pkg": "are-we-there-yet", + ":.aspect_rules_js/{link_root_name}/balanced-match@1.0.2/pkg": "balanced-match", + ":.aspect_rules_js/{link_root_name}/bindings@1.5.0/pkg": "bindings", + ":.aspect_rules_js/{link_root_name}/brace-expansion@1.1.11/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/brace-expansion@2.0.1/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/cacache@16.1.3/pkg": "cacache", + ":.aspect_rules_js/{link_root_name}/chownr@2.0.0/pkg": "chownr", + ":.aspect_rules_js/{link_root_name}/clean-stack@2.2.0/pkg": "clean-stack", + ":.aspect_rules_js/{link_root_name}/color-support@1.1.3/pkg": "color-support", + ":.aspect_rules_js/{link_root_name}/concat-map@0.0.1/pkg": "concat-map", + ":.aspect_rules_js/{link_root_name}/console-control-strings@1.1.0/pkg": "console-control-strings", + ":.aspect_rules_js/{link_root_name}/debug@4.3.4/pkg": "debug", + ":.aspect_rules_js/{link_root_name}/delegates@1.0.0/pkg": "delegates", + ":.aspect_rules_js/{link_root_name}/depd@1.1.2/pkg": "depd", + ":.aspect_rules_js/{link_root_name}/emoji-regex@8.0.0/pkg": "emoji-regex", + ":.aspect_rules_js/{link_root_name}/encoding@0.1.13/pkg": "encoding", + ":.aspect_rules_js/{link_root_name}/env-paths@2.2.1/pkg": "env-paths", + ":.aspect_rules_js/{link_root_name}/err-code@2.0.3/pkg": "err-code", + ":.aspect_rules_js/{link_root_name}/file-uri-to-path@1.0.0/pkg": "file-uri-to-path", + ":.aspect_rules_js/{link_root_name}/fs-minipass@2.1.0/pkg": "fs-minipass", + ":.aspect_rules_js/{link_root_name}/fs.realpath@1.0.0/pkg": "fs.realpath", + ":.aspect_rules_js/{link_root_name}/gauge@4.0.4/pkg": "gauge", + ":.aspect_rules_js/{link_root_name}/glob@7.2.3/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/glob@8.1.0/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/graceful-fs@4.2.10/pkg": "graceful-fs", + ":.aspect_rules_js/{link_root_name}/has-unicode@2.0.1/pkg": "has-unicode", + ":.aspect_rules_js/{link_root_name}/http-cache-semantics@4.1.1/pkg": "http-cache-semantics", + ":.aspect_rules_js/{link_root_name}/http-proxy-agent@5.0.0/pkg": "http-proxy-agent", + ":.aspect_rules_js/{link_root_name}/https-proxy-agent@5.0.1/pkg": "https-proxy-agent", + ":.aspect_rules_js/{link_root_name}/humanize-ms@1.2.1/pkg": "humanize-ms", + ":.aspect_rules_js/{link_root_name}/iconv-lite@0.6.3/pkg": "iconv-lite", + ":.aspect_rules_js/{link_root_name}/imurmurhash@0.1.4/pkg": "imurmurhash", + ":.aspect_rules_js/{link_root_name}/indent-string@4.0.0/pkg": "indent-string", + ":.aspect_rules_js/{link_root_name}/infer-owner@1.0.4/pkg": "infer-owner", + ":.aspect_rules_js/{link_root_name}/inflight@1.0.6/pkg": "inflight", + ":.aspect_rules_js/{link_root_name}/inherits@2.0.4/pkg": "inherits", + ":.aspect_rules_js/{link_root_name}/ip@2.0.0/pkg": "ip", + ":.aspect_rules_js/{link_root_name}/is-fullwidth-code-point@3.0.0/pkg": "is-fullwidth-code-point", + ":.aspect_rules_js/{link_root_name}/is-lambda@1.0.1/pkg": "is-lambda", + ":.aspect_rules_js/{link_root_name}/isexe@2.0.0/pkg": "isexe", + ":.aspect_rules_js/{link_root_name}/lru-cache@6.0.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/lru-cache@7.17.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/make-fetch-happen@10.2.1/pkg": "make-fetch-happen", + ":.aspect_rules_js/{link_root_name}/minimatch@3.1.2/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minimatch@5.1.6/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minipass@3.3.6/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass@4.2.4/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass-collect@1.0.2/pkg": "minipass-collect", + ":.aspect_rules_js/{link_root_name}/minipass-fetch@2.1.2/pkg": "minipass-fetch", + ":.aspect_rules_js/{link_root_name}/minipass-flush@1.0.5/pkg": "minipass-flush", + ":.aspect_rules_js/{link_root_name}/minipass-pipeline@1.2.4/pkg": "minipass-pipeline", + ":.aspect_rules_js/{link_root_name}/minipass-sized@1.0.3/pkg": "minipass-sized", + ":.aspect_rules_js/{link_root_name}/minizlib@2.1.2/pkg": "minizlib", + ":.aspect_rules_js/{link_root_name}/mkdirp@1.0.4/pkg": "mkdirp", + ":.aspect_rules_js/{link_root_name}/ms@2.1.3/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/ms@2.1.2/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/nan@2.17.0/pkg": "nan", + ":.aspect_rules_js/{link_root_name}/negotiator@0.6.3/pkg": "negotiator", + ":.aspect_rules_js/{link_root_name}/node-gyp@9.3.1/pkg": "node-gyp", + ":.aspect_rules_js/{link_root_name}/nopt@6.0.0/pkg": "nopt", + ":.aspect_rules_js/{link_root_name}/npmlog@6.0.2/pkg": "npmlog", + ":.aspect_rules_js/{link_root_name}/once@1.4.0/pkg": "once", + ":.aspect_rules_js/{link_root_name}/p-map@4.0.0/pkg": "p-map", + ":.aspect_rules_js/{link_root_name}/path-is-absolute@1.0.1/pkg": "path-is-absolute", + ":.aspect_rules_js/{link_root_name}/promise-inflight@1.0.1/pkg": "promise-inflight", + ":.aspect_rules_js/{link_root_name}/promise-retry@2.0.1/pkg": "promise-retry", + ":.aspect_rules_js/{link_root_name}/readable-stream@3.6.1/pkg": "readable-stream", + ":.aspect_rules_js/{link_root_name}/retry@0.12.0/pkg": "retry", + ":.aspect_rules_js/{link_root_name}/rimraf@3.0.2/pkg": "rimraf", + ":.aspect_rules_js/{link_root_name}/safe-buffer@5.2.1/pkg": "safe-buffer", + ":.aspect_rules_js/{link_root_name}/safer-buffer@2.1.2/pkg": "safer-buffer", + ":.aspect_rules_js/{link_root_name}/segfault-handler@1.3.0/pkg": "segfault-handler", + ":.aspect_rules_js/{link_root_name}/semver@7.3.8/pkg": "semver", + ":.aspect_rules_js/{link_root_name}/set-blocking@2.0.0/pkg": "set-blocking", + ":.aspect_rules_js/{link_root_name}/signal-exit@3.0.7/pkg": "signal-exit", + ":.aspect_rules_js/{link_root_name}/smart-buffer@4.2.0/pkg": "smart-buffer", + ":.aspect_rules_js/{link_root_name}/socks@2.7.1/pkg": "socks", + ":.aspect_rules_js/{link_root_name}/socks-proxy-agent@7.0.0/pkg": "socks-proxy-agent", + ":.aspect_rules_js/{link_root_name}/ssri@9.0.1/pkg": "ssri", + ":.aspect_rules_js/{link_root_name}/string-width@4.2.3/pkg": "string-width", + ":.aspect_rules_js/{link_root_name}/string_decoder@1.3.0/pkg": "string_decoder", + ":.aspect_rules_js/{link_root_name}/strip-ansi@6.0.1/pkg": "strip-ansi", + ":.aspect_rules_js/{link_root_name}/tar@6.1.13/pkg": "tar", + ":.aspect_rules_js/{link_root_name}/unique-filename@2.0.1/pkg": "unique-filename", + ":.aspect_rules_js/{link_root_name}/unique-slug@3.0.0/pkg": "unique-slug", + ":.aspect_rules_js/{link_root_name}/util-deprecate@1.0.2/pkg": "util-deprecate", + ":.aspect_rules_js/{link_root_name}/which@2.0.2/pkg": "which", + ":.aspect_rules_js/{link_root_name}/wide-align@1.1.5/pkg": "wide-align", + ":.aspect_rules_js/{link_root_name}/wrappy@1.0.2/pkg": "wrappy", + ":.aspect_rules_js/{link_root_name}/yallist@4.0.0/pkg": "yallist", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/bindings@1.5.0/ref": "bindings", + ":.aspect_rules_js/{link_root_name}/nan@2.17.0/ref": "nan", + ":.aspect_rules_js/{link_root_name}/node-gyp@9.3.1/ref": "node-gyp", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/@gar+promisify@1.1.3/pkg": "@gar/promisify", + ":.aspect_rules_js/{link_root_name}/@npmcli+fs@2.1.2/pkg": "@npmcli/fs", + ":.aspect_rules_js/{link_root_name}/@npmcli+move-file@2.0.1/pkg": "@npmcli/move-file", + ":.aspect_rules_js/{link_root_name}/@tootallnate+once@2.0.0/pkg": "@tootallnate/once", + ":.aspect_rules_js/{link_root_name}/abbrev@1.1.1/pkg": "abbrev", + ":.aspect_rules_js/{link_root_name}/agent-base@6.0.2/pkg": "agent-base", + ":.aspect_rules_js/{link_root_name}/agentkeepalive@4.2.1/pkg": "agentkeepalive", + ":.aspect_rules_js/{link_root_name}/aggregate-error@3.1.0/pkg": "aggregate-error", + ":.aspect_rules_js/{link_root_name}/ansi-regex@5.0.1/pkg": "ansi-regex", + ":.aspect_rules_js/{link_root_name}/aproba@2.0.0/pkg": "aproba", + ":.aspect_rules_js/{link_root_name}/are-we-there-yet@3.0.1/pkg": "are-we-there-yet", + ":.aspect_rules_js/{link_root_name}/balanced-match@1.0.2/pkg": "balanced-match", + ":.aspect_rules_js/{link_root_name}/bindings@1.5.0/pkg": "bindings", + ":.aspect_rules_js/{link_root_name}/brace-expansion@1.1.11/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/brace-expansion@2.0.1/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/cacache@16.1.3/pkg": "cacache", + ":.aspect_rules_js/{link_root_name}/chownr@2.0.0/pkg": "chownr", + ":.aspect_rules_js/{link_root_name}/clean-stack@2.2.0/pkg": "clean-stack", + ":.aspect_rules_js/{link_root_name}/color-support@1.1.3/pkg": "color-support", + ":.aspect_rules_js/{link_root_name}/concat-map@0.0.1/pkg": "concat-map", + ":.aspect_rules_js/{link_root_name}/console-control-strings@1.1.0/pkg": "console-control-strings", + ":.aspect_rules_js/{link_root_name}/debug@4.3.4/pkg": "debug", + ":.aspect_rules_js/{link_root_name}/delegates@1.0.0/pkg": "delegates", + ":.aspect_rules_js/{link_root_name}/depd@1.1.2/pkg": "depd", + ":.aspect_rules_js/{link_root_name}/emoji-regex@8.0.0/pkg": "emoji-regex", + ":.aspect_rules_js/{link_root_name}/encoding@0.1.13/pkg": "encoding", + ":.aspect_rules_js/{link_root_name}/env-paths@2.2.1/pkg": "env-paths", + ":.aspect_rules_js/{link_root_name}/err-code@2.0.3/pkg": "err-code", + ":.aspect_rules_js/{link_root_name}/file-uri-to-path@1.0.0/pkg": "file-uri-to-path", + ":.aspect_rules_js/{link_root_name}/fs-minipass@2.1.0/pkg": "fs-minipass", + ":.aspect_rules_js/{link_root_name}/fs.realpath@1.0.0/pkg": "fs.realpath", + ":.aspect_rules_js/{link_root_name}/gauge@4.0.4/pkg": "gauge", + ":.aspect_rules_js/{link_root_name}/glob@7.2.3/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/glob@8.1.0/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/graceful-fs@4.2.10/pkg": "graceful-fs", + ":.aspect_rules_js/{link_root_name}/has-unicode@2.0.1/pkg": "has-unicode", + ":.aspect_rules_js/{link_root_name}/http-cache-semantics@4.1.1/pkg": "http-cache-semantics", + ":.aspect_rules_js/{link_root_name}/http-proxy-agent@5.0.0/pkg": "http-proxy-agent", + ":.aspect_rules_js/{link_root_name}/https-proxy-agent@5.0.1/pkg": "https-proxy-agent", + ":.aspect_rules_js/{link_root_name}/humanize-ms@1.2.1/pkg": "humanize-ms", + ":.aspect_rules_js/{link_root_name}/iconv-lite@0.6.3/pkg": "iconv-lite", + ":.aspect_rules_js/{link_root_name}/imurmurhash@0.1.4/pkg": "imurmurhash", + ":.aspect_rules_js/{link_root_name}/indent-string@4.0.0/pkg": "indent-string", + ":.aspect_rules_js/{link_root_name}/infer-owner@1.0.4/pkg": "infer-owner", + ":.aspect_rules_js/{link_root_name}/inflight@1.0.6/pkg": "inflight", + ":.aspect_rules_js/{link_root_name}/inherits@2.0.4/pkg": "inherits", + ":.aspect_rules_js/{link_root_name}/ip@2.0.0/pkg": "ip", + ":.aspect_rules_js/{link_root_name}/is-fullwidth-code-point@3.0.0/pkg": "is-fullwidth-code-point", + ":.aspect_rules_js/{link_root_name}/is-lambda@1.0.1/pkg": "is-lambda", + ":.aspect_rules_js/{link_root_name}/isexe@2.0.0/pkg": "isexe", + ":.aspect_rules_js/{link_root_name}/lru-cache@6.0.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/lru-cache@7.17.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/make-fetch-happen@10.2.1/pkg": "make-fetch-happen", + ":.aspect_rules_js/{link_root_name}/minimatch@3.1.2/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minimatch@5.1.6/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minipass@3.3.6/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass@4.2.4/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass-collect@1.0.2/pkg": "minipass-collect", + ":.aspect_rules_js/{link_root_name}/minipass-fetch@2.1.2/pkg": "minipass-fetch", + ":.aspect_rules_js/{link_root_name}/minipass-flush@1.0.5/pkg": "minipass-flush", + ":.aspect_rules_js/{link_root_name}/minipass-pipeline@1.2.4/pkg": "minipass-pipeline", + ":.aspect_rules_js/{link_root_name}/minipass-sized@1.0.3/pkg": "minipass-sized", + ":.aspect_rules_js/{link_root_name}/minizlib@2.1.2/pkg": "minizlib", + ":.aspect_rules_js/{link_root_name}/mkdirp@1.0.4/pkg": "mkdirp", + ":.aspect_rules_js/{link_root_name}/ms@2.1.3/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/ms@2.1.2/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/nan@2.17.0/pkg": "nan", + ":.aspect_rules_js/{link_root_name}/negotiator@0.6.3/pkg": "negotiator", + ":.aspect_rules_js/{link_root_name}/node-gyp@9.3.1/pkg": "node-gyp", + ":.aspect_rules_js/{link_root_name}/nopt@6.0.0/pkg": "nopt", + ":.aspect_rules_js/{link_root_name}/npmlog@6.0.2/pkg": "npmlog", + ":.aspect_rules_js/{link_root_name}/once@1.4.0/pkg": "once", + ":.aspect_rules_js/{link_root_name}/p-map@4.0.0/pkg": "p-map", + ":.aspect_rules_js/{link_root_name}/path-is-absolute@1.0.1/pkg": "path-is-absolute", + ":.aspect_rules_js/{link_root_name}/promise-inflight@1.0.1/pkg": "promise-inflight", + ":.aspect_rules_js/{link_root_name}/promise-retry@2.0.1/pkg": "promise-retry", + ":.aspect_rules_js/{link_root_name}/readable-stream@3.6.1/pkg": "readable-stream", + ":.aspect_rules_js/{link_root_name}/retry@0.12.0/pkg": "retry", + ":.aspect_rules_js/{link_root_name}/rimraf@3.0.2/pkg": "rimraf", + ":.aspect_rules_js/{link_root_name}/safe-buffer@5.2.1/pkg": "safe-buffer", + ":.aspect_rules_js/{link_root_name}/safer-buffer@2.1.2/pkg": "safer-buffer", + ":.aspect_rules_js/{link_root_name}/segfault-handler@1.3.0/pkg_pre_lc_lite": "segfault-handler", + ":.aspect_rules_js/{link_root_name}/semver@7.3.8/pkg": "semver", + ":.aspect_rules_js/{link_root_name}/set-blocking@2.0.0/pkg": "set-blocking", + ":.aspect_rules_js/{link_root_name}/signal-exit@3.0.7/pkg": "signal-exit", + ":.aspect_rules_js/{link_root_name}/smart-buffer@4.2.0/pkg": "smart-buffer", + ":.aspect_rules_js/{link_root_name}/socks@2.7.1/pkg": "socks", + ":.aspect_rules_js/{link_root_name}/socks-proxy-agent@7.0.0/pkg": "socks-proxy-agent", + ":.aspect_rules_js/{link_root_name}/ssri@9.0.1/pkg": "ssri", + ":.aspect_rules_js/{link_root_name}/string-width@4.2.3/pkg": "string-width", + ":.aspect_rules_js/{link_root_name}/string_decoder@1.3.0/pkg": "string_decoder", + ":.aspect_rules_js/{link_root_name}/strip-ansi@6.0.1/pkg": "strip-ansi", + ":.aspect_rules_js/{link_root_name}/tar@6.1.13/pkg": "tar", + ":.aspect_rules_js/{link_root_name}/unique-filename@2.0.1/pkg": "unique-filename", + ":.aspect_rules_js/{link_root_name}/unique-slug@3.0.0/pkg": "unique-slug", + ":.aspect_rules_js/{link_root_name}/util-deprecate@1.0.2/pkg": "util-deprecate", + ":.aspect_rules_js/{link_root_name}/which@2.0.2/pkg": "which", + ":.aspect_rules_js/{link_root_name}/wide-align@1.1.5/pkg": "wide-align", + ":.aspect_rules_js/{link_root_name}/wrappy@1.0.2/pkg": "wrappy", + ":.aspect_rules_js/{link_root_name}/yallist@4.0.0/pkg": "yallist", + }, dev = False, - deps = lc_deps, - tags = ["manual"], - ) - - # lifecycle build action - _js_run_binary( - name = "{}/lc".format(store_target_name), - srcs = [ - "@@aspect_rules_js~~npm~npm__segfault-handler__1.3.0//:pkg", - ":{}/pkg_pre_lc".format(store_target_name), - ], - # js_run_binary runs in the output dir; must add "../../../" because paths are relative to the exec root - args = [ - "segfault-handler", - "../../../$(execpath @@aspect_rules_js~~npm~npm__segfault-handler__1.3.0//:pkg)", - "../../../$(@D)", - ] + - select({ - Label("@aspect_rules_js//platforms/os:osx"): ["--platform=darwin"], - Label("@aspect_rules_js//platforms/os:linux"): ["--platform=linux"], - Label("@aspect_rules_js//platforms/os:windows"): ["--platform=win32"], - "//conditions:default": [], - }) + - select({ - Label("@aspect_rules_js//platforms/cpu:arm64"): ["--arch=arm64"], - Label("@aspect_rules_js//platforms/cpu:x86_64"): ["--arch=x64"], - "//conditions:default": [], - }) + - select({ - Label("@aspect_rules_js//platforms/libc:glibc"): ["--libc=glibc"], - Label("@aspect_rules_js//platforms/libc:musl"): ["--libc=musl"], - "//conditions:default": [], - }), - copy_srcs_to_bin = False, - tool = Label("@aspect_rules_js//npm/private/lifecycle:lifecycle-hooks"), - out_dirs = ["node_modules/.aspect_rules_js/segfault-handler@1.3.0/node_modules/segfault-handler"], - tags = ["manual"], - execution_requirements = { + has_lifecycle_build_target = True, + transitive_closure_pattern = True, + npm_package_target = "@@aspect_rules_js~~npm~npm__segfault-handler__1.3.0//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = { "no-sandbox": "1", }, - mnemonic = "NpmLifecycleHook", - progress_message = "Running lifecycle hooks on npm package segfault-handler@1.3.0", - env = {}, use_default_shell_env = True, - ) - - # post-lifecycle npm_package - _npm_package_internal( - name = "{}/pkg_lc".format(store_target_name), - src = ":{}/lc".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", - tags = ["manual"], + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package segfault-handler@1.3.0 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/segfault-handler@1.3.0".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package segfault-handler@1.3.0 @@ -376,43 +264,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "": ["segfault-handler"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package segfault-handler@1.3.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["segfault-handler"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/e2e/gyp_no_install_script/snapshots/wksp/segfault-handler_defs.bzl b/e2e/gyp_no_install_script/snapshots/wksp/segfault-handler_defs.bzl index b6004c155..0b87fe3f7 100644 --- a/e2e/gyp_no_install_script/snapshots/wksp/segfault-handler_defs.bzl +++ b/e2e/gyp_no_install_script/snapshots/wksp/segfault-handler_defs.bzl @@ -4,370 +4,258 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") -load("@aspect_rules_js//js:defs.bzl", _js_run_binary = "js_run_binary") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") -# buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_package_internal.bzl", _npm_package_internal = "npm_package_internal") +PACKAGE = "segfault-handler" +VERSION = "1.3.0" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "segfault-handler@1.3.0" # Generated npm_package_store targets for npm package segfault-handler@1.3.0 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package segfault-handler@1.3.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/@gar+promisify@1.1.3/pkg".format(link_root_name): "@gar/promisify", - ":.aspect_rules_js/{}/@npmcli+fs@2.1.2/pkg".format(link_root_name): "@npmcli/fs", - ":.aspect_rules_js/{}/@npmcli+move-file@2.0.1/pkg".format(link_root_name): "@npmcli/move-file", - ":.aspect_rules_js/{}/@tootallnate+once@2.0.0/pkg".format(link_root_name): "@tootallnate/once", - ":.aspect_rules_js/{}/abbrev@1.1.1/pkg".format(link_root_name): "abbrev", - ":.aspect_rules_js/{}/agent-base@6.0.2/pkg".format(link_root_name): "agent-base", - ":.aspect_rules_js/{}/agentkeepalive@4.2.1/pkg".format(link_root_name): "agentkeepalive", - ":.aspect_rules_js/{}/aggregate-error@3.1.0/pkg".format(link_root_name): "aggregate-error", - ":.aspect_rules_js/{}/ansi-regex@5.0.1/pkg".format(link_root_name): "ansi-regex", - ":.aspect_rules_js/{}/aproba@2.0.0/pkg".format(link_root_name): "aproba", - ":.aspect_rules_js/{}/are-we-there-yet@3.0.1/pkg".format(link_root_name): "are-we-there-yet", - ":.aspect_rules_js/{}/balanced-match@1.0.2/pkg".format(link_root_name): "balanced-match", - ":.aspect_rules_js/{}/bindings@1.5.0/pkg".format(link_root_name): "bindings", - ":.aspect_rules_js/{}/brace-expansion@1.1.11/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/brace-expansion@2.0.1/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/cacache@16.1.3/pkg".format(link_root_name): "cacache", - ":.aspect_rules_js/{}/chownr@2.0.0/pkg".format(link_root_name): "chownr", - ":.aspect_rules_js/{}/clean-stack@2.2.0/pkg".format(link_root_name): "clean-stack", - ":.aspect_rules_js/{}/color-support@1.1.3/pkg".format(link_root_name): "color-support", - ":.aspect_rules_js/{}/concat-map@0.0.1/pkg".format(link_root_name): "concat-map", - ":.aspect_rules_js/{}/console-control-strings@1.1.0/pkg".format(link_root_name): "console-control-strings", - ":.aspect_rules_js/{}/debug@4.3.4/pkg".format(link_root_name): "debug", - ":.aspect_rules_js/{}/delegates@1.0.0/pkg".format(link_root_name): "delegates", - ":.aspect_rules_js/{}/depd@1.1.2/pkg".format(link_root_name): "depd", - ":.aspect_rules_js/{}/emoji-regex@8.0.0/pkg".format(link_root_name): "emoji-regex", - ":.aspect_rules_js/{}/encoding@0.1.13/pkg".format(link_root_name): "encoding", - ":.aspect_rules_js/{}/env-paths@2.2.1/pkg".format(link_root_name): "env-paths", - ":.aspect_rules_js/{}/err-code@2.0.3/pkg".format(link_root_name): "err-code", - ":.aspect_rules_js/{}/file-uri-to-path@1.0.0/pkg".format(link_root_name): "file-uri-to-path", - ":.aspect_rules_js/{}/fs-minipass@2.1.0/pkg".format(link_root_name): "fs-minipass", - ":.aspect_rules_js/{}/fs.realpath@1.0.0/pkg".format(link_root_name): "fs.realpath", - ":.aspect_rules_js/{}/gauge@4.0.4/pkg".format(link_root_name): "gauge", - ":.aspect_rules_js/{}/glob@7.2.3/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/glob@8.1.0/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/graceful-fs@4.2.10/pkg".format(link_root_name): "graceful-fs", - ":.aspect_rules_js/{}/has-unicode@2.0.1/pkg".format(link_root_name): "has-unicode", - ":.aspect_rules_js/{}/http-cache-semantics@4.1.1/pkg".format(link_root_name): "http-cache-semantics", - ":.aspect_rules_js/{}/http-proxy-agent@5.0.0/pkg".format(link_root_name): "http-proxy-agent", - ":.aspect_rules_js/{}/https-proxy-agent@5.0.1/pkg".format(link_root_name): "https-proxy-agent", - ":.aspect_rules_js/{}/humanize-ms@1.2.1/pkg".format(link_root_name): "humanize-ms", - ":.aspect_rules_js/{}/iconv-lite@0.6.3/pkg".format(link_root_name): "iconv-lite", - ":.aspect_rules_js/{}/imurmurhash@0.1.4/pkg".format(link_root_name): "imurmurhash", - ":.aspect_rules_js/{}/indent-string@4.0.0/pkg".format(link_root_name): "indent-string", - ":.aspect_rules_js/{}/infer-owner@1.0.4/pkg".format(link_root_name): "infer-owner", - ":.aspect_rules_js/{}/inflight@1.0.6/pkg".format(link_root_name): "inflight", - ":.aspect_rules_js/{}/inherits@2.0.4/pkg".format(link_root_name): "inherits", - ":.aspect_rules_js/{}/ip@2.0.0/pkg".format(link_root_name): "ip", - ":.aspect_rules_js/{}/is-fullwidth-code-point@3.0.0/pkg".format(link_root_name): "is-fullwidth-code-point", - ":.aspect_rules_js/{}/is-lambda@1.0.1/pkg".format(link_root_name): "is-lambda", - ":.aspect_rules_js/{}/isexe@2.0.0/pkg".format(link_root_name): "isexe", - ":.aspect_rules_js/{}/lru-cache@6.0.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/lru-cache@7.17.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/make-fetch-happen@10.2.1/pkg".format(link_root_name): "make-fetch-happen", - ":.aspect_rules_js/{}/minimatch@3.1.2/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minimatch@5.1.6/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minipass@3.3.6/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass@4.2.4/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass-collect@1.0.2/pkg".format(link_root_name): "minipass-collect", - ":.aspect_rules_js/{}/minipass-fetch@2.1.2/pkg".format(link_root_name): "minipass-fetch", - ":.aspect_rules_js/{}/minipass-flush@1.0.5/pkg".format(link_root_name): "minipass-flush", - ":.aspect_rules_js/{}/minipass-pipeline@1.2.4/pkg".format(link_root_name): "minipass-pipeline", - ":.aspect_rules_js/{}/minipass-sized@1.0.3/pkg".format(link_root_name): "minipass-sized", - ":.aspect_rules_js/{}/minizlib@2.1.2/pkg".format(link_root_name): "minizlib", - ":.aspect_rules_js/{}/mkdirp@1.0.4/pkg".format(link_root_name): "mkdirp", - ":.aspect_rules_js/{}/ms@2.1.3/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/ms@2.1.2/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/nan@2.17.0/pkg".format(link_root_name): "nan", - ":.aspect_rules_js/{}/negotiator@0.6.3/pkg".format(link_root_name): "negotiator", - ":.aspect_rules_js/{}/node-gyp@9.3.1/pkg".format(link_root_name): "node-gyp", - ":.aspect_rules_js/{}/nopt@6.0.0/pkg".format(link_root_name): "nopt", - ":.aspect_rules_js/{}/npmlog@6.0.2/pkg".format(link_root_name): "npmlog", - ":.aspect_rules_js/{}/once@1.4.0/pkg".format(link_root_name): "once", - ":.aspect_rules_js/{}/p-map@4.0.0/pkg".format(link_root_name): "p-map", - ":.aspect_rules_js/{}/path-is-absolute@1.0.1/pkg".format(link_root_name): "path-is-absolute", - ":.aspect_rules_js/{}/promise-inflight@1.0.1/pkg".format(link_root_name): "promise-inflight", - ":.aspect_rules_js/{}/promise-retry@2.0.1/pkg".format(link_root_name): "promise-retry", - ":.aspect_rules_js/{}/readable-stream@3.6.1/pkg".format(link_root_name): "readable-stream", - ":.aspect_rules_js/{}/retry@0.12.0/pkg".format(link_root_name): "retry", - ":.aspect_rules_js/{}/rimraf@3.0.2/pkg".format(link_root_name): "rimraf", - ":.aspect_rules_js/{}/safe-buffer@5.2.1/pkg".format(link_root_name): "safe-buffer", - ":.aspect_rules_js/{}/safer-buffer@2.1.2/pkg".format(link_root_name): "safer-buffer", - ":.aspect_rules_js/{}/segfault-handler@1.3.0/pkg".format(link_root_name): "segfault-handler", - ":.aspect_rules_js/{}/semver@7.3.8/pkg".format(link_root_name): "semver", - ":.aspect_rules_js/{}/set-blocking@2.0.0/pkg".format(link_root_name): "set-blocking", - ":.aspect_rules_js/{}/signal-exit@3.0.7/pkg".format(link_root_name): "signal-exit", - ":.aspect_rules_js/{}/smart-buffer@4.2.0/pkg".format(link_root_name): "smart-buffer", - ":.aspect_rules_js/{}/socks@2.7.1/pkg".format(link_root_name): "socks", - ":.aspect_rules_js/{}/socks-proxy-agent@7.0.0/pkg".format(link_root_name): "socks-proxy-agent", - ":.aspect_rules_js/{}/ssri@9.0.1/pkg".format(link_root_name): "ssri", - ":.aspect_rules_js/{}/string-width@4.2.3/pkg".format(link_root_name): "string-width", - ":.aspect_rules_js/{}/string_decoder@1.3.0/pkg".format(link_root_name): "string_decoder", - ":.aspect_rules_js/{}/strip-ansi@6.0.1/pkg".format(link_root_name): "strip-ansi", - ":.aspect_rules_js/{}/tar@6.1.13/pkg".format(link_root_name): "tar", - ":.aspect_rules_js/{}/unique-filename@2.0.1/pkg".format(link_root_name): "unique-filename", - ":.aspect_rules_js/{}/unique-slug@3.0.0/pkg".format(link_root_name): "unique-slug", - ":.aspect_rules_js/{}/util-deprecate@1.0.2/pkg".format(link_root_name): "util-deprecate", - ":.aspect_rules_js/{}/which@2.0.2/pkg".format(link_root_name): "which", - ":.aspect_rules_js/{}/wide-align@1.1.5/pkg".format(link_root_name): "wide-align", - ":.aspect_rules_js/{}/wrappy@1.0.2/pkg".format(link_root_name): "wrappy", - ":.aspect_rules_js/{}/yallist@4.0.0/pkg".format(link_root_name): "yallist", - } - ref_deps = { - ":.aspect_rules_js/{}/bindings@1.5.0/ref".format(link_root_name): "bindings", - ":.aspect_rules_js/{}/nan@2.17.0/ref".format(link_root_name): "nan", - ":.aspect_rules_js/{}/node-gyp@9.3.1/ref".format(link_root_name): "node-gyp", - } - - store_target_name = ".aspect_rules_js/{}/segfault-handler@1.3.0".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", - dev = False, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if True else "@@npm__segfault-handler__1.3.0//:pkg", - package = "segfault-handler", - version = "1.3.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@npm__segfault-handler__1.3.0//:pkg", - package = "segfault-handler", - version = "1.3.0", - dev = False, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - lc_deps = { - ":.aspect_rules_js/{}/@gar+promisify@1.1.3/pkg".format(link_root_name): "@gar/promisify", - ":.aspect_rules_js/{}/@npmcli+fs@2.1.2/pkg".format(link_root_name): "@npmcli/fs", - ":.aspect_rules_js/{}/@npmcli+move-file@2.0.1/pkg".format(link_root_name): "@npmcli/move-file", - ":.aspect_rules_js/{}/@tootallnate+once@2.0.0/pkg".format(link_root_name): "@tootallnate/once", - ":.aspect_rules_js/{}/abbrev@1.1.1/pkg".format(link_root_name): "abbrev", - ":.aspect_rules_js/{}/agent-base@6.0.2/pkg".format(link_root_name): "agent-base", - ":.aspect_rules_js/{}/agentkeepalive@4.2.1/pkg".format(link_root_name): "agentkeepalive", - ":.aspect_rules_js/{}/aggregate-error@3.1.0/pkg".format(link_root_name): "aggregate-error", - ":.aspect_rules_js/{}/ansi-regex@5.0.1/pkg".format(link_root_name): "ansi-regex", - ":.aspect_rules_js/{}/aproba@2.0.0/pkg".format(link_root_name): "aproba", - ":.aspect_rules_js/{}/are-we-there-yet@3.0.1/pkg".format(link_root_name): "are-we-there-yet", - ":.aspect_rules_js/{}/balanced-match@1.0.2/pkg".format(link_root_name): "balanced-match", - ":.aspect_rules_js/{}/bindings@1.5.0/pkg".format(link_root_name): "bindings", - ":.aspect_rules_js/{}/brace-expansion@1.1.11/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/brace-expansion@2.0.1/pkg".format(link_root_name): "brace-expansion", - ":.aspect_rules_js/{}/cacache@16.1.3/pkg".format(link_root_name): "cacache", - ":.aspect_rules_js/{}/chownr@2.0.0/pkg".format(link_root_name): "chownr", - ":.aspect_rules_js/{}/clean-stack@2.2.0/pkg".format(link_root_name): "clean-stack", - ":.aspect_rules_js/{}/color-support@1.1.3/pkg".format(link_root_name): "color-support", - ":.aspect_rules_js/{}/concat-map@0.0.1/pkg".format(link_root_name): "concat-map", - ":.aspect_rules_js/{}/console-control-strings@1.1.0/pkg".format(link_root_name): "console-control-strings", - ":.aspect_rules_js/{}/debug@4.3.4/pkg".format(link_root_name): "debug", - ":.aspect_rules_js/{}/delegates@1.0.0/pkg".format(link_root_name): "delegates", - ":.aspect_rules_js/{}/depd@1.1.2/pkg".format(link_root_name): "depd", - ":.aspect_rules_js/{}/emoji-regex@8.0.0/pkg".format(link_root_name): "emoji-regex", - ":.aspect_rules_js/{}/encoding@0.1.13/pkg".format(link_root_name): "encoding", - ":.aspect_rules_js/{}/env-paths@2.2.1/pkg".format(link_root_name): "env-paths", - ":.aspect_rules_js/{}/err-code@2.0.3/pkg".format(link_root_name): "err-code", - ":.aspect_rules_js/{}/file-uri-to-path@1.0.0/pkg".format(link_root_name): "file-uri-to-path", - ":.aspect_rules_js/{}/fs-minipass@2.1.0/pkg".format(link_root_name): "fs-minipass", - ":.aspect_rules_js/{}/fs.realpath@1.0.0/pkg".format(link_root_name): "fs.realpath", - ":.aspect_rules_js/{}/gauge@4.0.4/pkg".format(link_root_name): "gauge", - ":.aspect_rules_js/{}/glob@7.2.3/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/glob@8.1.0/pkg".format(link_root_name): "glob", - ":.aspect_rules_js/{}/graceful-fs@4.2.10/pkg".format(link_root_name): "graceful-fs", - ":.aspect_rules_js/{}/has-unicode@2.0.1/pkg".format(link_root_name): "has-unicode", - ":.aspect_rules_js/{}/http-cache-semantics@4.1.1/pkg".format(link_root_name): "http-cache-semantics", - ":.aspect_rules_js/{}/http-proxy-agent@5.0.0/pkg".format(link_root_name): "http-proxy-agent", - ":.aspect_rules_js/{}/https-proxy-agent@5.0.1/pkg".format(link_root_name): "https-proxy-agent", - ":.aspect_rules_js/{}/humanize-ms@1.2.1/pkg".format(link_root_name): "humanize-ms", - ":.aspect_rules_js/{}/iconv-lite@0.6.3/pkg".format(link_root_name): "iconv-lite", - ":.aspect_rules_js/{}/imurmurhash@0.1.4/pkg".format(link_root_name): "imurmurhash", - ":.aspect_rules_js/{}/indent-string@4.0.0/pkg".format(link_root_name): "indent-string", - ":.aspect_rules_js/{}/infer-owner@1.0.4/pkg".format(link_root_name): "infer-owner", - ":.aspect_rules_js/{}/inflight@1.0.6/pkg".format(link_root_name): "inflight", - ":.aspect_rules_js/{}/inherits@2.0.4/pkg".format(link_root_name): "inherits", - ":.aspect_rules_js/{}/ip@2.0.0/pkg".format(link_root_name): "ip", - ":.aspect_rules_js/{}/is-fullwidth-code-point@3.0.0/pkg".format(link_root_name): "is-fullwidth-code-point", - ":.aspect_rules_js/{}/is-lambda@1.0.1/pkg".format(link_root_name): "is-lambda", - ":.aspect_rules_js/{}/isexe@2.0.0/pkg".format(link_root_name): "isexe", - ":.aspect_rules_js/{}/lru-cache@6.0.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/lru-cache@7.17.0/pkg".format(link_root_name): "lru-cache", - ":.aspect_rules_js/{}/make-fetch-happen@10.2.1/pkg".format(link_root_name): "make-fetch-happen", - ":.aspect_rules_js/{}/minimatch@3.1.2/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minimatch@5.1.6/pkg".format(link_root_name): "minimatch", - ":.aspect_rules_js/{}/minipass@3.3.6/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass@4.2.4/pkg".format(link_root_name): "minipass", - ":.aspect_rules_js/{}/minipass-collect@1.0.2/pkg".format(link_root_name): "minipass-collect", - ":.aspect_rules_js/{}/minipass-fetch@2.1.2/pkg".format(link_root_name): "minipass-fetch", - ":.aspect_rules_js/{}/minipass-flush@1.0.5/pkg".format(link_root_name): "minipass-flush", - ":.aspect_rules_js/{}/minipass-pipeline@1.2.4/pkg".format(link_root_name): "minipass-pipeline", - ":.aspect_rules_js/{}/minipass-sized@1.0.3/pkg".format(link_root_name): "minipass-sized", - ":.aspect_rules_js/{}/minizlib@2.1.2/pkg".format(link_root_name): "minizlib", - ":.aspect_rules_js/{}/mkdirp@1.0.4/pkg".format(link_root_name): "mkdirp", - ":.aspect_rules_js/{}/ms@2.1.3/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/ms@2.1.2/pkg".format(link_root_name): "ms", - ":.aspect_rules_js/{}/nan@2.17.0/pkg".format(link_root_name): "nan", - ":.aspect_rules_js/{}/negotiator@0.6.3/pkg".format(link_root_name): "negotiator", - ":.aspect_rules_js/{}/node-gyp@9.3.1/pkg".format(link_root_name): "node-gyp", - ":.aspect_rules_js/{}/nopt@6.0.0/pkg".format(link_root_name): "nopt", - ":.aspect_rules_js/{}/npmlog@6.0.2/pkg".format(link_root_name): "npmlog", - ":.aspect_rules_js/{}/once@1.4.0/pkg".format(link_root_name): "once", - ":.aspect_rules_js/{}/p-map@4.0.0/pkg".format(link_root_name): "p-map", - ":.aspect_rules_js/{}/path-is-absolute@1.0.1/pkg".format(link_root_name): "path-is-absolute", - ":.aspect_rules_js/{}/promise-inflight@1.0.1/pkg".format(link_root_name): "promise-inflight", - ":.aspect_rules_js/{}/promise-retry@2.0.1/pkg".format(link_root_name): "promise-retry", - ":.aspect_rules_js/{}/readable-stream@3.6.1/pkg".format(link_root_name): "readable-stream", - ":.aspect_rules_js/{}/retry@0.12.0/pkg".format(link_root_name): "retry", - ":.aspect_rules_js/{}/rimraf@3.0.2/pkg".format(link_root_name): "rimraf", - ":.aspect_rules_js/{}/safe-buffer@5.2.1/pkg".format(link_root_name): "safe-buffer", - ":.aspect_rules_js/{}/safer-buffer@2.1.2/pkg".format(link_root_name): "safer-buffer", - ":.aspect_rules_js/{}/segfault-handler@1.3.0/pkg_pre_lc_lite".format(link_root_name): "segfault-handler", - ":.aspect_rules_js/{}/semver@7.3.8/pkg".format(link_root_name): "semver", - ":.aspect_rules_js/{}/set-blocking@2.0.0/pkg".format(link_root_name): "set-blocking", - ":.aspect_rules_js/{}/signal-exit@3.0.7/pkg".format(link_root_name): "signal-exit", - ":.aspect_rules_js/{}/smart-buffer@4.2.0/pkg".format(link_root_name): "smart-buffer", - ":.aspect_rules_js/{}/socks@2.7.1/pkg".format(link_root_name): "socks", - ":.aspect_rules_js/{}/socks-proxy-agent@7.0.0/pkg".format(link_root_name): "socks-proxy-agent", - ":.aspect_rules_js/{}/ssri@9.0.1/pkg".format(link_root_name): "ssri", - ":.aspect_rules_js/{}/string-width@4.2.3/pkg".format(link_root_name): "string-width", - ":.aspect_rules_js/{}/string_decoder@1.3.0/pkg".format(link_root_name): "string_decoder", - ":.aspect_rules_js/{}/strip-ansi@6.0.1/pkg".format(link_root_name): "strip-ansi", - ":.aspect_rules_js/{}/tar@6.1.13/pkg".format(link_root_name): "tar", - ":.aspect_rules_js/{}/unique-filename@2.0.1/pkg".format(link_root_name): "unique-filename", - ":.aspect_rules_js/{}/unique-slug@3.0.0/pkg".format(link_root_name): "unique-slug", - ":.aspect_rules_js/{}/util-deprecate@1.0.2/pkg".format(link_root_name): "util-deprecate", - ":.aspect_rules_js/{}/which@2.0.2/pkg".format(link_root_name): "which", - ":.aspect_rules_js/{}/wide-align@1.1.5/pkg".format(link_root_name): "wide-align", - ":.aspect_rules_js/{}/wrappy@1.0.2/pkg".format(link_root_name): "wrappy", - ":.aspect_rules_js/{}/yallist@4.0.0/pkg".format(link_root_name): "yallist", - } - - # pre-lifecycle target with reference deps for use terminal pre-lifecycle target - _npm_package_store( - name = "{}/pkg_pre_lc_lite".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # terminal pre-lifecycle target for use in lifecycle build target below - _npm_package_store( - name = "{}/pkg_pre_lc".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/@gar+promisify@1.1.3/pkg": "@gar/promisify", + ":.aspect_rules_js/{link_root_name}/@npmcli+fs@2.1.2/pkg": "@npmcli/fs", + ":.aspect_rules_js/{link_root_name}/@npmcli+move-file@2.0.1/pkg": "@npmcli/move-file", + ":.aspect_rules_js/{link_root_name}/@tootallnate+once@2.0.0/pkg": "@tootallnate/once", + ":.aspect_rules_js/{link_root_name}/abbrev@1.1.1/pkg": "abbrev", + ":.aspect_rules_js/{link_root_name}/agent-base@6.0.2/pkg": "agent-base", + ":.aspect_rules_js/{link_root_name}/agentkeepalive@4.2.1/pkg": "agentkeepalive", + ":.aspect_rules_js/{link_root_name}/aggregate-error@3.1.0/pkg": "aggregate-error", + ":.aspect_rules_js/{link_root_name}/ansi-regex@5.0.1/pkg": "ansi-regex", + ":.aspect_rules_js/{link_root_name}/aproba@2.0.0/pkg": "aproba", + ":.aspect_rules_js/{link_root_name}/are-we-there-yet@3.0.1/pkg": "are-we-there-yet", + ":.aspect_rules_js/{link_root_name}/balanced-match@1.0.2/pkg": "balanced-match", + ":.aspect_rules_js/{link_root_name}/bindings@1.5.0/pkg": "bindings", + ":.aspect_rules_js/{link_root_name}/brace-expansion@1.1.11/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/brace-expansion@2.0.1/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/cacache@16.1.3/pkg": "cacache", + ":.aspect_rules_js/{link_root_name}/chownr@2.0.0/pkg": "chownr", + ":.aspect_rules_js/{link_root_name}/clean-stack@2.2.0/pkg": "clean-stack", + ":.aspect_rules_js/{link_root_name}/color-support@1.1.3/pkg": "color-support", + ":.aspect_rules_js/{link_root_name}/concat-map@0.0.1/pkg": "concat-map", + ":.aspect_rules_js/{link_root_name}/console-control-strings@1.1.0/pkg": "console-control-strings", + ":.aspect_rules_js/{link_root_name}/debug@4.3.4/pkg": "debug", + ":.aspect_rules_js/{link_root_name}/delegates@1.0.0/pkg": "delegates", + ":.aspect_rules_js/{link_root_name}/depd@1.1.2/pkg": "depd", + ":.aspect_rules_js/{link_root_name}/emoji-regex@8.0.0/pkg": "emoji-regex", + ":.aspect_rules_js/{link_root_name}/encoding@0.1.13/pkg": "encoding", + ":.aspect_rules_js/{link_root_name}/env-paths@2.2.1/pkg": "env-paths", + ":.aspect_rules_js/{link_root_name}/err-code@2.0.3/pkg": "err-code", + ":.aspect_rules_js/{link_root_name}/file-uri-to-path@1.0.0/pkg": "file-uri-to-path", + ":.aspect_rules_js/{link_root_name}/fs-minipass@2.1.0/pkg": "fs-minipass", + ":.aspect_rules_js/{link_root_name}/fs.realpath@1.0.0/pkg": "fs.realpath", + ":.aspect_rules_js/{link_root_name}/gauge@4.0.4/pkg": "gauge", + ":.aspect_rules_js/{link_root_name}/glob@7.2.3/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/glob@8.1.0/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/graceful-fs@4.2.10/pkg": "graceful-fs", + ":.aspect_rules_js/{link_root_name}/has-unicode@2.0.1/pkg": "has-unicode", + ":.aspect_rules_js/{link_root_name}/http-cache-semantics@4.1.1/pkg": "http-cache-semantics", + ":.aspect_rules_js/{link_root_name}/http-proxy-agent@5.0.0/pkg": "http-proxy-agent", + ":.aspect_rules_js/{link_root_name}/https-proxy-agent@5.0.1/pkg": "https-proxy-agent", + ":.aspect_rules_js/{link_root_name}/humanize-ms@1.2.1/pkg": "humanize-ms", + ":.aspect_rules_js/{link_root_name}/iconv-lite@0.6.3/pkg": "iconv-lite", + ":.aspect_rules_js/{link_root_name}/imurmurhash@0.1.4/pkg": "imurmurhash", + ":.aspect_rules_js/{link_root_name}/indent-string@4.0.0/pkg": "indent-string", + ":.aspect_rules_js/{link_root_name}/infer-owner@1.0.4/pkg": "infer-owner", + ":.aspect_rules_js/{link_root_name}/inflight@1.0.6/pkg": "inflight", + ":.aspect_rules_js/{link_root_name}/inherits@2.0.4/pkg": "inherits", + ":.aspect_rules_js/{link_root_name}/ip@2.0.0/pkg": "ip", + ":.aspect_rules_js/{link_root_name}/is-fullwidth-code-point@3.0.0/pkg": "is-fullwidth-code-point", + ":.aspect_rules_js/{link_root_name}/is-lambda@1.0.1/pkg": "is-lambda", + ":.aspect_rules_js/{link_root_name}/isexe@2.0.0/pkg": "isexe", + ":.aspect_rules_js/{link_root_name}/lru-cache@6.0.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/lru-cache@7.17.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/make-fetch-happen@10.2.1/pkg": "make-fetch-happen", + ":.aspect_rules_js/{link_root_name}/minimatch@3.1.2/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minimatch@5.1.6/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minipass@3.3.6/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass@4.2.4/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass-collect@1.0.2/pkg": "minipass-collect", + ":.aspect_rules_js/{link_root_name}/minipass-fetch@2.1.2/pkg": "minipass-fetch", + ":.aspect_rules_js/{link_root_name}/minipass-flush@1.0.5/pkg": "minipass-flush", + ":.aspect_rules_js/{link_root_name}/minipass-pipeline@1.2.4/pkg": "minipass-pipeline", + ":.aspect_rules_js/{link_root_name}/minipass-sized@1.0.3/pkg": "minipass-sized", + ":.aspect_rules_js/{link_root_name}/minizlib@2.1.2/pkg": "minizlib", + ":.aspect_rules_js/{link_root_name}/mkdirp@1.0.4/pkg": "mkdirp", + ":.aspect_rules_js/{link_root_name}/ms@2.1.3/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/ms@2.1.2/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/nan@2.17.0/pkg": "nan", + ":.aspect_rules_js/{link_root_name}/negotiator@0.6.3/pkg": "negotiator", + ":.aspect_rules_js/{link_root_name}/node-gyp@9.3.1/pkg": "node-gyp", + ":.aspect_rules_js/{link_root_name}/nopt@6.0.0/pkg": "nopt", + ":.aspect_rules_js/{link_root_name}/npmlog@6.0.2/pkg": "npmlog", + ":.aspect_rules_js/{link_root_name}/once@1.4.0/pkg": "once", + ":.aspect_rules_js/{link_root_name}/p-map@4.0.0/pkg": "p-map", + ":.aspect_rules_js/{link_root_name}/path-is-absolute@1.0.1/pkg": "path-is-absolute", + ":.aspect_rules_js/{link_root_name}/promise-inflight@1.0.1/pkg": "promise-inflight", + ":.aspect_rules_js/{link_root_name}/promise-retry@2.0.1/pkg": "promise-retry", + ":.aspect_rules_js/{link_root_name}/readable-stream@3.6.1/pkg": "readable-stream", + ":.aspect_rules_js/{link_root_name}/retry@0.12.0/pkg": "retry", + ":.aspect_rules_js/{link_root_name}/rimraf@3.0.2/pkg": "rimraf", + ":.aspect_rules_js/{link_root_name}/safe-buffer@5.2.1/pkg": "safe-buffer", + ":.aspect_rules_js/{link_root_name}/safer-buffer@2.1.2/pkg": "safer-buffer", + ":.aspect_rules_js/{link_root_name}/segfault-handler@1.3.0/pkg": "segfault-handler", + ":.aspect_rules_js/{link_root_name}/semver@7.3.8/pkg": "semver", + ":.aspect_rules_js/{link_root_name}/set-blocking@2.0.0/pkg": "set-blocking", + ":.aspect_rules_js/{link_root_name}/signal-exit@3.0.7/pkg": "signal-exit", + ":.aspect_rules_js/{link_root_name}/smart-buffer@4.2.0/pkg": "smart-buffer", + ":.aspect_rules_js/{link_root_name}/socks@2.7.1/pkg": "socks", + ":.aspect_rules_js/{link_root_name}/socks-proxy-agent@7.0.0/pkg": "socks-proxy-agent", + ":.aspect_rules_js/{link_root_name}/ssri@9.0.1/pkg": "ssri", + ":.aspect_rules_js/{link_root_name}/string-width@4.2.3/pkg": "string-width", + ":.aspect_rules_js/{link_root_name}/string_decoder@1.3.0/pkg": "string_decoder", + ":.aspect_rules_js/{link_root_name}/strip-ansi@6.0.1/pkg": "strip-ansi", + ":.aspect_rules_js/{link_root_name}/tar@6.1.13/pkg": "tar", + ":.aspect_rules_js/{link_root_name}/unique-filename@2.0.1/pkg": "unique-filename", + ":.aspect_rules_js/{link_root_name}/unique-slug@3.0.0/pkg": "unique-slug", + ":.aspect_rules_js/{link_root_name}/util-deprecate@1.0.2/pkg": "util-deprecate", + ":.aspect_rules_js/{link_root_name}/which@2.0.2/pkg": "which", + ":.aspect_rules_js/{link_root_name}/wide-align@1.1.5/pkg": "wide-align", + ":.aspect_rules_js/{link_root_name}/wrappy@1.0.2/pkg": "wrappy", + ":.aspect_rules_js/{link_root_name}/yallist@4.0.0/pkg": "yallist", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/bindings@1.5.0/ref": "bindings", + ":.aspect_rules_js/{link_root_name}/nan@2.17.0/ref": "nan", + ":.aspect_rules_js/{link_root_name}/node-gyp@9.3.1/ref": "node-gyp", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/@gar+promisify@1.1.3/pkg": "@gar/promisify", + ":.aspect_rules_js/{link_root_name}/@npmcli+fs@2.1.2/pkg": "@npmcli/fs", + ":.aspect_rules_js/{link_root_name}/@npmcli+move-file@2.0.1/pkg": "@npmcli/move-file", + ":.aspect_rules_js/{link_root_name}/@tootallnate+once@2.0.0/pkg": "@tootallnate/once", + ":.aspect_rules_js/{link_root_name}/abbrev@1.1.1/pkg": "abbrev", + ":.aspect_rules_js/{link_root_name}/agent-base@6.0.2/pkg": "agent-base", + ":.aspect_rules_js/{link_root_name}/agentkeepalive@4.2.1/pkg": "agentkeepalive", + ":.aspect_rules_js/{link_root_name}/aggregate-error@3.1.0/pkg": "aggregate-error", + ":.aspect_rules_js/{link_root_name}/ansi-regex@5.0.1/pkg": "ansi-regex", + ":.aspect_rules_js/{link_root_name}/aproba@2.0.0/pkg": "aproba", + ":.aspect_rules_js/{link_root_name}/are-we-there-yet@3.0.1/pkg": "are-we-there-yet", + ":.aspect_rules_js/{link_root_name}/balanced-match@1.0.2/pkg": "balanced-match", + ":.aspect_rules_js/{link_root_name}/bindings@1.5.0/pkg": "bindings", + ":.aspect_rules_js/{link_root_name}/brace-expansion@1.1.11/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/brace-expansion@2.0.1/pkg": "brace-expansion", + ":.aspect_rules_js/{link_root_name}/cacache@16.1.3/pkg": "cacache", + ":.aspect_rules_js/{link_root_name}/chownr@2.0.0/pkg": "chownr", + ":.aspect_rules_js/{link_root_name}/clean-stack@2.2.0/pkg": "clean-stack", + ":.aspect_rules_js/{link_root_name}/color-support@1.1.3/pkg": "color-support", + ":.aspect_rules_js/{link_root_name}/concat-map@0.0.1/pkg": "concat-map", + ":.aspect_rules_js/{link_root_name}/console-control-strings@1.1.0/pkg": "console-control-strings", + ":.aspect_rules_js/{link_root_name}/debug@4.3.4/pkg": "debug", + ":.aspect_rules_js/{link_root_name}/delegates@1.0.0/pkg": "delegates", + ":.aspect_rules_js/{link_root_name}/depd@1.1.2/pkg": "depd", + ":.aspect_rules_js/{link_root_name}/emoji-regex@8.0.0/pkg": "emoji-regex", + ":.aspect_rules_js/{link_root_name}/encoding@0.1.13/pkg": "encoding", + ":.aspect_rules_js/{link_root_name}/env-paths@2.2.1/pkg": "env-paths", + ":.aspect_rules_js/{link_root_name}/err-code@2.0.3/pkg": "err-code", + ":.aspect_rules_js/{link_root_name}/file-uri-to-path@1.0.0/pkg": "file-uri-to-path", + ":.aspect_rules_js/{link_root_name}/fs-minipass@2.1.0/pkg": "fs-minipass", + ":.aspect_rules_js/{link_root_name}/fs.realpath@1.0.0/pkg": "fs.realpath", + ":.aspect_rules_js/{link_root_name}/gauge@4.0.4/pkg": "gauge", + ":.aspect_rules_js/{link_root_name}/glob@7.2.3/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/glob@8.1.0/pkg": "glob", + ":.aspect_rules_js/{link_root_name}/graceful-fs@4.2.10/pkg": "graceful-fs", + ":.aspect_rules_js/{link_root_name}/has-unicode@2.0.1/pkg": "has-unicode", + ":.aspect_rules_js/{link_root_name}/http-cache-semantics@4.1.1/pkg": "http-cache-semantics", + ":.aspect_rules_js/{link_root_name}/http-proxy-agent@5.0.0/pkg": "http-proxy-agent", + ":.aspect_rules_js/{link_root_name}/https-proxy-agent@5.0.1/pkg": "https-proxy-agent", + ":.aspect_rules_js/{link_root_name}/humanize-ms@1.2.1/pkg": "humanize-ms", + ":.aspect_rules_js/{link_root_name}/iconv-lite@0.6.3/pkg": "iconv-lite", + ":.aspect_rules_js/{link_root_name}/imurmurhash@0.1.4/pkg": "imurmurhash", + ":.aspect_rules_js/{link_root_name}/indent-string@4.0.0/pkg": "indent-string", + ":.aspect_rules_js/{link_root_name}/infer-owner@1.0.4/pkg": "infer-owner", + ":.aspect_rules_js/{link_root_name}/inflight@1.0.6/pkg": "inflight", + ":.aspect_rules_js/{link_root_name}/inherits@2.0.4/pkg": "inherits", + ":.aspect_rules_js/{link_root_name}/ip@2.0.0/pkg": "ip", + ":.aspect_rules_js/{link_root_name}/is-fullwidth-code-point@3.0.0/pkg": "is-fullwidth-code-point", + ":.aspect_rules_js/{link_root_name}/is-lambda@1.0.1/pkg": "is-lambda", + ":.aspect_rules_js/{link_root_name}/isexe@2.0.0/pkg": "isexe", + ":.aspect_rules_js/{link_root_name}/lru-cache@6.0.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/lru-cache@7.17.0/pkg": "lru-cache", + ":.aspect_rules_js/{link_root_name}/make-fetch-happen@10.2.1/pkg": "make-fetch-happen", + ":.aspect_rules_js/{link_root_name}/minimatch@3.1.2/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minimatch@5.1.6/pkg": "minimatch", + ":.aspect_rules_js/{link_root_name}/minipass@3.3.6/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass@4.2.4/pkg": "minipass", + ":.aspect_rules_js/{link_root_name}/minipass-collect@1.0.2/pkg": "minipass-collect", + ":.aspect_rules_js/{link_root_name}/minipass-fetch@2.1.2/pkg": "minipass-fetch", + ":.aspect_rules_js/{link_root_name}/minipass-flush@1.0.5/pkg": "minipass-flush", + ":.aspect_rules_js/{link_root_name}/minipass-pipeline@1.2.4/pkg": "minipass-pipeline", + ":.aspect_rules_js/{link_root_name}/minipass-sized@1.0.3/pkg": "minipass-sized", + ":.aspect_rules_js/{link_root_name}/minizlib@2.1.2/pkg": "minizlib", + ":.aspect_rules_js/{link_root_name}/mkdirp@1.0.4/pkg": "mkdirp", + ":.aspect_rules_js/{link_root_name}/ms@2.1.3/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/ms@2.1.2/pkg": "ms", + ":.aspect_rules_js/{link_root_name}/nan@2.17.0/pkg": "nan", + ":.aspect_rules_js/{link_root_name}/negotiator@0.6.3/pkg": "negotiator", + ":.aspect_rules_js/{link_root_name}/node-gyp@9.3.1/pkg": "node-gyp", + ":.aspect_rules_js/{link_root_name}/nopt@6.0.0/pkg": "nopt", + ":.aspect_rules_js/{link_root_name}/npmlog@6.0.2/pkg": "npmlog", + ":.aspect_rules_js/{link_root_name}/once@1.4.0/pkg": "once", + ":.aspect_rules_js/{link_root_name}/p-map@4.0.0/pkg": "p-map", + ":.aspect_rules_js/{link_root_name}/path-is-absolute@1.0.1/pkg": "path-is-absolute", + ":.aspect_rules_js/{link_root_name}/promise-inflight@1.0.1/pkg": "promise-inflight", + ":.aspect_rules_js/{link_root_name}/promise-retry@2.0.1/pkg": "promise-retry", + ":.aspect_rules_js/{link_root_name}/readable-stream@3.6.1/pkg": "readable-stream", + ":.aspect_rules_js/{link_root_name}/retry@0.12.0/pkg": "retry", + ":.aspect_rules_js/{link_root_name}/rimraf@3.0.2/pkg": "rimraf", + ":.aspect_rules_js/{link_root_name}/safe-buffer@5.2.1/pkg": "safe-buffer", + ":.aspect_rules_js/{link_root_name}/safer-buffer@2.1.2/pkg": "safer-buffer", + ":.aspect_rules_js/{link_root_name}/segfault-handler@1.3.0/pkg_pre_lc_lite": "segfault-handler", + ":.aspect_rules_js/{link_root_name}/semver@7.3.8/pkg": "semver", + ":.aspect_rules_js/{link_root_name}/set-blocking@2.0.0/pkg": "set-blocking", + ":.aspect_rules_js/{link_root_name}/signal-exit@3.0.7/pkg": "signal-exit", + ":.aspect_rules_js/{link_root_name}/smart-buffer@4.2.0/pkg": "smart-buffer", + ":.aspect_rules_js/{link_root_name}/socks@2.7.1/pkg": "socks", + ":.aspect_rules_js/{link_root_name}/socks-proxy-agent@7.0.0/pkg": "socks-proxy-agent", + ":.aspect_rules_js/{link_root_name}/ssri@9.0.1/pkg": "ssri", + ":.aspect_rules_js/{link_root_name}/string-width@4.2.3/pkg": "string-width", + ":.aspect_rules_js/{link_root_name}/string_decoder@1.3.0/pkg": "string_decoder", + ":.aspect_rules_js/{link_root_name}/strip-ansi@6.0.1/pkg": "strip-ansi", + ":.aspect_rules_js/{link_root_name}/tar@6.1.13/pkg": "tar", + ":.aspect_rules_js/{link_root_name}/unique-filename@2.0.1/pkg": "unique-filename", + ":.aspect_rules_js/{link_root_name}/unique-slug@3.0.0/pkg": "unique-slug", + ":.aspect_rules_js/{link_root_name}/util-deprecate@1.0.2/pkg": "util-deprecate", + ":.aspect_rules_js/{link_root_name}/which@2.0.2/pkg": "which", + ":.aspect_rules_js/{link_root_name}/wide-align@1.1.5/pkg": "wide-align", + ":.aspect_rules_js/{link_root_name}/wrappy@1.0.2/pkg": "wrappy", + ":.aspect_rules_js/{link_root_name}/yallist@4.0.0/pkg": "yallist", + }, dev = False, - deps = lc_deps, - tags = ["manual"], - ) - - # lifecycle build action - _js_run_binary( - name = "{}/lc".format(store_target_name), - srcs = [ - "@@npm__segfault-handler__1.3.0//:pkg", - ":{}/pkg_pre_lc".format(store_target_name), - ], - # js_run_binary runs in the output dir; must add "../../../" because paths are relative to the exec root - args = [ - "segfault-handler", - "../../../$(execpath @@npm__segfault-handler__1.3.0//:pkg)", - "../../../$(@D)", - ] + - select({ - Label("@aspect_rules_js//platforms/os:osx"): ["--platform=darwin"], - Label("@aspect_rules_js//platforms/os:linux"): ["--platform=linux"], - Label("@aspect_rules_js//platforms/os:windows"): ["--platform=win32"], - "//conditions:default": [], - }) + - select({ - Label("@aspect_rules_js//platforms/cpu:arm64"): ["--arch=arm64"], - Label("@aspect_rules_js//platforms/cpu:x86_64"): ["--arch=x64"], - "//conditions:default": [], - }) + - select({ - Label("@aspect_rules_js//platforms/libc:glibc"): ["--libc=glibc"], - Label("@aspect_rules_js//platforms/libc:musl"): ["--libc=musl"], - "//conditions:default": [], - }), - copy_srcs_to_bin = False, - tool = Label("@aspect_rules_js//npm/private/lifecycle:lifecycle-hooks"), - out_dirs = ["node_modules/.aspect_rules_js/segfault-handler@1.3.0/node_modules/segfault-handler"], - tags = ["manual"], - execution_requirements = { + has_lifecycle_build_target = True, + transitive_closure_pattern = True, + npm_package_target = "@@npm__segfault-handler__1.3.0//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = { "no-sandbox": "1", }, - mnemonic = "NpmLifecycleHook", - progress_message = "Running lifecycle hooks on npm package segfault-handler@1.3.0", - env = {}, use_default_shell_env = True, - ) - - # post-lifecycle npm_package - _npm_package_internal( - name = "{}/pkg_lc".format(store_target_name), - src = ":{}/lc".format(store_target_name), - package = "segfault-handler", - version = "1.3.0", - tags = ["manual"], + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package segfault-handler@1.3.0 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/segfault-handler@1.3.0".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package segfault-handler@1.3.0 @@ -376,43 +264,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "": ["segfault-handler"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package segfault-handler@1.3.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["segfault-handler"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/e2e/npm_translate_lock_disable_hooks/snapshots/aspect_test_c_links_defs.bzl b/e2e/npm_translate_lock_disable_hooks/snapshots/aspect_test_c_links_defs.bzl index f03c90e7c..64e199ff4 100644 --- a/e2e/npm_translate_lock_disable_hooks/snapshots/aspect_test_c_links_defs.bzl +++ b/e2e/npm_translate_lock_disable_hooks/snapshots/aspect_test_c_links_defs.bzl @@ -4,89 +4,54 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") + +PACKAGE = "@aspect-test/c" +VERSION = "2.0.0" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "@aspect-test+c@2.0.0" # Generated npm_package_store targets for npm package @aspect-test/c@2.0.0 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package @aspect-test/c@2.0.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/@aspect-test+c@2.0.0/pkg".format(link_root_name): "@aspect-test/c", - } - ref_deps = {} - - store_target_name = ".aspect_rules_js/{}/@aspect-test+c@2.0.0".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "@aspect-test/c", - version = "2.0.0", - dev = False, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if False else "@@aspect_rules_js~~npm~npm__at_aspect-test_c__2.0.0//:pkg", - package = "@aspect-test/c", - version = "2.0.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@aspect_rules_js~~npm~npm__at_aspect-test_c__2.0.0//:pkg", - package = "@aspect-test/c", - version = "2.0.0", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/@aspect-test+c@2.0.0/pkg": "@aspect-test/c", + }, + ref_deps = {}, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/@aspect-test+c@2.0.0/pkg_pre_lc_lite": "@aspect-test/c", + }, dev = False, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + has_lifecycle_build_target = False, + transitive_closure_pattern = True, + npm_package_target = "@@aspect_rules_js~~npm~npm__at_aspect-test_c__2.0.0//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = {}, + use_default_shell_env = False, + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package @aspect-test/c@2.0.0 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/@aspect-test+c@2.0.0".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package @aspect-test/c@2.0.0 @@ -95,43 +60,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "": ["@aspect-test/c"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package @aspect-test/c@2.0.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["@aspect-test/c"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/e2e/pnpm_lockfiles/v54/snapshots/rollup_links_defs.bzl b/e2e/pnpm_lockfiles/v54/snapshots/rollup_links_defs.bzl index 5fd4bbdfc..60ebee0f5 100644 --- a/e2e/pnpm_lockfiles/v54/snapshots/rollup_links_defs.bzl +++ b/e2e/pnpm_lockfiles/v54/snapshots/rollup_links_defs.bzl @@ -4,92 +4,58 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") + +PACKAGE = "rollup" +VERSION = "2.14.0" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "rollup@2.14.0" # Generated npm_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/pkg".format(link_root_name): "fsevents", - ":.aspect_rules_js/{}/rollup@2.14.0/pkg".format(link_root_name): "rollup", - } - ref_deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/ref".format(link_root_name): "fsevents", - } - - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "rollup", - version = "2.14.0", - dev = False, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if False else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg": "rollup", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/ref": "fsevents", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg_pre_lc_lite": "rollup", + }, dev = False, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + has_lifecycle_build_target = False, + transitive_closure_pattern = True, + npm_package_target = "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = {}, + use_default_shell_env = False, + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 @@ -98,43 +64,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "": ["rollup"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["rollup"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/e2e/pnpm_lockfiles/v60/snapshots/rollup_links_defs.bzl b/e2e/pnpm_lockfiles/v60/snapshots/rollup_links_defs.bzl index 5fd4bbdfc..60ebee0f5 100644 --- a/e2e/pnpm_lockfiles/v60/snapshots/rollup_links_defs.bzl +++ b/e2e/pnpm_lockfiles/v60/snapshots/rollup_links_defs.bzl @@ -4,92 +4,58 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") + +PACKAGE = "rollup" +VERSION = "2.14.0" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "rollup@2.14.0" # Generated npm_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/pkg".format(link_root_name): "fsevents", - ":.aspect_rules_js/{}/rollup@2.14.0/pkg".format(link_root_name): "rollup", - } - ref_deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/ref".format(link_root_name): "fsevents", - } - - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "rollup", - version = "2.14.0", - dev = False, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if False else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg": "rollup", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/ref": "fsevents", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg_pre_lc_lite": "rollup", + }, dev = False, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + has_lifecycle_build_target = False, + transitive_closure_pattern = True, + npm_package_target = "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = {}, + use_default_shell_env = False, + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 @@ -98,43 +64,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "": ["rollup"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["rollup"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/e2e/pnpm_lockfiles/v61/snapshots/rollup_links_defs.bzl b/e2e/pnpm_lockfiles/v61/snapshots/rollup_links_defs.bzl index 5fd4bbdfc..60ebee0f5 100644 --- a/e2e/pnpm_lockfiles/v61/snapshots/rollup_links_defs.bzl +++ b/e2e/pnpm_lockfiles/v61/snapshots/rollup_links_defs.bzl @@ -4,92 +4,58 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") + +PACKAGE = "rollup" +VERSION = "2.14.0" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "rollup@2.14.0" # Generated npm_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/pkg".format(link_root_name): "fsevents", - ":.aspect_rules_js/{}/rollup@2.14.0/pkg".format(link_root_name): "rollup", - } - ref_deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/ref".format(link_root_name): "fsevents", - } - - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "rollup", - version = "2.14.0", - dev = False, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if False else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg": "rollup", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/ref": "fsevents", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg_pre_lc_lite": "rollup", + }, dev = False, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + has_lifecycle_build_target = False, + transitive_closure_pattern = True, + npm_package_target = "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = {}, + use_default_shell_env = False, + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 @@ -98,43 +64,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "": ["rollup"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["rollup"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/e2e/pnpm_lockfiles/v90/snapshots/rollup_links_defs.bzl b/e2e/pnpm_lockfiles/v90/snapshots/rollup_links_defs.bzl index 5fd4bbdfc..60ebee0f5 100644 --- a/e2e/pnpm_lockfiles/v90/snapshots/rollup_links_defs.bzl +++ b/e2e/pnpm_lockfiles/v90/snapshots/rollup_links_defs.bzl @@ -4,92 +4,58 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") + +PACKAGE = "rollup" +VERSION = "2.14.0" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "rollup@2.14.0" # Generated npm_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/pkg".format(link_root_name): "fsevents", - ":.aspect_rules_js/{}/rollup@2.14.0/pkg".format(link_root_name): "rollup", - } - ref_deps = { - ":.aspect_rules_js/{}/fsevents@2.3.3/ref".format(link_root_name): "fsevents", - } - - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "rollup", - version = "2.14.0", - dev = False, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if False else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", - dev = False, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", - package = "rollup", - version = "2.14.0", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg": "rollup", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/ref": "fsevents", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.3/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.14.0/pkg_pre_lc_lite": "rollup", + }, dev = False, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + has_lifecycle_build_target = False, + transitive_closure_pattern = True, + npm_package_target = "@@aspect_rules_js~~npm~lock-__rollup__2.14.0//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = {}, + use_default_shell_env = False, + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/rollup@2.14.0".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.14.0 @@ -98,43 +64,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "": ["rollup"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package rollup@2.14.0. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["rollup"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/npm/private/BUILD.bazel b/npm/private/BUILD.bazel index 8bc3865df..794a8d1f5 100644 --- a/npm/private/BUILD.bazel +++ b/npm/private/BUILD.bazel @@ -88,6 +88,9 @@ bzl_library( name = "npm_import", srcs = ["npm_import.bzl"], deps = [ + ":npm_link_package_store", + ":npm_package_internal", + ":npm_package_store_internal", ":starlark_codegen_utils", ":tar", ":utils", diff --git a/npm/private/npm_import.bzl b/npm/private/npm_import.bzl index ad91ec735..d85487cd3 100644 --- a/npm/private/npm_import.bzl +++ b/npm/private/npm_import.bzl @@ -31,6 +31,9 @@ load( _git_reset = "reset", ) load("//npm/private:tar.bzl", "detect_system_tar") +load(":npm_link_package_store.bzl", "npm_link_package_store") +load(":npm_package_internal.bzl", "npm_package_internal") +load(":npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") load(":starlark_codegen_utils.bzl", "starlark_codegen_utils") load(":utils.bzl", "utils") @@ -39,184 +42,260 @@ _LINK_JS_PACKAGE_LOADS_TMPL = """\ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store")\ +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") """ -_LINK_JS_PACKAGE_LIFECYCLE_LOADS_TMPL = """\ -load("@aspect_rules_js//js:defs.bzl", _js_run_binary = "js_run_binary") +_LINK_JS_PACKAGE_TMPL = """\ +PACKAGE = "{package}" +VERSION = "{version}" +_ROOT_PACKAGE = "{root_package}" +_PACKAGE_STORE_NAME = "{package_store_name}" -# buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_package_internal.bzl", _npm_package_internal = "npm_package_internal")\ -""" - -_LINK_JS_PACKAGE_TMPL = """ # Generated npm_package_store targets for npm package {package}@{version} # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = {deps}, + ref_deps = {ref_deps}, + lc_deps = {lc_deps}, + dev = {dev}, + has_lifecycle_build_target = {has_lifecycle_build_target}, + transitive_closure_pattern = {transitive_closure_pattern}, + npm_package_target = "{npm_package_target}", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {lifecycle_hooks_env}, + lifecycle_hooks_execution_requirements = {lifecycle_hooks_execution_requirements}, + use_default_shell_env = {use_default_shell_env}, + exclude_package_contents = {exclude_package_contents}, + ) +""" + +# Invoked by generated npm_package_store targets for npm package {package}@{version} +# buildifier: disable=function-docstring +# buildifier: disable=unnamed-macro +def npm_imported_package_store_internal( + link_root_name, + package, + version, + root_package, + deps, + ref_deps, + lc_deps, + dev, + has_lifecycle_build_target, + transitive_closure_pattern, + npm_package_target, + package_store_name, + lifecycle_hooks_env, + lifecycle_hooks_execution_requirements, + use_default_shell_env, + exclude_package_contents): bazel_package = native.package_name() - root_package = "{root_package}" is_root = bazel_package == root_package if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package {package}@{version}. This is neither the root package nor a link package of this package." % bazel_package + msg = "No store links in bazel package '{bazel_package}' for npm package npm package {package}@{version}. This is neither the root package nor a link package of this package.".format( + bazel_package = bazel_package, + package = package, + version = version, + ) fail(msg) - deps = {deps} - ref_deps = {ref_deps} + deps = {k.format(link_root_name = link_root_name): v for k, v in deps.items()} + ref_deps = {k.format(link_root_name = link_root_name): v for k, v in ref_deps.items()} + lc_deps = {k.format(link_root_name = link_root_name): v for k, v in lc_deps.items()} - store_target_name = "{package_store_root}/{{}}/{package_store_name}".format(link_root_name) + store_target_name = "%s/%s/%s" % (utils.package_store_root, link_root_name, package_store_name) # reference target used to avoid circular deps _npm_package_store( - name = "{{}}/ref".format(store_target_name), - package = "{package}", - version = "{version}", - dev = {dev}, - tags = ["manual"],{maybe_exclude_package_contents} + name = "{}/ref".format(store_target_name), + package = package, + version = version, + dev = dev, + tags = ["manual"], + exclude_package_contents = exclude_package_contents, ) # post-lifecycle target with reference deps for use in terminal target with transitive closure _npm_package_store( - name = "{{}}/pkg".format(store_target_name), - src = "{{}}/pkg_lc".format(store_target_name) if {has_lifecycle_build_target} else "{npm_package_target}", - package = "{package}", - version = "{version}", - dev = {dev}, + name = "{}/pkg".format(store_target_name), + src = "{}/pkg_lc".format(store_target_name) if has_lifecycle_build_target else npm_package_target, + package = package, + version = version, + dev = dev, deps = ref_deps, - tags = ["manual"],{maybe_exclude_package_contents} + tags = ["manual"], + exclude_package_contents = exclude_package_contents, ) # package store target with transitive closure of all npm package dependencies _npm_package_store( name = store_target_name, - src = None if {transitive_closure_pattern} else "{npm_package_target}", - package = "{package}", - version = "{version}", - dev = {dev}, + src = None if transitive_closure_pattern else npm_package_target, + package = package, + version = version, + dev = dev, deps = deps, visibility = ["//visibility:public"], - tags = ["manual"],{maybe_exclude_package_contents} + tags = ["manual"], + exclude_package_contents = exclude_package_contents, ) # filegroup target that provides a single file which is # package directory for use in $(execpath) and $(rootpath) native.filegroup( - name = "{{}}/dir".format(store_target_name), - srcs = [":{{}}".format(store_target_name)], - output_group = "{package_directory_output_group}", + name = "{}/dir".format(store_target_name), + srcs = [":{}".format(store_target_name)], + output_group = utils.package_directory_output_group, visibility = ["//visibility:public"], tags = ["manual"], ) -""" - -_LINK_JS_PACKAGE_LIFECYCLE_TMPL = """\ - lc_deps = {lc_deps} - # pre-lifecycle target with reference deps for use terminal pre-lifecycle target - _npm_package_store( - name = "{{}}/pkg_pre_lc_lite".format(store_target_name), - package = "{package}", - version = "{version}", - dev = {dev}, - deps = ref_deps, - tags = ["manual"],{maybe_exclude_package_contents} - ) + if has_lifecycle_build_target: + # pre-lifecycle target with reference deps for use terminal pre-lifecycle target + _npm_package_store( + name = "{}/pkg_pre_lc_lite".format(store_target_name), + package = package, + version = version, + dev = dev, + deps = ref_deps, + tags = ["manual"], + exclude_package_contents = exclude_package_contents, + ) - # terminal pre-lifecycle target for use in lifecycle build target below - _npm_package_store( - name = "{{}}/pkg_pre_lc".format(store_target_name), - package = "{package}", - version = "{version}", - dev = {dev}, - deps = lc_deps, - tags = ["manual"],{maybe_exclude_package_contents} - ) + # terminal pre-lifecycle target for use in lifecycle build target below + _npm_package_store( + name = "{}/pkg_pre_lc".format(store_target_name), + package = package, + version = version, + dev = dev, + deps = lc_deps, + tags = ["manual"], + exclude_package_contents = exclude_package_contents, + ) - # lifecycle build action - _js_run_binary( - name = "{{}}/lc".format(store_target_name), - srcs = [ - "{npm_package_target}", - ":{{}}/pkg_pre_lc".format(store_target_name), - ], - # js_run_binary runs in the output dir; must add "../../../" because paths are relative to the exec root - args = [ - "{package}", - "../../../$(execpath {npm_package_target})", - "../../../$(@D)", - ] + - select({{ - Label("@aspect_rules_js//platforms/os:osx"): ["--platform=darwin"], - Label("@aspect_rules_js//platforms/os:linux"): ["--platform=linux"], - Label("@aspect_rules_js//platforms/os:windows"): ["--platform=win32"], - "//conditions:default": [], - }}) + - select({{ - Label("@aspect_rules_js//platforms/cpu:arm64"): ["--arch=arm64"], - Label("@aspect_rules_js//platforms/cpu:x86_64"): ["--arch=x64"], - "//conditions:default": [], - }}) + - select({{ - Label("@aspect_rules_js//platforms/libc:glibc"): ["--libc=glibc"], - Label("@aspect_rules_js//platforms/libc:musl"): ["--libc=musl"], - "//conditions:default": [], - }}), - copy_srcs_to_bin = False, - tool = Label("@aspect_rules_js//npm/private/lifecycle:lifecycle-hooks"), - out_dirs = ["{lifecycle_output_dir}"], - tags = ["manual"], - execution_requirements = {lifecycle_hooks_execution_requirements}, - mnemonic = "NpmLifecycleHook", - progress_message = "Running lifecycle hooks on npm package {package}@{version}", - env = {lifecycle_hooks_env}, - use_default_shell_env = {use_default_shell_env}, - ) + # "node_modules/{package_store_root}/{package_store_name}/node_modules/{package}" + lifecycle_output_dir = "node_modules/{}/{}/node_modules/{}".format(utils.package_store_root, package_store_name, package) + + # lifecycle build action + _js_run_binary( + name = "{}/lc".format(store_target_name), + srcs = [ + npm_package_target, + ":{}/pkg_pre_lc".format(store_target_name), + ], + # js_run_binary runs in the output dir; must add "../../../" because paths are relative to the exec root + args = [ + package, + "../../../$(execpath {})".format(npm_package_target), + "../../../$(@D)", + ] + + select({ + Label("@aspect_rules_js//platforms/os:osx"): ["--platform=darwin"], + Label("@aspect_rules_js//platforms/os:linux"): ["--platform=linux"], + Label("@aspect_rules_js//platforms/os:windows"): ["--platform=win32"], + "//conditions:default": [], + }) + + select({ + Label("@aspect_rules_js//platforms/cpu:arm64"): ["--arch=arm64"], + Label("@aspect_rules_js//platforms/cpu:x86_64"): ["--arch=x64"], + "//conditions:default": [], + }) + + select({ + Label("@aspect_rules_js//platforms/libc:glibc"): ["--libc=glibc"], + Label("@aspect_rules_js//platforms/libc:musl"): ["--libc=musl"], + "//conditions:default": [], + }), + copy_srcs_to_bin = False, + tool = Label("@aspect_rules_js//npm/private/lifecycle:lifecycle-hooks"), + out_dirs = [lifecycle_output_dir], + tags = ["manual"], + execution_requirements = lifecycle_hooks_execution_requirements, + mnemonic = "NpmLifecycleHook", + progress_message = "Running lifecycle hooks on npm package %s@%s}" % (package, version), + env = lifecycle_hooks_env, + use_default_shell_env = use_default_shell_env, + ) - # post-lifecycle npm_package - _npm_package_internal( - name = "{{}}/pkg_lc".format(store_target_name), - src = ":{{}}/lc".format(store_target_name), - package = "{package}", - version = "{version}", - tags = ["manual"], - ) -""" + # post-lifecycle npm_package + npm_package_internal( + name = "{}/pkg_lc".format(store_target_name), + src = ":{}/lc".format(store_target_name), + package = "{package}", + version = "{version}", + tags = ["manual"], + ) -_LINK_JS_PACKAGE_LINK_IMPORTED_STORE_TMPL = """\ -# Generated npm_package_store and npm_link_package_store targets for npm package {package}@{version} -# buildifier: disable=function-docstring -def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = "{package_store_root}/{{}}/{package_store_name}".format(link_root_name) +def npm_link_imported_package_store_internal( + name, + link_root_name, + link_alias, + root_package, + link_visibility, + bins, + package_store_name, + public_visibility): + store_target_name = "%s/%s/%s" % (utils.package_store_root, link_root_name, package_store_name) # terminal package store target to link - _npm_link_package_store( + npm_link_package_store( name = name, package = link_alias, - src = "//{root_package}:{{}}".format(store_target_name), - visibility = {link_visibility}, - tags = ["manual"],{maybe_bins} + src = "//%s:%s" % (root_package, store_target_name), + visibility = link_visibility, + tags = ["manual"], + bins = bins, ) # filegroup target that provides a single file which is # package directory for use in $(execpath) and $(rootpath) native.filegroup( - name = "{{}}/dir".format(name), - srcs = [":{{}}".format(name)], - output_group = "{package_directory_output_group}", - visibility = {link_visibility}, + name = "{}/dir".format(name), + srcs = [":" + name], + output_group = utils.package_directory_output_group, + visibility = link_visibility, tags = ["manual"], ) -""" -_LINK_JS_PACKAGE_LINK_IMPORTED_PKG_TMPL = """\ + return [":{}".format(name)] if public_visibility else [] + +_LINK_JS_PACKAGE_LINK_IMPORTED_STORE_TMPL = """\ # Generated npm_package_store and npm_link_package_store targets for npm package {package}@{version} # buildifier: disable=function-docstring -def npm_link_imported_package( - name = "node_modules", - link = {link_default}, +def npm_link_imported_package_store(name, link_root_name, link_alias): + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = {link_visibility}, + bins = {bins}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = {public_visibility}, + ) +""" + +# Invoked by generated npm_link_imported_package_store targets for npm package {package}@{version} +# buildifier: disable=function-docstring +def npm_link_imported_package_internal( + name, + package, + version, + root_package, + link, + link_packages, + public_visibility, + npm_link_imported_package_store_macro, + npm_imported_package_store_macro, fail_if_no_link = True): bazel_package = native.package_name() - root_package = "{root_package}" - link_packages = {link_packages} if link_packages and link != None: fail("link attribute cannot be specified when link_packages are set") @@ -225,23 +304,31 @@ def npm_link_imported_package( is_root = bazel_package == root_package if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package {package}@{version}. This is neither the root package nor a link package of this package." % bazel_package + msg = "Nothing to link in bazel package '{bazel_package}' for npm package npm package {package}@{version}. This is neither the root package nor a link package of this package.".format( + bazel_package = bazel_package, + package = package, + version = version, + ) fail(msg) link_targets = [] - scoped_targets = {{}} + scoped_targets = {} if is_link: link_aliases = [] if bazel_package in link_packages: link_aliases = link_packages[bazel_package] if not link_aliases: - link_aliases = ["{package}"] + link_aliases = [package] for link_alias in link_aliases: - link_target_name = "{{}}/{{}}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if {public_visibility}: - link_targets.append(":{{}}".format(link_target_name)) + link_target_name = "{}/{}".format(name, link_alias) + npm_link_imported_package_store_macro( + name = link_target_name, + link_root_name = name, + link_alias = link_alias, + ) + if public_visibility: + link_targets.append(":" + link_target_name) link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None if link_scope: if link_scope not in scoped_targets: @@ -249,9 +336,29 @@ def npm_link_imported_package( scoped_targets[link_scope].append(link_target_name) if is_root: - npm_imported_package_store(name) + npm_imported_package_store_macro(name) return (link_targets, scoped_targets) + +_LINK_JS_PACKAGE_LINK_IMPORTED_PKG_TMPL = """\ +# Generated npm_package_store and npm_link_package_store targets for npm package {package}@{version} +# buildifier: disable=function-docstring +def npm_link_imported_package( + name = "node_modules", + link = {link_default}, + fail_if_no_link = True): + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = {link_packages}, + public_visibility = {public_visibility}, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) """ def bin_internal(name, link_workspace_and_package, link_root_name, package_store_name, bin_path, bin_mnemonic, **kwargs): @@ -643,9 +750,9 @@ def _npm_import_links_rule_impl(rctx): for (dep_name, dep_version) in rctx.attr.deps.items(): dep_package_store_name = utils.package_store_name(dep_name, dep_version) if dep_version.startswith("link:") or dep_version.startswith("file:"): - dep_store_target = """"//{root_package}:{package_store_root}/{{}}/{package_store_name}".format(link_root_name)""" + dep_store_target = '"//{root_package}:{package_store_root}/{{link_root_name}}/{package_store_name}"' else: - dep_store_target = """":{package_store_root}/{{}}/{package_store_name}/ref".format(link_root_name)""" + dep_store_target = '":{package_store_root}/{{link_root_name}}/{package_store_name}/ref"' dep_store_target = dep_store_target.format( root_package = rctx.attr.root_package, package_store_name = dep_package_store_name, @@ -663,16 +770,16 @@ def _npm_import_links_rule_impl(rctx): for (dep_name, dep_versions) in rctx.attr.transitive_closure.items(): for dep_version in dep_versions: if dep_version.startswith("link:") or dep_version.startswith("file:"): - dep_store_target = """"//{root_package}:{package_store_root}/{{}}/{package_store_name}".format(link_root_name)""" + dep_store_target = '"//{root_package}:{package_store_root}/{{link_root_name}}/{package_store_name}"' lc_dep_store_target = dep_store_target else: - dep_store_target = """":{package_store_root}/{{}}/{package_store_name}/pkg".format(link_root_name)""" + dep_store_target = '":{package_store_root}/{{link_root_name}}/{package_store_name}/pkg"' lc_dep_store_target = dep_store_target if dep_name == rctx.attr.package and dep_version == rctx.attr.version: # special case for lifecycle transitive closure deps; do not depend on # the __pkg of this package as that will be the output directory # of the lifecycle action - lc_dep_store_target = """":{package_store_root}/{{}}/{package_store_name}/pkg_pre_lc_lite".format(link_root_name)""" + lc_dep_store_target = '":{package_store_root}/{{link_root_name}}/{package_store_name}/pkg_pre_lc_lite"' dep_package_store_name = utils.package_store_name(dep_name, dep_version) @@ -696,7 +803,7 @@ def _npm_import_links_rule_impl(rctx): deps[dep_store_target].append(dep_name) else: for (dep_name, dep_version) in rctx.attr.deps.items(): - dep_store_target = """":{package_store_root}/{{}}/{package_store_name}".format(link_root_name)""".format( + dep_store_target = '":{package_store_root}/{{link_root_name}}/{package_store_name}"'.format( package_store_name = utils.package_store_name(dep_name, dep_version), package_store_root = utils.package_store_root, ) @@ -711,9 +818,6 @@ def _npm_import_links_rule_impl(rctx): package_store_name = utils.package_store_name(rctx.attr.package, rctx.attr.version) - # "node_modules/{package_store_root}/{package_store_name}/node_modules/{package}" - lifecycle_output_dir = "node_modules/{}/{}/node_modules/{}".format(utils.package_store_root, package_store_name, rctx.attr.package) - # strip _links post-fix to get the repository name of the npm sources npm_import_sources_repo_name = rctx.name[:-len(utils.links_repo_suffix)] @@ -724,9 +828,19 @@ def _npm_import_links_rule_impl(rctx): npm_import_sources_repo_name, ) - link_packages = {} + link_packages = "{\n" + indent = " " * 12 for package, link_aliases in rctx.attr.link_packages.items(): - link_packages[package] = link_aliases or [rctx.attr.package] + if link_aliases and link_aliases != [rctx.attr.package]: + link_packages += indent + '"{package}": {link_aliases},\n'.format( + package = package, + link_aliases = repr(link_aliases), + ) + else: + link_packages += indent + '"{package}": [PACKAGE],\n'.format( + package = package, + ) + link_packages += " " * 8 + "}" # collapse link aliases lists into comma separated strings for dep in deps.keys(): @@ -749,52 +863,38 @@ def _npm_import_links_rule_impl(rctx): for ec in rctx.attr.lifecycle_hooks_execution_requirements: lifecycle_hooks_execution_requirements[ec] = "1" - maybe_bins = (""" - bins = %s,""" % starlark_codegen_utils.to_dict_attr(rctx.attr.bins, 3)) if len(rctx.attr.bins) > 0 else "" + bins = starlark_codegen_utils.to_dict_attr(rctx.attr.bins, 2) if len(rctx.attr.bins) > 0 else "{}" public_visibility = ("//visibility:public" in rctx.attr.package_visibility) - maybe_exclude_package_contents = "" - if rctx.attr.exclude_package_contents == []: - maybe_exclude_package_contents = "" - elif rctx.attr.exclude_package_contents != None: - maybe_exclude_package_contents = "\n exclude_package_contents = " + starlark_codegen_utils.to_list_attr(rctx.attr.exclude_package_contents) + "," - npm_link_pkg_bzl_vars = dict( - deps = starlark_codegen_utils.to_dict_attr(deps, 1, quote_key = False), + deps = starlark_codegen_utils.to_dict_attr(deps, 2, quote_key = False), link_default = "None" if rctx.attr.link_packages else "True", npm_package_target = npm_package_target, - lc_deps = starlark_codegen_utils.to_dict_attr(lc_deps, 1, quote_key = False), + lc_deps = starlark_codegen_utils.to_dict_attr(lc_deps, 2, quote_key = False), has_lifecycle_build_target = str(rctx.attr.lifecycle_build_target), lifecycle_hooks_execution_requirements = starlark_codegen_utils.to_dict_attr(lifecycle_hooks_execution_requirements, 2), lifecycle_hooks_env = starlark_codegen_utils.to_dict_attr(lifecycle_hooks_env), - lifecycle_output_dir = lifecycle_output_dir, - npm_link_package_bzl = "@%s//:%s" % (rctx.name, _DEFS_BZL_FILENAME), - link_packages = starlark_codegen_utils.to_dict_attr(link_packages, 1, quote_value = False), + link_packages = link_packages, link_visibility = rctx.attr.package_visibility, public_visibility = str(public_visibility), package = rctx.attr.package, - package_directory_output_group = utils.package_directory_output_group, - rctx_name = rctx.name, - ref_deps = starlark_codegen_utils.to_dict_attr(ref_deps, 1, quote_key = False), + ref_deps = starlark_codegen_utils.to_dict_attr(ref_deps, 2, quote_key = False), root_package = rctx.attr.root_package, transitive_closure_pattern = str(transitive_closure_pattern), version = rctx.attr.version, package_store_name = package_store_name, - package_store_root = utils.package_store_root, - maybe_bins = maybe_bins, + bins = bins, dev = rctx.attr.dev, use_default_shell_env = rctx.attr.lifecycle_hooks_use_default_shell_env, - maybe_exclude_package_contents = maybe_exclude_package_contents, + exclude_package_contents = starlark_codegen_utils.to_list_attr(rctx.attr.exclude_package_contents), ) npm_link_package_bzl = [ tmpl.format(**npm_link_pkg_bzl_vars) for tmpl in [ _LINK_JS_PACKAGE_LOADS_TMPL, - _LINK_JS_PACKAGE_LIFECYCLE_LOADS_TMPL if rctx.attr.lifecycle_build_target else None, _LINK_JS_PACKAGE_TMPL, - _LINK_JS_PACKAGE_LIFECYCLE_TMPL if rctx.attr.lifecycle_build_target else None, _LINK_JS_PACKAGE_LINK_IMPORTED_STORE_TMPL, _LINK_JS_PACKAGE_LINK_IMPORTED_PKG_TMPL, ] diff --git a/npm/private/test/snapshots/fsevents_links_defs.bzl b/npm/private/test/snapshots/fsevents_links_defs.bzl index b1fade3bc..725af34e4 100644 --- a/npm/private/test/snapshots/fsevents_links_defs.bzl +++ b/npm/private/test/snapshots/fsevents_links_defs.bzl @@ -4,168 +4,56 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") -load("@aspect_rules_js//js:defs.bzl", _js_run_binary = "js_run_binary") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") -# buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_package_internal.bzl", _npm_package_internal = "npm_package_internal") +PACKAGE = "fsevents" +VERSION = "2.3.2" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "fsevents@2.3.2" # Generated npm_package_store targets for npm package fsevents@2.3.2 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package fsevents@2.3.2. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/fsevents@2.3.2/pkg".format(link_root_name): "fsevents", - } - ref_deps = {} - - store_target_name = ".aspect_rules_js/{}/fsevents@2.3.2".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "fsevents", - version = "2.3.2", - dev = True, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if True else "@@_main~npm~npm__fsevents__2.3.2//:pkg", - package = "fsevents", - version = "2.3.2", - dev = True, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@_main~npm~npm__fsevents__2.3.2//:pkg", - package = "fsevents", - version = "2.3.2", - dev = True, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - lc_deps = { - ":.aspect_rules_js/{}/fsevents@2.3.2/pkg_pre_lc_lite".format(link_root_name): "fsevents", - } - - # pre-lifecycle target with reference deps for use terminal pre-lifecycle target - _npm_package_store( - name = "{}/pkg_pre_lc_lite".format(store_target_name), - package = "fsevents", - version = "2.3.2", - dev = True, - deps = ref_deps, - tags = ["manual"], - ) - - # terminal pre-lifecycle target for use in lifecycle build target below - _npm_package_store( - name = "{}/pkg_pre_lc".format(store_target_name), - package = "fsevents", - version = "2.3.2", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.2/pkg": "fsevents", + }, + ref_deps = {}, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.2/pkg_pre_lc_lite": "fsevents", + }, dev = True, - deps = lc_deps, - tags = ["manual"], - ) - - # lifecycle build action - _js_run_binary( - name = "{}/lc".format(store_target_name), - srcs = [ - "@@_main~npm~npm__fsevents__2.3.2//:pkg", - ":{}/pkg_pre_lc".format(store_target_name), - ], - # js_run_binary runs in the output dir; must add "../../../" because paths are relative to the exec root - args = [ - "fsevents", - "../../../$(execpath @@_main~npm~npm__fsevents__2.3.2//:pkg)", - "../../../$(@D)", - ] + - select({ - Label("@aspect_rules_js//platforms/os:osx"): ["--platform=darwin"], - Label("@aspect_rules_js//platforms/os:linux"): ["--platform=linux"], - Label("@aspect_rules_js//platforms/os:windows"): ["--platform=win32"], - "//conditions:default": [], - }) + - select({ - Label("@aspect_rules_js//platforms/cpu:arm64"): ["--arch=arm64"], - Label("@aspect_rules_js//platforms/cpu:x86_64"): ["--arch=x64"], - "//conditions:default": [], - }) + - select({ - Label("@aspect_rules_js//platforms/libc:glibc"): ["--libc=glibc"], - Label("@aspect_rules_js//platforms/libc:musl"): ["--libc=musl"], - "//conditions:default": [], - }), - copy_srcs_to_bin = False, - tool = Label("@aspect_rules_js//npm/private/lifecycle:lifecycle-hooks"), - out_dirs = ["node_modules/.aspect_rules_js/fsevents@2.3.2/node_modules/fsevents"], - tags = ["manual"], - execution_requirements = { + has_lifecycle_build_target = True, + transitive_closure_pattern = True, + npm_package_target = "@@_main~npm~npm__fsevents__2.3.2//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = { "no-sandbox": "1", }, - mnemonic = "NpmLifecycleHook", - progress_message = "Running lifecycle hooks on npm package fsevents@2.3.2", - env = {}, use_default_shell_env = False, - ) - - # post-lifecycle npm_package - _npm_package_internal( - name = "{}/pkg_lc".format(store_target_name), - src = ":{}/lc".format(store_target_name), - package = "fsevents", - version = "2.3.2", - tags = ["manual"], + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package fsevents@2.3.2 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/fsevents@2.3.2".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package fsevents@2.3.2 @@ -174,41 +62,16 @@ def npm_link_imported_package( name = "node_modules", link = True, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = {} - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package fsevents@2.3.2. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["fsevents"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/npm/private/test/snapshots/rollup_links_defs.bzl b/npm/private/test/snapshots/rollup_links_defs.bzl index d85c503b4..098113574 100644 --- a/npm/private/test/snapshots/rollup_links_defs.bzl +++ b/npm/private/test/snapshots/rollup_links_defs.bzl @@ -4,92 +4,58 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") + +PACKAGE = "rollup" +VERSION = "2.70.2" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "rollup@2.70.2" # Generated npm_package_store targets for npm package rollup@2.70.2 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package rollup@2.70.2. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/fsevents@2.3.2/pkg".format(link_root_name): "fsevents", - ":.aspect_rules_js/{}/rollup@2.70.2/pkg".format(link_root_name): "rollup", - } - ref_deps = { - ":.aspect_rules_js/{}/fsevents@2.3.2/ref".format(link_root_name): "fsevents", - } - - store_target_name = ".aspect_rules_js/{}/rollup@2.70.2".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "rollup", - version = "2.70.2", - dev = True, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if False else "@@_main~npm~npm__rollup__2.70.2//:pkg", - package = "rollup", - version = "2.70.2", - dev = True, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@_main~npm~npm__rollup__2.70.2//:pkg", - package = "rollup", - version = "2.70.2", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.2/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.70.2/pkg": "rollup", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.2/ref": "fsevents", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/fsevents@2.3.2/pkg": "fsevents", + ":.aspect_rules_js/{link_root_name}/rollup@2.70.2/pkg_pre_lc_lite": "rollup", + }, dev = True, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + has_lifecycle_build_target = False, + transitive_closure_pattern = True, + npm_package_target = "@@_main~npm~npm__rollup__2.70.2//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = {}, + use_default_shell_env = False, + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.70.2 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/rollup@2.70.2".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:public"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = True, ) # Generated npm_package_store and npm_link_package_store targets for npm package rollup@2.70.2 @@ -98,43 +64,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "examples/npm_deps": ["rollup"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package rollup@2.70.2. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["rollup"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if True: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "examples/npm_deps": [PACKAGE], + }, + public_visibility = True, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) diff --git a/npm/private/test/snapshots/unused_links_defs.bzl b/npm/private/test/snapshots/unused_links_defs.bzl index 4c70c5547..d029334b1 100644 --- a/npm/private/test/snapshots/unused_links_defs.bzl +++ b/npm/private/test/snapshots/unused_links_defs.bzl @@ -4,96 +4,65 @@ load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") # buildifier: disable=bzl-visibility -load("@aspect_rules_js//npm/private:npm_link_package_store.bzl", _npm_link_package_store = "npm_link_package_store") +load("@aspect_rules_js//npm/private:npm_import.bzl", + _npm_imported_package_store = "npm_imported_package_store_internal", + _npm_link_imported_package = "npm_link_imported_package_internal", + _npm_link_imported_package_store = "npm_link_imported_package_store_internal") + +PACKAGE = "unused" +VERSION = "0.2.2" +_ROOT_PACKAGE = "" +_PACKAGE_STORE_NAME = "unused@0.2.2" # Generated npm_package_store targets for npm package unused@0.2.2 # buildifier: disable=function-docstring def npm_imported_package_store(link_root_name): - bazel_package = native.package_name() - root_package = "" - is_root = bazel_package == root_package - if not is_root: - msg = "No store links in bazel package '%s' for npm package npm package unused@0.2.2. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - deps = { - ":.aspect_rules_js/{}/esprima@1.0.0/pkg".format(link_root_name): "esprima", - ":.aspect_rules_js/{}/minimist@0.0.10/pkg".format(link_root_name): "minimist", - ":.aspect_rules_js/{}/optimist@0.6.0/pkg".format(link_root_name): "optimist", - ":.aspect_rules_js/{}/unused@0.2.2/pkg".format(link_root_name): "unused", - ":.aspect_rules_js/{}/wordwrap@0.0.3/pkg".format(link_root_name): "wordwrap", - } - ref_deps = { - ":.aspect_rules_js/{}/esprima@1.0.0/ref".format(link_root_name): "esprima", - ":.aspect_rules_js/{}/optimist@0.6.0/ref".format(link_root_name): "optimist", - } - - store_target_name = ".aspect_rules_js/{}/unused@0.2.2".format(link_root_name) - - # reference target used to avoid circular deps - _npm_package_store( - name = "{}/ref".format(store_target_name), - package = "unused", - version = "0.2.2", - dev = True, - tags = ["manual"], - ) - - # post-lifecycle target with reference deps for use in terminal target with transitive closure - _npm_package_store( - name = "{}/pkg".format(store_target_name), - src = "{}/pkg_lc".format(store_target_name) if False else "@@_main~npm~npm__unused__0.2.2//:pkg", - package = "unused", - version = "0.2.2", - dev = True, - deps = ref_deps, - tags = ["manual"], - ) - - # package store target with transitive closure of all npm package dependencies - _npm_package_store( - name = store_target_name, - src = None if True else "@@_main~npm~npm__unused__0.2.2//:pkg", - package = "unused", - version = "0.2.2", + _npm_imported_package_store( + link_root_name = link_root_name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + deps = { + ":.aspect_rules_js/{link_root_name}/esprima@1.0.0/pkg": "esprima", + ":.aspect_rules_js/{link_root_name}/minimist@0.0.10/pkg": "minimist", + ":.aspect_rules_js/{link_root_name}/optimist@0.6.0/pkg": "optimist", + ":.aspect_rules_js/{link_root_name}/unused@0.2.2/pkg": "unused", + ":.aspect_rules_js/{link_root_name}/wordwrap@0.0.3/pkg": "wordwrap", + }, + ref_deps = { + ":.aspect_rules_js/{link_root_name}/esprima@1.0.0/ref": "esprima", + ":.aspect_rules_js/{link_root_name}/optimist@0.6.0/ref": "optimist", + }, + lc_deps = { + ":.aspect_rules_js/{link_root_name}/esprima@1.0.0/pkg": "esprima", + ":.aspect_rules_js/{link_root_name}/minimist@0.0.10/pkg": "minimist", + ":.aspect_rules_js/{link_root_name}/optimist@0.6.0/pkg": "optimist", + ":.aspect_rules_js/{link_root_name}/unused@0.2.2/pkg_pre_lc_lite": "unused", + ":.aspect_rules_js/{link_root_name}/wordwrap@0.0.3/pkg": "wordwrap", + }, dev = True, - deps = deps, - visibility = ["//visibility:public"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(store_target_name), - srcs = [":{}".format(store_target_name)], - output_group = "package_directory", - visibility = ["//visibility:public"], - tags = ["manual"], + has_lifecycle_build_target = False, + transitive_closure_pattern = True, + npm_package_target = "@@_main~npm~npm__unused__0.2.2//:pkg", + package_store_name = _PACKAGE_STORE_NAME, + lifecycle_hooks_env = {}, + lifecycle_hooks_execution_requirements = {}, + use_default_shell_env = False, + exclude_package_contents = [], ) # Generated npm_package_store and npm_link_package_store targets for npm package unused@0.2.2 # buildifier: disable=function-docstring def npm_link_imported_package_store(name, link_root_name, link_alias): - store_target_name = ".aspect_rules_js/{}/unused@0.2.2".format(link_root_name) - - # terminal package store target to link - _npm_link_package_store( - name = name, - package = link_alias, - src = "//:{}".format(store_target_name), - visibility = ["//visibility:private"], - tags = ["manual"], - ) - - # filegroup target that provides a single file which is - # package directory for use in $(execpath) and $(rootpath) - native.filegroup( - name = "{}/dir".format(name), - srcs = [":{}".format(name)], - output_group = "package_directory", - visibility = ["//visibility:private"], - tags = ["manual"], + return _npm_link_imported_package_store( + name, + link_root_name, + link_alias, + root_package = _ROOT_PACKAGE, + link_visibility = ["//visibility:private"], + bins = {}, + package_store_name = _PACKAGE_STORE_NAME, + public_visibility = False, ) # Generated npm_package_store and npm_link_package_store targets for npm package unused@0.2.2 @@ -102,43 +71,17 @@ def npm_link_imported_package( name = "node_modules", link = None, fail_if_no_link = True): - bazel_package = native.package_name() - root_package = "" - link_packages = { - "npm/private/test": ["unused"], - } - - if link_packages and link != None: - fail("link attribute cannot be specified when link_packages are set") - - is_link = (link == True) or (link == None and bazel_package in link_packages) - is_root = bazel_package == root_package - - if fail_if_no_link and not is_root and not link: - msg = "Nothing to link in bazel package '%s' for npm package npm package unused@0.2.2. This is neither the root package nor a link package of this package." % bazel_package - fail(msg) - - link_targets = [] - scoped_targets = {} - - if is_link: - link_aliases = [] - if bazel_package in link_packages: - link_aliases = link_packages[bazel_package] - if not link_aliases: - link_aliases = ["unused"] - for link_alias in link_aliases: - link_target_name = "{}/{}".format(name, link_alias) - npm_link_imported_package_store(name = link_target_name, link_root_name = name, link_alias = link_alias) - if False: - link_targets.append(":{}".format(link_target_name)) - link_scope = link_alias[:link_alias.find("/", 1)] if link_alias[0] == "@" else None - if link_scope: - if link_scope not in scoped_targets: - scoped_targets[link_scope] = [] - scoped_targets[link_scope].append(link_target_name) - - if is_root: - npm_imported_package_store(name) - - return (link_targets, scoped_targets) + return _npm_link_imported_package( + name, + package = PACKAGE, + version = VERSION, + root_package = _ROOT_PACKAGE, + link = link, + link_packages = { + "npm/private/test": [PACKAGE], + }, + public_visibility = False, + npm_link_imported_package_store_macro = npm_link_imported_package_store, + npm_imported_package_store_macro = npm_imported_package_store, + fail_if_no_link = fail_if_no_link, + ) From 8987d08adf24046e2d4fd9171b0c3ac3b7b2e6e6 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 24 Apr 2025 13:06:53 -0700 Subject: [PATCH 10/11] fix: js_image_layer support for rules_nodejs 5.x (#2186) Co-authored-by: Jason Bedard --- js/private/js_image_layer.bzl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/private/js_image_layer.bzl b/js/private/js_image_layer.bzl index aa46528ed..b3dab1a13 100644 --- a/js/private/js_image_layer.bzl +++ b/js/private/js_image_layer.bzl @@ -407,12 +407,17 @@ else { ) nodeinfo = ctx.attr._current_node[platform_common.ToolchainInfo].nodeinfo + if hasattr(nodeinfo, "node"): + node_exec = nodeinfo.node + else: + # TODO(3.0): drop support for deprecated toolchain attributes + node_exec = nodeinfo.target_tool_path ctx.actions.run( inputs = inputs, arguments = [splitter.path], unused_inputs_list = unused_inputs, outputs = splitter_outputs, - executable = nodeinfo.node, + executable = node_exec, progress_message = "Computing Layer Groups %{label}", mnemonic = "JsImageLayerGroups", ) @@ -647,5 +652,6 @@ js_image_layer = rule( doc = _DOC, toolchains = [ tar_lib.toolchain_type, + "@rules_nodejs//nodejs:toolchain_type", ], ) From de34ef9748fade6014df93a8ac1740b85b5d37ae Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Thu, 24 Apr 2025 13:22:55 -0700 Subject: [PATCH 11/11] chore: publish attestations to BCR (#2194) --- .github/workflows/publish.yaml | 34 +++++++++++++++++++++++ .github/workflows/release.yml | 50 ++++++++++++---------------------- 2 files changed, 51 insertions(+), 33 deletions(-) create mode 100644 .github/workflows/publish.yaml diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 000000000..23f9bfaf3 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,34 @@ +# Publish new releases to Bazel Central Registry. +name: Publish +on: + # Run the publish workflow after a successful release + # Will be triggered from the release.yaml workflow + workflow_call: + inputs: + tag_name: + required: true + type: string + secrets: + publish_token: + required: true + # In case of problems, let release engineers retry by manually dispatching + # the workflow from the GitHub UI + workflow_dispatch: + inputs: + tag_name: + required: true + type: string +jobs: + publish: + uses: bazel-contrib/publish-to-bcr/.github/workflows/publish.yaml@v0.0.4 + with: + tag_name: ${{ inputs.tag_name }} + # GitHub repository which is a fork of the upstream where the Pull Request will be opened. + registry_fork: aspect-build/bazel-central-registry + permissions: + attestations: write + contents: write + id-token: write + secrets: + # Necessary to push to the BCR fork, and to open a pull request against a registry + publish_token: ${{ secrets.BCR_PUBLISH_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8e7ad4eca..9b61ddad2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,41 +1,25 @@ # Cut a release whenever a new tag is pushed to the repo. -# You should use an annotated tag, like `git tag -a v1.2.3` -# and put the release notes into the commit message for the tag. name: Release on: push: tags: - 'v*.*.*' - +permissions: + id-token: write + attestations: write + contents: write jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Mount bazel caches - uses: actions/cache@v4 - with: - # Cache the --dist_cache and --repository_cache directories (see ci.bazelrc) - # and the default bazel output (https://bazel.build/remote/output-directories#layout) - # and bazelisk cache. - path: | - ~/.cache/bazel-disk-cache - ~/.cache/bazel-repository-cache - ~/.cache/bazel - ~/.cache/bazelisk - key: bazel-cache-release-${{ hashFiles('.bazelrc', '.bazelversion', '.bazeliskrc', '**/BUILD', '**/BUILD.bazel', '**/*.bzl', 'WORKSPACE', 'WORKSPACE.bazel', 'WORKSPACE.bzlmod', 'MODULE.bazel', '**/*.js', '!e2e') }} - restore-keys: bazel-cache-release- - - name: bazel test //... - run: bazel --bazelrc=.github/workflows/ci.bazelrc --bazelrc=.bazelrc test //... - - name: Prepare release - run: .github/workflows/release_prep.sh ${{ env.GITHUB_REF_NAME }} > release_notes.txt - - name: Release - uses: softprops/action-gh-release@v2 - with: - # Use GH feature to populate the changelog automatically - generate_release_notes: true - body_path: release_notes.txt - files: rules_js-*.tar.gz - fail_on_unmatched_files: true + release: + uses: bazel-contrib/.github/.github/workflows/release_ruleset.yaml@v7.2.2 + with: + release_files: rules_js-*.tar.gz + prerelease: false + tag_name: ${{ github.ref_name }} + publish: + needs: release + uses: ./.github/workflows/publish.yaml + with: + tag_name: ${{ github.ref_name }} + secrets: + publish_token: ${{ secrets.BCR_PUBLISH_TOKEN }}