UNPKG

@endo/compartment-mapper

Version:

The compartment mapper assembles Node applications in a sandbox

98 lines 3.58 kB
/** * Describes the portion of a compartment map dedicated to narrowing * or attenuating the powers available to each compartment. * * @module */ import type { WILDCARD_POLICY_VALUE } from '../policy-format.js'; /** * An object representing a full attenuation definition. */ export type FullAttenuationDefinition = { /** The type of attenuation. */ attenuate: string; /** The parameters for the attenuation. */ params?: ImplicitAttenuationDefinition; }; /** * An array of any type representing an implicit attenuation definition. */ export type ImplicitAttenuationDefinition = [any, ...any[]]; /** * A type representing an attenuation definition, which can be either a full or * implicit definition. */ export type AttenuationDefinition = FullAttenuationDefinition | ImplicitAttenuationDefinition; export type UnifiedAttenuationDefinition = { displayName: string; specifier: string | null; params?: any[] | undefined; }; /** * A type representing a wildcard policy, which can be 'any'. */ export type WildcardPolicy = typeof WILDCARD_POLICY_VALUE; /** * A type representing a property policy, which is a record of string keys and * boolean values */ export type PropertyPolicy = Record<string, boolean>; /** * A type representing a policy item, which can be a {@link WildcardPolicy * wildcard policy}, a property policy, `undefined`, or defined by an * attenuator */ export type PolicyItem<T = void> = [T] extends [void] ? WildcardPolicy | PropertyPolicy : WildcardPolicy | PropertyPolicy | T; /** * An object representing a nested attenuation definition. */ export type NestedAttenuationDefinition = Record<string, AttenuationDefinition | boolean>; /** * An object representing a base package policy. */ export type PackagePolicy<PackagePolicyItem = void, GlobalsPolicyItem = void, BuiltinsPolicyItem = void, ExtraOptions = unknown> = { /** * The default attenuator, if any. */ defaultAttenuator?: string | undefined; /** * The policy item for packages. */ packages?: PolicyItem<PackagePolicyItem> | undefined; /** * The policy item or full attenuation definition for globals. */ globals?: AttenuationDefinition | PolicyItem<GlobalsPolicyItem> | undefined; /** * The policy item or nested attenuation definition for builtins. */ builtins?: NestedAttenuationDefinition | PolicyItem<BuiltinsPolicyItem> | undefined; /** * Whether to disable global freeze. */ noGlobalFreeze?: boolean | undefined; /** * Whether to allow dynamic imports */ dynamic?: boolean | undefined; /** * Any additional user-defined options can be added to the policy here */ options?: ExtraOptions | undefined; }; /** * An object representing a base policy. */ export type Policy<PackagePolicyItem = void, GlobalsPolicyItem = void, BuiltinsPolicyItem = void, ExtraOptions = unknown> = { /** The package policies for the resources. */ resources: Record<string, PackagePolicy<PackagePolicyItem, GlobalsPolicyItem, BuiltinsPolicyItem, ExtraOptions>>; /** The default attenuator. */ defaultAttenuator?: string | undefined; /** The package policy for the entry. */ entry?: PackagePolicy<PackagePolicyItem, GlobalsPolicyItem, BuiltinsPolicyItem, ExtraOptions> | undefined; }; /** Any {@link Policy} */ export type SomePolicy = Policy<any, any, any, any>; /** Any {@link PackagePolicy} */ export type SomePackagePolicy = PackagePolicy<void, void, void, unknown>; //# sourceMappingURL=policy-schema.d.ts.map