Skip to content

Commit b24d4f0

Browse files
authored
refactor: use strict dict property access on known structs (#2471) (#2472)
Cherry-picking from v3 branch ### Changes are visible to end-users: no ### Test plan - Covered by existing test cases
1 parent e7f7020 commit b24d4f0

File tree

4 files changed

+44
-35
lines changed

4 files changed

+44
-35
lines changed

npm/private/npm_translate_lock_generate.bzl

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,12 @@ js_binary(name = "sync", entry_point = "noop.js")
9696
# Collect first-party file: links in packages
9797
fp_links = {}
9898
for package_info in packages.values():
99-
name = package_info.get("name")
100-
version = package_info.get("version")
101-
deps = package_info.get("dependencies")
102-
resolution = package_info.get("resolution")
99+
name = package_info["name"]
100+
version = package_info["version"]
101+
deps = package_info["dependencies"]
102+
resolution = package_info["resolution"]
103103
if resolution.get("type", None) == "directory":
104-
dep_path = helpers.link_package(root_package, resolution.get("directory"))
104+
dep_path = helpers.link_package(root_package, resolution["directory"])
105105
dep_key = "{}+{}".format(name, version)
106106
transitive_deps = {}
107107
for raw_package, raw_version in deps.items():
@@ -158,7 +158,7 @@ js_binary(name = "sync", entry_point = "noop.js")
158158
transitive_deps = {}
159159
raw_deps = {}
160160
if importers.get(dep_link, False):
161-
raw_deps = importers.get(dep_link).get("deps")
161+
raw_deps = importers.get(dep_link)["deps"]
162162
for raw_package, raw_version in raw_deps.items():
163163
package_store_name = utils.package_store_name(raw_package, raw_version)
164164
dep_store_target = """"//{root_package}:{package_store_root}/{{}}/{package_store_name}".format(name)""".format(
@@ -173,8 +173,17 @@ js_binary(name = "sync", entry_point = "noop.js")
173173

174174
for dep_store_target in transitive_deps.keys():
175175
transitive_deps[dep_store_target] = ",".join(transitive_deps[dep_store_target])
176+
177+
# note this is the (first) name used to reference this package and not
178+
# necessarily the proper self-declared packge name
179+
package = dep_package
180+
181+
# rules_js using 0.0.0 to indicate local first-party packages
182+
version = "0.0.0"
183+
176184
fp_links[dep_key] = {
177-
"package": dep_package,
185+
"package": package,
186+
"version": version,
178187
"path": dep_path,
179188
"link_packages": {},
180189
"deps": transitive_deps,
@@ -318,7 +327,7 @@ def npm_link_all_packages(name = "node_modules", imported_links = [], prod = Tru
318327
rctx_files[build_file].append("exports_files([\"{}\"])".format(resolved_json_rel_path))
319328

320329
# the package_json.bzl for this package
321-
if _import.package_info.get("has_bin"):
330+
if _import.package_info["has_bin"]:
322331
if rctx.attr.generate_bzl_library_targets:
323332
rctx_files[build_file].append("""load("@bazel_skylib//:bzl_library.bzl", "bzl_library")""")
324333

@@ -349,10 +358,10 @@ def npm_link_all_packages(name = "node_modules", imported_links = [], prod = Tru
349358

350359
# Generate the first-party package stores and linking of first-party packages
351360
for i, fp_link in enumerate(fp_links.values()):
352-
fp_package = fp_link.get("package")
353-
fp_version = fp_link.get("version", "0.0.0")
354-
fp_path = fp_link.get("path")
355-
fp_deps = fp_link.get("deps")
361+
fp_package = fp_link["package"]
362+
fp_version = fp_link["version"]
363+
fp_path = fp_link["path"]
364+
fp_deps = fp_link["deps"]
356365
fp_target = "//{}:{}".format(
357366
fp_path,
358367
rctx.attr.npm_package_target_name.replace("{dirname}", paths.basename(fp_path)),
@@ -690,8 +699,8 @@ def _generate_npm_package_locations(fp_links, npm_imports):
690699

691700
# Add first-party packages
692701
for fp_link in fp_links.values():
693-
fp_package = fp_link.get("package")
694-
fp_link_packages = list(fp_link.get("link_packages").keys())
702+
fp_package = fp_link["package"]
703+
fp_link_packages = list(fp_link["link_packages"].keys())
695704
for location in fp_link_packages:
696705
if location not in location_to_packages:
697706
location_to_packages[location] = []

npm/private/npm_translate_lock_helpers.bzl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ def _get_npm_imports(importers, packages, replace_packages, patched_dependencies
260260
# make a lookup table of package to link name for each importer
261261
importer_links = {}
262262
for import_path, importer in importers.items():
263-
dependencies = importer.get("all_deps")
263+
dependencies = importer["all_deps"]
264264
if type(dependencies) != "dict":
265265
msg = "expected dict of dependencies in processed importer '{}'".format(import_path)
266266
fail(msg)
@@ -288,16 +288,16 @@ def _get_npm_imports(importers, packages, replace_packages, patched_dependencies
288288
patches_used = []
289289
result = {}
290290
for package_key, package_info in packages.items():
291-
name = package_info.get("name")
292-
version = package_info.get("version")
293-
friendly_version = package_info.get("friendly_version")
294-
deps = package_info.get("dependencies")
295-
optional_deps = package_info.get("optional_dependencies")
296-
dev_only = package_info.get("dev_only")
297-
optional = package_info.get("optional")
298-
requires_build = package_info.get("requires_build")
299-
transitive_closure = package_info.get("transitive_closure")
300-
resolution = package_info.get("resolution")
291+
name = package_info["name"]
292+
version = package_info["version"]
293+
friendly_version = package_info["friendly_version"]
294+
deps = package_info["dependencies"]
295+
optional_deps = package_info["optional_dependencies"]
296+
dev_only = package_info["dev_only"]
297+
optional = package_info["optional"]
298+
requires_build = package_info["requires_build"]
299+
transitive_closure = package_info["transitive_closure"]
300+
resolution = package_info["resolution"]
301301

302302
resolution_type = resolution.get("type", None)
303303
if resolution_type == "directory":

npm/private/pnpm.bzl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def _convert_v5_packages(packages):
207207
has_bin = package_snapshot.get("hasBin", False),
208208
optional = package_snapshot.get("optional", False),
209209
requires_build = package_snapshot.get("requiresBuild", False),
210-
resolution = package_snapshot.get("resolution"),
210+
resolution = package_snapshot["resolution"],
211211
)
212212

213213
if package_key in result:
@@ -257,8 +257,8 @@ def _strip_v6_default_registry_to_version(name, version):
257257
def _convert_pnpm_v6_importer_dependency_map(import_path, deps):
258258
result = {}
259259
for name, attributes in deps.items():
260-
specifier = attributes.get("specifier")
261-
version = attributes.get("version")
260+
specifier = attributes["specifier"]
261+
version = attributes["version"]
262262

263263
if specifier.startswith("npm:") and not specifier.startswith("npm:{}@".format(name)):
264264
# Keep the npm: specifier for aliased dependencies
@@ -379,7 +379,7 @@ def _convert_v6_packages(packages):
379379
has_bin = package_snapshot.get("hasBin", False),
380380
optional = package_snapshot.get("optional", False),
381381
requires_build = package_snapshot.get("requiresBuild", False),
382-
resolution = package_snapshot.get("resolution"),
382+
resolution = package_snapshot["resolution"],
383383
)
384384

385385
if package_key in result:
@@ -412,8 +412,8 @@ def _convert_pnpm_v9_package_dependency_map(snapshots, deps):
412412
def _convert_pnpm_v9_importer_dependency_map(import_path, deps):
413413
result = {}
414414
for name, attributes in deps.items():
415-
specifier = attributes.get("specifier")
416-
version = attributes.get("version")
415+
specifier = attributes["specifier"]
416+
version = attributes["version"]
417417

418418
# Transition version[(patch)(peer)(data)] to a rules_js version format
419419
version = _convert_pnpm_v6_v9_version_peer_dep(version)
@@ -512,7 +512,7 @@ def _convert_v9_packages(packages, snapshots):
512512
has_bin = package_data.get("hasBin", False),
513513
optional = package_snapshot.get("optional", False),
514514
requires_build = None, # Unknown from lockfile in v9
515-
resolution = package_data.get("resolution"),
515+
resolution = package_data["resolution"],
516516
)
517517

518518
if package_key in result:

npm/private/transitive_closure.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ def translate_to_transitive_closure(importers, packages, prod = False, dev = Fal
9696
importers_deps = {}
9797
for importPath in importers.keys():
9898
lock_importer = importers[importPath]
99-
prod_deps = {} if dev else lock_importer.get("dependencies")
100-
dev_deps = {} if prod else lock_importer.get("dev_dependencies")
101-
opt_deps = {} if no_optional else lock_importer.get("optional_dependencies")
99+
prod_deps = {} if dev else lock_importer["dependencies"]
100+
dev_deps = {} if prod else lock_importer["dev_dependencies"]
101+
opt_deps = {} if no_optional else lock_importer["optional_dependencies"]
102102

103103
deps = prod_deps | opt_deps
104104
all_deps = prod_deps | dev_deps | opt_deps

0 commit comments

Comments
 (0)