feat: expose PackageMetadataInfo
diff --git a/MODULE.bazel b/MODULE.bazel
index 508b191..89cba41 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -12,6 +12,7 @@
 bazel_dep(name = "aspect_bazel_lib", version = "2.14.0")
 bazel_dep(name = "bazel_features", version = "1.9.0")
 bazel_dep(name = "bazel_skylib", version = "1.5.0")
+bazel_dep(name = "package_metadata", version = "0.0.1")
 bazel_dep(name = "platforms", version = "0.0.5")
 bazel_dep(name = "rules_nodejs", version = "6.3.0")
 
diff --git a/npm/private/npm_import.bzl b/npm/private/npm_import.bzl
index a9cc8bb..db2b609 100644
--- a/npm/private/npm_import.bzl
+++ b/npm/private/npm_import.bzl
@@ -178,6 +178,7 @@
         name = "{{}}/pkg_lc".format(store_target_name),
         src = ":{{}}/lc".format(store_target_name),
         package = "{package}",
+        metadata = "",
         version = "{version}",
         tags = ["manual"],
     )
@@ -344,6 +345,7 @@
     name = "pkg",
     src = ":{package_src}",
     package = "{package}",
+    metadata = "",
     version = "{version}",
     visibility = ["//visibility:public"],
 )
@@ -532,6 +534,7 @@
     }
 
     rctx_files["BUILD.bazel"].append(_JS_PACKAGE_TMPL.format(
+        metadata = None,
         package_src = package_src,
         package = rctx.attr.package,
         version = rctx.attr.version,
@@ -781,6 +784,7 @@
         ref_deps = starlark_codegen_utils.to_dict_attr(ref_deps, 1, quote_key = False),
         root_package = rctx.attr.root_package,
         transitive_closure_pattern = str(transitive_closure_pattern),
+        metadata = None,
         version = rctx.attr.version,
         package_store_name = package_store_name,
         package_store_root = utils.package_store_root,
diff --git a/npm/private/npm_package_info.bzl b/npm/private/npm_package_info.bzl
index 7b2d799..43f2126 100644
--- a/npm/private/npm_package_info.bzl
+++ b/npm/private/npm_package_info.bzl
@@ -7,5 +7,6 @@
         "version": "version of this npm package",
         "src": "the sources of this npm package; either a tarball file, a TreeArtifact or a source directory",
         "npm_package_store_infos": "A depset of NpmPackageStoreInfo providers from npm dependencies of the package and the packages's transitive deps to use as direct dependencies when linking with npm_link_package",
+        "metadata": "TODO",
     },
 )
diff --git a/npm/private/npm_package_internal.bzl b/npm/private/npm_package_internal.bzl
index 30ab509..e625f73 100644
--- a/npm/private/npm_package_internal.bzl
+++ b/npm/private/npm_package_internal.bzl
@@ -16,6 +16,7 @@
         doc = """The package version.""",
         mandatory = True,
     ),
+    "metadata": attr.string(doc = "TODO"),
 }
 
 def _npm_package_internal_impl(ctx):
@@ -34,6 +35,7 @@
             version = ctx.attr.version,
             src = dst,
             npm_package_store_infos = depset(),
+            metadata = ctx.attr.metadata,
         ),
     ]
 
diff --git a/npm/private/npm_package_store.bzl b/npm/private/npm_package_store.bzl
index 5c14c9c..f8e716d 100644
--- a/npm/private/npm_package_store.bzl
+++ b/npm/private/npm_package_store.bzl
@@ -1,6 +1,7 @@
 "npm_package_store rule"
 
 load("@aspect_bazel_lib//lib:copy_directory.bzl", "copy_directory_bin_action")
+load("@package_metadata//:defs.bzl", "PackageMetadataInfo")
 
 # buildifier: disable=bzl-visibility
 load("//js/private:js_info.bzl", "JsInfo", "js_info")
@@ -162,12 +163,14 @@
         if NpmPackageInfo in ctx.attr.src:
             package = ctx.attr.package if ctx.attr.package else ctx.attr.src[NpmPackageInfo].package
             version = ctx.attr.version if ctx.attr.version else ctx.attr.src[NpmPackageInfo].version
+
         elif JsInfo in ctx.attr.src:
             if not ctx.attr.package:
                 msg = "Expected package to be specified in '{}' when src '{}' provides a JsInfo".format(ctx.label, ctx.attr.src[JsInfo].target)
                 fail(msg)
             package = ctx.attr.package
             version = ctx.attr.version if ctx.attr.version else "0.0.0"
+
         else:
             msg = "Expected src of '{}' to provide either NpmPackageInfo or JsInfo".format(ctx.label)
             fail(msg)
@@ -426,6 +429,9 @@
             transitive_files = transitive_files_depset,
             dev = ctx.attr.dev,
         ),
+        PackageMetadataInfo(
+            metadata = getattr(ctx.attr.src[NpmPackageInfo], "license", "") if ctx.attr.src else None,
+        ),
     ]
 
     if ctx.attr.src: