From fe226e487cd71722cf2b9295f34991692669544a Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Wed, 21 Feb 2024 17:07:29 -0800 Subject: [PATCH] feat: add lifecycle_hooks_use_default_shell_env to npm lifecycle hooks --- docs/npm_import.md | 11 +- docs/npm_translate_lock.md | 4 +- docs/pnpm.md | 2 + e2e/gyp_no_install_script/BUILD.bazel | 13 + e2e/gyp_no_install_script/MODULE.bazel | 4 + e2e/gyp_no_install_script/WORKSPACE | 12 + .../test/repositories.bzl.checked | 2322 +++++++++++++++++ .../test/segfault-handler_defs.bzl.checked | 461 ++++ npm/extensions.bzl | 7 +- npm/private/npm_import.bzl | 16 +- npm/private/npm_translate_lock.bzl | 15 +- npm/private/npm_translate_lock_generate.bzl | 7 +- npm/private/npm_translate_lock_helpers.bzl | 4 +- .../npm_translate_lock_macro_helpers.bzl | 11 +- 14 files changed, 2875 insertions(+), 14 deletions(-) create mode 100644 e2e/gyp_no_install_script/test/repositories.bzl.checked create mode 100644 e2e/gyp_no_install_script/test/segfault-handler_defs.bzl.checked diff --git a/docs/npm_import.md b/docs/npm_import.md index 8c4e2a27f..cbbbd8243 100644 --- a/docs/npm_import.md +++ b/docs/npm_import.md @@ -26,11 +26,11 @@ for a given lockfile.
 npm_import(name, package, version, deps, extra_build_content, transitive_closure, root_package,
            link_workspace, link_packages, lifecycle_hooks, lifecycle_hooks_execution_requirements,
-           lifecycle_hooks_env, integrity, url, commit, replace_package, package_visibility,
-           patch_args, patches, custom_postinstall, npm_auth, npm_auth_basic, npm_auth_username,
-           npm_auth_password, bins, dev, register_copy_directory_toolchains,
-           register_copy_to_directory_toolchains, run_lifecycle_hooks, lifecycle_hooks_no_sandbox,
-           kwargs)
+           lifecycle_hooks_env, lifecycle_hooks_use_default_shell_env, integrity, url, commit,
+           replace_package, package_visibility, patch_args, patches, custom_postinstall, npm_auth,
+           npm_auth_basic, npm_auth_username, npm_auth_password, bins, dev,
+           register_copy_directory_toolchains, register_copy_to_directory_toolchains,
+           run_lifecycle_hooks, lifecycle_hooks_no_sandbox, kwargs)
 
Import a single npm package into Bazel. @@ -147,6 +147,7 @@ Read more about the downloader config: <https://blog.aspect.dev/configuring-b | lifecycle_hooks | List of lifecycle hook package.json scripts to run for this package if they exist. | [] | | lifecycle_hooks_execution_requirements | Execution requirements when running the lifecycle hooks.

For example:

 lifecycle_hooks_execution_requirements: ["no-sandbox', "requires-network"] 


This defaults to ["no-sandbox"] to limit the overhead of sandbox creation and copying the output TreeArtifact out of the sandbox. | ["no-sandbox"] | | lifecycle_hooks_env | Environment variables set for the lifecycle hooks action for this npm package if there is one.

Environment variables are defined by providing an array of "key=value" entries.

For example:

 lifecycle_hooks_env: ["PREBULT_BINARY=https://downloadurl"], 
| [] | +| lifecycle_hooks_use_default_shell_env | If True, the use_default_shell_env attribute of lifecycle hook actions is set to True.

See [use_default_shell_env](https://bazel.build/rules/lib/builtins/actions#run.use_default_shell_env)

This defaults to False reduce the negative effects of use_default_shell_env. Requires bazel-lib >= 2.4.2. | False | | integrity | Expected checksum of the file downloaded, in Subresource Integrity format. This must match the checksum of the file downloaded.

This is the same as appears in the pnpm-lock.yaml, yarn.lock or package-lock.json file.

It is a security risk to omit the checksum as remote files can change.

At best omitting this field will make your build non-hermetic.

It is optional to make development easier but should be set before shipping. | "" | | url | Optional url for this package. If unset, a default npm registry url is generated from the package name and version.

May start with git+ssh:// or git+https:// to indicate a git repository. For example,

 git+ssh://git@github.com/org/repo.git 


If url is configured as a git repository, the commit attribute must be set to the desired commit. | "" | | commit | Specific commit to be checked out if url is a git repository. | "" | diff --git a/docs/npm_translate_lock.md b/docs/npm_translate_lock.md index ad57d458a..4ce888e32 100644 --- a/docs/npm_translate_lock.md +++ b/docs/npm_translate_lock.md @@ -64,7 +64,8 @@ npm_translate_lock(name, public_hoist_packages, dev, no_optional, run_lifecycle_hooks, lifecycle_hooks, lifecycle_hooks_envs, lifecycle_hooks_exclude, lifecycle_hooks_execution_requirements, lifecycle_hooks_no_sandbox, - replace_packages, bins, verify_node_modules_ignored, verify_patches, quiet, + lifecycle_hooks_use_default_shell_env, replace_packages, bins, + verify_node_modules_ignored, verify_patches, quiet, external_repository_action_cache, link_workspace, pnpm_version, register_copy_directory_toolchains, register_copy_to_directory_toolchains, register_yq_toolchains, npm_package_target_name, use_starlark_yaml_parser, @@ -122,6 +123,7 @@ For more about how to use npm_translate_lock, read [pnpm and rules_js](/docs/pnp | lifecycle_hooks_exclude | A list of package names or package names with their version (e.g., "my-package" or "my-package@v1.2.3") to not run any lifecycle hooks on.

Equivalent to adding <value>: [] to lifecycle_hooks.

Read more: [lifecycles](/docs/pnpm.md#lifecycles) | [] | | lifecycle_hooks_execution_requirements | Execution requirements applied to the preinstall, install and postinstall lifecycle hooks on npm packages.

The execution requirements can be defined per package by package name or globally using "*".

Execution requirements are not additive. The most specific match wins.

Read more: [lifecycles](/docs/pnpm.md#lifecycles) | {} | | lifecycle_hooks_no_sandbox | If True, a "no-sandbox" execution requirement is added to all lifecycle hooks unless overridden by lifecycle_hooks_execution_requirements.

Equivalent to adding "*": ["no-sandbox"] to lifecycle_hooks_execution_requirements.

This defaults to True to limit the overhead of sandbox creation and copying the output TreeArtifacts out of the sandbox.

Read more: [lifecycles](/docs/pnpm.md#lifecycles) | True | +| lifecycle_hooks_use_default_shell_env | The use_default_shell_env attribute of the lifecycle hooks actions on npm packages.

See [use_default_shell_env](https://bazel.build/rules/lib/builtins/actions#run.use_default_shell_env)

This defaults to False reduce the negative effects of use_default_shell_env. Requires bazel-lib >= 2.4.2.

Read more: [lifecycles](/docs/pnpm.md#lifecycles) | {} | | replace_packages | A dict of package names to npm_package targets to link instead of the sources specified in the pnpm lock file for the corresponding packages.

The injected npm_package targets may optionally contribute transitive npm package dependencies on top of the transitive dependencies specified in the pnpm lock file for their respective packages, however, these transitive dependencies must not collide with pnpm lock specified transitive dependencies.

Any patches specified for the packages will be not applied to the injected npm_package targets. They will be applied, however, to the fetches sources for their respecitve packages so they can still be useful for patching the fetched package.json files, which are used to determine the generated bin entries for packages.

NB: lifecycle hooks and custom_postinstall scripts, if implicitly or explicitly enabled, will be run on the injected npm_package targets. These may be disabled explicitly using the lifecycle_hooks attribute. | {} | | bins | Binary files to create in node_modules/.bin for packages in this lock file.

For a given package, this is typically derived from the "bin" attribute in the package.json file of that package.

For example:

 bins = {     "@foo/bar": {         "foo": "./foo.js",         "bar": "./bar.js"     }, } 


Dicts of bins not additive. The most specific match wins.

In the future, this field may be automatically populated from information in the pnpm lock file. That feature is currently blocked on https://github.com/pnpm/pnpm/issues/5131.

Note: Bzlmod users must use an alternative syntax due to module extensions not supporting dict-of-dict attributes:

 bins = {     "@foo/bar": [         "foo=./foo.js",         "bar=./bar.js"     ], } 
| {} | | verify_node_modules_ignored | node_modules folders in the source tree should be ignored by Bazel.

This points to a .bazelignore file to verify that all nested node_modules directories pnpm will create are listed.

See https://github.com/bazelbuild/bazel/issues/8106 | None | diff --git a/docs/pnpm.md b/docs/pnpm.md index 2f2b0c8e3..7abb2f73d 100644 --- a/docs/pnpm.md +++ b/docs/pnpm.md @@ -275,6 +275,8 @@ which is equivalent to setting the `lifecycle_hooks` to an empty list for that p You can set environment variables for hook build actions using the `lifecycle_hooks_envs` attribute of `npm_translate_lock`. +Some hooks may depend on environment variables specified depending on [use_default_shell_env](https://bazel.build/rules/lib/builtins/actions#run.use_default_shell_env) which may be enabled for hook build actions using the `lifecycle_hooks_use_default_shell_env` attribute of `npm_translate_lock`. Requires bazel-lib >= 2.4.2. + In case there are multiple matches, some attributes are additive. (More specific matches are appended to previous matches.) Other attributes have specificity: the most specific match wins and the others are ignored. diff --git a/e2e/gyp_no_install_script/BUILD.bazel b/e2e/gyp_no_install_script/BUILD.bazel index ff12f4166..ef49c8b1b 100644 --- a/e2e/gyp_no_install_script/BUILD.bazel +++ b/e2e/gyp_no_install_script/BUILD.bazel @@ -1,3 +1,4 @@ +load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files") load("@npm//:defs.bzl", "npm_link_all_packages") load("@aspect_rules_js//js:defs.bzl", "js_test") @@ -10,3 +11,15 @@ js_test( ], entry_point = "test.js", ) + +write_source_files( + name = "write_npm_translate_lock", + files = { + "test/repositories.bzl.checked": "@npm//:repositories.bzl", + "test/segfault-handler_defs.bzl.checked": "@npm__segfault-handler__1.3.0__links//:defs.bzl", + }, + target_compatible_with = select({ + "@aspect_bazel_lib//lib:bzlmod": ["@platforms//:incompatible"], + "//conditions:default": [], + }), +) diff --git a/e2e/gyp_no_install_script/MODULE.bazel b/e2e/gyp_no_install_script/MODULE.bazel index 9f99ccbff..4704b0dd8 100644 --- a/e2e/gyp_no_install_script/MODULE.bazel +++ b/e2e/gyp_no_install_script/MODULE.bazel @@ -1,3 +1,4 @@ +bazel_dep(name = "aspect_bazel_lib", version = "2.4.2") bazel_dep(name = "aspect_rules_js", version = "0.0.0") local_path_override( module_name = "aspect_rules_js", @@ -8,6 +9,9 @@ npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") npm.npm_translate_lock( name = "npm", data = ["//:package.json"], + lifecycle_hooks_use_default_shell_env = { + "segfault-handler": "true", + }, npmrc = "//:.npmrc", pnpm_lock = "//:pnpm-lock.yaml", update_pnpm_lock = True, diff --git a/e2e/gyp_no_install_script/WORKSPACE b/e2e/gyp_no_install_script/WORKSPACE index 8e31b6545..f7f3fc00e 100644 --- a/e2e/gyp_no_install_script/WORKSPACE +++ b/e2e/gyp_no_install_script/WORKSPACE @@ -1,8 +1,17 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + local_repository( name = "aspect_rules_js", path = "../..", ) +http_archive( + name = "aspect_bazel_lib", + sha256 = "f75d03783588e054899eb0729a97fb5b8973c1a26f30373fafd485c90bf207d1", + strip_prefix = "bazel-lib-2.4.2", + url = "https://github.com/aspect-build/bazel-lib/releases/download/v2.4.2/bazel-lib-v2.4.2.tar.gz", +) + load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") rules_js_dependencies() @@ -19,6 +28,9 @@ load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock") npm_translate_lock( name = "npm", data = ["//:package.json"], + lifecycle_hooks_use_default_shell_env = { + "segfault-handler": True, + }, npmrc = "//:.npmrc", pnpm_lock = "//:pnpm-lock.yaml", update_pnpm_lock = True, diff --git a/e2e/gyp_no_install_script/test/repositories.bzl.checked b/e2e/gyp_no_install_script/test/repositories.bzl.checked new file mode 100644 index 000000000..5b7f1693d --- /dev/null +++ b/e2e/gyp_no_install_script/test/repositories.bzl.checked @@ -0,0 +1,2322 @@ +"""@generated by npm_translate_lock(name = "npm", pnpm_lock = "//:pnpm-lock.yaml")""" + +load("@aspect_rules_js//npm:repositories.bzl", "npm_import") + +# Generated npm_import repository rules corresponding to npm packages in //:pnpm-lock.yaml +# buildifier: disable=function-docstring +def npm_repositories(): + npm_import( + name = "npm__at_gar_promisify__1.1.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "@gar/promisify", + version = "1.1.3", + url = "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + transitive_closure = { + "@gar/promisify": ["1.1.3"], + }, + ) + + npm_import( + name = "npm__at_npmcli_fs__2.1.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "@npmcli/fs", + version = "2.1.2", + url = "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + deps = { + "@gar/promisify": "1.1.3", + "semver": "7.3.8", + }, + transitive_closure = { + "@gar/promisify": ["1.1.3"], + "@npmcli/fs": ["2.1.2"], + "lru-cache": ["6.0.0"], + "semver": ["7.3.8"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__at_npmcli_move-file__2.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "@npmcli/move-file", + version = "2.0.1", + url = "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + deps = { + "mkdirp": "1.0.4", + "rimraf": "3.0.2", + }, + transitive_closure = { + "@npmcli/move-file": ["2.0.1"], + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11"], + "concat-map": ["0.0.1"], + "fs.realpath": ["1.0.0"], + "glob": ["7.2.3"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "minimatch": ["3.1.2"], + "mkdirp": ["1.0.4"], + "once": ["1.4.0"], + "path-is-absolute": ["1.0.1"], + "rimraf": ["3.0.2"], + "wrappy": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__at_tootallnate_once__2.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "@tootallnate/once", + version = "2.0.0", + url = "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + transitive_closure = { + "@tootallnate/once": ["2.0.0"], + }, + ) + + npm_import( + name = "npm__abbrev__1.1.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "abbrev", + version = "1.1.1", + url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + transitive_closure = { + "abbrev": ["1.1.1"], + }, + ) + + npm_import( + name = "npm__agent-base__6.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "agent-base", + version = "6.0.2", + url = "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + deps = { + "debug": "4.3.4", + }, + transitive_closure = { + "agent-base": ["6.0.2"], + "debug": ["4.3.4"], + "ms": ["2.1.2"], + }, + ) + + npm_import( + name = "npm__agentkeepalive__4.2.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "agentkeepalive", + version = "4.2.1", + url = "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + deps = { + "debug": "4.3.4", + "depd": "1.1.2", + "humanize-ms": "1.2.1", + }, + transitive_closure = { + "agentkeepalive": ["4.2.1"], + "debug": ["4.3.4"], + "depd": ["1.1.2"], + "humanize-ms": ["1.2.1"], + "ms": ["2.1.2", "2.1.3"], + }, + ) + + npm_import( + name = "npm__aggregate-error__3.1.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "aggregate-error", + version = "3.1.0", + url = "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + deps = { + "clean-stack": "2.2.0", + "indent-string": "4.0.0", + }, + transitive_closure = { + "aggregate-error": ["3.1.0"], + "clean-stack": ["2.2.0"], + "indent-string": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__ansi-regex__5.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "ansi-regex", + version = "5.0.1", + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + transitive_closure = { + "ansi-regex": ["5.0.1"], + }, + ) + + npm_import( + name = "npm__aproba__2.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "aproba", + version = "2.0.0", + url = "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + transitive_closure = { + "aproba": ["2.0.0"], + }, + ) + + npm_import( + name = "npm__are-we-there-yet__3.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "are-we-there-yet", + version = "3.0.1", + url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + deps = { + "delegates": "1.0.0", + "readable-stream": "3.6.1", + }, + transitive_closure = { + "are-we-there-yet": ["3.0.1"], + "delegates": ["1.0.0"], + "inherits": ["2.0.4"], + "readable-stream": ["3.6.1"], + "safe-buffer": ["5.2.1"], + "string_decoder": ["1.3.0"], + "util-deprecate": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__balanced-match__1.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "balanced-match", + version = "1.0.2", + url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + transitive_closure = { + "balanced-match": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__bindings__1.5.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "bindings", + version = "1.5.0", + url = "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + deps = { + "file-uri-to-path": "1.0.0", + }, + transitive_closure = { + "bindings": ["1.5.0"], + "file-uri-to-path": ["1.0.0"], + }, + ) + + npm_import( + name = "npm__brace-expansion__1.1.11", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "brace-expansion", + version = "1.1.11", + url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + deps = { + "balanced-match": "1.0.2", + "concat-map": "0.0.1", + }, + transitive_closure = { + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11"], + "concat-map": ["0.0.1"], + }, + ) + + npm_import( + name = "npm__brace-expansion__2.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "brace-expansion", + version = "2.0.1", + url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + deps = { + "balanced-match": "1.0.2", + }, + transitive_closure = { + "balanced-match": ["1.0.2"], + "brace-expansion": ["2.0.1"], + }, + ) + + npm_import( + name = "npm__cacache__16.1.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "cacache", + version = "16.1.3", + url = "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + deps = { + "@npmcli/fs": "2.1.2", + "@npmcli/move-file": "2.0.1", + "chownr": "2.0.0", + "fs-minipass": "2.1.0", + "glob": "8.1.0", + "infer-owner": "1.0.4", + "lru-cache": "7.17.0", + "minipass": "3.3.6", + "minipass-collect": "1.0.2", + "minipass-flush": "1.0.5", + "minipass-pipeline": "1.2.4", + "mkdirp": "1.0.4", + "p-map": "4.0.0", + "promise-inflight": "1.0.1", + "rimraf": "3.0.2", + "ssri": "9.0.1", + "tar": "6.1.13", + "unique-filename": "2.0.1", + }, + transitive_closure = { + "@gar/promisify": ["1.1.3"], + "@npmcli/fs": ["2.1.2"], + "@npmcli/move-file": ["2.0.1"], + "aggregate-error": ["3.1.0"], + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11", "2.0.1"], + "cacache": ["16.1.3"], + "chownr": ["2.0.0"], + "clean-stack": ["2.2.0"], + "concat-map": ["0.0.1"], + "fs-minipass": ["2.1.0"], + "fs.realpath": ["1.0.0"], + "glob": ["7.2.3", "8.1.0"], + "imurmurhash": ["0.1.4"], + "indent-string": ["4.0.0"], + "infer-owner": ["1.0.4"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "lru-cache": ["6.0.0", "7.17.0"], + "minimatch": ["3.1.2", "5.1.6"], + "minipass": ["3.3.6", "4.2.4"], + "minipass-collect": ["1.0.2"], + "minipass-flush": ["1.0.5"], + "minipass-pipeline": ["1.2.4"], + "minizlib": ["2.1.2"], + "mkdirp": ["1.0.4"], + "once": ["1.4.0"], + "p-map": ["4.0.0"], + "path-is-absolute": ["1.0.1"], + "promise-inflight": ["1.0.1"], + "rimraf": ["3.0.2"], + "semver": ["7.3.8"], + "ssri": ["9.0.1"], + "tar": ["6.1.13"], + "unique-filename": ["2.0.1"], + "unique-slug": ["3.0.0"], + "wrappy": ["1.0.2"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__chownr__2.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "chownr", + version = "2.0.0", + url = "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + transitive_closure = { + "chownr": ["2.0.0"], + }, + ) + + npm_import( + name = "npm__clean-stack__2.2.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "clean-stack", + version = "2.2.0", + url = "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + transitive_closure = { + "clean-stack": ["2.2.0"], + }, + ) + + npm_import( + name = "npm__color-support__1.1.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "color-support", + version = "1.1.3", + url = "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + transitive_closure = { + "color-support": ["1.1.3"], + }, + ) + + npm_import( + name = "npm__concat-map__0.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "concat-map", + version = "0.0.1", + url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + transitive_closure = { + "concat-map": ["0.0.1"], + }, + ) + + npm_import( + name = "npm__console-control-strings__1.1.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "console-control-strings", + version = "1.1.0", + url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + transitive_closure = { + "console-control-strings": ["1.1.0"], + }, + ) + + npm_import( + name = "npm__debug__4.3.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "debug", + version = "4.3.4", + url = "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + deps = { + "ms": "2.1.2", + }, + transitive_closure = { + "debug": ["4.3.4"], + "ms": ["2.1.2"], + }, + ) + + npm_import( + name = "npm__delegates__1.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "delegates", + version = "1.0.0", + url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + transitive_closure = { + "delegates": ["1.0.0"], + }, + ) + + npm_import( + name = "npm__depd__1.1.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "depd", + version = "1.1.2", + url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + transitive_closure = { + "depd": ["1.1.2"], + }, + ) + + npm_import( + name = "npm__emoji-regex__8.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "emoji-regex", + version = "8.0.0", + url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + transitive_closure = { + "emoji-regex": ["8.0.0"], + }, + ) + + npm_import( + name = "npm__encoding__0.1.13", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "encoding", + version = "0.1.13", + url = "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + deps = { + "iconv-lite": "0.6.3", + }, + transitive_closure = { + "encoding": ["0.1.13"], + "iconv-lite": ["0.6.3"], + "safer-buffer": ["2.1.2"], + }, + lifecycle_hooks = ["preinstall", "install", "postinstall"], + lifecycle_hooks_execution_requirements = ["no-sandbox"], + ) + + npm_import( + name = "npm__env-paths__2.2.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "env-paths", + version = "2.2.1", + url = "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + transitive_closure = { + "env-paths": ["2.2.1"], + }, + ) + + npm_import( + name = "npm__err-code__2.0.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "err-code", + version = "2.0.3", + url = "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + transitive_closure = { + "err-code": ["2.0.3"], + }, + ) + + npm_import( + name = "npm__file-uri-to-path__1.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "file-uri-to-path", + version = "1.0.0", + url = "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + transitive_closure = { + "file-uri-to-path": ["1.0.0"], + }, + ) + + npm_import( + name = "npm__fs-minipass__2.1.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "fs-minipass", + version = "2.1.0", + url = "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + deps = { + "minipass": "3.3.6", + }, + transitive_closure = { + "fs-minipass": ["2.1.0"], + "minipass": ["3.3.6"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__fs.realpath__1.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "fs.realpath", + version = "1.0.0", + url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + transitive_closure = { + "fs.realpath": ["1.0.0"], + }, + ) + + npm_import( + name = "npm__gauge__4.0.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "gauge", + version = "4.0.4", + url = "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + deps = { + "aproba": "2.0.0", + "color-support": "1.1.3", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "signal-exit": "3.0.7", + "string-width": "4.2.3", + "strip-ansi": "6.0.1", + "wide-align": "1.1.5", + }, + transitive_closure = { + "ansi-regex": ["5.0.1"], + "aproba": ["2.0.0"], + "color-support": ["1.1.3"], + "console-control-strings": ["1.1.0"], + "emoji-regex": ["8.0.0"], + "gauge": ["4.0.4"], + "has-unicode": ["2.0.1"], + "is-fullwidth-code-point": ["3.0.0"], + "signal-exit": ["3.0.7"], + "string-width": ["4.2.3"], + "strip-ansi": ["6.0.1"], + "wide-align": ["1.1.5"], + }, + ) + + npm_import( + name = "npm__glob__7.2.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "glob", + version = "7.2.3", + url = "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + deps = { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.1.2", + "once": "1.4.0", + "path-is-absolute": "1.0.1", + }, + transitive_closure = { + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11"], + "concat-map": ["0.0.1"], + "fs.realpath": ["1.0.0"], + "glob": ["7.2.3"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "minimatch": ["3.1.2"], + "once": ["1.4.0"], + "path-is-absolute": ["1.0.1"], + "wrappy": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__glob__8.1.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "glob", + version = "8.1.0", + url = "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + deps = { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "5.1.6", + "once": "1.4.0", + }, + transitive_closure = { + "balanced-match": ["1.0.2"], + "brace-expansion": ["2.0.1"], + "fs.realpath": ["1.0.0"], + "glob": ["8.1.0"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "minimatch": ["5.1.6"], + "once": ["1.4.0"], + "wrappy": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__graceful-fs__4.2.10", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "graceful-fs", + version = "4.2.10", + url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + transitive_closure = { + "graceful-fs": ["4.2.10"], + }, + ) + + npm_import( + name = "npm__has-unicode__2.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "has-unicode", + version = "2.0.1", + url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + transitive_closure = { + "has-unicode": ["2.0.1"], + }, + ) + + npm_import( + name = "npm__http-cache-semantics__4.1.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "http-cache-semantics", + version = "4.1.1", + url = "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + transitive_closure = { + "http-cache-semantics": ["4.1.1"], + }, + ) + + npm_import( + name = "npm__http-proxy-agent__5.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "http-proxy-agent", + version = "5.0.0", + url = "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + deps = { + "@tootallnate/once": "2.0.0", + "agent-base": "6.0.2", + "debug": "4.3.4", + }, + transitive_closure = { + "@tootallnate/once": ["2.0.0"], + "agent-base": ["6.0.2"], + "debug": ["4.3.4"], + "http-proxy-agent": ["5.0.0"], + "ms": ["2.1.2"], + }, + ) + + npm_import( + name = "npm__https-proxy-agent__5.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "https-proxy-agent", + version = "5.0.1", + url = "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + deps = { + "agent-base": "6.0.2", + "debug": "4.3.4", + }, + transitive_closure = { + "agent-base": ["6.0.2"], + "debug": ["4.3.4"], + "https-proxy-agent": ["5.0.1"], + "ms": ["2.1.2"], + }, + ) + + npm_import( + name = "npm__humanize-ms__1.2.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "humanize-ms", + version = "1.2.1", + url = "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + deps = { + "ms": "2.1.3", + }, + transitive_closure = { + "humanize-ms": ["1.2.1"], + "ms": ["2.1.3"], + }, + ) + + npm_import( + name = "npm__iconv-lite__0.6.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "iconv-lite", + version = "0.6.3", + url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + deps = { + "safer-buffer": "2.1.2", + }, + transitive_closure = { + "iconv-lite": ["0.6.3"], + "safer-buffer": ["2.1.2"], + }, + ) + + npm_import( + name = "npm__imurmurhash__0.1.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "imurmurhash", + version = "0.1.4", + url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + transitive_closure = { + "imurmurhash": ["0.1.4"], + }, + ) + + npm_import( + name = "npm__indent-string__4.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "indent-string", + version = "4.0.0", + url = "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + transitive_closure = { + "indent-string": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__infer-owner__1.0.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "infer-owner", + version = "1.0.4", + url = "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + transitive_closure = { + "infer-owner": ["1.0.4"], + }, + ) + + npm_import( + name = "npm__inflight__1.0.6", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "inflight", + version = "1.0.6", + url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + deps = { + "once": "1.4.0", + "wrappy": "1.0.2", + }, + transitive_closure = { + "inflight": ["1.0.6"], + "once": ["1.4.0"], + "wrappy": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__inherits__2.0.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "inherits", + version = "2.0.4", + url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + transitive_closure = { + "inherits": ["2.0.4"], + }, + ) + + npm_import( + name = "npm__ip__2.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "ip", + version = "2.0.0", + url = "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + transitive_closure = { + "ip": ["2.0.0"], + }, + ) + + npm_import( + name = "npm__is-fullwidth-code-point__3.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "is-fullwidth-code-point", + version = "3.0.0", + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + transitive_closure = { + "is-fullwidth-code-point": ["3.0.0"], + }, + ) + + npm_import( + name = "npm__is-lambda__1.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "is-lambda", + version = "1.0.1", + url = "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + transitive_closure = { + "is-lambda": ["1.0.1"], + }, + ) + + npm_import( + name = "npm__isexe__2.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "isexe", + version = "2.0.0", + url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + transitive_closure = { + "isexe": ["2.0.0"], + }, + ) + + npm_import( + name = "npm__lru-cache__6.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "lru-cache", + version = "6.0.0", + url = "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + deps = { + "yallist": "4.0.0", + }, + transitive_closure = { + "lru-cache": ["6.0.0"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__lru-cache__7.17.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "lru-cache", + version = "7.17.0", + url = "https://registry.npmjs.org/lru-cache/-/lru-cache-7.17.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-zSxlVVwOabhVyTi6E8gYv2cr6bXK+8ifYz5/uyJb9feXX6NACVDwY4p5Ut3WC3Ivo/QhpARHU3iujx2xGAYHbQ==", + transitive_closure = { + "lru-cache": ["7.17.0"], + }, + ) + + npm_import( + name = "npm__make-fetch-happen__10.2.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "make-fetch-happen", + version = "10.2.1", + url = "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + deps = { + "agentkeepalive": "4.2.1", + "cacache": "16.1.3", + "http-cache-semantics": "4.1.1", + "http-proxy-agent": "5.0.0", + "https-proxy-agent": "5.0.1", + "is-lambda": "1.0.1", + "lru-cache": "7.17.0", + "minipass": "3.3.6", + "minipass-collect": "1.0.2", + "minipass-fetch": "2.1.2", + "minipass-flush": "1.0.5", + "minipass-pipeline": "1.2.4", + "negotiator": "0.6.3", + "promise-retry": "2.0.1", + "socks-proxy-agent": "7.0.0", + "ssri": "9.0.1", + }, + transitive_closure = { + "@gar/promisify": ["1.1.3"], + "@npmcli/fs": ["2.1.2"], + "@npmcli/move-file": ["2.0.1"], + "@tootallnate/once": ["2.0.0"], + "agent-base": ["6.0.2"], + "agentkeepalive": ["4.2.1"], + "aggregate-error": ["3.1.0"], + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11", "2.0.1"], + "cacache": ["16.1.3"], + "chownr": ["2.0.0"], + "clean-stack": ["2.2.0"], + "concat-map": ["0.0.1"], + "debug": ["4.3.4"], + "depd": ["1.1.2"], + "encoding": ["0.1.13"], + "err-code": ["2.0.3"], + "fs-minipass": ["2.1.0"], + "fs.realpath": ["1.0.0"], + "glob": ["7.2.3", "8.1.0"], + "http-cache-semantics": ["4.1.1"], + "http-proxy-agent": ["5.0.0"], + "https-proxy-agent": ["5.0.1"], + "humanize-ms": ["1.2.1"], + "iconv-lite": ["0.6.3"], + "imurmurhash": ["0.1.4"], + "indent-string": ["4.0.0"], + "infer-owner": ["1.0.4"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "ip": ["2.0.0"], + "is-lambda": ["1.0.1"], + "lru-cache": ["6.0.0", "7.17.0"], + "make-fetch-happen": ["10.2.1"], + "minimatch": ["3.1.2", "5.1.6"], + "minipass": ["3.3.6", "4.2.4"], + "minipass-collect": ["1.0.2"], + "minipass-fetch": ["2.1.2"], + "minipass-flush": ["1.0.5"], + "minipass-pipeline": ["1.2.4"], + "minipass-sized": ["1.0.3"], + "minizlib": ["2.1.2"], + "mkdirp": ["1.0.4"], + "ms": ["2.1.2", "2.1.3"], + "negotiator": ["0.6.3"], + "once": ["1.4.0"], + "p-map": ["4.0.0"], + "path-is-absolute": ["1.0.1"], + "promise-inflight": ["1.0.1"], + "promise-retry": ["2.0.1"], + "retry": ["0.12.0"], + "rimraf": ["3.0.2"], + "safer-buffer": ["2.1.2"], + "semver": ["7.3.8"], + "smart-buffer": ["4.2.0"], + "socks": ["2.7.1"], + "socks-proxy-agent": ["7.0.0"], + "ssri": ["9.0.1"], + "tar": ["6.1.13"], + "unique-filename": ["2.0.1"], + "unique-slug": ["3.0.0"], + "wrappy": ["1.0.2"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__minimatch__3.1.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minimatch", + version = "3.1.2", + url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + deps = { + "brace-expansion": "1.1.11", + }, + transitive_closure = { + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11"], + "concat-map": ["0.0.1"], + "minimatch": ["3.1.2"], + }, + ) + + npm_import( + name = "npm__minimatch__5.1.6", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minimatch", + version = "5.1.6", + url = "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + deps = { + "brace-expansion": "2.0.1", + }, + transitive_closure = { + "balanced-match": ["1.0.2"], + "brace-expansion": ["2.0.1"], + "minimatch": ["5.1.6"], + }, + ) + + npm_import( + name = "npm__minipass-collect__1.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minipass-collect", + version = "1.0.2", + url = "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + deps = { + "minipass": "3.3.6", + }, + transitive_closure = { + "minipass": ["3.3.6"], + "minipass-collect": ["1.0.2"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__minipass-fetch__2.1.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minipass-fetch", + version = "2.1.2", + url = "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + deps = { + "encoding": "0.1.13", + "minipass": "3.3.6", + "minipass-sized": "1.0.3", + "minizlib": "2.1.2", + }, + transitive_closure = { + "encoding": ["0.1.13"], + "iconv-lite": ["0.6.3"], + "minipass": ["3.3.6"], + "minipass-fetch": ["2.1.2"], + "minipass-sized": ["1.0.3"], + "minizlib": ["2.1.2"], + "safer-buffer": ["2.1.2"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__minipass-flush__1.0.5", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minipass-flush", + version = "1.0.5", + url = "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + deps = { + "minipass": "3.3.6", + }, + transitive_closure = { + "minipass": ["3.3.6"], + "minipass-flush": ["1.0.5"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__minipass-pipeline__1.2.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minipass-pipeline", + version = "1.2.4", + url = "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + deps = { + "minipass": "3.3.6", + }, + transitive_closure = { + "minipass": ["3.3.6"], + "minipass-pipeline": ["1.2.4"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__minipass-sized__1.0.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minipass-sized", + version = "1.0.3", + url = "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + deps = { + "minipass": "3.3.6", + }, + transitive_closure = { + "minipass": ["3.3.6"], + "minipass-sized": ["1.0.3"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__minipass__3.3.6", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minipass", + version = "3.3.6", + url = "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + deps = { + "yallist": "4.0.0", + }, + transitive_closure = { + "minipass": ["3.3.6"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__minipass__4.2.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minipass", + version = "4.2.4", + url = "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", + transitive_closure = { + "minipass": ["4.2.4"], + }, + ) + + npm_import( + name = "npm__minizlib__2.1.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "minizlib", + version = "2.1.2", + url = "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + deps = { + "minipass": "3.3.6", + "yallist": "4.0.0", + }, + transitive_closure = { + "minipass": ["3.3.6"], + "minizlib": ["2.1.2"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__mkdirp__1.0.4", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "mkdirp", + version = "1.0.4", + url = "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + transitive_closure = { + "mkdirp": ["1.0.4"], + }, + ) + + npm_import( + name = "npm__ms__2.1.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "ms", + version = "2.1.2", + url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + transitive_closure = { + "ms": ["2.1.2"], + }, + ) + + npm_import( + name = "npm__ms__2.1.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "ms", + version = "2.1.3", + url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + transitive_closure = { + "ms": ["2.1.3"], + }, + ) + + npm_import( + name = "npm__nan__2.17.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "nan", + version = "2.17.0", + url = "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + transitive_closure = { + "nan": ["2.17.0"], + }, + ) + + npm_import( + name = "npm__negotiator__0.6.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "negotiator", + version = "0.6.3", + url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + transitive_closure = { + "negotiator": ["0.6.3"], + }, + ) + + npm_import( + name = "npm__node-gyp__9.3.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "node-gyp", + version = "9.3.1", + url = "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", + deps = { + "env-paths": "2.2.1", + "glob": "7.2.3", + "graceful-fs": "4.2.10", + "make-fetch-happen": "10.2.1", + "nopt": "6.0.0", + "npmlog": "6.0.2", + "rimraf": "3.0.2", + "semver": "7.3.8", + "tar": "6.1.13", + "which": "2.0.2", + }, + transitive_closure = { + "@gar/promisify": ["1.1.3"], + "@npmcli/fs": ["2.1.2"], + "@npmcli/move-file": ["2.0.1"], + "@tootallnate/once": ["2.0.0"], + "abbrev": ["1.1.1"], + "agent-base": ["6.0.2"], + "agentkeepalive": ["4.2.1"], + "aggregate-error": ["3.1.0"], + "ansi-regex": ["5.0.1"], + "aproba": ["2.0.0"], + "are-we-there-yet": ["3.0.1"], + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11", "2.0.1"], + "cacache": ["16.1.3"], + "chownr": ["2.0.0"], + "clean-stack": ["2.2.0"], + "color-support": ["1.1.3"], + "concat-map": ["0.0.1"], + "console-control-strings": ["1.1.0"], + "debug": ["4.3.4"], + "delegates": ["1.0.0"], + "depd": ["1.1.2"], + "emoji-regex": ["8.0.0"], + "encoding": ["0.1.13"], + "env-paths": ["2.2.1"], + "err-code": ["2.0.3"], + "fs-minipass": ["2.1.0"], + "fs.realpath": ["1.0.0"], + "gauge": ["4.0.4"], + "glob": ["7.2.3", "8.1.0"], + "graceful-fs": ["4.2.10"], + "has-unicode": ["2.0.1"], + "http-cache-semantics": ["4.1.1"], + "http-proxy-agent": ["5.0.0"], + "https-proxy-agent": ["5.0.1"], + "humanize-ms": ["1.2.1"], + "iconv-lite": ["0.6.3"], + "imurmurhash": ["0.1.4"], + "indent-string": ["4.0.0"], + "infer-owner": ["1.0.4"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "ip": ["2.0.0"], + "is-fullwidth-code-point": ["3.0.0"], + "is-lambda": ["1.0.1"], + "isexe": ["2.0.0"], + "lru-cache": ["6.0.0", "7.17.0"], + "make-fetch-happen": ["10.2.1"], + "minimatch": ["3.1.2", "5.1.6"], + "minipass": ["3.3.6", "4.2.4"], + "minipass-collect": ["1.0.2"], + "minipass-fetch": ["2.1.2"], + "minipass-flush": ["1.0.5"], + "minipass-pipeline": ["1.2.4"], + "minipass-sized": ["1.0.3"], + "minizlib": ["2.1.2"], + "mkdirp": ["1.0.4"], + "ms": ["2.1.2", "2.1.3"], + "negotiator": ["0.6.3"], + "node-gyp": ["9.3.1"], + "nopt": ["6.0.0"], + "npmlog": ["6.0.2"], + "once": ["1.4.0"], + "p-map": ["4.0.0"], + "path-is-absolute": ["1.0.1"], + "promise-inflight": ["1.0.1"], + "promise-retry": ["2.0.1"], + "readable-stream": ["3.6.1"], + "retry": ["0.12.0"], + "rimraf": ["3.0.2"], + "safe-buffer": ["5.2.1"], + "safer-buffer": ["2.1.2"], + "semver": ["7.3.8"], + "set-blocking": ["2.0.0"], + "signal-exit": ["3.0.7"], + "smart-buffer": ["4.2.0"], + "socks": ["2.7.1"], + "socks-proxy-agent": ["7.0.0"], + "ssri": ["9.0.1"], + "string-width": ["4.2.3"], + "string_decoder": ["1.3.0"], + "strip-ansi": ["6.0.1"], + "tar": ["6.1.13"], + "unique-filename": ["2.0.1"], + "unique-slug": ["3.0.0"], + "util-deprecate": ["1.0.2"], + "which": ["2.0.2"], + "wide-align": ["1.1.5"], + "wrappy": ["1.0.2"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__nopt__6.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "nopt", + version = "6.0.0", + url = "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + deps = { + "abbrev": "1.1.1", + }, + transitive_closure = { + "abbrev": ["1.1.1"], + "nopt": ["6.0.0"], + }, + ) + + npm_import( + name = "npm__npmlog__6.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "npmlog", + version = "6.0.2", + url = "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + deps = { + "are-we-there-yet": "3.0.1", + "console-control-strings": "1.1.0", + "gauge": "4.0.4", + "set-blocking": "2.0.0", + }, + transitive_closure = { + "ansi-regex": ["5.0.1"], + "aproba": ["2.0.0"], + "are-we-there-yet": ["3.0.1"], + "color-support": ["1.1.3"], + "console-control-strings": ["1.1.0"], + "delegates": ["1.0.0"], + "emoji-regex": ["8.0.0"], + "gauge": ["4.0.4"], + "has-unicode": ["2.0.1"], + "inherits": ["2.0.4"], + "is-fullwidth-code-point": ["3.0.0"], + "npmlog": ["6.0.2"], + "readable-stream": ["3.6.1"], + "safe-buffer": ["5.2.1"], + "set-blocking": ["2.0.0"], + "signal-exit": ["3.0.7"], + "string-width": ["4.2.3"], + "string_decoder": ["1.3.0"], + "strip-ansi": ["6.0.1"], + "util-deprecate": ["1.0.2"], + "wide-align": ["1.1.5"], + }, + ) + + npm_import( + name = "npm__once__1.4.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "once", + version = "1.4.0", + url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + deps = { + "wrappy": "1.0.2", + }, + transitive_closure = { + "once": ["1.4.0"], + "wrappy": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__p-map__4.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "p-map", + version = "4.0.0", + url = "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + deps = { + "aggregate-error": "3.1.0", + }, + transitive_closure = { + "aggregate-error": ["3.1.0"], + "clean-stack": ["2.2.0"], + "indent-string": ["4.0.0"], + "p-map": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__path-is-absolute__1.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "path-is-absolute", + version = "1.0.1", + url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + transitive_closure = { + "path-is-absolute": ["1.0.1"], + }, + ) + + npm_import( + name = "npm__promise-inflight__1.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "promise-inflight", + version = "1.0.1", + url = "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + transitive_closure = { + "promise-inflight": ["1.0.1"], + }, + ) + + npm_import( + name = "npm__promise-retry__2.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "promise-retry", + version = "2.0.1", + url = "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + deps = { + "err-code": "2.0.3", + "retry": "0.12.0", + }, + transitive_closure = { + "err-code": ["2.0.3"], + "promise-retry": ["2.0.1"], + "retry": ["0.12.0"], + }, + ) + + npm_import( + name = "npm__readable-stream__3.6.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "readable-stream", + version = "3.6.1", + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + deps = { + "inherits": "2.0.4", + "string_decoder": "1.3.0", + "util-deprecate": "1.0.2", + }, + transitive_closure = { + "inherits": ["2.0.4"], + "readable-stream": ["3.6.1"], + "safe-buffer": ["5.2.1"], + "string_decoder": ["1.3.0"], + "util-deprecate": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__retry__0.12.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "retry", + version = "0.12.0", + url = "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + transitive_closure = { + "retry": ["0.12.0"], + }, + ) + + npm_import( + name = "npm__rimraf__3.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "rimraf", + version = "3.0.2", + url = "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + deps = { + "glob": "7.2.3", + }, + transitive_closure = { + "balanced-match": ["1.0.2"], + "brace-expansion": ["1.1.11"], + "concat-map": ["0.0.1"], + "fs.realpath": ["1.0.0"], + "glob": ["7.2.3"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "minimatch": ["3.1.2"], + "once": ["1.4.0"], + "path-is-absolute": ["1.0.1"], + "rimraf": ["3.0.2"], + "wrappy": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__safe-buffer__5.2.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "safe-buffer", + version = "5.2.1", + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + transitive_closure = { + "safe-buffer": ["5.2.1"], + }, + ) + + npm_import( + name = "npm__safer-buffer__2.1.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "safer-buffer", + version = "2.1.2", + url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + transitive_closure = { + "safer-buffer": ["2.1.2"], + }, + ) + + npm_import( + name = "npm__segfault-handler__1.3.0", + root_package = "", + link_workspace = "", + link_packages = { + "": ["segfault-handler"], + }, + package = "segfault-handler", + version = "1.3.0", + url = "https://registry.npmjs.org/segfault-handler/-/segfault-handler-1.3.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-p7kVHo+4uoYkr0jmIiTBthwV5L2qmWtben/KDunDZ834mbos+tY+iO0//HpAJpOFSQZZ+wxKWuRo4DxV02B7Lg==", + deps = { + "bindings": "1.5.0", + "nan": "2.17.0", + "node-gyp": "9.3.1", + }, + transitive_closure = { + "@gar/promisify": ["1.1.3"], + "@npmcli/fs": ["2.1.2"], + "@npmcli/move-file": ["2.0.1"], + "@tootallnate/once": ["2.0.0"], + "abbrev": ["1.1.1"], + "agent-base": ["6.0.2"], + "agentkeepalive": ["4.2.1"], + "aggregate-error": ["3.1.0"], + "ansi-regex": ["5.0.1"], + "aproba": ["2.0.0"], + "are-we-there-yet": ["3.0.1"], + "balanced-match": ["1.0.2"], + "bindings": ["1.5.0"], + "brace-expansion": ["1.1.11", "2.0.1"], + "cacache": ["16.1.3"], + "chownr": ["2.0.0"], + "clean-stack": ["2.2.0"], + "color-support": ["1.1.3"], + "concat-map": ["0.0.1"], + "console-control-strings": ["1.1.0"], + "debug": ["4.3.4"], + "delegates": ["1.0.0"], + "depd": ["1.1.2"], + "emoji-regex": ["8.0.0"], + "encoding": ["0.1.13"], + "env-paths": ["2.2.1"], + "err-code": ["2.0.3"], + "file-uri-to-path": ["1.0.0"], + "fs-minipass": ["2.1.0"], + "fs.realpath": ["1.0.0"], + "gauge": ["4.0.4"], + "glob": ["7.2.3", "8.1.0"], + "graceful-fs": ["4.2.10"], + "has-unicode": ["2.0.1"], + "http-cache-semantics": ["4.1.1"], + "http-proxy-agent": ["5.0.0"], + "https-proxy-agent": ["5.0.1"], + "humanize-ms": ["1.2.1"], + "iconv-lite": ["0.6.3"], + "imurmurhash": ["0.1.4"], + "indent-string": ["4.0.0"], + "infer-owner": ["1.0.4"], + "inflight": ["1.0.6"], + "inherits": ["2.0.4"], + "ip": ["2.0.0"], + "is-fullwidth-code-point": ["3.0.0"], + "is-lambda": ["1.0.1"], + "isexe": ["2.0.0"], + "lru-cache": ["6.0.0", "7.17.0"], + "make-fetch-happen": ["10.2.1"], + "minimatch": ["3.1.2", "5.1.6"], + "minipass": ["3.3.6", "4.2.4"], + "minipass-collect": ["1.0.2"], + "minipass-fetch": ["2.1.2"], + "minipass-flush": ["1.0.5"], + "minipass-pipeline": ["1.2.4"], + "minipass-sized": ["1.0.3"], + "minizlib": ["2.1.2"], + "mkdirp": ["1.0.4"], + "ms": ["2.1.2", "2.1.3"], + "nan": ["2.17.0"], + "negotiator": ["0.6.3"], + "node-gyp": ["9.3.1"], + "nopt": ["6.0.0"], + "npmlog": ["6.0.2"], + "once": ["1.4.0"], + "p-map": ["4.0.0"], + "path-is-absolute": ["1.0.1"], + "promise-inflight": ["1.0.1"], + "promise-retry": ["2.0.1"], + "readable-stream": ["3.6.1"], + "retry": ["0.12.0"], + "rimraf": ["3.0.2"], + "safe-buffer": ["5.2.1"], + "safer-buffer": ["2.1.2"], + "segfault-handler": ["1.3.0"], + "semver": ["7.3.8"], + "set-blocking": ["2.0.0"], + "signal-exit": ["3.0.7"], + "smart-buffer": ["4.2.0"], + "socks": ["2.7.1"], + "socks-proxy-agent": ["7.0.0"], + "ssri": ["9.0.1"], + "string-width": ["4.2.3"], + "string_decoder": ["1.3.0"], + "strip-ansi": ["6.0.1"], + "tar": ["6.1.13"], + "unique-filename": ["2.0.1"], + "unique-slug": ["3.0.0"], + "util-deprecate": ["1.0.2"], + "which": ["2.0.2"], + "wide-align": ["1.1.5"], + "wrappy": ["1.0.2"], + "yallist": ["4.0.0"], + }, + lifecycle_hooks = ["preinstall", "install", "postinstall"], + lifecycle_hooks_execution_requirements = ["no-sandbox"], + lifecycle_hooks_use_default_shell_env = True, + ) + + npm_import( + name = "npm__semver__7.3.8", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "semver", + version = "7.3.8", + url = "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + deps = { + "lru-cache": "6.0.0", + }, + transitive_closure = { + "lru-cache": ["6.0.0"], + "semver": ["7.3.8"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__set-blocking__2.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "set-blocking", + version = "2.0.0", + url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + transitive_closure = { + "set-blocking": ["2.0.0"], + }, + ) + + npm_import( + name = "npm__signal-exit__3.0.7", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "signal-exit", + version = "3.0.7", + url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + transitive_closure = { + "signal-exit": ["3.0.7"], + }, + ) + + npm_import( + name = "npm__smart-buffer__4.2.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "smart-buffer", + version = "4.2.0", + url = "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + transitive_closure = { + "smart-buffer": ["4.2.0"], + }, + ) + + npm_import( + name = "npm__socks-proxy-agent__7.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "socks-proxy-agent", + version = "7.0.0", + url = "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + deps = { + "agent-base": "6.0.2", + "debug": "4.3.4", + "socks": "2.7.1", + }, + transitive_closure = { + "agent-base": ["6.0.2"], + "debug": ["4.3.4"], + "ip": ["2.0.0"], + "ms": ["2.1.2"], + "smart-buffer": ["4.2.0"], + "socks": ["2.7.1"], + "socks-proxy-agent": ["7.0.0"], + }, + ) + + npm_import( + name = "npm__socks__2.7.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "socks", + version = "2.7.1", + url = "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + deps = { + "ip": "2.0.0", + "smart-buffer": "4.2.0", + }, + transitive_closure = { + "ip": ["2.0.0"], + "smart-buffer": ["4.2.0"], + "socks": ["2.7.1"], + }, + ) + + npm_import( + name = "npm__ssri__9.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "ssri", + version = "9.0.1", + url = "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + deps = { + "minipass": "3.3.6", + }, + transitive_closure = { + "minipass": ["3.3.6"], + "ssri": ["9.0.1"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__string-width__4.2.3", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "string-width", + version = "4.2.3", + url = "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + deps = { + "emoji-regex": "8.0.0", + "is-fullwidth-code-point": "3.0.0", + "strip-ansi": "6.0.1", + }, + transitive_closure = { + "ansi-regex": ["5.0.1"], + "emoji-regex": ["8.0.0"], + "is-fullwidth-code-point": ["3.0.0"], + "string-width": ["4.2.3"], + "strip-ansi": ["6.0.1"], + }, + ) + + npm_import( + name = "npm__string_decoder__1.3.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "string_decoder", + version = "1.3.0", + url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + deps = { + "safe-buffer": "5.2.1", + }, + transitive_closure = { + "safe-buffer": ["5.2.1"], + "string_decoder": ["1.3.0"], + }, + ) + + npm_import( + name = "npm__strip-ansi__6.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "strip-ansi", + version = "6.0.1", + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + deps = { + "ansi-regex": "5.0.1", + }, + transitive_closure = { + "ansi-regex": ["5.0.1"], + "strip-ansi": ["6.0.1"], + }, + ) + + npm_import( + name = "npm__tar__6.1.13", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "tar", + version = "6.1.13", + url = "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + deps = { + "chownr": "2.0.0", + "fs-minipass": "2.1.0", + "minipass": "4.2.4", + "minizlib": "2.1.2", + "mkdirp": "1.0.4", + "yallist": "4.0.0", + }, + transitive_closure = { + "chownr": ["2.0.0"], + "fs-minipass": ["2.1.0"], + "minipass": ["3.3.6", "4.2.4"], + "minizlib": ["2.1.2"], + "mkdirp": ["1.0.4"], + "tar": ["6.1.13"], + "yallist": ["4.0.0"], + }, + ) + + npm_import( + name = "npm__unique-filename__2.0.1", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "unique-filename", + version = "2.0.1", + url = "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + deps = { + "unique-slug": "3.0.0", + }, + transitive_closure = { + "imurmurhash": ["0.1.4"], + "unique-filename": ["2.0.1"], + "unique-slug": ["3.0.0"], + }, + ) + + npm_import( + name = "npm__unique-slug__3.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "unique-slug", + version = "3.0.0", + url = "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + deps = { + "imurmurhash": "0.1.4", + }, + transitive_closure = { + "imurmurhash": ["0.1.4"], + "unique-slug": ["3.0.0"], + }, + ) + + npm_import( + name = "npm__util-deprecate__1.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "util-deprecate", + version = "1.0.2", + url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + transitive_closure = { + "util-deprecate": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__which__2.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "which", + version = "2.0.2", + url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + deps = { + "isexe": "2.0.0", + }, + transitive_closure = { + "isexe": ["2.0.0"], + "which": ["2.0.2"], + }, + ) + + npm_import( + name = "npm__wide-align__1.1.5", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "wide-align", + version = "1.1.5", + url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + deps = { + "string-width": "4.2.3", + }, + transitive_closure = { + "ansi-regex": ["5.0.1"], + "emoji-regex": ["8.0.0"], + "is-fullwidth-code-point": ["3.0.0"], + "string-width": ["4.2.3"], + "strip-ansi": ["6.0.1"], + "wide-align": ["1.1.5"], + }, + ) + + npm_import( + name = "npm__wrappy__1.0.2", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "wrappy", + version = "1.0.2", + url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + transitive_closure = { + "wrappy": ["1.0.2"], + }, + ) + + npm_import( + name = "npm__yallist__4.0.0", + root_package = "", + link_workspace = "", + link_packages = {}, + package = "yallist", + version = "4.0.0", + url = "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + package_visibility = ["//visibility:public"], + npm_translate_lock_repo = "npm", + integrity = "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + transitive_closure = { + "yallist": ["4.0.0"], + }, + ) diff --git a/e2e/gyp_no_install_script/test/segfault-handler_defs.bzl.checked b/e2e/gyp_no_install_script/test/segfault-handler_defs.bzl.checked new file mode 100644 index 000000000..8b06ba4ce --- /dev/null +++ b/e2e/gyp_no_install_script/test/segfault-handler_defs.bzl.checked @@ -0,0 +1,461 @@ +"@generated by @aspect_rules_js//npm/private:npm_import.bzl for npm package segfault-handler@1.3.0" + +load("@aspect_rules_js//npm/private:npm_package_store_internal.bzl", _npm_package_store = "npm_package_store_internal") +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:utils.bzl", _utils = "utils") +load("@aspect_rules_js//js:defs.bzl", _js_run_binary = "js_run_binary") +load("@aspect_rules_js//npm/private:npm_package_internal.bzl", _npm_package_internal = "npm_package_internal") + +# Generated npm_package_store targets for npm package segfault-handler@1.3.0 +# buildifier: disable=function-docstring +def npm_imported_package_store(name): + root_package = "" + is_root = native.package_name() == 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." % native.package_name() + fail(msg) + if not name.endswith("/segfault-handler"): + msg = "name must end with one of '/segfault-handler' when linking the store in package 'segfault-handler'; recommended value is 'node_modules/segfault-handler'" + fail(msg) + link_root_name = name[:-len("/segfault-handler")] + + 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.2/pkg".format(link_root_name): "ms", + ":.aspect_rules_js/{}/ms@2.1.3/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"], + use_declare_symlink = select({ + "@aspect_rules_js//js:allow_unresolved_symlinks": True, + "//conditions:default": False, + }), + ) + + # 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//:npm__segfault-handler__1.3.0_source_directory", + package = "segfault-handler", + version = "1.3.0", + dev = False, + deps = ref_deps, + tags = ["manual"], + use_declare_symlink = select({ + "@aspect_rules_js//js:allow_unresolved_symlinks": True, + "//conditions:default": False, + }), + ) + + # virtual store target with transitive closure of all npm package dependencies + _npm_package_store( + name = store_target_name, + src = None if True else "@npm//:npm__segfault-handler__1.3.0_source_directory", + package = "segfault-handler", + version = "1.3.0", + dev = False, + deps = deps, + visibility = ["//visibility:public"], + tags = ["manual"], + use_declare_symlink = select({ + "@aspect_rules_js//js:allow_unresolved_symlinks": True, + "//conditions:default": False, + }), + ) + + # 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 = _utils.package_directory_output_group, + 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.2/pkg".format(link_root_name): "ms", + ":.aspect_rules_js/{}/ms@2.1.3/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"], + use_declare_symlink = select({ + "@aspect_rules_js//js:allow_unresolved_symlinks": True, + "//conditions:default": False, + }), + ) + + # 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", + dev = False, + deps = lc_deps, + tags = ["manual"], + use_declare_symlink = select({ + "@aspect_rules_js//js:allow_unresolved_symlinks": True, + "//conditions:default": False, + }), + ) + + # 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({ + "@aspect_rules_js//platforms/os:osx": ["--platform=darwin"], + "@aspect_rules_js//platforms/os:linux": ["--platform=linux"], + "@aspect_rules_js//platforms/os:windows": ["--platform=win32"], + "//conditions:default": [], + }) + + select({ + "@aspect_rules_js//platforms/cpu:arm64": ["--arch=arm64"], + "@aspect_rules_js//platforms/cpu:x86_64": ["--arch=x64"], + "//conditions:default": [], + }) + + select({ + "@aspect_rules_js//platforms/libc:glibc": ["--libc=glibc"], + "@aspect_rules_js//platforms/libc:musl": ["--libc=musl"], + "//conditions:default": [], + }), + copy_srcs_to_bin = False, + tool = "@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 = { + "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"], + ) + +# 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_packages = { + "": ["segfault-handler"], + } + if native.package_name() in link_packages: + link_aliases = link_packages[native.package_name()] + else: + link_aliases = ["segfault-handler"] + + link_alias = None + for _link_alias in link_aliases: + if name.endswith("/{}".format(_link_alias)): + # longest match wins + if not link_alias or len(_link_alias) > len(link_alias): + link_alias = _link_alias + if not link_alias: + msg = "name must end with one of '/{{ {link_aliases_comma_separated} }}' when called from package 'segfault-handler'; recommended value(s) are 'node_modules/{{ {link_aliases_comma_separated} }}'".format(link_aliases_comma_separated = ", ".join(link_aliases)) + fail(msg) + + link_root_name = name[:-len("/{}".format(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"], + use_declare_symlink = select({ + "@aspect_rules_js//js:allow_unresolved_symlinks": True, + "//conditions:default": False, + }), + ) + + # 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 = _utils.package_directory_output_group, + visibility = ["//visibility:public"], + tags = ["manual"], + ) + + return [":{}".format(name)] if True else [] + +# 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( + name = "node_modules", + link = None, + fail_if_no_link = True): + 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 native.package_name() in link_packages) + is_root = native.package_name() == 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." % native.package_name() + fail(msg) + + link_targets = [] + scoped_targets = {} + + if is_link: + link_aliases = [] + if native.package_name() in link_packages: + link_aliases = link_packages[native.package_name()] + 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) + if True: + link_targets.append(":{}".format(link_target_name)) + if len(link_alias.split("/", 1)) > 1: + link_scope = link_alias.split("/", 1)[0] + 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("{}/segfault-handler".format(name)) + + return (link_targets, scoped_targets) diff --git a/npm/extensions.bzl b/npm/extensions.bzl index 9eca2c114..5c7ee5016 100644 --- a/npm/extensions.bzl +++ b/npm/extensions.bzl @@ -30,6 +30,7 @@ def _extension_impl(module_ctx): lifecycle_hooks_execution_requirements = attr.lifecycle_hooks_execution_requirements, lifecycle_hooks_exclude = attr.lifecycle_hooks_exclude, lifecycle_hooks_no_sandbox = attr.lifecycle_hooks_no_sandbox, + lifecycle_hooks_use_default_shell_env = attr.lifecycle_hooks_use_default_shell_env, link_workspace = attr.link_workspace, no_optional = attr.no_optional, npmrc = attr.npmrc, @@ -117,12 +118,13 @@ def _extension_impl(module_ctx): WARNING: Cannot determine home directory in order to load home `.npmrc` file in module extension `npm_translate_lock(name = "{attr_name}")`. """.format(attr_name = attr.name)) - lifecycle_hooks, lifecycle_hooks_execution_requirements = macro_helpers.macro_lifecycle_args_to_rule_attrs( + lifecycle_hooks, lifecycle_hooks_execution_requirements, lifecycle_hooks_use_default_shell_env = macro_helpers.macro_lifecycle_args_to_rule_attrs( lifecycle_hooks = attr.lifecycle_hooks, lifecycle_hooks_exclude = attr.lifecycle_hooks_exclude, run_lifecycle_hooks = attr.run_lifecycle_hooks, lifecycle_hooks_no_sandbox = attr.lifecycle_hooks_no_sandbox, lifecycle_hooks_execution_requirements = attr.lifecycle_hooks_execution_requirements, + lifecycle_hooks_use_default_shell_env = attr.lifecycle_hooks_use_default_shell_env, ) imports = npm_translate_lock_helpers.get_npm_imports( importers = importers, @@ -133,6 +135,7 @@ WARNING: Cannot determine home directory in order to load home `.npmrc` file in attr = attr, all_lifecycle_hooks = lifecycle_hooks, all_lifecycle_hooks_execution_requirements = lifecycle_hooks_execution_requirements, + all_lifecycle_hooks_use_default_shell_env = lifecycle_hooks_use_default_shell_env, registries = registries, default_registry = utils.default_registry(), npm_auth = npm_auth, @@ -151,6 +154,7 @@ WARNING: Cannot determine home directory in order to load home `.npmrc` file in lifecycle_hooks = i.run_lifecycle_hooks if i.run_lifecycle_hooks and i.lifecycle_hooks else [], lifecycle_hooks_env = i.lifecycle_hooks_env if i.run_lifecycle_hooks and i.lifecycle_hooks_env else {}, lifecycle_hooks_execution_requirements = i.lifecycle_hooks_execution_requirements if i.run_lifecycle_hooks else [], + lifecycle_hooks_use_default_shell_env = i.lifecycle_hooks_use_default_shell_env, link_packages = i.link_packages, link_workspace = attr.link_workspace if attr.link_workspace else attr.pnpm_lock.workspace_name, npm_auth = i.npm_auth, @@ -184,6 +188,7 @@ WARNING: Cannot determine home directory in order to load home `.npmrc` file in lifecycle_hooks_env = i.lifecycle_hooks_env, lifecycle_hooks_execution_requirements = i.lifecycle_hooks_execution_requirements, lifecycle_hooks_no_sandbox = i.lifecycle_hooks_no_sandbox, + lifecycle_hooks_use_default_shell_env = i.lifecycle_hooks_use_default_shell_env, link_packages = i.link_packages, link_workspace = i.link_workspace, npm_auth = i.npm_auth, diff --git a/npm/private/npm_import.bzl b/npm/private/npm_import.bzl index 2a66d54fa..b9701e85a 100644 --- a/npm/private/npm_import.bzl +++ b/npm/private/npm_import.bzl @@ -185,7 +185,7 @@ _LINK_JS_PACKAGE_LIFECYCLE_TMPL = """\ execution_requirements = {lifecycle_hooks_execution_requirements}, mnemonic = "NpmLifecycleHook", progress_message = "Running lifecycle hooks on npm package {package}@{version}", - env = {lifecycle_hooks_env}, + env = {lifecycle_hooks_env},{maybe_use_default_shell_env} ) # post-lifecycle npm_package @@ -792,6 +792,10 @@ def _impl_links(rctx): virtual_store_root = utils.virtual_store_root, maybe_bins = maybe_bins, dev = rctx.attr.dev, + # Insert nothing when `lifecycle_hooks_use_default_shell_env` is None to remain backwards-compatible + # with bazel-lib `run_binary` before `use_default_shell_env` was added. + # TODO(2.0): remove support for old bazel-lib without `run_binary(use_default_shell_env)` + maybe_use_default_shell_env = "\n use_default_shell_env = True," if rctx.attr.lifecycle_hooks_use_default_shell_env else "", ) npm_link_package_bzl = [ @@ -827,6 +831,7 @@ _ATTRS_LINKS = dicts.add(_COMMON_ATTRS, { "lifecycle_build_target": attr.bool(), "lifecycle_hooks_env": attr.string_list(), "lifecycle_hooks_execution_requirements": attr.string_list(), + "lifecycle_hooks_use_default_shell_env": attr.bool(), "npm_translate_lock_repo": attr.string(), "transitive_closure": attr.string_list_dict(), "package_visibility": attr.string_list(), @@ -899,6 +904,7 @@ def npm_import( lifecycle_hooks = [], lifecycle_hooks_execution_requirements = ["no-sandbox"], lifecycle_hooks_env = [], + lifecycle_hooks_use_default_shell_env = False, integrity = "", url = "", commit = "", @@ -1069,6 +1075,13 @@ def npm_import( This defaults to ["no-sandbox"] to limit the overhead of sandbox creation and copying the output TreeArtifact out of the sandbox. + lifecycle_hooks_use_default_shell_env: If True, the `use_default_shell_env` attribute of lifecycle hook + actions is set to True. + + See [use_default_shell_env](https://bazel.build/rules/lib/builtins/actions#run.use_default_shell_env) + + This defaults to False reduce the negative effects of `use_default_shell_env`. Requires bazel-lib >= 2.4.2. + integrity: Expected checksum of the file downloaded, in Subresource Integrity format. This must match the checksum of the file downloaded. @@ -1232,6 +1245,7 @@ def npm_import( lifecycle_build_target = has_lifecycle_hooks or has_custom_postinstall, lifecycle_hooks_env = lifecycle_hooks_env, lifecycle_hooks_execution_requirements = lifecycle_hooks_execution_requirements, + lifecycle_hooks_use_default_shell_env = lifecycle_hooks_use_default_shell_env, bins = bins, npm_translate_lock_repo = npm_translate_lock_repo, package_visibility = package_visibility, diff --git a/npm/private/npm_translate_lock.bzl b/npm/private/npm_translate_lock.bzl index 5a00bd70d..0a0ca6ac2 100644 --- a/npm/private/npm_translate_lock.bzl +++ b/npm/private/npm_translate_lock.bzl @@ -56,6 +56,7 @@ _ATTRS = { "replace_packages": attr.string_dict(), "lifecycle_hooks_envs": attr.string_list_dict(), "lifecycle_hooks_execution_requirements": attr.string_list_dict(), + "lifecycle_hooks_use_default_shell_env": attr.string_dict(), "lifecycle_hooks": attr.string_list_dict(), "link_workspace": attr.string(), "no_optional": attr.bool(), @@ -174,6 +175,7 @@ def npm_translate_lock( lifecycle_hooks_exclude = [], lifecycle_hooks_execution_requirements = {}, lifecycle_hooks_no_sandbox = True, + lifecycle_hooks_use_default_shell_env = {}, replace_packages = {}, bins = {}, verify_node_modules_ignored = None, @@ -384,6 +386,15 @@ def npm_translate_lock( Read more: [lifecycles](/docs/pnpm.md#lifecycles) + lifecycle_hooks_use_default_shell_env: The `use_default_shell_env` attribute of the lifecycle hooks + actions on npm packages. + + See [use_default_shell_env](https://bazel.build/rules/lib/builtins/actions#run.use_default_shell_env) + + This defaults to False reduce the negative effects of `use_default_shell_env`. Requires bazel-lib >= 2.4.2. + + Read more: [lifecycles](/docs/pnpm.md#lifecycles) + replace_packages: A dict of package names to npm_package targets to link instead of the sources specified in the pnpm lock file for the corresponding packages. The injected npm_package targets may optionally contribute transitive npm package dependencies on top @@ -604,12 +615,13 @@ WARNING: `package_json` attribute in `npm_translate_lock(name = "{name}")` is de if not update_pnpm_lock and preupdate: fail("expected update_pnpm_lock to be True when preupdate are specified") - lifecycle_hooks, lifecycle_hooks_execution_requirements = macro_helpers.macro_lifecycle_args_to_rule_attrs( + lifecycle_hooks, lifecycle_hooks_execution_requirements, lifecycle_hooks_use_default_shell_env = macro_helpers.macro_lifecycle_args_to_rule_attrs( lifecycle_hooks, lifecycle_hooks_exclude, run_lifecycle_hooks, lifecycle_hooks_no_sandbox, lifecycle_hooks_execution_requirements, + lifecycle_hooks_use_default_shell_env, ) npm_translate_lock_rule( @@ -631,6 +643,7 @@ WARNING: `package_json` attribute in `npm_translate_lock(name = "{name}")` is de lifecycle_hooks = lifecycle_hooks, lifecycle_hooks_envs = lifecycle_hooks_envs, lifecycle_hooks_execution_requirements = lifecycle_hooks_execution_requirements, + lifecycle_hooks_use_default_shell_env = lifecycle_hooks_use_default_shell_env, replace_packages = replace_packages, bins = bins_string_list_dict, verify_node_modules_ignored = verify_node_modules_ignored, diff --git a/npm/private/npm_translate_lock_generate.bzl b/npm/private/npm_translate_lock_generate.bzl index 41925f126..59739e206 100644 --- a/npm/private/npm_translate_lock_generate.bzl +++ b/npm/private/npm_translate_lock_generate.bzl @@ -17,7 +17,7 @@ _NPM_IMPORT_TMPL = \ version = "{version}", url = "{url}", package_visibility = {package_visibility}, - npm_translate_lock_repo = "{npm_translate_lock_repo}",{maybe_dev}{maybe_commit}{maybe_generate_bzl_library_targets}{maybe_integrity}{maybe_deps}{maybe_transitive_closure}{maybe_patches}{maybe_patch_args}{maybe_lifecycle_hooks}{maybe_custom_postinstall}{maybe_lifecycle_hooks_env}{maybe_lifecycle_hooks_execution_requirements}{maybe_bins}{maybe_npm_auth}{maybe_npm_auth_basic}{maybe_npm_auth_username}{maybe_npm_auth_password}{maybe_replace_package} + npm_translate_lock_repo = "{npm_translate_lock_repo}",{maybe_dev}{maybe_commit}{maybe_generate_bzl_library_targets}{maybe_integrity}{maybe_deps}{maybe_transitive_closure}{maybe_patches}{maybe_patch_args}{maybe_lifecycle_hooks}{maybe_custom_postinstall}{maybe_lifecycle_hooks_env}{maybe_lifecycle_hooks_execution_requirements}{maybe_bins}{maybe_npm_auth}{maybe_npm_auth_basic}{maybe_npm_auth_username}{maybe_npm_auth_password}{maybe_replace_package}{maybe_lifecycle_hooks_use_default_shell_env} ) """ @@ -95,7 +95,7 @@ def generate_repository_files(rctx, pnpm_lock_label, importers, packages, patche "", # empty line after bzl docstring since buildifier expects this if this file is vendored in ] - npm_imports = helpers.get_npm_imports(importers, packages, patched_dependencies, root_package, rctx.name, rctx.attr, rctx.attr.lifecycle_hooks, rctx.attr.lifecycle_hooks_execution_requirements, npm_registries, default_registry, npm_auth) + npm_imports = helpers.get_npm_imports(importers, packages, patched_dependencies, root_package, rctx.name, rctx.attr, rctx.attr.lifecycle_hooks, rctx.attr.lifecycle_hooks_execution_requirements, rctx.attr.lifecycle_hooks_use_default_shell_env, npm_registries, default_registry, npm_auth) repositories_bzl = [] @@ -305,6 +305,8 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): lifecycle_hooks_env = %s,""" % _import.lifecycle_hooks_env) if _import.run_lifecycle_hooks and _import.lifecycle_hooks_env else "" maybe_lifecycle_hooks_execution_requirements = (""" lifecycle_hooks_execution_requirements = %s,""" % _import.lifecycle_hooks_execution_requirements) if _import.run_lifecycle_hooks else "" + maybe_lifecycle_hooks_use_default_shell_env = (""" + lifecycle_hooks_use_default_shell_env = True,""") if _import.lifecycle_hooks_use_default_shell_env else "" maybe_bins = (""" bins = %s,""" % starlark_codegen_utils.to_dict_attr(_import.bins, 2)) if len(_import.bins) > 0 else "" maybe_generate_bzl_library_targets = (""" @@ -337,6 +339,7 @@ def npm_link_all_packages(name = "node_modules", imported_links = []): maybe_lifecycle_hooks = maybe_lifecycle_hooks, maybe_lifecycle_hooks_env = maybe_lifecycle_hooks_env, maybe_lifecycle_hooks_execution_requirements = maybe_lifecycle_hooks_execution_requirements, + maybe_lifecycle_hooks_use_default_shell_env = maybe_lifecycle_hooks_use_default_shell_env, maybe_npm_auth = maybe_npm_auth, maybe_npm_auth_basic = maybe_npm_auth_basic, maybe_npm_auth_password = maybe_npm_auth_password, diff --git a/npm/private/npm_translate_lock_helpers.bzl b/npm/private/npm_translate_lock_helpers.bzl index 20c054fdb..3bd14859f 100644 --- a/npm/private/npm_translate_lock_helpers.bzl +++ b/npm/private/npm_translate_lock_helpers.bzl @@ -236,7 +236,7 @@ def _select_npm_auth(url, npm_auth): return npm_auth_bearer, npm_auth_basic, npm_auth_username, npm_auth_password ################################################################################ -def _get_npm_imports(importers, packages, patched_dependencies, root_package, rctx_name, attr, all_lifecycle_hooks, all_lifecycle_hooks_execution_requirements, registries, default_registry, npm_auth): +def _get_npm_imports(importers, packages, patched_dependencies, root_package, rctx_name, attr, all_lifecycle_hooks, all_lifecycle_hooks_execution_requirements, all_lifecycle_hooks_use_default_shell_env, registries, default_registry, npm_auth): "Converts packages from the lockfile to a struct of attributes for npm_import" if attr.prod and attr.dev: fail("prod and dev attributes cannot both be set to true") @@ -399,6 +399,7 @@ ERROR: patch_args for package {package} contains a strip prefix that is incompat lifecycle_hooks, _ = _gather_values_from_matching_names(False, all_lifecycle_hooks, "*", name, friendly_name, unfriendly_name) lifecycle_hooks_env, _ = _gather_values_from_matching_names(True, attr.lifecycle_hooks_envs, "*", name, friendly_name, unfriendly_name) lifecycle_hooks_execution_requirements, _ = _gather_values_from_matching_names(False, all_lifecycle_hooks_execution_requirements, "*", name, friendly_name, unfriendly_name) + lifecycle_hooks_use_default_shell_env, _ = _gather_values_from_matching_names(False, all_lifecycle_hooks_use_default_shell_env, "*", name, friendly_name, unfriendly_name) run_lifecycle_hooks = requires_build and lifecycle_hooks bins = {} @@ -449,6 +450,7 @@ ERROR: patch_args for package {package} contains a strip prefix that is incompat lifecycle_hooks = lifecycle_hooks, lifecycle_hooks_env = lifecycle_hooks_env, lifecycle_hooks_execution_requirements = lifecycle_hooks_execution_requirements, + lifecycle_hooks_use_default_shell_env = lifecycle_hooks_use_default_shell_env[0] == "true", npm_auth = npm_auth_bearer, npm_auth_basic = npm_auth_basic, npm_auth_username = npm_auth_username, diff --git a/npm/private/npm_translate_lock_macro_helpers.bzl b/npm/private/npm_translate_lock_macro_helpers.bzl index 37ba06ea9..87b81126a 100644 --- a/npm/private/npm_translate_lock_macro_helpers.bzl +++ b/npm/private/npm_translate_lock_macro_helpers.bzl @@ -2,7 +2,7 @@ load("@bazel_skylib//lib:dicts.bzl", "dicts") -def _macro_lifecycle_args_to_rule_attrs(lifecycle_hooks, lifecycle_hooks_exclude, run_lifecycle_hooks, lifecycle_hooks_no_sandbox, lifecycle_hooks_execution_requirements): +def _macro_lifecycle_args_to_rule_attrs(lifecycle_hooks, lifecycle_hooks_exclude, run_lifecycle_hooks, lifecycle_hooks_no_sandbox, lifecycle_hooks_execution_requirements, lifecycle_hooks_use_default_shell_env): """Convert lifecycle-related macro args into attribute values to pass to the rule""" # lifecycle_hooks_exclude is a convenience attribute to set `: []` in `lifecycle_hooks` @@ -24,7 +24,14 @@ def _macro_lifecycle_args_to_rule_attrs(lifecycle_hooks, lifecycle_hooks_exclude if "no-sandbox" not in lifecycle_hooks_execution_requirements["*"]: lifecycle_hooks_execution_requirements["*"].append("no-sandbox") - return lifecycle_hooks, lifecycle_hooks_execution_requirements + # Convert {"pkg": True|False} to {"pkg": "true"|"false"} and set a default value for "*" + use_default_shell_env = {} + for p in lifecycle_hooks_use_default_shell_env: + use_default_shell_env[p] = "true" if lifecycle_hooks_use_default_shell_env[p] else "false" + if "*" not in use_default_shell_env: + use_default_shell_env["*"] = "false" + + return lifecycle_hooks, lifecycle_hooks_execution_requirements, use_default_shell_env helpers = struct( macro_lifecycle_args_to_rule_attrs = _macro_lifecycle_args_to_rule_attrs,