release: WRNexusJS 0.8.0
Quality / quality (ubuntu-latest) (push) Failing after 21s
Quality / quality (windows-latest) (push) Canceled after 0s

This commit is contained in:
2026-08-02 23:18:51 +05:30
parent 87507edf59
commit 586a6db8ff
625 changed files with 243608 additions and 11210 deletions
+1
View File
@@ -31,5 +31,6 @@ export {
export type {
NativeCapabilityManifestEntry,
NativeCapabilityManifest,
NativePermission,
PermissionAdapter,
} from "./manifest.ts";
+7 -5
View File
@@ -1,9 +1,11 @@
import { registered, supports } from "./registry.ts";
import type { NativeTarget } from "./types.ts";
export type NativePermission =
"camera" | "geolocation" | "microphone" | "notifications" | "photos" | "storage" | (string & {});
export interface NativeCapabilityManifestEntry {
name: string;
description?: string;
permissions?: string[];
permissions?: NativePermission[];
targets?: NativeTarget[];
optional?: boolean;
}
@@ -40,15 +42,15 @@ export function missingNativeCapabilities(
);
}
export interface PermissionAdapter {
query(name: string): Promise<"granted" | "denied" | "prompt" | "unavailable">;
request?(name: string): Promise<"granted" | "denied">;
query(name: NativePermission): Promise<"granted" | "denied" | "prompt" | "unavailable">;
request?(name: NativePermission): Promise<"granted" | "denied">;
}
export class PermissionManager {
constructor(private readonly adapter: PermissionAdapter) {}
query(name: string) {
query(name: NativePermission) {
return this.adapter.query(name);
}
async ensure(name: string): Promise<boolean> {
async ensure(name: NativePermission): Promise<boolean> {
const state = await this.adapter.query(name);
if (state === "granted") return true;
if (state === "prompt" && this.adapter.request)