pub struct WidgetPackages {
pub widgets_dir: PathBuf,
approvals_path: PathBuf,
pins_path: PathBuf,
secret: String,
inner: Mutex<Inner>,
}Expand description
srv’s view of the widgets folder and this instance’s approvals.
Fields§
§widgets_dir: PathBuf§approvals_path: PathBuf§pins_path: PathBuf§secret: String§inner: Mutex<Inner>Implementations§
Source§impl WidgetPackages
impl WidgetPackages
pub fn new(widgets_dir: PathBuf, data_dir: &Path, secret: String) -> Self
pub fn install_global(self) -> &'static Arc<WidgetPackages> ⓘ
Sourcepub fn rescan(
&self,
v1_entries: &HashMap<String, WidgetConfigType>,
) -> Vec<WidgetPackageInfo>
pub fn rescan( &self, v1_entries: &HashMap<String, WidgetConfigType>, ) -> Vec<WidgetPackageInfo>
Scan again, with the v1 entries currently in the user’s widgets.json.
pub fn list(&self) -> Vec<WidgetPackageInfo>
Sourcepub fn approve(
&self,
id: &str,
hash: &str,
shown_signer: &str,
) -> Result<(), String>
pub fn approve( &self, id: &str, hash: &str, shown_signer: &str, ) -> Result<(), String>
Record the user’s approval of exactly hash, signed by the key whose
fingerprint the prompt showed (shown_signer, “” for unsigned); the
host-only route calls this. Fails if the package or its signature
changed since the prompt was shown: widget.sig isn’t in the hash, so
it is checked here (SPEC_WIDGET_SHARING_2026_10_10.md §2.3).
Sourcepub fn describe_signature(
&self,
id: &str,
signer: Option<&str>,
) -> WidgetSignatureInfo
pub fn describe_signature( &self, id: &str, signer: Option<&str>, ) -> WidgetSignatureInfo
Who signed a package, against this instance’s pins.
Sourcepub fn approved_package(
&self,
id: &str,
) -> Result<(String, BTreeMap<String, Vec<u8>>), String>
pub fn approved_package( &self, id: &str, ) -> Result<(String, BTreeMap<String, Vec<u8>>), String>
An approved sandboxed package’s approved bytes, for a bundle export
(SPEC_WIDGET_SHARING_2026_10_10.md §3.4): every file hashed again
against the approval, never a newer copy on disk, and its
widget.sig when it still names the approved signer.
Sourcepub fn publishers(&self) -> Vec<WidgetPublisherPin>
pub fn publishers(&self) -> Vec<WidgetPublisherPin>
The publishers this instance has pinned to a key, for Settings.
Sourcepub fn forget_publisher(&self, publisher: &str) -> Result<(), String>
pub fn forget_publisher(&self, publisher: &str) -> Result<(), String>
Forget a publisher’s key (the user’s Forget key, through the host route): its next signed package pins it again.
pub fn set_enabled(&self, id: &str, enabled: bool) -> Result<(), String>
Sourcepub fn forget(&self, id: &str) -> Result<(), String>
pub fn forget(&self, id: &str) -> Result<(), String>
Forget a package’s approval (uninstall does this; so does a v1 entry leaving widgets.json, at the next rescan’s caller’s choice).
pub fn package_dir(&self, id: &str) -> Option<(PathBuf, bool)>
Auto Trait Implementations§
impl !Freeze for WidgetPackages
impl RefUnwindSafe for WidgetPackages
impl Send for WidgetPackages
impl Sync for WidgetPackages
impl Unpin for WidgetPackages
impl UnsafeUnpin for WidgetPackages
impl UnwindSafe for WidgetPackages
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more