UNPKG

@cerbos/grpc

Version:

Client library for interacting with the Cerbos policy decision point service over gRPC from server-side Node.js applications

2,011 lines (1,825 loc) 62.4 kB
// Code generated by protoc-gen-ts_proto. DO NOT EDIT. // source: cerbos/policy/v1/policy.proto /* eslint-disable */ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { Value } from "../../../google/protobuf/struct"; import { UInt64Value } from "../../../google/protobuf/wrappers"; import { Effect } from "../../effect/v1/effect"; export const protobufPackage = "cerbos.policy.v1"; export enum ScopePermissions { SCOPE_PERMISSIONS_UNSPECIFIED = 0, SCOPE_PERMISSIONS_OVERRIDE_PARENT = 1, SCOPE_PERMISSIONS_REQUIRE_PARENTAL_CONSENT_FOR_ALLOWS = 2, } export interface Policy { apiVersion: string; disabled: boolean; description: string; metadata: Metadata | undefined; policyType?: | { $case: "resourcePolicy"; resourcePolicy: ResourcePolicy } | { $case: "principalPolicy"; principalPolicy: PrincipalPolicy } | { $case: "derivedRoles"; derivedRoles: DerivedRoles } | { $case: "exportVariables"; exportVariables: ExportVariables } | { $case: "rolePolicy"; rolePolicy: RolePolicy } | { $case: "exportConstants"; exportConstants: ExportConstants } | undefined; variables: { [key: string]: string }; jsonSchema: string; } export interface Policy_VariablesEntry { key: string; value: string; } export interface SourceAttributes { attributes: { [key: string]: any | undefined }; } export interface SourceAttributes_AttributesEntry { key: string; value: any | undefined; } export interface Metadata { sourceFile: string; annotations: { [key: string]: string }; hash: string | undefined; storeIdentifer: string; storeIdentifier: string; sourceAttributes: SourceAttributes | undefined; } export interface Metadata_AnnotationsEntry { key: string; value: string; } export interface ResourcePolicy { resource: string; version: string; importDerivedRoles: string[]; rules: ResourceRule[]; scope: string; schemas: Schemas | undefined; variables: Variables | undefined; scopePermissions: ScopePermissions; constants: Constants | undefined; } export interface ResourceRule { actions: string[]; derivedRoles: string[]; roles: string[]; condition: Condition | undefined; effect: Effect; name: string; output: Output | undefined; } export interface RolePolicy { policyType?: { $case: "role"; role: string } | undefined; parentRoles: string[]; scope: string; rules: RoleRule[]; scopePermissions: ScopePermissions; } export interface RoleRule { resource: string; allowActions: string[]; condition: Condition | undefined; } export interface PrincipalPolicy { principal: string; version: string; rules: PrincipalRule[]; scope: string; variables: Variables | undefined; scopePermissions: ScopePermissions; constants: Constants | undefined; } export interface PrincipalRule { resource: string; actions: PrincipalRule_Action[]; } export interface PrincipalRule_Action { action: string; condition: Condition | undefined; effect: Effect; name: string; output: Output | undefined; } export interface DerivedRoles { name: string; definitions: RoleDef[]; variables: Variables | undefined; constants: Constants | undefined; } export interface RoleDef { name: string; parentRoles: string[]; condition: Condition | undefined; } export interface ExportConstants { name: string; definitions: { [key: string]: any | undefined }; } export interface ExportConstants_DefinitionsEntry { key: string; value: any | undefined; } export interface Constants { import: string[]; local: { [key: string]: any | undefined }; } export interface Constants_LocalEntry { key: string; value: any | undefined; } export interface ExportVariables { name: string; definitions: { [key: string]: string }; } export interface ExportVariables_DefinitionsEntry { key: string; value: string; } export interface Variables { import: string[]; local: { [key: string]: string }; } export interface Variables_LocalEntry { key: string; value: string; } export interface Condition { condition?: | { $case: "match"; match: Match } | { $case: "script"; script: string } | undefined; } export interface Match { op?: | { $case: "all"; all: Match_ExprList } | { $case: "any"; any: Match_ExprList } | { $case: "none"; none: Match_ExprList } | { $case: "expr"; expr: string } | undefined; } export interface Match_ExprList { of: Match[]; } export interface Output { expr: string; when: Output_When | undefined; } export interface Output_When { ruleActivated: string; conditionNotMet: string; } export interface Schemas { principalSchema: Schemas_Schema | undefined; resourceSchema: Schemas_Schema | undefined; } export interface Schemas_IgnoreWhen { actions: string[]; } export interface Schemas_Schema { ref: string; ignoreWhen: Schemas_IgnoreWhen | undefined; } function createBasePolicy(): Policy { return { apiVersion: "", disabled: false, description: "", metadata: undefined, policyType: undefined, variables: {}, jsonSchema: "", }; } export const Policy: MessageFns<Policy> = { encode( message: Policy, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.apiVersion !== "") { writer.uint32(10).string(message.apiVersion); } if (message.disabled !== false) { writer.uint32(16).bool(message.disabled); } if (message.description !== "") { writer.uint32(26).string(message.description); } if (message.metadata !== undefined) { Metadata.encode(message.metadata, writer.uint32(34).fork()).join(); } switch (message.policyType?.$case) { case "resourcePolicy": ResourcePolicy.encode( message.policyType.resourcePolicy, writer.uint32(42).fork(), ).join(); break; case "principalPolicy": PrincipalPolicy.encode( message.policyType.principalPolicy, writer.uint32(50).fork(), ).join(); break; case "derivedRoles": DerivedRoles.encode( message.policyType.derivedRoles, writer.uint32(58).fork(), ).join(); break; case "exportVariables": ExportVariables.encode( message.policyType.exportVariables, writer.uint32(82).fork(), ).join(); break; case "rolePolicy": RolePolicy.encode( message.policyType.rolePolicy, writer.uint32(90).fork(), ).join(); break; case "exportConstants": ExportConstants.encode( message.policyType.exportConstants, writer.uint32(98).fork(), ).join(); break; } Object.entries(message.variables).forEach(([key, value]) => { Policy_VariablesEntry.encode( { key: key as any, value }, writer.uint32(66).fork(), ).join(); }); if (message.jsonSchema !== "") { writer.uint32(74).string(message.jsonSchema); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Policy { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePolicy(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.apiVersion = reader.string(); continue; } case 2: { if (tag !== 16) { break; } message.disabled = reader.bool(); continue; } case 3: { if (tag !== 26) { break; } message.description = reader.string(); continue; } case 4: { if (tag !== 34) { break; } message.metadata = Metadata.decode(reader, reader.uint32()); continue; } case 5: { if (tag !== 42) { break; } message.policyType = { $case: "resourcePolicy", resourcePolicy: ResourcePolicy.decode(reader, reader.uint32()), }; continue; } case 6: { if (tag !== 50) { break; } message.policyType = { $case: "principalPolicy", principalPolicy: PrincipalPolicy.decode(reader, reader.uint32()), }; continue; } case 7: { if (tag !== 58) { break; } message.policyType = { $case: "derivedRoles", derivedRoles: DerivedRoles.decode(reader, reader.uint32()), }; continue; } case 10: { if (tag !== 82) { break; } message.policyType = { $case: "exportVariables", exportVariables: ExportVariables.decode(reader, reader.uint32()), }; continue; } case 11: { if (tag !== 90) { break; } message.policyType = { $case: "rolePolicy", rolePolicy: RolePolicy.decode(reader, reader.uint32()), }; continue; } case 12: { if (tag !== 98) { break; } message.policyType = { $case: "exportConstants", exportConstants: ExportConstants.decode(reader, reader.uint32()), }; continue; } case 8: { if (tag !== 66) { break; } const entry8 = Policy_VariablesEntry.decode(reader, reader.uint32()); if (entry8.value !== undefined) { message.variables[entry8.key] = entry8.value; } continue; } case 9: { if (tag !== 74) { break; } message.jsonSchema = reader.string(); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBasePolicy_VariablesEntry(): Policy_VariablesEntry { return { key: "", value: "" }; } export const Policy_VariablesEntry: MessageFns<Policy_VariablesEntry> = { encode( message: Policy_VariablesEntry, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); } if (message.value !== "") { writer.uint32(18).string(message.value); } return writer; }, decode( input: BinaryReader | Uint8Array, length?: number, ): Policy_VariablesEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePolicy_VariablesEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.value = reader.string(); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseSourceAttributes(): SourceAttributes { return { attributes: {} }; } export const SourceAttributes: MessageFns<SourceAttributes> = { encode( message: SourceAttributes, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { Object.entries(message.attributes).forEach(([key, value]) => { if (value !== undefined) { SourceAttributes_AttributesEntry.encode( { key: key as any, value }, writer.uint32(10).fork(), ).join(); } }); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): SourceAttributes { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseSourceAttributes(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } const entry1 = SourceAttributes_AttributesEntry.decode( reader, reader.uint32(), ); if (entry1.value !== undefined) { message.attributes[entry1.key] = entry1.value; } continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseSourceAttributes_AttributesEntry(): SourceAttributes_AttributesEntry { return { key: "", value: undefined }; } export const SourceAttributes_AttributesEntry: MessageFns<SourceAttributes_AttributesEntry> = { encode( message: SourceAttributes_AttributesEntry, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); } if (message.value !== undefined) { Value.encode( Value.wrap(message.value), writer.uint32(18).fork(), ).join(); } return writer; }, decode( input: BinaryReader | Uint8Array, length?: number, ): SourceAttributes_AttributesEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseSourceAttributes_AttributesEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.value = Value.unwrap(Value.decode(reader, reader.uint32())); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseMetadata(): Metadata { return { sourceFile: "", annotations: {}, hash: undefined, storeIdentifer: "", storeIdentifier: "", sourceAttributes: undefined, }; } export const Metadata: MessageFns<Metadata> = { encode( message: Metadata, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.sourceFile !== "") { writer.uint32(10).string(message.sourceFile); } Object.entries(message.annotations).forEach(([key, value]) => { Metadata_AnnotationsEntry.encode( { key: key as any, value }, writer.uint32(18).fork(), ).join(); }); if (message.hash !== undefined) { UInt64Value.encode( { value: message.hash! }, writer.uint32(26).fork(), ).join(); } if (message.storeIdentifer !== "") { writer.uint32(34).string(message.storeIdentifer); } if (message.storeIdentifier !== "") { writer.uint32(42).string(message.storeIdentifier); } if (message.sourceAttributes !== undefined) { SourceAttributes.encode( message.sourceAttributes, writer.uint32(50).fork(), ).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Metadata { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseMetadata(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.sourceFile = reader.string(); continue; } case 2: { if (tag !== 18) { break; } const entry2 = Metadata_AnnotationsEntry.decode( reader, reader.uint32(), ); if (entry2.value !== undefined) { message.annotations[entry2.key] = entry2.value; } continue; } case 3: { if (tag !== 26) { break; } message.hash = UInt64Value.decode(reader, reader.uint32()).value; continue; } case 4: { if (tag !== 34) { break; } message.storeIdentifer = reader.string(); continue; } case 5: { if (tag !== 42) { break; } message.storeIdentifier = reader.string(); continue; } case 6: { if (tag !== 50) { break; } message.sourceAttributes = SourceAttributes.decode( reader, reader.uint32(), ); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseMetadata_AnnotationsEntry(): Metadata_AnnotationsEntry { return { key: "", value: "" }; } export const Metadata_AnnotationsEntry: MessageFns<Metadata_AnnotationsEntry> = { encode( message: Metadata_AnnotationsEntry, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); } if (message.value !== "") { writer.uint32(18).string(message.value); } return writer; }, decode( input: BinaryReader | Uint8Array, length?: number, ): Metadata_AnnotationsEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseMetadata_AnnotationsEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.value = reader.string(); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseResourcePolicy(): ResourcePolicy { return { resource: "", version: "", importDerivedRoles: [], rules: [], scope: "", schemas: undefined, variables: undefined, scopePermissions: 0, constants: undefined, }; } export const ResourcePolicy: MessageFns<ResourcePolicy> = { encode( message: ResourcePolicy, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.resource !== "") { writer.uint32(10).string(message.resource); } if (message.version !== "") { writer.uint32(18).string(message.version); } for (const v of message.importDerivedRoles) { writer.uint32(26).string(v!); } for (const v of message.rules) { ResourceRule.encode(v!, writer.uint32(34).fork()).join(); } if (message.scope !== "") { writer.uint32(42).string(message.scope); } if (message.schemas !== undefined) { Schemas.encode(message.schemas, writer.uint32(50).fork()).join(); } if (message.variables !== undefined) { Variables.encode(message.variables, writer.uint32(58).fork()).join(); } if (message.scopePermissions !== 0) { writer.uint32(64).int32(message.scopePermissions); } if (message.constants !== undefined) { Constants.encode(message.constants, writer.uint32(74).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ResourcePolicy { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseResourcePolicy(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.resource = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.version = reader.string(); continue; } case 3: { if (tag !== 26) { break; } message.importDerivedRoles.push(reader.string()); continue; } case 4: { if (tag !== 34) { break; } message.rules.push(ResourceRule.decode(reader, reader.uint32())); continue; } case 5: { if (tag !== 42) { break; } message.scope = reader.string(); continue; } case 6: { if (tag !== 50) { break; } message.schemas = Schemas.decode(reader, reader.uint32()); continue; } case 7: { if (tag !== 58) { break; } message.variables = Variables.decode(reader, reader.uint32()); continue; } case 8: { if (tag !== 64) { break; } message.scopePermissions = reader.int32() as any; continue; } case 9: { if (tag !== 74) { break; } message.constants = Constants.decode(reader, reader.uint32()); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseResourceRule(): ResourceRule { return { actions: [], derivedRoles: [], roles: [], condition: undefined, effect: 0, name: "", output: undefined, }; } export const ResourceRule: MessageFns<ResourceRule> = { encode( message: ResourceRule, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { for (const v of message.actions) { writer.uint32(10).string(v!); } for (const v of message.derivedRoles) { writer.uint32(18).string(v!); } for (const v of message.roles) { writer.uint32(26).string(v!); } if (message.condition !== undefined) { Condition.encode(message.condition, writer.uint32(34).fork()).join(); } if (message.effect !== 0) { writer.uint32(40).int32(message.effect); } if (message.name !== "") { writer.uint32(50).string(message.name); } if (message.output !== undefined) { Output.encode(message.output, writer.uint32(58).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ResourceRule { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseResourceRule(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.actions.push(reader.string()); continue; } case 2: { if (tag !== 18) { break; } message.derivedRoles.push(reader.string()); continue; } case 3: { if (tag !== 26) { break; } message.roles.push(reader.string()); continue; } case 4: { if (tag !== 34) { break; } message.condition = Condition.decode(reader, reader.uint32()); continue; } case 5: { if (tag !== 40) { break; } message.effect = reader.int32() as any; continue; } case 6: { if (tag !== 50) { break; } message.name = reader.string(); continue; } case 7: { if (tag !== 58) { break; } message.output = Output.decode(reader, reader.uint32()); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseRolePolicy(): RolePolicy { return { policyType: undefined, parentRoles: [], scope: "", rules: [], scopePermissions: 0, }; } export const RolePolicy: MessageFns<RolePolicy> = { encode( message: RolePolicy, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { switch (message.policyType?.$case) { case "role": writer.uint32(10).string(message.policyType.role); break; } for (const v of message.parentRoles) { writer.uint32(42).string(v!); } if (message.scope !== "") { writer.uint32(18).string(message.scope); } for (const v of message.rules) { RoleRule.encode(v!, writer.uint32(26).fork()).join(); } if (message.scopePermissions !== 0) { writer.uint32(32).int32(message.scopePermissions); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): RolePolicy { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRolePolicy(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.policyType = { $case: "role", role: reader.string() }; continue; } case 5: { if (tag !== 42) { break; } message.parentRoles.push(reader.string()); continue; } case 2: { if (tag !== 18) { break; } message.scope = reader.string(); continue; } case 3: { if (tag !== 26) { break; } message.rules.push(RoleRule.decode(reader, reader.uint32())); continue; } case 4: { if (tag !== 32) { break; } message.scopePermissions = reader.int32() as any; continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseRoleRule(): RoleRule { return { resource: "", allowActions: [], condition: undefined }; } export const RoleRule: MessageFns<RoleRule> = { encode( message: RoleRule, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.resource !== "") { writer.uint32(10).string(message.resource); } for (const v of message.allowActions) { writer.uint32(18).string(v!); } if (message.condition !== undefined) { Condition.encode(message.condition, writer.uint32(26).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): RoleRule { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRoleRule(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.resource = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.allowActions.push(reader.string()); continue; } case 3: { if (tag !== 26) { break; } message.condition = Condition.decode(reader, reader.uint32()); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBasePrincipalPolicy(): PrincipalPolicy { return { principal: "", version: "", rules: [], scope: "", variables: undefined, scopePermissions: 0, constants: undefined, }; } export const PrincipalPolicy: MessageFns<PrincipalPolicy> = { encode( message: PrincipalPolicy, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.principal !== "") { writer.uint32(10).string(message.principal); } if (message.version !== "") { writer.uint32(18).string(message.version); } for (const v of message.rules) { PrincipalRule.encode(v!, writer.uint32(26).fork()).join(); } if (message.scope !== "") { writer.uint32(34).string(message.scope); } if (message.variables !== undefined) { Variables.encode(message.variables, writer.uint32(42).fork()).join(); } if (message.scopePermissions !== 0) { writer.uint32(48).int32(message.scopePermissions); } if (message.constants !== undefined) { Constants.encode(message.constants, writer.uint32(58).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): PrincipalPolicy { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePrincipalPolicy(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.principal = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.version = reader.string(); continue; } case 3: { if (tag !== 26) { break; } message.rules.push(PrincipalRule.decode(reader, reader.uint32())); continue; } case 4: { if (tag !== 34) { break; } message.scope = reader.string(); continue; } case 5: { if (tag !== 42) { break; } message.variables = Variables.decode(reader, reader.uint32()); continue; } case 6: { if (tag !== 48) { break; } message.scopePermissions = reader.int32() as any; continue; } case 7: { if (tag !== 58) { break; } message.constants = Constants.decode(reader, reader.uint32()); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBasePrincipalRule(): PrincipalRule { return { resource: "", actions: [] }; } export const PrincipalRule: MessageFns<PrincipalRule> = { encode( message: PrincipalRule, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.resource !== "") { writer.uint32(10).string(message.resource); } for (const v of message.actions) { PrincipalRule_Action.encode(v!, writer.uint32(18).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): PrincipalRule { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePrincipalRule(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.resource = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.actions.push( PrincipalRule_Action.decode(reader, reader.uint32()), ); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBasePrincipalRule_Action(): PrincipalRule_Action { return { action: "", condition: undefined, effect: 0, name: "", output: undefined, }; } export const PrincipalRule_Action: MessageFns<PrincipalRule_Action> = { encode( message: PrincipalRule_Action, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.action !== "") { writer.uint32(10).string(message.action); } if (message.condition !== undefined) { Condition.encode(message.condition, writer.uint32(18).fork()).join(); } if (message.effect !== 0) { writer.uint32(24).int32(message.effect); } if (message.name !== "") { writer.uint32(34).string(message.name); } if (message.output !== undefined) { Output.encode(message.output, writer.uint32(42).fork()).join(); } return writer; }, decode( input: BinaryReader | Uint8Array, length?: number, ): PrincipalRule_Action { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePrincipalRule_Action(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.action = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.condition = Condition.decode(reader, reader.uint32()); continue; } case 3: { if (tag !== 24) { break; } message.effect = reader.int32() as any; continue; } case 4: { if (tag !== 34) { break; } message.name = reader.string(); continue; } case 5: { if (tag !== 42) { break; } message.output = Output.decode(reader, reader.uint32()); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseDerivedRoles(): DerivedRoles { return { name: "", definitions: [], variables: undefined, constants: undefined, }; } export const DerivedRoles: MessageFns<DerivedRoles> = { encode( message: DerivedRoles, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.name !== "") { writer.uint32(10).string(message.name); } for (const v of message.definitions) { RoleDef.encode(v!, writer.uint32(18).fork()).join(); } if (message.variables !== undefined) { Variables.encode(message.variables, writer.uint32(26).fork()).join(); } if (message.constants !== undefined) { Constants.encode(message.constants, writer.uint32(34).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): DerivedRoles { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseDerivedRoles(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.name = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.definitions.push(RoleDef.decode(reader, reader.uint32())); continue; } case 3: { if (tag !== 26) { break; } message.variables = Variables.decode(reader, reader.uint32()); continue; } case 4: { if (tag !== 34) { break; } message.constants = Constants.decode(reader, reader.uint32()); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseRoleDef(): RoleDef { return { name: "", parentRoles: [], condition: undefined }; } export const RoleDef: MessageFns<RoleDef> = { encode( message: RoleDef, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.name !== "") { writer.uint32(10).string(message.name); } for (const v of message.parentRoles) { writer.uint32(18).string(v!); } if (message.condition !== undefined) { Condition.encode(message.condition, writer.uint32(26).fork()).join(); } return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): RoleDef { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseRoleDef(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.name = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.parentRoles.push(reader.string()); continue; } case 3: { if (tag !== 26) { break; } message.condition = Condition.decode(reader, reader.uint32()); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseExportConstants(): ExportConstants { return { name: "", definitions: {} }; } export const ExportConstants: MessageFns<ExportConstants> = { encode( message: ExportConstants, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.name !== "") { writer.uint32(10).string(message.name); } Object.entries(message.definitions).forEach(([key, value]) => { if (value !== undefined) { ExportConstants_DefinitionsEntry.encode( { key: key as any, value }, writer.uint32(18).fork(), ).join(); } }); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ExportConstants { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseExportConstants(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.name = reader.string(); continue; } case 2: { if (tag !== 18) { break; } const entry2 = ExportConstants_DefinitionsEntry.decode( reader, reader.uint32(), ); if (entry2.value !== undefined) { message.definitions[entry2.key] = entry2.value; } continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseExportConstants_DefinitionsEntry(): ExportConstants_DefinitionsEntry { return { key: "", value: undefined }; } export const ExportConstants_DefinitionsEntry: MessageFns<ExportConstants_DefinitionsEntry> = { encode( message: ExportConstants_DefinitionsEntry, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); } if (message.value !== undefined) { Value.encode( Value.wrap(message.value), writer.uint32(18).fork(), ).join(); } return writer; }, decode( input: BinaryReader | Uint8Array, length?: number, ): ExportConstants_DefinitionsEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseExportConstants_DefinitionsEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.value = Value.unwrap(Value.decode(reader, reader.uint32())); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseConstants(): Constants { return { import: [], local: {} }; } export const Constants: MessageFns<Constants> = { encode( message: Constants, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { for (const v of message.import) { writer.uint32(10).string(v!); } Object.entries(message.local).forEach(([key, value]) => { if (value !== undefined) { Constants_LocalEntry.encode( { key: key as any, value }, writer.uint32(18).fork(), ).join(); } }); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Constants { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConstants(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.import.push(reader.string()); continue; } case 2: { if (tag !== 18) { break; } const entry2 = Constants_LocalEntry.decode(reader, reader.uint32()); if (entry2.value !== undefined) { message.local[entry2.key] = entry2.value; } continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseConstants_LocalEntry(): Constants_LocalEntry { return { key: "", value: undefined }; } export const Constants_LocalEntry: MessageFns<Constants_LocalEntry> = { encode( message: Constants_LocalEntry, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); } if (message.value !== undefined) { Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).join(); } return writer; }, decode( input: BinaryReader | Uint8Array, length?: number, ): Constants_LocalEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseConstants_LocalEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.value = Value.unwrap(Value.decode(reader, reader.uint32())); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseExportVariables(): ExportVariables { return { name: "", definitions: {} }; } export const ExportVariables: MessageFns<ExportVariables> = { encode( message: ExportVariables, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.name !== "") { writer.uint32(10).string(message.name); } Object.entries(message.definitions).forEach(([key, value]) => { ExportVariables_DefinitionsEntry.encode( { key: key as any, value }, writer.uint32(18).fork(), ).join(); }); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): ExportVariables { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseExportVariables(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.name = reader.string(); continue; } case 2: { if (tag !== 18) { break; } const entry2 = ExportVariables_DefinitionsEntry.decode( reader, reader.uint32(), ); if (entry2.value !== undefined) { message.definitions[entry2.key] = entry2.value; } continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseExportVariables_DefinitionsEntry(): ExportVariables_DefinitionsEntry { return { key: "", value: "" }; } export const ExportVariables_DefinitionsEntry: MessageFns<ExportVariables_DefinitionsEntry> = { encode( message: ExportVariables_DefinitionsEntry, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { if (message.key !== "") { writer.uint32(10).string(message.key); } if (message.value !== "") { writer.uint32(18).string(message.value); } return writer; }, decode( input: BinaryReader | Uint8Array, length?: number, ): ExportVariables_DefinitionsEntry { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseExportVariables_DefinitionsEntry(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.key = reader.string(); continue; } case 2: { if (tag !== 18) { break; } message.value = reader.string(); continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseVariables(): Variables { return { import: [], local: {} }; } export const Variables: MessageFns<Variables> = { encode( message: Variables, writer: BinaryWriter = new BinaryWriter(), ): BinaryWriter { for (const v of message.import) { writer.uint32(10).string(v!); } Object.entries(message.local).forEach(([key, value]) => { Variables_LocalEntry.encode( { key: key as any, value }, writer.uint32(18).fork(), ).join(); }); return writer; }, decode(input: BinaryReader | Uint8Array, length?: number): Variables { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseVariables(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: { if (tag !== 10) { break; } message.import.push(reader.string()); continue; } case 2: { if (tag !== 18) { break; } const entry2 = Variables_LocalEntry.decode(reader, reader.uint32()); if (entry2.value !== undefined) { message.local[entry2.key] = entry2.value; } continue; } } if ((tag & 7) === 4 || tag === 0) { break; } reader.skip(tag & 7); } return message; }, }; function createBaseVariables_LocalEntry(): Variables_LocalEntry { return { key: "", value: "" }; } export const Variables_LocalEntry: MessageFns<Variables_LocalEntry> = { encode( message: Variables_LocalEntry, writer: BinaryWriter = new BinaryWriter(), ): BinaryWrite