From 863af6b9f252766880dcdc001907495ccde20350 Mon Sep 17 00:00:00 2001 From: Andrew Haines Date: Fri, 14 Jul 2023 13:00:38 +0100 Subject: [PATCH] feat: Support `exportVariables` policies (#598) * Normalize `toJSON` output by omitting fields set to their default values https://github.com/stephenh/ts-proto/pull/878 * Regenerate protobuf code * Support `exportVariables` policies * Extract policy body types for better documentation * Enforce consistent ordering of type vs regular imports Signed-off-by: Andrew Haines --- .eslintrc.yaml | 1 + docs/core.derivedroles.derivedroles.md | 5 +- docs/core.derivedroles.md | 2 +- docs/core.derivedrolesbody.definitions.md | 13 + docs/core.derivedrolesbody.md | 22 + docs/core.derivedrolesbody.name.md | 13 + docs/core.derivedrolesbody.variables.md | 18 + docs/core.exportvariables.exportvariables.md | 13 + docs/core.exportvariables.md | 25 + docs/core.exportvariablesbody.definitions.md | 13 + docs/core.exportvariablesbody.md | 25 + docs/core.exportvariablesbody.name.md | 13 + docs/core.md | 7 + docs/core.policy.md | 4 +- docs/core.policybase.variables.md | 5 + docs/core.policyisexportvariables.md | 13 + docs/core.principalpolicy.md | 2 +- docs/core.principalpolicy.principalpolicy.md | 7 +- docs/core.principalpolicybody.md | 24 + docs/core.principalpolicybody.principal.md | 13 + docs/core.principalpolicybody.rules.md | 13 + docs/core.principalpolicybody.scope.md | 13 + docs/core.principalpolicybody.variables.md | 18 + docs/core.principalpolicybody.version.md | 18 + docs/core.resourcepolicy.md | 2 +- docs/core.resourcepolicy.resourcepolicy.md | 9 +- ...e.resourcepolicybody.importderivedroles.md | 13 + docs/core.resourcepolicybody.md | 26 + docs/core.resourcepolicybody.resource.md | 13 + docs/core.resourcepolicybody.rules.md | 13 + docs/core.resourcepolicybody.schemas.md | 13 + docs/core.resourcepolicybody.scope.md | 13 + docs/core.resourcepolicybody.variables.md | 18 + docs/core.resourcepolicybody.version.md | 18 + docs/core.variables.import.md | 13 + docs/core.variables.local.md | 13 + docs/core.variables.md | 21 + package.json | 2 +- packages/core/CHANGELOG.md | 4 + packages/core/src/convert/fromProtobuf.ts | 31 + packages/core/src/convert/toProtobuf.ts | 36 +- .../src/protobuf/cerbos/policy/v1/policy.ts | 25 + .../core/src/types/external/DerivedRoles.ts | 14 +- .../src/types/external/DerivedRolesBody.ts | 28 + .../src/types/external/ExportVariables.ts | 18 + .../src/types/external/ExportVariablesBody.ts | 20 + packages/core/src/types/external/Policy.ts | 16 +- .../core/src/types/external/PolicyBase.ts | 2 + .../src/types/external/PrincipalPolicy.ts | 29 +- .../src/types/external/PrincipalPolicyBody.ts | 42 + .../core/src/types/external/ResourcePolicy.ts | 40 +- .../src/types/external/ResourcePolicyBody.ts | 53 + packages/core/src/types/external/Variables.ts | 16 + packages/core/src/types/external/index.ts | 6 + packages/grpc/CHANGELOG.md | 4 + .../src/protobuf/cerbos/policy/v1/policy.ts | 314 +++++- packages/http/CHANGELOG.md | 4 + .../src/protobuf/cerbos/audit/v1/audit.ts | 176 ++-- .../src/protobuf/cerbos/engine/v1/engine.ts | 345 +++--- .../src/protobuf/cerbos/policy/v1/policy.ts | 516 ++++++--- .../src/protobuf/cerbos/request/v1/request.ts | 329 +++--- .../protobuf/cerbos/response/v1/response.ts | 417 ++++---- .../src/protobuf/cerbos/schema/v1/schema.ts | 26 +- packages/http/src/protobuf/google/api/http.ts | 55 +- .../protobuf/google/protobuf/descriptor.ts | 271 +++-- .../src/protobuf/google/protobuf/duration.ts | 8 +- .../src/protobuf/google/protobuf/struct.ts | 58 +- .../src/protobuf/google/protobuf/timestamp.ts | 8 +- .../src/protobuf/google/protobuf/wrappers.ts | 4 +- .../protoc-gen-openapiv2/options/openapiv2.ts | 754 +++++++------ .../http/src/protobuf/validate/validate.ts | 989 ++++++++++-------- .../src/protobuf/cerbos/audit/v1/audit.ts | 176 ++-- .../src/protobuf/cerbos/engine/v1/engine.ts | 345 +++--- .../src/protobuf/cerbos/policy/v1/policy.ts | 516 ++++++--- .../src/protobuf/cerbos/request/v1/request.ts | 329 +++--- .../protobuf/cerbos/response/v1/response.ts | 417 ++++---- .../src/protobuf/cerbos/schema/v1/schema.ts | 26 +- packages/lite/src/protobuf/google/api/http.ts | 55 +- .../protobuf/google/protobuf/descriptor.ts | 271 +++-- .../src/protobuf/google/protobuf/duration.ts | 9 +- .../src/protobuf/google/protobuf/struct.ts | 58 +- .../src/protobuf/google/protobuf/timestamp.ts | 9 +- .../src/protobuf/google/protobuf/wrappers.ts | 4 +- .../protoc-gen-openapiv2/options/openapiv2.ts | 758 ++++++++------ .../lite/src/protobuf/validate/validate.ts | 956 +++++++++-------- patches/ts-proto+1.153.2.patch | 109 ++ 86 files changed, 5806 insertions(+), 3377 deletions(-) create mode 100644 docs/core.derivedrolesbody.definitions.md create mode 100644 docs/core.derivedrolesbody.md create mode 100644 docs/core.derivedrolesbody.name.md create mode 100644 docs/core.derivedrolesbody.variables.md create mode 100644 docs/core.exportvariables.exportvariables.md create mode 100644 docs/core.exportvariables.md create mode 100644 docs/core.exportvariablesbody.definitions.md create mode 100644 docs/core.exportvariablesbody.md create mode 100644 docs/core.exportvariablesbody.name.md create mode 100644 docs/core.policyisexportvariables.md create mode 100644 docs/core.principalpolicybody.md create mode 100644 docs/core.principalpolicybody.principal.md create mode 100644 docs/core.principalpolicybody.rules.md create mode 100644 docs/core.principalpolicybody.scope.md create mode 100644 docs/core.principalpolicybody.variables.md create mode 100644 docs/core.principalpolicybody.version.md create mode 100644 docs/core.resourcepolicybody.importderivedroles.md create mode 100644 docs/core.resourcepolicybody.md create mode 100644 docs/core.resourcepolicybody.resource.md create mode 100644 docs/core.resourcepolicybody.rules.md create mode 100644 docs/core.resourcepolicybody.schemas.md create mode 100644 docs/core.resourcepolicybody.scope.md create mode 100644 docs/core.resourcepolicybody.variables.md create mode 100644 docs/core.resourcepolicybody.version.md create mode 100644 docs/core.variables.import.md create mode 100644 docs/core.variables.local.md create mode 100644 docs/core.variables.md create mode 100644 packages/core/src/types/external/DerivedRolesBody.ts create mode 100644 packages/core/src/types/external/ExportVariables.ts create mode 100644 packages/core/src/types/external/ExportVariablesBody.ts create mode 100644 packages/core/src/types/external/PrincipalPolicyBody.ts create mode 100644 packages/core/src/types/external/ResourcePolicyBody.ts create mode 100644 packages/core/src/types/external/Variables.ts diff --git a/.eslintrc.yaml b/.eslintrc.yaml index a73f9743..ba6d2c67 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -40,6 +40,7 @@ rules: - error - alphabetize: order: asc + orderImportKind: asc caseInsensitive: true newlines-between: always no-console: error diff --git a/docs/core.derivedroles.derivedroles.md b/docs/core.derivedroles.derivedroles.md index 25bcfc4e..6cf7c195 100644 --- a/docs/core.derivedroles.derivedroles.md +++ b/docs/core.derivedroles.derivedroles.md @@ -9,8 +9,5 @@ A set of derived roles. **Signature:** ```typescript -derivedRoles: { - name: string; - definitions: DerivedRoleDefinition[]; - }; +derivedRoles: DerivedRolesBody; ``` diff --git a/docs/core.derivedroles.md b/docs/core.derivedroles.md index a185ba66..4fb63a7c 100644 --- a/docs/core.derivedroles.md +++ b/docs/core.derivedroles.md @@ -17,5 +17,5 @@ export interface DerivedRoles extends PolicyBase | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [derivedRoles](./core.derivedroles.derivedroles.md) | | { name: string; definitions: [DerivedRoleDefinition](./core.derivedroledefinition.md)\[\]; } | A set of derived roles. | +| [derivedRoles](./core.derivedroles.derivedroles.md) | | [DerivedRolesBody](./core.derivedrolesbody.md) | A set of derived roles. | diff --git a/docs/core.derivedrolesbody.definitions.md b/docs/core.derivedrolesbody.definitions.md new file mode 100644 index 00000000..c4cc223d --- /dev/null +++ b/docs/core.derivedrolesbody.definitions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [DerivedRolesBody](./core.derivedrolesbody.md) > [definitions](./core.derivedrolesbody.definitions.md) + +## DerivedRolesBody.definitions property + +The definitions of the derived roles. + +**Signature:** + +```typescript +definitions: DerivedRoleDefinition[]; +``` diff --git a/docs/core.derivedrolesbody.md b/docs/core.derivedrolesbody.md new file mode 100644 index 00000000..806672e1 --- /dev/null +++ b/docs/core.derivedrolesbody.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [DerivedRolesBody](./core.derivedrolesbody.md) + +## DerivedRolesBody interface + +A set of [derived roles](https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html) to augment static RBAC roles with contextual data to provide more fine-grained control at runtime. + +**Signature:** + +```typescript +export interface DerivedRolesBody +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [definitions](./core.derivedrolesbody.definitions.md) | | [DerivedRoleDefinition](./core.derivedroledefinition.md)\[\] | The definitions of the derived roles. | +| [name](./core.derivedrolesbody.name.md) | | string | The name to use when importing the set of derived roles. | +| [variables?](./core.derivedrolesbody.variables.md) | | [Variables](./core.variables.md) \| undefined | _(Optional)_ [Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in conditions. | + diff --git a/docs/core.derivedrolesbody.name.md b/docs/core.derivedrolesbody.name.md new file mode 100644 index 00000000..d21b5bb5 --- /dev/null +++ b/docs/core.derivedrolesbody.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [DerivedRolesBody](./core.derivedrolesbody.md) > [name](./core.derivedrolesbody.name.md) + +## DerivedRolesBody.name property + +The name to use when importing the set of derived roles. + +**Signature:** + +```typescript +name: string; +``` diff --git a/docs/core.derivedrolesbody.variables.md b/docs/core.derivedrolesbody.variables.md new file mode 100644 index 00000000..ea612dcc --- /dev/null +++ b/docs/core.derivedrolesbody.variables.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [DerivedRolesBody](./core.derivedrolesbody.md) > [variables](./core.derivedrolesbody.variables.md) + +## DerivedRolesBody.variables property + +[Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in conditions. + +**Signature:** + +```typescript +variables?: Variables | undefined; +``` + +## Remarks + +Requires the Cerbos policy decision point server to be at least v0.29. + diff --git a/docs/core.exportvariables.exportvariables.md b/docs/core.exportvariables.exportvariables.md new file mode 100644 index 00000000..b6d82d10 --- /dev/null +++ b/docs/core.exportvariables.exportvariables.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ExportVariables](./core.exportvariables.md) > [exportVariables](./core.exportvariables.exportvariables.md) + +## ExportVariables.exportVariables property + +A set of exported variables. + +**Signature:** + +```typescript +exportVariables: ExportVariablesBody; +``` diff --git a/docs/core.exportvariables.md b/docs/core.exportvariables.md new file mode 100644 index 00000000..4e633fd7 --- /dev/null +++ b/docs/core.exportvariables.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ExportVariables](./core.exportvariables.md) + +## ExportVariables interface + +A set of [exported variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html#export) to be reused in other policies. + +**Signature:** + +```typescript +export interface ExportVariables extends PolicyBase +``` +**Extends:** [PolicyBase](./core.policybase.md) + +## Remarks + +Requires the Cerbos policy decision point server to be at least v0.29. + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [exportVariables](./core.exportvariables.exportvariables.md) | | [ExportVariablesBody](./core.exportvariablesbody.md) | A set of exported variables. | + diff --git a/docs/core.exportvariablesbody.definitions.md b/docs/core.exportvariablesbody.definitions.md new file mode 100644 index 00000000..0ffa4680 --- /dev/null +++ b/docs/core.exportvariablesbody.definitions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ExportVariablesBody](./core.exportvariablesbody.md) > [definitions](./core.exportvariablesbody.definitions.md) + +## ExportVariablesBody.definitions property + +Variable expressions. + +**Signature:** + +```typescript +definitions: Record; +``` diff --git a/docs/core.exportvariablesbody.md b/docs/core.exportvariablesbody.md new file mode 100644 index 00000000..40d7bdfc --- /dev/null +++ b/docs/core.exportvariablesbody.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ExportVariablesBody](./core.exportvariablesbody.md) + +## ExportVariablesBody interface + +A set of [exported variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html#export) to be reused in other policies. + +**Signature:** + +```typescript +export interface ExportVariablesBody +``` + +## Remarks + +Requires the Cerbos policy decision point server to be at least v0.29. + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [definitions](./core.exportvariablesbody.definitions.md) | | Record<string, string> | Variable expressions. | +| [name](./core.exportvariablesbody.name.md) | | string | The name to use when importing the set of variables. | + diff --git a/docs/core.exportvariablesbody.name.md b/docs/core.exportvariablesbody.name.md new file mode 100644 index 00000000..d039ec16 --- /dev/null +++ b/docs/core.exportvariablesbody.name.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ExportVariablesBody](./core.exportvariablesbody.md) > [name](./core.exportvariablesbody.name.md) + +## ExportVariablesBody.name property + +The name to use when importing the set of variables. + +**Signature:** + +```typescript +name: string; +``` diff --git a/docs/core.md b/docs/core.md index 607b6df9..d78df57b 100644 --- a/docs/core.md +++ b/docs/core.md @@ -51,10 +51,13 @@ Common types used by the [gRPC](./grpc.md) and [HTTP](./http.md) client librarie | [DeleteSchemasResponse](./core.deleteschemasresponse.md) | The outcome of deleting schemas. | | [DerivedRoleDefinition](./core.derivedroledefinition.md) | The definition of a [derived role](https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html). | | [DerivedRoles](./core.derivedroles.md) | A set of [derived roles](https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html) to augment static RBAC roles with contextual data to provide more fine-grained control at runtime. | +| [DerivedRolesBody](./core.derivedrolesbody.md) | A set of [derived roles](https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html) to augment static RBAC roles with contextual data to provide more fine-grained control at runtime. | | [DisablePoliciesRequest](./core.disablepoliciesrequest.md) | Input to [Client.disablePolicies()](./core.client.disablepolicies.md). | | [DisablePoliciesResponse](./core.disablepoliciesresponse.md) | The outcome of disabling policies. | | [EnablePoliciesRequest](./core.enablepoliciesrequest.md) | Input to [Client.enablePolicies()](./core.client.enablepolicies.md). | | [EnablePoliciesResponse](./core.enablepoliciesresponse.md) | The outcome of enabling policies. | +| [ExportVariables](./core.exportvariables.md) | A set of [exported variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html#export) to be reused in other policies. | +| [ExportVariablesBody](./core.exportvariablesbody.md) | A set of [exported variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html#export) to be reused in other policies. | | [GetPoliciesRequest](./core.getpoliciesrequest.md) | Input to [Client.getPolicies()](./core.client.getpolicies.md). | | [GetPoliciesResponse](./core.getpoliciesresponse.md) | Fetched policies. | | [GetSchemasRequest](./core.getschemasrequest.md) | Input to [Client.getSchemas()](./core.client.getschemas.md). | @@ -80,12 +83,14 @@ Common types used by the [gRPC](./grpc.md) and [HTTP](./http.md) client librarie | [PolicyMetadata](./core.policymetadata.md) | Metadata describing a policy. | | [Principal](./core.principal.md) | A principal (often a user, but potentially another actor like a service account) to authorize. | | [PrincipalPolicy](./core.principalpolicy.md) | A [policy](https://docs.cerbos.dev/cerbos/latest/policies/principal_policies.html) defining overrides for a specific user. | +| [PrincipalPolicyBody](./core.principalpolicybody.md) | A [policy](https://docs.cerbos.dev/cerbos/latest/policies/principal_policies.html) defining overrides for a specific user. | | [PrincipalRule](./core.principalrule.md) | A rule defining an override for a specific user. | | [PrincipalRuleAction](./core.principalruleaction.md) | An override for a given action for a specific user. | | [ReloadStoreRequest](./core.reloadstorerequest.md) | Input to [Client.reloadStore()](./core.client.reloadstore.md). | | [Resource](./core.resource.md) | A resource on which to check a principal's permissions. | | [ResourceCheck](./core.resourcecheck.md) | A [Resource](./core.resource.md) and list of actions on which to check a principal's permissions. | | [ResourcePolicy](./core.resourcepolicy.md) | A [policy](https://docs.cerbos.dev/cerbos/latest/policies/resource_policies.html) defining rules for actions that can be performed on a given resource. | +| [ResourcePolicyBody](./core.resourcepolicybody.md) | A [policy](https://docs.cerbos.dev/cerbos/latest/policies/resource_policies.html) defining rules for actions that can be performed on a given resource. | | [ResourceRule](./core.resourcerule.md) | A rule for actions that can be performed on a given resource. | | [Schema](./core.schema.md) | A JSON schema used to validate principal or resource attributes. | | [SchemaInput](./core.schemainput.md) | A JSON schema to be used to validate principal or resource attributes. | @@ -93,6 +98,7 @@ Common types used by the [gRPC](./grpc.md) and [HTTP](./http.md) client librarie | [SchemaRefs](./core.schemarefs.md) | References to schemas to be used to validate principal and resource attributes. | | [ServerInfo](./core.serverinfo.md) | Information about the Cerbos policy decision point (PDP) server. | | [ValidationError](./core.validationerror.md) | An error that occurred while validating the principal or resource attributes against a schema. | +| [Variables](./core.variables.md) | [Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in policy conditions. | ## Variables @@ -103,6 +109,7 @@ Common types used by the [gRPC](./grpc.md) and [HTTP](./http.md) client librarie | [matchIsMatchExpr](./core.matchismatchexpr.md) | Type guard to check if a [Match](./core.match.md) is a [MatchExpr](./core.matchexpr.md). | | [matchIsMatchNone](./core.matchismatchnone.md) | Type guard to check if a [Match](./core.match.md) is a [MatchNone](./core.matchnone.md). | | [policyIsDerivedRoles](./core.policyisderivedroles.md) | Type guard to check if a [Policy](./core.policy.md) is a set of [DerivedRoles](./core.derivedroles.md). | +| [policyIsExportVariables](./core.policyisexportvariables.md) | Type guard to check if a [Policy](./core.policy.md) is a set of [ExportVariables](./core.exportvariables.md). | | [policyIsPrincipalPolicy](./core.policyisprincipalpolicy.md) | Type guard to check if a [Policy](./core.policy.md) is a [PrincipalPolicy](./core.principalpolicy.md). | | [policyIsResourcePolicy](./core.policyisresourcepolicy.md) | Type guard to check if a [Policy](./core.policy.md) is a [ResourcePolicy](./core.resourcepolicy.md). | diff --git a/docs/core.policy.md b/docs/core.policy.md index 8e813dd2..909ddf08 100644 --- a/docs/core.policy.md +++ b/docs/core.policy.md @@ -9,7 +9,7 @@ A [policy](https://docs.cerbos.dev/cerbos/latest/policies/index.html) definition **Signature:** ```typescript -export type Policy = DerivedRoles | PrincipalPolicy | ResourcePolicy; +export type Policy = DerivedRoles | ExportVariables | PrincipalPolicy | ResourcePolicy; ``` -**References:** [DerivedRoles](./core.derivedroles.md), [PrincipalPolicy](./core.principalpolicy.md), [ResourcePolicy](./core.resourcepolicy.md) +**References:** [DerivedRoles](./core.derivedroles.md), [ExportVariables](./core.exportvariables.md), [PrincipalPolicy](./core.principalpolicy.md), [ResourcePolicy](./core.resourcepolicy.md) diff --git a/docs/core.policybase.variables.md b/docs/core.policybase.variables.md index 5f9a1c60..e9f15ec2 100644 --- a/docs/core.policybase.variables.md +++ b/docs/core.policybase.variables.md @@ -4,6 +4,11 @@ ## PolicyBase.variables property +> Warning: This API is now obsolete. +> +> Define variables within the policy body instead, provided the Cerbos policy decision point server is at least v0.29 ([DerivedRolesBody.variables](./core.derivedrolesbody.variables.md), [PrincipalPolicyBody.variables](./core.principalpolicybody.variables.md), or [ResourcePolicyBody.variables](./core.resourcepolicybody.variables.md)). +> + Variable expressions defined for the policy. **Signature:** diff --git a/docs/core.policyisexportvariables.md b/docs/core.policyisexportvariables.md new file mode 100644 index 00000000..bd52cea9 --- /dev/null +++ b/docs/core.policyisexportvariables.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [policyIsExportVariables](./core.policyisexportvariables.md) + +## policyIsExportVariables variable + +Type guard to check if a [Policy](./core.policy.md) is a set of [ExportVariables](./core.exportvariables.md). + +**Signature:** + +```typescript +policyIsExportVariables: (policy: Policy) => policy is ExportVariables +``` diff --git a/docs/core.principalpolicy.md b/docs/core.principalpolicy.md index 6b6ee8cf..f17cc61e 100644 --- a/docs/core.principalpolicy.md +++ b/docs/core.principalpolicy.md @@ -17,5 +17,5 @@ export interface PrincipalPolicy extends PolicyBase | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [principalPolicy](./core.principalpolicy.principalpolicy.md) | | { principal: string; version: string; rules: [PrincipalRule](./core.principalrule.md)\[\]; scope?: string; } | The policy body. | +| [principalPolicy](./core.principalpolicy.principalpolicy.md) | | [PrincipalPolicyBody](./core.principalpolicybody.md) | The policy body. | diff --git a/docs/core.principalpolicy.principalpolicy.md b/docs/core.principalpolicy.principalpolicy.md index b470a23f..023cfbb0 100644 --- a/docs/core.principalpolicy.principalpolicy.md +++ b/docs/core.principalpolicy.principalpolicy.md @@ -9,10 +9,5 @@ The policy body. **Signature:** ```typescript -principalPolicy: { - principal: string; - version: string; - rules: PrincipalRule[]; - scope?: string; - }; +principalPolicy: PrincipalPolicyBody; ``` diff --git a/docs/core.principalpolicybody.md b/docs/core.principalpolicybody.md new file mode 100644 index 00000000..0de0b503 --- /dev/null +++ b/docs/core.principalpolicybody.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [PrincipalPolicyBody](./core.principalpolicybody.md) + +## PrincipalPolicyBody interface + +A [policy](https://docs.cerbos.dev/cerbos/latest/policies/principal_policies.html) defining overrides for a specific user. + +**Signature:** + +```typescript +export interface PrincipalPolicyBody +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [principal](./core.principalpolicybody.principal.md) | | string | The ID of the principal to whom the policy applies. | +| [rules](./core.principalpolicybody.rules.md) | | [PrincipalRule](./core.principalrule.md)\[\] | Rules defining the overrides that apply to the principal. | +| [scope?](./core.principalpolicybody.scope.md) | | string | _(Optional)_ [Scope](https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html) of the policy. | +| [variables?](./core.principalpolicybody.variables.md) | | [Variables](./core.variables.md) \| undefined | _(Optional)_ [Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in conditions. | +| [version](./core.principalpolicybody.version.md) | | string | The version of the policy. | + diff --git a/docs/core.principalpolicybody.principal.md b/docs/core.principalpolicybody.principal.md new file mode 100644 index 00000000..a926d8be --- /dev/null +++ b/docs/core.principalpolicybody.principal.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [PrincipalPolicyBody](./core.principalpolicybody.md) > [principal](./core.principalpolicybody.principal.md) + +## PrincipalPolicyBody.principal property + +The ID of the principal to whom the policy applies. + +**Signature:** + +```typescript +principal: string; +``` diff --git a/docs/core.principalpolicybody.rules.md b/docs/core.principalpolicybody.rules.md new file mode 100644 index 00000000..a92d1e9d --- /dev/null +++ b/docs/core.principalpolicybody.rules.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [PrincipalPolicyBody](./core.principalpolicybody.md) > [rules](./core.principalpolicybody.rules.md) + +## PrincipalPolicyBody.rules property + +Rules defining the overrides that apply to the principal. + +**Signature:** + +```typescript +rules: PrincipalRule[]; +``` diff --git a/docs/core.principalpolicybody.scope.md b/docs/core.principalpolicybody.scope.md new file mode 100644 index 00000000..668723c0 --- /dev/null +++ b/docs/core.principalpolicybody.scope.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [PrincipalPolicyBody](./core.principalpolicybody.md) > [scope](./core.principalpolicybody.scope.md) + +## PrincipalPolicyBody.scope property + +[Scope](https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html) of the policy. + +**Signature:** + +```typescript +scope?: string; +``` diff --git a/docs/core.principalpolicybody.variables.md b/docs/core.principalpolicybody.variables.md new file mode 100644 index 00000000..9af3ed9e --- /dev/null +++ b/docs/core.principalpolicybody.variables.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [PrincipalPolicyBody](./core.principalpolicybody.md) > [variables](./core.principalpolicybody.variables.md) + +## PrincipalPolicyBody.variables property + +[Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in conditions. + +**Signature:** + +```typescript +variables?: Variables | undefined; +``` + +## Remarks + +Requires the Cerbos policy decision point server to be at least v0.29. + diff --git a/docs/core.principalpolicybody.version.md b/docs/core.principalpolicybody.version.md new file mode 100644 index 00000000..b64ae359 --- /dev/null +++ b/docs/core.principalpolicybody.version.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [PrincipalPolicyBody](./core.principalpolicybody.md) > [version](./core.principalpolicybody.version.md) + +## PrincipalPolicyBody.version property + +The version of the policy. + +**Signature:** + +```typescript +version: string; +``` + +## Remarks + +Policies are uniquely identified by the principal name and version pair. You can have multiple policy versions for the same principal (e.g. production vs. staging). The version value `default` is special as it is the default fallback when no version is specified in the request. + diff --git a/docs/core.resourcepolicy.md b/docs/core.resourcepolicy.md index 60086c1f..8211a7ef 100644 --- a/docs/core.resourcepolicy.md +++ b/docs/core.resourcepolicy.md @@ -17,5 +17,5 @@ export interface ResourcePolicy extends PolicyBase | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [resourcePolicy](./core.resourcepolicy.resourcepolicy.md) | | { resource: string; version: string; importDerivedRoles?: string\[\]; rules: [ResourceRule](./core.resourcerule.md)\[\]; scope?: string; schemas?: [SchemaRefs](./core.schemarefs.md) \| undefined; } | The policy body. | +| [resourcePolicy](./core.resourcepolicy.resourcepolicy.md) | | [ResourcePolicyBody](./core.resourcepolicybody.md) | The policy body. | diff --git a/docs/core.resourcepolicy.resourcepolicy.md b/docs/core.resourcepolicy.resourcepolicy.md index a6c02662..7a84921c 100644 --- a/docs/core.resourcepolicy.resourcepolicy.md +++ b/docs/core.resourcepolicy.resourcepolicy.md @@ -9,12 +9,5 @@ The policy body. **Signature:** ```typescript -resourcePolicy: { - resource: string; - version: string; - importDerivedRoles?: string[]; - rules: ResourceRule[]; - scope?: string; - schemas?: SchemaRefs | undefined; - }; +resourcePolicy: ResourcePolicyBody; ``` diff --git a/docs/core.resourcepolicybody.importderivedroles.md b/docs/core.resourcepolicybody.importderivedroles.md new file mode 100644 index 00000000..69b931e0 --- /dev/null +++ b/docs/core.resourcepolicybody.importderivedroles.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) > [importDerivedRoles](./core.resourcepolicybody.importderivedroles.md) + +## ResourcePolicyBody.importDerivedRoles property + +Name of a set of [derived roles](https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html) to import. + +**Signature:** + +```typescript +importDerivedRoles?: string[]; +``` diff --git a/docs/core.resourcepolicybody.md b/docs/core.resourcepolicybody.md new file mode 100644 index 00000000..1afe9447 --- /dev/null +++ b/docs/core.resourcepolicybody.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) + +## ResourcePolicyBody interface + +A [policy](https://docs.cerbos.dev/cerbos/latest/policies/resource_policies.html) defining rules for actions that can be performed on a given resource. + +**Signature:** + +```typescript +export interface ResourcePolicyBody +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [importDerivedRoles?](./core.resourcepolicybody.importderivedroles.md) | | string\[\] | _(Optional)_ Name of a set of [derived roles](https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html) to import. | +| [resource](./core.resourcepolicybody.resource.md) | | string | The name of the resource to which the policy applies. | +| [rules](./core.resourcepolicybody.rules.md) | | [ResourceRule](./core.resourcerule.md)\[\] | Rules defining the actions that can be performed on the resource. | +| [schemas?](./core.resourcepolicybody.schemas.md) | | [SchemaRefs](./core.schemarefs.md) \| undefined | _(Optional)_ [Schemas](https://docs.cerbos.dev/cerbos/latest/policies/schemas.html) for principal and resource attributes. | +| [scope?](./core.resourcepolicybody.scope.md) | | string | _(Optional)_ [Scope](https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html) of the policy. | +| [variables?](./core.resourcepolicybody.variables.md) | | [Variables](./core.variables.md) \| undefined | _(Optional)_ [Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in conditions. | +| [version](./core.resourcepolicybody.version.md) | | string | The version of the policy. | + diff --git a/docs/core.resourcepolicybody.resource.md b/docs/core.resourcepolicybody.resource.md new file mode 100644 index 00000000..2735b522 --- /dev/null +++ b/docs/core.resourcepolicybody.resource.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) > [resource](./core.resourcepolicybody.resource.md) + +## ResourcePolicyBody.resource property + +The name of the resource to which the policy applies. + +**Signature:** + +```typescript +resource: string; +``` diff --git a/docs/core.resourcepolicybody.rules.md b/docs/core.resourcepolicybody.rules.md new file mode 100644 index 00000000..35ff72d8 --- /dev/null +++ b/docs/core.resourcepolicybody.rules.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) > [rules](./core.resourcepolicybody.rules.md) + +## ResourcePolicyBody.rules property + +Rules defining the actions that can be performed on the resource. + +**Signature:** + +```typescript +rules: ResourceRule[]; +``` diff --git a/docs/core.resourcepolicybody.schemas.md b/docs/core.resourcepolicybody.schemas.md new file mode 100644 index 00000000..400ab7f9 --- /dev/null +++ b/docs/core.resourcepolicybody.schemas.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) > [schemas](./core.resourcepolicybody.schemas.md) + +## ResourcePolicyBody.schemas property + +[Schemas](https://docs.cerbos.dev/cerbos/latest/policies/schemas.html) for principal and resource attributes. + +**Signature:** + +```typescript +schemas?: SchemaRefs | undefined; +``` diff --git a/docs/core.resourcepolicybody.scope.md b/docs/core.resourcepolicybody.scope.md new file mode 100644 index 00000000..d6da50e9 --- /dev/null +++ b/docs/core.resourcepolicybody.scope.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) > [scope](./core.resourcepolicybody.scope.md) + +## ResourcePolicyBody.scope property + +[Scope](https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html) of the policy. + +**Signature:** + +```typescript +scope?: string; +``` diff --git a/docs/core.resourcepolicybody.variables.md b/docs/core.resourcepolicybody.variables.md new file mode 100644 index 00000000..f964ecfb --- /dev/null +++ b/docs/core.resourcepolicybody.variables.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) > [variables](./core.resourcepolicybody.variables.md) + +## ResourcePolicyBody.variables property + +[Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in conditions. + +**Signature:** + +```typescript +variables?: Variables | undefined; +``` + +## Remarks + +Requires the Cerbos policy decision point server to be at least v0.29. + diff --git a/docs/core.resourcepolicybody.version.md b/docs/core.resourcepolicybody.version.md new file mode 100644 index 00000000..3c845a80 --- /dev/null +++ b/docs/core.resourcepolicybody.version.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [ResourcePolicyBody](./core.resourcepolicybody.md) > [version](./core.resourcepolicybody.version.md) + +## ResourcePolicyBody.version property + +The version of the policy. + +**Signature:** + +```typescript +version: string; +``` + +## Remarks + +Policies are uniquely identified by the principal name and version pair. You can have multiple policy versions for the same principal (e.g. production vs. staging). The version value `default` is special as it is the default fallback when no version is specified in the request. + diff --git a/docs/core.variables.import.md b/docs/core.variables.import.md new file mode 100644 index 00000000..cf46da52 --- /dev/null +++ b/docs/core.variables.import.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [Variables](./core.variables.md) > [import](./core.variables.import.md) + +## Variables.import property + +Names of variable sets to import. + +**Signature:** + +```typescript +import?: string[]; +``` diff --git a/docs/core.variables.local.md b/docs/core.variables.local.md new file mode 100644 index 00000000..fe0505d7 --- /dev/null +++ b/docs/core.variables.local.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [Variables](./core.variables.md) > [local](./core.variables.local.md) + +## Variables.local property + +Variable expressions defined for the policy. + +**Signature:** + +```typescript +local?: Record; +``` diff --git a/docs/core.variables.md b/docs/core.variables.md new file mode 100644 index 00000000..ae8739c8 --- /dev/null +++ b/docs/core.variables.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [@cerbos/core](./core.md) > [Variables](./core.variables.md) + +## Variables interface + +[Variables](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) defined for use in policy conditions. + +**Signature:** + +```typescript +export interface Variables +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [import?](./core.variables.import.md) | | string\[\] | _(Optional)_ Names of variable sets to import. | +| [local?](./core.variables.local.md) | | Record<string, string> | _(Optional)_ Variable expressions defined for the policy. | + diff --git a/package.json b/package.json index 8cb58ede..594d3ebe 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "build": "tsc --build", "build:watch": "tsc --build --watch", "clean": "rm -rf api packages/*/lib", - "docs": "npm run docs:extract-api && npm run docs:generate && npm run docs:fixup", + "docs": "npm run build && npm run docs:extract-api && npm run docs:generate && npm run docs:fixup", "docs:extract-api": "npm --workspace=packages/core --workspace=packages/grpc --workspace=packages/http --workspace=packages/lite --workspace=packages/opentelemetry exec api-extractor run", "docs:fixup": "scripts/sed-all docs 's/\\r$//'", "docs:generate": "api-documenter markdown --input-folder api --output-folder docs", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index e4dfdf83..e1d5a7ce 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -6,6 +6,10 @@ Requires a policy decision point server running Cerbos 0.29+. +- Support for [exporting and importing variable sets](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) in policies ([#598](https://github.com/cerbos/cerbos-sdk-javascript/pull/598)) + + Requires a policy decision point server running Cerbos 0.29+. + ## [0.11.0] - 2023-06-07 ### Added diff --git a/packages/core/src/convert/fromProtobuf.ts b/packages/core/src/convert/fromProtobuf.ts index 870570ab..21db5b89 100644 --- a/packages/core/src/convert/fromProtobuf.ts +++ b/packages/core/src/convert/fromProtobuf.ts @@ -7,6 +7,7 @@ import { PlanResourcesFilter_Kind } from "../protobuf/cerbos/engine/v1/engine"; import type { Condition as ConditionProtobuf, DerivedRoles as DerivedRolesProtobuf, + ExportVariables as ExportVariablesProtobuf, Match as MatchProtobuf, Match_ExprList, Metadata, @@ -20,6 +21,7 @@ import type { RoleDef, Schemas, Schemas_Schema, + Variables as VariablesProtobuf, } from "../protobuf/cerbos/policy/v1/policy"; import type { CheckResourcesResponse as CheckResourcesResponseProtobuf, @@ -45,6 +47,7 @@ import type { DerivedRoles, DisablePoliciesResponse, EnablePoliciesResponse, + ExportVariables, GetPoliciesResponse, ListPoliciesResponse, ListSchemasResponse, @@ -68,6 +71,7 @@ import type { SchemaRefs, ValidationError, Value, + Variables, } from "../types/external"; import { CheckResourcesResponse, @@ -227,6 +231,9 @@ const policyTypeFromProtobuf = ( case "derivedRoles": return derivedRolesFromProtobuf(policyType.derivedRoles); + case "exportVariables": + return exportVariablesFromProtobuf(policyType.exportVariables); + case "principalPolicy": return principalPolicyFromProtobuf(policyType.principalPolicy); @@ -243,10 +250,12 @@ const policyTypeFromProtobuf = ( const derivedRolesFromProtobuf = ({ name, definitions, + variables, }: DerivedRolesProtobuf): OmitPolicyBase => ({ derivedRoles: { name, definitions: definitions.map(derivedRoleDefinitionFromProtobuf), + variables: variables && variablesFromProtobuf(variables), }, }); @@ -305,17 +314,37 @@ const matchesFromProtobuf = ({ of }: Match_ExprList): Matches => ({ of: of.map(matchFromProtobuf), }); +const variablesFromProtobuf = ({ + import: imports, + local, +}: VariablesProtobuf): Variables => ({ + import: imports, + local, +}); + +const exportVariablesFromProtobuf = ({ + name, + definitions, +}: ExportVariablesProtobuf): OmitPolicyBase => ({ + exportVariables: { + name, + definitions, + }, +}); + const principalPolicyFromProtobuf = ({ principal, version, rules, scope, + variables, }: PrincipalPolicyProtobuf): OmitPolicyBase => ({ principalPolicy: { principal, version, rules: rules.map(principalRuleFromProtobuf), scope, + variables: variables && variablesFromProtobuf(variables), }, }); @@ -350,6 +379,7 @@ const resourcePolicyFromProtobuf = ({ rules, schemas, scope, + variables, }: ResourcePolicyProtobuf): OmitPolicyBase => ({ resourcePolicy: { resource, @@ -358,6 +388,7 @@ const resourcePolicyFromProtobuf = ({ rules: rules.map(resourceRuleFromProtobuf), schemas: schemas && schemaRefsFromProtobuf(schemas), scope, + variables: variables && variablesFromProtobuf(variables), }, }); diff --git a/packages/core/src/convert/toProtobuf.ts b/packages/core/src/convert/toProtobuf.ts index 46a340ad..fdf832bb 100644 --- a/packages/core/src/convert/toProtobuf.ts +++ b/packages/core/src/convert/toProtobuf.ts @@ -9,6 +9,7 @@ import type { import type { Condition as ConditionProtobuf, DerivedRoles as DerivedRolesProtobuf, + ExportVariables as ExportVariablesProtobuf, Match as MatchProtobuf, Match_ExprList, Output as OutputProtobuf, @@ -21,6 +22,7 @@ import type { RoleDef, Schemas, Schemas_Schema, + Variables as VariablesProtobuf, } from "../protobuf/cerbos/policy/v1/policy"; import type { AddOrUpdatePolicyRequest, @@ -48,6 +50,7 @@ import type { DerivedRoleDefinition, DerivedRoles, EnablePoliciesRequest, + ExportVariables, GetPoliciesRequest, JWT, ListPoliciesRequest, @@ -69,6 +72,7 @@ import type { SchemaInput, SchemaRef, SchemaRefs, + Variables, } from "../types/external"; import { Effect, @@ -78,6 +82,7 @@ import { matchIsMatchExpr, matchIsMatchNone, policyIsDerivedRoles, + policyIsExportVariables, policyIsPrincipalPolicy, policyIsResourcePolicy, } from "../types/external"; @@ -104,6 +109,7 @@ const policyToProtobuf = (policy: Policy): PolicyProtobuf => { apiVersion, description, disabled, + jsonSchema: "", metadata: undefined, policyType: policyTypeToProtobuf(policy), variables, @@ -120,6 +126,13 @@ const policyTypeToProtobuf = ( }; } + if (policyIsExportVariables(policy)) { + return { + $case: "exportVariables", + exportVariables: exportVariablesToProtobuf(policy), + }; + } + if (policyIsPrincipalPolicy(policy)) { return { $case: "principalPolicy", @@ -138,10 +151,11 @@ const policyTypeToProtobuf = ( }; const derivedRolesToProtobuf = ({ - derivedRoles: { name, definitions }, + derivedRoles: { name, definitions, variables }, }: DerivedRoles): DerivedRolesProtobuf => ({ name, definitions: definitions.map(derivedRoleDefinitionToProtobuf), + variables: variables && variablesToProtobuf(variables), }); const derivedRoleDefinitionToProtobuf = ({ @@ -205,13 +219,29 @@ const matchesToProtobuf = ({ of }: Matches): Match_ExprList => ({ of: of.map(matchToProtobuf), }); +const variablesToProtobuf = ({ + import: imports = [], + local = {}, +}: Variables): VariablesProtobuf => ({ + import: imports, + local, +}); + +const exportVariablesToProtobuf = ({ + exportVariables: { name, definitions }, +}: ExportVariables): ExportVariablesProtobuf => ({ + name, + definitions, +}); + const principalPolicyToProtobuf = ({ - principalPolicy: { principal, version, rules, scope = "" }, + principalPolicy: { principal, version, rules, scope = "", variables }, }: PrincipalPolicy): PrincipalPolicyProtobuf => ({ principal, version, rules: rules.map(principalRuleToProtobuf), scope, + variables: variables && variablesToProtobuf(variables), }); const principalRuleToProtobuf = ({ @@ -251,6 +281,7 @@ const resourcePolicyToProtobuf = ({ rules, scope = "", schemas, + variables, }, }: ResourcePolicy): ResourcePolicyProtobuf => ({ resource, @@ -259,6 +290,7 @@ const resourcePolicyToProtobuf = ({ rules: rules.map(resourceRuleToProtobuf), scope, schemas: schemas && policySchemasToProtobuf(schemas), + variables: variables && variablesToProtobuf(variables), }); const resourceRuleToProtobuf = ({ diff --git a/packages/core/src/protobuf/cerbos/policy/v1/policy.ts b/packages/core/src/protobuf/cerbos/policy/v1/policy.ts index de63d930..8e4e4155 100644 --- a/packages/core/src/protobuf/cerbos/policy/v1/policy.ts +++ b/packages/core/src/protobuf/cerbos/policy/v1/policy.ts @@ -12,8 +12,10 @@ export interface Policy { | { $case: "resourcePolicy"; resourcePolicy: ResourcePolicy } | { $case: "principalPolicy"; principalPolicy: PrincipalPolicy } | { $case: "derivedRoles"; derivedRoles: DerivedRoles } + | { $case: "exportVariables"; exportVariables: ExportVariables } | undefined; variables: { [key: string]: string }; + jsonSchema: string; } export interface Policy_VariablesEntry { @@ -41,6 +43,7 @@ export interface ResourcePolicy { rules: ResourceRule[]; scope: string; schemas: Schemas | undefined; + variables: Variables | undefined; } export interface ResourceRule { @@ -58,6 +61,7 @@ export interface PrincipalPolicy { version: string; rules: PrincipalRule[]; scope: string; + variables: Variables | undefined; } export interface PrincipalRule { @@ -76,6 +80,7 @@ export interface PrincipalRule_Action { export interface DerivedRoles { name: string; definitions: RoleDef[]; + variables: Variables | undefined; } export interface RoleDef { @@ -84,6 +89,26 @@ export interface RoleDef { condition: Condition | 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 } diff --git a/packages/core/src/types/external/DerivedRoles.ts b/packages/core/src/types/external/DerivedRoles.ts index c56edbab..a100d967 100644 --- a/packages/core/src/types/external/DerivedRoles.ts +++ b/packages/core/src/types/external/DerivedRoles.ts @@ -1,4 +1,4 @@ -import type { DerivedRoleDefinition } from "./DerivedRoleDefinition"; +import type { DerivedRolesBody } from "./DerivedRolesBody"; import type { PolicyBase } from "./PolicyBase"; /** @@ -11,15 +11,5 @@ export interface DerivedRoles extends PolicyBase { /** * A set of derived roles. */ - derivedRoles: { - /** - * The name to use when importing the set of derived roles. - */ - name: string; - - /** - * The definitions of the derived roles. - */ - definitions: DerivedRoleDefinition[]; - }; + derivedRoles: DerivedRolesBody; } diff --git a/packages/core/src/types/external/DerivedRolesBody.ts b/packages/core/src/types/external/DerivedRolesBody.ts new file mode 100644 index 00000000..b10223af --- /dev/null +++ b/packages/core/src/types/external/DerivedRolesBody.ts @@ -0,0 +1,28 @@ +import type { DerivedRoleDefinition } from "./DerivedRoleDefinition"; +import type { Variables } from "./Variables"; + +/** + * A set of {@link https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html | derived roles} + * to augment static RBAC roles with contextual data to provide more fine-grained control at runtime. + * + * @public + */ +export interface DerivedRolesBody { + /** + * The name to use when importing the set of derived roles. + */ + name: string; + + /** + * The definitions of the derived roles. + */ + definitions: DerivedRoleDefinition[]; + + /** + * {@link https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html | Variables} defined for use in conditions. + * + * @remarks + * Requires the Cerbos policy decision point server to be at least v0.29. + */ + variables?: Variables | undefined; +} diff --git a/packages/core/src/types/external/ExportVariables.ts b/packages/core/src/types/external/ExportVariables.ts new file mode 100644 index 00000000..5a3f3be0 --- /dev/null +++ b/packages/core/src/types/external/ExportVariables.ts @@ -0,0 +1,18 @@ +import type { ExportVariablesBody } from "./ExportVariablesBody"; +import type { PolicyBase } from "./PolicyBase"; + +/** + * A set of {@link https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html#export | exported variables} + * to be reused in other policies. + * + * @remarks + * Requires the Cerbos policy decision point server to be at least v0.29. + * + * @public + */ +export interface ExportVariables extends PolicyBase { + /** + * A set of exported variables. + */ + exportVariables: ExportVariablesBody; +} diff --git a/packages/core/src/types/external/ExportVariablesBody.ts b/packages/core/src/types/external/ExportVariablesBody.ts new file mode 100644 index 00000000..4ec95dee --- /dev/null +++ b/packages/core/src/types/external/ExportVariablesBody.ts @@ -0,0 +1,20 @@ +/** + * A set of {@link https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html#export | exported variables} + * to be reused in other policies. + * + * @remarks + * Requires the Cerbos policy decision point server to be at least v0.29. + * + * @public + */ +export interface ExportVariablesBody { + /** + * The name to use when importing the set of variables. + */ + name: string; + + /** + * Variable expressions. + */ + definitions: Record; +} diff --git a/packages/core/src/types/external/Policy.ts b/packages/core/src/types/external/Policy.ts index 7b733ccc..1bf537ca 100644 --- a/packages/core/src/types/external/Policy.ts +++ b/packages/core/src/types/external/Policy.ts @@ -1,4 +1,5 @@ import type { DerivedRoles } from "./DerivedRoles"; +import type { ExportVariables } from "./ExportVariables"; import type { PrincipalPolicy } from "./PrincipalPolicy"; import type { ResourcePolicy } from "./ResourcePolicy"; @@ -7,7 +8,11 @@ import type { ResourcePolicy } from "./ResourcePolicy"; * * @public */ -export type Policy = DerivedRoles | PrincipalPolicy | ResourcePolicy; +export type Policy = + | DerivedRoles + | ExportVariables + | PrincipalPolicy + | ResourcePolicy; /** * Type guard to check if a {@link Policy} is a set of {@link DerivedRoles}. @@ -17,6 +22,15 @@ export type Policy = DerivedRoles | PrincipalPolicy | ResourcePolicy; export const policyIsDerivedRoles = (policy: Policy): policy is DerivedRoles => "derivedRoles" in policy; +/** + * Type guard to check if a {@link Policy} is a set of {@link ExportVariables}. + * + * @public + */ +export const policyIsExportVariables = ( + policy: Policy, +): policy is ExportVariables => "exportVariables" in policy; + /** * Type guard to check if a {@link Policy} is a {@link PrincipalPolicy}. * diff --git a/packages/core/src/types/external/PolicyBase.ts b/packages/core/src/types/external/PolicyBase.ts index 7cd682e8..b811e699 100644 --- a/packages/core/src/types/external/PolicyBase.ts +++ b/packages/core/src/types/external/PolicyBase.ts @@ -32,6 +32,8 @@ export interface PolicyBase { * @remarks * Each variable is evaluated before any rule condition. * A variable expression can contain anything that condition expression can have. + * + * @deprecated Define variables within the policy body instead, provided the Cerbos policy decision point server is at least v0.29 ({@link DerivedRolesBody.variables}, {@link PrincipalPolicyBody.variables}, or {@link ResourcePolicyBody.variables}). */ variables?: Record; } diff --git a/packages/core/src/types/external/PrincipalPolicy.ts b/packages/core/src/types/external/PrincipalPolicy.ts index a80b906a..a48f14c0 100644 --- a/packages/core/src/types/external/PrincipalPolicy.ts +++ b/packages/core/src/types/external/PrincipalPolicy.ts @@ -1,5 +1,5 @@ import type { PolicyBase } from "./PolicyBase"; -import type { PrincipalRule } from "./PrincipalRule"; +import type { PrincipalPolicyBody } from "./PrincipalPolicyBody"; /** * A {@link https://docs.cerbos.dev/cerbos/latest/policies/principal_policies.html | policy} defining overrides for a specific user. @@ -10,30 +10,5 @@ export interface PrincipalPolicy extends PolicyBase { /** * The policy body. */ - principalPolicy: { - /** - * The ID of the principal to whom the policy applies. - */ - principal: string; - - /** - * The version of the policy. - * - * @remarks - * Policies are uniquely identified by the principal name and version pair. - * You can have multiple policy versions for the same principal (e.g. production vs. staging). - * The version value `default` is special as it is the default fallback when no version is specified in the request. - */ - version: string; - - /** - * Rules defining the overrides that apply to the principal. - */ - rules: PrincipalRule[]; - - /** - * {@link https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html | Scope} of the policy. - */ - scope?: string; - }; + principalPolicy: PrincipalPolicyBody; } diff --git a/packages/core/src/types/external/PrincipalPolicyBody.ts b/packages/core/src/types/external/PrincipalPolicyBody.ts new file mode 100644 index 00000000..1ade64b2 --- /dev/null +++ b/packages/core/src/types/external/PrincipalPolicyBody.ts @@ -0,0 +1,42 @@ +import type { PrincipalRule } from "./PrincipalRule"; +import type { Variables } from "./Variables"; + +/** + * A {@link https://docs.cerbos.dev/cerbos/latest/policies/principal_policies.html | policy} defining overrides for a specific user. + * + * @public + */ +export interface PrincipalPolicyBody { + /** + * The ID of the principal to whom the policy applies. + */ + principal: string; + + /** + * The version of the policy. + * + * @remarks + * Policies are uniquely identified by the principal name and version pair. + * You can have multiple policy versions for the same principal (e.g. production vs. staging). + * The version value `default` is special as it is the default fallback when no version is specified in the request. + */ + version: string; + + /** + * Rules defining the overrides that apply to the principal. + */ + rules: PrincipalRule[]; + + /** + * {@link https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html | Scope} of the policy. + */ + scope?: string; + + /** + * {@link https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html | Variables} defined for use in conditions. + * + * @remarks + * Requires the Cerbos policy decision point server to be at least v0.29. + */ + variables?: Variables | undefined; +} diff --git a/packages/core/src/types/external/ResourcePolicy.ts b/packages/core/src/types/external/ResourcePolicy.ts index bce0b5b8..658b1294 100644 --- a/packages/core/src/types/external/ResourcePolicy.ts +++ b/packages/core/src/types/external/ResourcePolicy.ts @@ -1,6 +1,5 @@ import type { PolicyBase } from "./PolicyBase"; -import type { ResourceRule } from "./ResourceRule"; -import type { SchemaRefs } from "./SchemaRefs"; +import type { ResourcePolicyBody } from "./ResourcePolicyBody"; /** * A {@link https://docs.cerbos.dev/cerbos/latest/policies/resource_policies.html | policy} defining rules for actions that can be performed on a given resource. @@ -11,40 +10,5 @@ export interface ResourcePolicy extends PolicyBase { /** * The policy body. */ - resourcePolicy: { - /** - * The name of the resource to which the policy applies. - */ - resource: string; - - /** - * The version of the policy. - * - * @remarks - * Policies are uniquely identified by the principal name and version pair. - * You can have multiple policy versions for the same principal (e.g. production vs. staging). - * The version value `default` is special as it is the default fallback when no version is specified in the request. - */ - version: string; - - /** - * Name of a set of {@link https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html | derived roles} to import. - */ - importDerivedRoles?: string[]; - - /** - * Rules defining the actions that can be performed on the resource. - */ - rules: ResourceRule[]; - - /** - * {@link https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html | Scope} of the policy. - */ - scope?: string; - - /** - * {@link https://docs.cerbos.dev/cerbos/latest/policies/schemas.html | Schemas} for principal and resource attributes. - */ - schemas?: SchemaRefs | undefined; - }; + resourcePolicy: ResourcePolicyBody; } diff --git a/packages/core/src/types/external/ResourcePolicyBody.ts b/packages/core/src/types/external/ResourcePolicyBody.ts new file mode 100644 index 00000000..45dfe25a --- /dev/null +++ b/packages/core/src/types/external/ResourcePolicyBody.ts @@ -0,0 +1,53 @@ +import type { ResourceRule } from "./ResourceRule"; +import type { SchemaRefs } from "./SchemaRefs"; +import type { Variables } from "./Variables"; + +/** + * A {@link https://docs.cerbos.dev/cerbos/latest/policies/resource_policies.html | policy} defining rules for actions that can be performed on a given resource. + * + * @public + */ +export interface ResourcePolicyBody { + /** + * The name of the resource to which the policy applies. + */ + resource: string; + + /** + * The version of the policy. + * + * @remarks + * Policies are uniquely identified by the principal name and version pair. + * You can have multiple policy versions for the same principal (e.g. production vs. staging). + * The version value `default` is special as it is the default fallback when no version is specified in the request. + */ + version: string; + + /** + * Name of a set of {@link https://docs.cerbos.dev/cerbos/latest/policies/derived_roles.html | derived roles} to import. + */ + importDerivedRoles?: string[]; + + /** + * Rules defining the actions that can be performed on the resource. + */ + rules: ResourceRule[]; + + /** + * {@link https://docs.cerbos.dev/cerbos/latest/policies/scoped_policies.html | Scope} of the policy. + */ + scope?: string; + + /** + * {@link https://docs.cerbos.dev/cerbos/latest/policies/schemas.html | Schemas} for principal and resource attributes. + */ + schemas?: SchemaRefs | undefined; + + /** + * {@link https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html | Variables} defined for use in conditions. + * + * @remarks + * Requires the Cerbos policy decision point server to be at least v0.29. + */ + variables?: Variables | undefined; +} diff --git a/packages/core/src/types/external/Variables.ts b/packages/core/src/types/external/Variables.ts new file mode 100644 index 00000000..ba33afe4 --- /dev/null +++ b/packages/core/src/types/external/Variables.ts @@ -0,0 +1,16 @@ +/** + * {@link https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html | Variables} defined for use in policy conditions. + * + * @public + */ +export interface Variables { + /** + * Names of variable sets to import. + */ + import?: string[]; + + /** + * Variable expressions defined for the policy. + */ + local?: Record; +} diff --git a/packages/core/src/types/external/index.ts b/packages/core/src/types/external/index.ts index 914ff703..59d3d0a9 100644 --- a/packages/core/src/types/external/index.ts +++ b/packages/core/src/types/external/index.ts @@ -13,11 +13,14 @@ export * from "./DeleteSchemasRequest"; export * from "./DeleteSchemasResponse"; export * from "./DerivedRoleDefinition"; export * from "./DerivedRoles"; +export * from "./DerivedRolesBody"; export * from "./DisablePoliciesRequest"; export * from "./DisablePoliciesResponse"; export * from "./Effect"; export * from "./EnablePoliciesRequest"; export * from "./EnablePoliciesResponse"; +export * from "./ExportVariables"; +export * from "./ExportVariablesBody"; export * from "./GetPoliciesRequest"; export * from "./GetPoliciesResponse"; export * from "./GetSchemasRequest"; @@ -51,12 +54,14 @@ export * from "./PolicyBase"; export * from "./PolicyMetadata"; export * from "./Principal"; export * from "./PrincipalPolicy"; +export * from "./PrincipalPolicyBody"; export * from "./PrincipalRule"; export * from "./PrincipalRuleAction"; export * from "./ReloadStoreRequest"; export * from "./Resource"; export * from "./ResourceCheck"; export * from "./ResourcePolicy"; +export * from "./ResourcePolicyBody"; export * from "./ResourceQuery"; export * from "./ResourceRule"; export * from "./ResourceSearch"; @@ -71,3 +76,4 @@ export * from "./ValidationError"; export * from "./ValidationErrorSource"; export * from "./ValidationFailedCallback"; export * from "./Value"; +export * from "./Variables"; diff --git a/packages/grpc/CHANGELOG.md b/packages/grpc/CHANGELOG.md index bd4e16a1..e23ba57b 100644 --- a/packages/grpc/CHANGELOG.md +++ b/packages/grpc/CHANGELOG.md @@ -6,6 +6,10 @@ Requires a policy decision point server running Cerbos 0.29+. +- Support for [exporting and importing variable sets](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) in policies ([#598](https://github.com/cerbos/cerbos-sdk-javascript/pull/598)) + + Requires a policy decision point server running Cerbos 0.29+. + ### Changed - Bump dependency on [@grpc/grpc-js](https://github.com/grpc/grpc-node) to 1.8.17 ([#555](https://github.com/cerbos/cerbos-sdk-javascript/pull/555), [#575](https://github.com/cerbos/cerbos-sdk-javascript/pull/575), [#578](https://github.com/cerbos/cerbos-sdk-javascript/pull/578)) diff --git a/packages/grpc/src/protobuf/cerbos/policy/v1/policy.ts b/packages/grpc/src/protobuf/cerbos/policy/v1/policy.ts index 7fd3abd1..ae1b0929 100644 --- a/packages/grpc/src/protobuf/cerbos/policy/v1/policy.ts +++ b/packages/grpc/src/protobuf/cerbos/policy/v1/policy.ts @@ -14,8 +14,10 @@ export interface Policy { | { $case: "resourcePolicy"; resourcePolicy: ResourcePolicy } | { $case: "principalPolicy"; principalPolicy: PrincipalPolicy } | { $case: "derivedRoles"; derivedRoles: DerivedRoles } + | { $case: "exportVariables"; exportVariables: ExportVariables } | undefined; variables: { [key: string]: string }; + jsonSchema: string; } export interface Policy_VariablesEntry { @@ -43,6 +45,7 @@ export interface ResourcePolicy { rules: ResourceRule[]; scope: string; schemas: Schemas | undefined; + variables: Variables | undefined; } export interface ResourceRule { @@ -60,6 +63,7 @@ export interface PrincipalPolicy { version: string; rules: PrincipalRule[]; scope: string; + variables: Variables | undefined; } export interface PrincipalRule { @@ -78,6 +82,7 @@ export interface PrincipalRule_Action { export interface DerivedRoles { name: string; definitions: RoleDef[]; + variables: Variables | undefined; } export interface RoleDef { @@ -86,6 +91,26 @@ export interface RoleDef { condition: Condition | 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 } @@ -132,6 +157,7 @@ function createBasePolicy(): Policy { metadata: undefined, policyType: undefined, variables: {}, + jsonSchema: "", }; } @@ -171,6 +197,12 @@ export const Policy = { writer.uint32(58).fork(), ).ldelim(); break; + case "exportVariables": + ExportVariables.encode( + message.policyType.exportVariables, + writer.uint32(82).fork(), + ).ldelim(); + break; } Object.entries(message.variables).forEach(([key, value]) => { Policy_VariablesEntry.encode( @@ -178,6 +210,9 @@ export const Policy = { writer.uint32(66).fork(), ).ldelim(); }); + if (message.jsonSchema !== "") { + writer.uint32(74).string(message.jsonSchema); + } return writer; }, @@ -247,6 +282,16 @@ export const Policy = { 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 8: if (tag !== 66) { break; @@ -257,6 +302,13 @@ export const Policy = { 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; @@ -479,6 +531,7 @@ function createBaseResourcePolicy(): ResourcePolicy { rules: [], scope: "", schemas: undefined, + variables: undefined, }; } @@ -505,6 +558,9 @@ export const ResourcePolicy = { if (message.schemas !== undefined) { Schemas.encode(message.schemas, writer.uint32(50).fork()).ldelim(); } + if (message.variables !== undefined) { + Variables.encode(message.variables, writer.uint32(58).fork()).ldelim(); + } return writer; }, @@ -558,6 +614,13 @@ export const ResourcePolicy = { message.schemas = Schemas.decode(reader, reader.uint32()); continue; + case 7: + if (tag !== 58) { + break; + } + + message.variables = Variables.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -677,7 +740,13 @@ export const ResourceRule = { }; function createBasePrincipalPolicy(): PrincipalPolicy { - return { principal: "", version: "", rules: [], scope: "" }; + return { + principal: "", + version: "", + rules: [], + scope: "", + variables: undefined, + }; } export const PrincipalPolicy = { @@ -697,6 +766,9 @@ export const PrincipalPolicy = { if (message.scope !== "") { writer.uint32(34).string(message.scope); } + if (message.variables !== undefined) { + Variables.encode(message.variables, writer.uint32(42).fork()).ldelim(); + } return writer; }, @@ -736,6 +808,13 @@ export const PrincipalPolicy = { message.scope = reader.string(); continue; + case 5: + if (tag !== 42) { + break; + } + + message.variables = Variables.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -888,7 +967,7 @@ export const PrincipalRule_Action = { }; function createBaseDerivedRoles(): DerivedRoles { - return { name: "", definitions: [] }; + return { name: "", definitions: [], variables: undefined }; } export const DerivedRoles = { @@ -902,6 +981,9 @@ export const DerivedRoles = { for (const v of message.definitions) { RoleDef.encode(v!, writer.uint32(18).fork()).ldelim(); } + if (message.variables !== undefined) { + Variables.encode(message.variables, writer.uint32(26).fork()).ldelim(); + } return writer; }, @@ -927,6 +1009,13 @@ export const DerivedRoles = { message.definitions.push(RoleDef.decode(reader, reader.uint32())); continue; + case 3: + if (tag !== 26) { + break; + } + + message.variables = Variables.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -997,6 +1086,227 @@ export const RoleDef = { }, }; +function createBaseExportVariables(): ExportVariables { + return { name: "", definitions: {} }; +} + +export const ExportVariables = { + encode( + message: ExportVariables, + writer: _m0.Writer = _m0.Writer.create(), + ): _m0.Writer { + 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(), + ).ldelim(); + }); + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ExportVariables { + const reader = + input instanceof _m0.Reader ? input : _m0.Reader.create(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.skipType(tag & 7); + } + return message; + }, +}; + +function createBaseExportVariables_DefinitionsEntry(): ExportVariables_DefinitionsEntry { + return { key: "", value: "" }; +} + +export const ExportVariables_DefinitionsEntry = { + encode( + message: ExportVariables_DefinitionsEntry, + writer: _m0.Writer = _m0.Writer.create(), + ): _m0.Writer { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== "") { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode( + input: _m0.Reader | Uint8Array, + length?: number, + ): ExportVariables_DefinitionsEntry { + const reader = + input instanceof _m0.Reader ? input : _m0.Reader.create(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.skipType(tag & 7); + } + return message; + }, +}; + +function createBaseVariables(): Variables { + return { import: [], local: {} }; +} + +export const Variables = { + encode( + message: Variables, + writer: _m0.Writer = _m0.Writer.create(), + ): _m0.Writer { + 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(), + ).ldelim(); + }); + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Variables { + const reader = + input instanceof _m0.Reader ? input : _m0.Reader.create(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.skipType(tag & 7); + } + return message; + }, +}; + +function createBaseVariables_LocalEntry(): Variables_LocalEntry { + return { key: "", value: "" }; +} + +export const Variables_LocalEntry = { + encode( + message: Variables_LocalEntry, + writer: _m0.Writer = _m0.Writer.create(), + ): _m0.Writer { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== "") { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode( + input: _m0.Reader | Uint8Array, + length?: number, + ): Variables_LocalEntry { + const reader = + input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseVariables_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 = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, +}; + function createBaseCondition(): Condition { return { condition: undefined }; } diff --git a/packages/http/CHANGELOG.md b/packages/http/CHANGELOG.md index 5c03a249..1a143764 100644 --- a/packages/http/CHANGELOG.md +++ b/packages/http/CHANGELOG.md @@ -6,6 +6,10 @@ Requires a policy decision point server running Cerbos 0.29+. +- Support for [exporting and importing variable sets](https://docs.cerbos.dev/cerbos/prerelease/policies/variables.html) in policies ([#598](https://github.com/cerbos/cerbos-sdk-javascript/pull/598)) + + Requires a policy decision point server running Cerbos 0.29+. + ## [0.12.0] - 2023-06-07 ### Added diff --git a/packages/http/src/protobuf/cerbos/audit/v1/audit.ts b/packages/http/src/protobuf/cerbos/audit/v1/audit.ts index 08981072..194babae 100644 --- a/packages/http/src/protobuf/cerbos/audit/v1/audit.ts +++ b/packages/http/src/protobuf/cerbos/audit/v1/audit.ts @@ -95,20 +95,30 @@ export const AccessLogEntry = { toJSON(message: AccessLogEntry): unknown { const obj: any = {}; - message.callId !== undefined && (obj.callId = message.callId); - message.timestamp !== undefined && - (obj.timestamp = message.timestamp.toISOString()); - message.peer !== undefined && - (obj.peer = message.peer ? Peer.toJSON(message.peer) : undefined); - obj.metadata = {}; + if (message.callId !== "") { + obj.callId = message.callId; + } + if (message.timestamp !== undefined) { + obj.timestamp = message.timestamp.toISOString(); + } + if (message.peer !== undefined) { + obj.peer = Peer.toJSON(message.peer); + } if (message.metadata) { - Object.entries(message.metadata).forEach(([k, v]) => { - obj.metadata[k] = MetaValues.toJSON(v); - }); + const entries = Object.entries(message.metadata); + if (entries.length > 0) { + obj.metadata = {}; + entries.forEach(([k, v]) => { + obj.metadata[k] = MetaValues.toJSON(v); + }); + } + } + if (message.method !== "") { + obj.method = message.method; + } + if (message.statusCode !== 0) { + obj.statusCode = Math.round(message.statusCode); } - message.method !== undefined && (obj.method = message.method); - message.statusCode !== undefined && - (obj.statusCode = Math.round(message.statusCode)); return obj; }, }; @@ -125,11 +135,12 @@ export const AccessLogEntry_MetadataEntry = { toJSON(message: AccessLogEntry_MetadataEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? MetaValues.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = MetaValues.toJSON(message.value); + } return obj; }, }; @@ -178,39 +189,42 @@ export const DecisionLogEntry = { toJSON(message: DecisionLogEntry): unknown { const obj: any = {}; - message.callId !== undefined && (obj.callId = message.callId); - message.timestamp !== undefined && - (obj.timestamp = message.timestamp.toISOString()); - message.peer !== undefined && - (obj.peer = message.peer ? Peer.toJSON(message.peer) : undefined); - if (message.inputs) { - obj.inputs = message.inputs.map((e) => - e ? CheckInput.toJSON(e) : undefined, + if (message.callId !== "") { + obj.callId = message.callId; + } + if (message.timestamp !== undefined) { + obj.timestamp = message.timestamp.toISOString(); + } + if (message.peer !== undefined) { + obj.peer = Peer.toJSON(message.peer); + } + if (message.inputs?.length) { + obj.inputs = message.inputs.map((e) => CheckInput.toJSON(e)); + } + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => CheckOutput.toJSON(e)); + } + if (message.error !== "") { + obj.error = message.error; + } + if (message.method?.$case === "checkResources") { + obj.checkResources = DecisionLogEntry_CheckResources.toJSON( + message.method.checkResources, ); - } else { - obj.inputs = []; } - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? CheckOutput.toJSON(e) : undefined, + if (message.method?.$case === "planResources") { + obj.planResources = DecisionLogEntry_PlanResources.toJSON( + message.method.planResources, ); - } else { - obj.outputs = []; } - message.error !== undefined && (obj.error = message.error); - message.method?.$case === "checkResources" && - (obj.checkResources = message.method?.checkResources - ? DecisionLogEntry_CheckResources.toJSON(message.method?.checkResources) - : undefined); - message.method?.$case === "planResources" && - (obj.planResources = message.method?.planResources - ? DecisionLogEntry_PlanResources.toJSON(message.method?.planResources) - : undefined); - obj.metadata = {}; if (message.metadata) { - Object.entries(message.metadata).forEach(([k, v]) => { - obj.metadata[k] = MetaValues.toJSON(v); - }); + const entries = Object.entries(message.metadata); + if (entries.length > 0) { + obj.metadata = {}; + entries.forEach(([k, v]) => { + obj.metadata[k] = MetaValues.toJSON(v); + }); + } } return obj; }, @@ -231,21 +245,15 @@ export const DecisionLogEntry_CheckResources = { toJSON(message: DecisionLogEntry_CheckResources): unknown { const obj: any = {}; - if (message.inputs) { - obj.inputs = message.inputs.map((e) => - e ? CheckInput.toJSON(e) : undefined, - ); - } else { - obj.inputs = []; + if (message.inputs?.length) { + obj.inputs = message.inputs.map((e) => CheckInput.toJSON(e)); } - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? CheckOutput.toJSON(e) : undefined, - ); - } else { - obj.outputs = []; + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => CheckOutput.toJSON(e)); + } + if (message.error !== "") { + obj.error = message.error; } - message.error !== undefined && (obj.error = message.error); return obj; }, }; @@ -265,15 +273,15 @@ export const DecisionLogEntry_PlanResources = { toJSON(message: DecisionLogEntry_PlanResources): unknown { const obj: any = {}; - message.input !== undefined && - (obj.input = message.input - ? PlanResourcesInput.toJSON(message.input) - : undefined); - message.output !== undefined && - (obj.output = message.output - ? PlanResourcesOutput.toJSON(message.output) - : undefined); - message.error !== undefined && (obj.error = message.error); + if (message.input !== undefined) { + obj.input = PlanResourcesInput.toJSON(message.input); + } + if (message.output !== undefined) { + obj.output = PlanResourcesOutput.toJSON(message.output); + } + if (message.error !== "") { + obj.error = message.error; + } return obj; }, }; @@ -290,11 +298,12 @@ export const DecisionLogEntry_MetadataEntry = { toJSON(message: DecisionLogEntry_MetadataEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? MetaValues.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = MetaValues.toJSON(message.value); + } return obj; }, }; @@ -310,10 +319,8 @@ export const MetaValues = { toJSON(message: MetaValues): unknown { const obj: any = {}; - if (message.values) { - obj.values = message.values.map((e) => e); - } else { - obj.values = []; + if (message.values?.length) { + obj.values = message.values; } return obj; }, @@ -333,11 +340,18 @@ export const Peer = { toJSON(message: Peer): unknown { const obj: any = {}; - message.address !== undefined && (obj.address = message.address); - message.authInfo !== undefined && (obj.authInfo = message.authInfo); - message.userAgent !== undefined && (obj.userAgent = message.userAgent); - message.forwardedFor !== undefined && - (obj.forwardedFor = message.forwardedFor); + if (message.address !== "") { + obj.address = message.address; + } + if (message.authInfo !== "") { + obj.authInfo = message.authInfo; + } + if (message.userAgent !== "") { + obj.userAgent = message.userAgent; + } + if (message.forwardedFor !== "") { + obj.forwardedFor = message.forwardedFor; + } return obj; }, }; diff --git a/packages/http/src/protobuf/cerbos/engine/v1/engine.ts b/packages/http/src/protobuf/cerbos/engine/v1/engine.ts index fb6701c2..04d4a2f1 100644 --- a/packages/http/src/protobuf/cerbos/engine/v1/engine.ts +++ b/packages/http/src/protobuf/cerbos/engine/v1/engine.ts @@ -197,22 +197,24 @@ export const PlanResourcesInput = { toJSON(message: PlanResourcesInput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - message.resource !== undefined && - (obj.resource = message.resource - ? PlanResourcesInput_Resource.toJSON(message.resource) - : undefined); - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resource !== undefined) { + obj.resource = PlanResourcesInput_Resource.toJSON(message.resource); + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } return obj; }, }; @@ -238,16 +240,24 @@ export const PlanResourcesInput_Resource = { toJSON(message: PlanResourcesInput_Resource): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - obj.attr = {}; + if (message.kind !== "") { + obj.kind = message.kind; + } if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -262,8 +272,12 @@ export const PlanResourcesInput_Resource_AttrEntry = { toJSON(message: PlanResourcesInput_Resource_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -282,12 +296,14 @@ export const PlanResourcesFilter = { toJSON(message: PlanResourcesFilter): unknown { const obj: any = {}; - message.kind !== undefined && - (obj.kind = planResourcesFilter_KindToJSON(message.kind)); - message.condition !== undefined && - (obj.condition = message.condition - ? PlanResourcesFilter_Expression_Operand.toJSON(message.condition) - : undefined); + if (message.kind !== 0) { + obj.kind = planResourcesFilter_KindToJSON(message.kind); + } + if (message.condition !== undefined) { + obj.condition = PlanResourcesFilter_Expression_Operand.toJSON( + message.condition, + ); + } return obj; }, }; @@ -306,13 +322,13 @@ export const PlanResourcesFilter_Expression = { toJSON(message: PlanResourcesFilter_Expression): unknown { const obj: any = {}; - message.operator !== undefined && (obj.operator = message.operator); - if (message.operands) { + if (message.operator !== "") { + obj.operator = message.operator; + } + if (message.operands?.length) { obj.operands = message.operands.map((e) => - e ? PlanResourcesFilter_Expression_Operand.toJSON(e) : undefined, + PlanResourcesFilter_Expression_Operand.toJSON(e), ); - } else { - obj.operands = []; } return obj; }, @@ -338,13 +354,17 @@ export const PlanResourcesFilter_Expression_Operand = { toJSON(message: PlanResourcesFilter_Expression_Operand): unknown { const obj: any = {}; - message.node?.$case === "value" && (obj.value = message.node?.value); - message.node?.$case === "expression" && - (obj.expression = message.node?.expression - ? PlanResourcesFilter_Expression.toJSON(message.node?.expression) - : undefined); - message.node?.$case === "variable" && - (obj.variable = message.node?.variable); + if (message.node?.$case === "value") { + obj.value = message.node.value; + } + if (message.node?.$case === "expression") { + obj.expression = PlanResourcesFilter_Expression.toJSON( + message.node.expression, + ); + } + if (message.node?.$case === "variable") { + obj.variable = message.node.variable; + } return obj; }, }; @@ -371,24 +391,31 @@ export const PlanResourcesOutput = { toJSON(message: PlanResourcesOutput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.scope !== undefined && (obj.scope = message.scope); - message.filter !== undefined && - (obj.filter = message.filter - ? PlanResourcesFilter.toJSON(message.filter) - : undefined); - message.filterDebug !== undefined && - (obj.filterDebug = message.filterDebug); - if (message.validationErrors) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.scope !== "") { + obj.scope = message.scope; + } + if (message.filter !== undefined) { + obj.filter = PlanResourcesFilter.toJSON(message.filter); + } + if (message.filterDebug !== "") { + obj.filterDebug = message.filterDebug; + } + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -415,24 +442,21 @@ export const CheckInput = { toJSON(message: CheckInput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.resource !== undefined && - (obj.resource = message.resource - ? Resource.toJSON(message.resource) - : undefined); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.resource !== undefined) { + obj.resource = Resource.toJSON(message.resource); + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -464,32 +488,31 @@ export const CheckOutput = { toJSON(message: CheckOutput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.resourceId !== undefined && (obj.resourceId = message.resourceId); - obj.actions = {}; + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.resourceId !== "") { + obj.resourceId = message.resourceId; + } if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = CheckOutput_ActionEffect.toJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = CheckOutput_ActionEffect.toJSON(v); + }); + } } - if (message.effectiveDerivedRoles) { - obj.effectiveDerivedRoles = message.effectiveDerivedRoles.map((e) => e); - } else { - obj.effectiveDerivedRoles = []; + if (message.effectiveDerivedRoles?.length) { + obj.effectiveDerivedRoles = message.effectiveDerivedRoles; } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? OutputEntry.toJSON(e) : undefined, - ); - } else { - obj.outputs = []; + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => OutputEntry.toJSON(e)); } return obj; }, @@ -506,9 +529,15 @@ export const CheckOutput_ActionEffect = { toJSON(message: CheckOutput_ActionEffect): unknown { const obj: any = {}; - message.effect !== undefined && (obj.effect = effectToJSON(message.effect)); - message.policy !== undefined && (obj.policy = message.policy); - message.scope !== undefined && (obj.scope = message.scope); + if (message.effect !== 0) { + obj.effect = effectToJSON(message.effect); + } + if (message.policy !== "") { + obj.policy = message.policy; + } + if (message.scope !== "") { + obj.scope = message.scope; + } return obj; }, }; @@ -525,11 +554,12 @@ export const CheckOutput_ActionsEntry = { toJSON(message: CheckOutput_ActionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckOutput_ActionEffect.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckOutput_ActionEffect.toJSON(message.value); + } return obj; }, }; @@ -544,8 +574,12 @@ export const OutputEntry = { toJSON(message: OutputEntry): unknown { const obj: any = {}; - message.src !== undefined && (obj.src = message.src); - message.val !== undefined && (obj.val = message.val); + if (message.src !== "") { + obj.src = message.src; + } + if (message.val !== undefined) { + obj.val = message.val; + } return obj; }, }; @@ -572,17 +606,27 @@ export const Resource = { toJSON(message: Resource): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.id !== undefined && (obj.id = message.id); - obj.attr = {}; + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.id !== "") { + obj.id = message.id; + } if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -597,8 +641,12 @@ export const Resource_AttrEntry = { toJSON(message: Resource_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -627,21 +675,27 @@ export const Principal = { toJSON(message: Principal): unknown { const obj: any = {}; - message.id !== undefined && (obj.id = message.id); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - if (message.roles) { - obj.roles = message.roles.map((e) => e); - } else { - obj.roles = []; - } - obj.attr = {}; + if (message.id !== "") { + obj.id = message.id; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.roles?.length) { + obj.roles = message.roles; + } if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -656,8 +710,12 @@ export const Principal_AttrEntry = { toJSON(message: Principal_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -679,11 +737,14 @@ export const AuxData = { toJSON(message: AuxData): unknown { const obj: any = {}; - obj.jwt = {}; if (message.jwt) { - Object.entries(message.jwt).forEach(([k, v]) => { - obj.jwt[k] = v; - }); + const entries = Object.entries(message.jwt); + if (entries.length > 0) { + obj.jwt = {}; + entries.forEach(([k, v]) => { + obj.jwt[k] = v; + }); + } } return obj; }, @@ -699,8 +760,12 @@ export const AuxData_JwtEntry = { toJSON(message: AuxData_JwtEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; diff --git a/packages/http/src/protobuf/cerbos/policy/v1/policy.ts b/packages/http/src/protobuf/cerbos/policy/v1/policy.ts index 7c3a1a06..5ce3805a 100644 --- a/packages/http/src/protobuf/cerbos/policy/v1/policy.ts +++ b/packages/http/src/protobuf/cerbos/policy/v1/policy.ts @@ -12,8 +12,10 @@ export interface Policy { | { $case: "resourcePolicy"; resourcePolicy: ResourcePolicy } | { $case: "principalPolicy"; principalPolicy: PrincipalPolicy } | { $case: "derivedRoles"; derivedRoles: DerivedRoles } + | { $case: "exportVariables"; exportVariables: ExportVariables } | undefined; variables: { [key: string]: string }; + jsonSchema: string; } export interface Policy_VariablesEntry { @@ -41,6 +43,7 @@ export interface ResourcePolicy { rules: ResourceRule[]; scope: string; schemas: Schemas | undefined; + variables: Variables | undefined; } export interface ResourceRule { @@ -58,6 +61,7 @@ export interface PrincipalPolicy { version: string; rules: PrincipalRule[]; scope: string; + variables: Variables | undefined; } export interface PrincipalRule { @@ -76,6 +80,7 @@ export interface PrincipalRule_Action { export interface DerivedRoles { name: string; definitions: RoleDef[]; + variables: Variables | undefined; } export interface RoleDef { @@ -84,6 +89,26 @@ export interface RoleDef { condition: Condition | 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 } @@ -146,6 +171,11 @@ export const Policy = { $case: "derivedRoles", derivedRoles: DerivedRoles.fromJSON(object.derivedRoles), } + : isSet(object.exportVariables) + ? { + $case: "exportVariables", + exportVariables: ExportVariables.fromJSON(object.exportVariables), + } : undefined, variables: isObject(object.variables) ? Object.entries(object.variables).reduce<{ [key: string]: string }>( @@ -156,36 +186,53 @@ export const Policy = { {}, ) : {}, + jsonSchema: isSet(object.$schema) ? String(object.$schema) : "", }; }, toJSON(message: Policy): unknown { const obj: any = {}; - message.apiVersion !== undefined && (obj.apiVersion = message.apiVersion); - message.disabled !== undefined && (obj.disabled = message.disabled); - message.description !== undefined && - (obj.description = message.description); - message.metadata !== undefined && - (obj.metadata = message.metadata - ? Metadata.toJSON(message.metadata) - : undefined); - message.policyType?.$case === "resourcePolicy" && - (obj.resourcePolicy = message.policyType?.resourcePolicy - ? ResourcePolicy.toJSON(message.policyType?.resourcePolicy) - : undefined); - message.policyType?.$case === "principalPolicy" && - (obj.principalPolicy = message.policyType?.principalPolicy - ? PrincipalPolicy.toJSON(message.policyType?.principalPolicy) - : undefined); - message.policyType?.$case === "derivedRoles" && - (obj.derivedRoles = message.policyType?.derivedRoles - ? DerivedRoles.toJSON(message.policyType?.derivedRoles) - : undefined); - obj.variables = {}; + if (message.apiVersion !== "") { + obj.apiVersion = message.apiVersion; + } + if (message.disabled === true) { + obj.disabled = message.disabled; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.metadata !== undefined) { + obj.metadata = Metadata.toJSON(message.metadata); + } + if (message.policyType?.$case === "resourcePolicy") { + obj.resourcePolicy = ResourcePolicy.toJSON( + message.policyType.resourcePolicy, + ); + } + if (message.policyType?.$case === "principalPolicy") { + obj.principalPolicy = PrincipalPolicy.toJSON( + message.policyType.principalPolicy, + ); + } + if (message.policyType?.$case === "derivedRoles") { + obj.derivedRoles = DerivedRoles.toJSON(message.policyType.derivedRoles); + } + if (message.policyType?.$case === "exportVariables") { + obj.exportVariables = ExportVariables.toJSON( + message.policyType.exportVariables, + ); + } if (message.variables) { - Object.entries(message.variables).forEach(([k, v]) => { - obj.variables[k] = v; - }); + const entries = Object.entries(message.variables); + if (entries.length > 0) { + obj.variables = {}; + entries.forEach(([k, v]) => { + obj.variables[k] = v; + }); + } + } + if (message.jsonSchema !== "") { + obj.$schema = message.jsonSchema; } return obj; }, @@ -201,8 +248,12 @@ export const Policy_VariablesEntry = { toJSON(message: Policy_VariablesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -232,18 +283,27 @@ export const Metadata = { toJSON(message: Metadata): unknown { const obj: any = {}; - message.sourceFile !== undefined && (obj.sourceFile = message.sourceFile); - obj.annotations = {}; + if (message.sourceFile !== "") { + obj.sourceFile = message.sourceFile; + } if (message.annotations) { - Object.entries(message.annotations).forEach(([k, v]) => { - obj.annotations[k] = v; - }); - } - message.hash !== undefined && (obj.hash = message.hash); - message.storeIdentifer !== undefined && - (obj.storeIdentifer = message.storeIdentifer); - message.storeIdentifier !== undefined && - (obj.storeIdentifier = message.storeIdentifier); + const entries = Object.entries(message.annotations); + if (entries.length > 0) { + obj.annotations = {}; + entries.forEach(([k, v]) => { + obj.annotations[k] = v; + }); + } + } + if (message.hash !== undefined) { + obj.hash = message.hash; + } + if (message.storeIdentifer !== "") { + obj.storeIdentifer = message.storeIdentifer; + } + if (message.storeIdentifier !== "") { + obj.storeIdentifier = message.storeIdentifier; + } return obj; }, }; @@ -258,8 +318,12 @@ export const Metadata_AnnotationsEntry = { toJSON(message: Metadata_AnnotationsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -279,30 +343,35 @@ export const ResourcePolicy = { schemas: isSet(object.schemas) ? Schemas.fromJSON(object.schemas) : undefined, + variables: isSet(object.variables) + ? Variables.fromJSON(object.variables) + : undefined, }; }, toJSON(message: ResourcePolicy): unknown { const obj: any = {}; - message.resource !== undefined && (obj.resource = message.resource); - message.version !== undefined && (obj.version = message.version); - if (message.importDerivedRoles) { - obj.importDerivedRoles = message.importDerivedRoles.map((e) => e); - } else { - obj.importDerivedRoles = []; - } - if (message.rules) { - obj.rules = message.rules.map((e) => - e ? ResourceRule.toJSON(e) : undefined, - ); - } else { - obj.rules = []; - } - message.scope !== undefined && (obj.scope = message.scope); - message.schemas !== undefined && - (obj.schemas = message.schemas - ? Schemas.toJSON(message.schemas) - : undefined); + if (message.resource !== "") { + obj.resource = message.resource; + } + if (message.version !== "") { + obj.version = message.version; + } + if (message.importDerivedRoles?.length) { + obj.importDerivedRoles = message.importDerivedRoles; + } + if (message.rules?.length) { + obj.rules = message.rules.map((e) => ResourceRule.toJSON(e)); + } + if (message.scope !== "") { + obj.scope = message.scope; + } + if (message.schemas !== undefined) { + obj.schemas = Schemas.toJSON(message.schemas); + } + if (message.variables !== undefined) { + obj.variables = Variables.toJSON(message.variables); + } return obj; }, }; @@ -330,29 +399,27 @@ export const ResourceRule = { toJSON(message: ResourceRule): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - if (message.derivedRoles) { - obj.derivedRoles = message.derivedRoles.map((e) => e); - } else { - obj.derivedRoles = []; - } - if (message.roles) { - obj.roles = message.roles.map((e) => e); - } else { - obj.roles = []; - } - message.condition !== undefined && - (obj.condition = message.condition - ? Condition.toJSON(message.condition) - : undefined); - message.effect !== undefined && (obj.effect = effectToJSON(message.effect)); - message.name !== undefined && (obj.name = message.name); - message.output !== undefined && - (obj.output = message.output ? Output.toJSON(message.output) : undefined); + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.derivedRoles?.length) { + obj.derivedRoles = message.derivedRoles; + } + if (message.roles?.length) { + obj.roles = message.roles; + } + if (message.condition !== undefined) { + obj.condition = Condition.toJSON(message.condition); + } + if (message.effect !== 0) { + obj.effect = effectToJSON(message.effect); + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.output !== undefined) { + obj.output = Output.toJSON(message.output); + } return obj; }, }; @@ -366,21 +433,29 @@ export const PrincipalPolicy = { ? object.rules.map((e: any) => PrincipalRule.fromJSON(e)) : [], scope: isSet(object.scope) ? String(object.scope) : "", + variables: isSet(object.variables) + ? Variables.fromJSON(object.variables) + : undefined, }; }, toJSON(message: PrincipalPolicy): unknown { const obj: any = {}; - message.principal !== undefined && (obj.principal = message.principal); - message.version !== undefined && (obj.version = message.version); - if (message.rules) { - obj.rules = message.rules.map((e) => - e ? PrincipalRule.toJSON(e) : undefined, - ); - } else { - obj.rules = []; + if (message.principal !== "") { + obj.principal = message.principal; + } + if (message.version !== "") { + obj.version = message.version; + } + if (message.rules?.length) { + obj.rules = message.rules.map((e) => PrincipalRule.toJSON(e)); + } + if (message.scope !== "") { + obj.scope = message.scope; + } + if (message.variables !== undefined) { + obj.variables = Variables.toJSON(message.variables); } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -397,13 +472,11 @@ export const PrincipalRule = { toJSON(message: PrincipalRule): unknown { const obj: any = {}; - message.resource !== undefined && (obj.resource = message.resource); - if (message.actions) { - obj.actions = message.actions.map((e) => - e ? PrincipalRule_Action.toJSON(e) : undefined, - ); - } else { - obj.actions = []; + if (message.resource !== "") { + obj.resource = message.resource; + } + if (message.actions?.length) { + obj.actions = message.actions.map((e) => PrincipalRule_Action.toJSON(e)); } return obj; }, @@ -424,15 +497,21 @@ export const PrincipalRule_Action = { toJSON(message: PrincipalRule_Action): unknown { const obj: any = {}; - message.action !== undefined && (obj.action = message.action); - message.condition !== undefined && - (obj.condition = message.condition - ? Condition.toJSON(message.condition) - : undefined); - message.effect !== undefined && (obj.effect = effectToJSON(message.effect)); - message.name !== undefined && (obj.name = message.name); - message.output !== undefined && - (obj.output = message.output ? Output.toJSON(message.output) : undefined); + if (message.action !== "") { + obj.action = message.action; + } + if (message.condition !== undefined) { + obj.condition = Condition.toJSON(message.condition); + } + if (message.effect !== 0) { + obj.effect = effectToJSON(message.effect); + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.output !== undefined) { + obj.output = Output.toJSON(message.output); + } return obj; }, }; @@ -444,18 +523,22 @@ export const DerivedRoles = { definitions: Array.isArray(object?.definitions) ? object.definitions.map((e: any) => RoleDef.fromJSON(e)) : [], + variables: isSet(object.variables) + ? Variables.fromJSON(object.variables) + : undefined, }; }, toJSON(message: DerivedRoles): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - if (message.definitions) { - obj.definitions = message.definitions.map((e) => - e ? RoleDef.toJSON(e) : undefined, - ); - } else { - obj.definitions = []; + if (message.name !== "") { + obj.name = message.name; + } + if (message.definitions?.length) { + obj.definitions = message.definitions.map((e) => RoleDef.toJSON(e)); + } + if (message.variables !== undefined) { + obj.variables = Variables.toJSON(message.variables); } return obj; }, @@ -476,16 +559,125 @@ export const RoleDef = { toJSON(message: RoleDef): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - if (message.parentRoles) { - obj.parentRoles = message.parentRoles.map((e) => e); - } else { - obj.parentRoles = []; - } - message.condition !== undefined && - (obj.condition = message.condition - ? Condition.toJSON(message.condition) - : undefined); + if (message.name !== "") { + obj.name = message.name; + } + if (message.parentRoles?.length) { + obj.parentRoles = message.parentRoles; + } + if (message.condition !== undefined) { + obj.condition = Condition.toJSON(message.condition); + } + return obj; + }, +}; + +export const ExportVariables = { + fromJSON(object: any): ExportVariables { + return { + name: isSet(object.name) ? String(object.name) : "", + definitions: isObject(object.definitions) + ? Object.entries(object.definitions).reduce<{ [key: string]: string }>( + (acc, [key, value]) => { + acc[key] = String(value); + return acc; + }, + {}, + ) + : {}, + }; + }, + + toJSON(message: ExportVariables): unknown { + const obj: any = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.definitions) { + const entries = Object.entries(message.definitions); + if (entries.length > 0) { + obj.definitions = {}; + entries.forEach(([k, v]) => { + obj.definitions[k] = v; + }); + } + } + return obj; + }, +}; + +export const ExportVariables_DefinitionsEntry = { + fromJSON(object: any): ExportVariables_DefinitionsEntry { + return { + key: isSet(object.key) ? String(object.key) : "", + value: isSet(object.value) ? String(object.value) : "", + }; + }, + + toJSON(message: ExportVariables_DefinitionsEntry): unknown { + const obj: any = {}; + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } + return obj; + }, +}; + +export const Variables = { + fromJSON(object: any): Variables { + return { + import: Array.isArray(object?.import) + ? object.import.map((e: any) => String(e)) + : [], + local: isObject(object.local) + ? Object.entries(object.local).reduce<{ [key: string]: string }>( + (acc, [key, value]) => { + acc[key] = String(value); + return acc; + }, + {}, + ) + : {}, + }; + }, + + toJSON(message: Variables): unknown { + const obj: any = {}; + if (message.import?.length > 0) { + obj.import = message.import; + } + if (message.local) { + const entries = Object.entries(message.local); + if (entries.length > 0) { + obj.local = {}; + entries.forEach(([k, v]) => { + obj.local[k] = v; + }); + } + } + return obj; + }, +}; + +export const Variables_LocalEntry = { + fromJSON(object: any): Variables_LocalEntry { + return { + key: isSet(object.key) ? String(object.key) : "", + value: isSet(object.value) ? String(object.value) : "", + }; + }, + + toJSON(message: Variables_LocalEntry): unknown { + const obj: any = {}; + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -503,12 +695,12 @@ export const Condition = { toJSON(message: Condition): unknown { const obj: any = {}; - message.condition?.$case === "match" && - (obj.match = message.condition?.match - ? Match.toJSON(message.condition?.match) - : undefined); - message.condition?.$case === "script" && - (obj.script = message.condition?.script); + if (message.condition?.$case === "match") { + obj.match = Match.toJSON(message.condition.match); + } + if (message.condition?.$case === "script") { + obj.script = message.condition.script; + } return obj; }, }; @@ -530,19 +722,18 @@ export const Match = { toJSON(message: Match): unknown { const obj: any = {}; - message.op?.$case === "all" && - (obj.all = message.op?.all - ? Match_ExprList.toJSON(message.op?.all) - : undefined); - message.op?.$case === "any" && - (obj.any = message.op?.any - ? Match_ExprList.toJSON(message.op?.any) - : undefined); - message.op?.$case === "none" && - (obj.none = message.op?.none - ? Match_ExprList.toJSON(message.op?.none) - : undefined); - message.op?.$case === "expr" && (obj.expr = message.op?.expr); + if (message.op?.$case === "all") { + obj.all = Match_ExprList.toJSON(message.op.all); + } + if (message.op?.$case === "any") { + obj.any = Match_ExprList.toJSON(message.op.any); + } + if (message.op?.$case === "none") { + obj.none = Match_ExprList.toJSON(message.op.none); + } + if (message.op?.$case === "expr") { + obj.expr = message.op.expr; + } return obj; }, }; @@ -558,10 +749,8 @@ export const Match_ExprList = { toJSON(message: Match_ExprList): unknown { const obj: any = {}; - if (message.of) { - obj.of = message.of.map((e) => (e ? Match.toJSON(e) : undefined)); - } else { - obj.of = []; + if (message.of?.length) { + obj.of = message.of.map((e) => Match.toJSON(e)); } return obj; }, @@ -574,7 +763,9 @@ export const Output = { toJSON(message: Output): unknown { const obj: any = {}; - message.expr !== undefined && (obj.expr = message.expr); + if (message.expr !== "") { + obj.expr = message.expr; + } return obj; }, }; @@ -593,14 +784,12 @@ export const Schemas = { toJSON(message: Schemas): unknown { const obj: any = {}; - message.principalSchema !== undefined && - (obj.principalSchema = message.principalSchema - ? Schemas_Schema.toJSON(message.principalSchema) - : undefined); - message.resourceSchema !== undefined && - (obj.resourceSchema = message.resourceSchema - ? Schemas_Schema.toJSON(message.resourceSchema) - : undefined); + if (message.principalSchema !== undefined) { + obj.principalSchema = Schemas_Schema.toJSON(message.principalSchema); + } + if (message.resourceSchema !== undefined) { + obj.resourceSchema = Schemas_Schema.toJSON(message.resourceSchema); + } return obj; }, }; @@ -616,10 +805,8 @@ export const Schemas_IgnoreWhen = { toJSON(message: Schemas_IgnoreWhen): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; + if (message.actions?.length) { + obj.actions = message.actions; } return obj; }, @@ -637,11 +824,12 @@ export const Schemas_Schema = { toJSON(message: Schemas_Schema): unknown { const obj: any = {}; - message.ref !== undefined && (obj.ref = message.ref); - message.ignoreWhen !== undefined && - (obj.ignoreWhen = message.ignoreWhen - ? Schemas_IgnoreWhen.toJSON(message.ignoreWhen) - : undefined); + if (message.ref !== "") { + obj.ref = message.ref; + } + if (message.ignoreWhen !== undefined) { + obj.ignoreWhen = Schemas_IgnoreWhen.toJSON(message.ignoreWhen); + } return obj; }, }; diff --git a/packages/http/src/protobuf/cerbos/request/v1/request.ts b/packages/http/src/protobuf/cerbos/request/v1/request.ts index 6083ce2e..773e29e3 100644 --- a/packages/http/src/protobuf/cerbos/request/v1/request.ts +++ b/packages/http/src/protobuf/cerbos/request/v1/request.ts @@ -211,22 +211,24 @@ export const PlanResourcesRequest = { toJSON(message: PlanResourcesRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - message.resource !== undefined && - (obj.resource = message.resource - ? PlanResourcesInput_Resource.toJSON(message.resource) - : undefined); - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resource !== undefined) { + obj.resource = PlanResourcesInput_Resource.toJSON(message.resource); + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } return obj; }, }; @@ -255,26 +257,24 @@ export const CheckResourceSetRequest = { toJSON(message: CheckResourceSetRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - message.resource !== undefined && - (obj.resource = message.resource - ? ResourceSet.toJSON(message.resource) - : undefined); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resource !== undefined) { + obj.resource = ResourceSet.toJSON(message.resource); + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -300,16 +300,24 @@ export const ResourceSet = { toJSON(message: ResourceSet): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - obj.instances = {}; + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } if (message.instances) { - Object.entries(message.instances).forEach(([k, v]) => { - obj.instances[k] = AttributesMap.toJSON(v); - }); + const entries = Object.entries(message.instances); + if (entries.length > 0) { + obj.instances = {}; + entries.forEach(([k, v]) => { + obj.instances[k] = AttributesMap.toJSON(v); + }); + } + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -326,11 +334,12 @@ export const ResourceSet_InstancesEntry = { toJSON(message: ResourceSet_InstancesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? AttributesMap.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = AttributesMap.toJSON(message.value); + } return obj; }, }; @@ -351,11 +360,14 @@ export const AttributesMap = { toJSON(message: AttributesMap): unknown { const obj: any = {}; - obj.attr = {}; if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } } return obj; }, @@ -371,8 +383,12 @@ export const AttributesMap_AttrEntry = { toJSON(message: AttributesMap_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -397,22 +413,20 @@ export const CheckResourceBatchRequest = { toJSON(message: CheckResourceBatchRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - if (message.resources) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resources?.length) { obj.resources = message.resources.map((e) => - e ? CheckResourceBatchRequest_BatchEntry.toJSON(e) : undefined, + CheckResourceBatchRequest_BatchEntry.toJSON(e), ); - } else { - obj.resources = []; } - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -431,15 +445,12 @@ export const CheckResourceBatchRequest_BatchEntry = { toJSON(message: CheckResourceBatchRequest_BatchEntry): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.resource !== undefined && - (obj.resource = message.resource - ? Resource.toJSON(message.resource) - : undefined); + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.resource !== undefined) { + obj.resource = Resource.toJSON(message.resource); + } return obj; }, }; @@ -467,24 +478,23 @@ export const CheckResourcesRequest = { toJSON(message: CheckResourcesRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - if (message.resources) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resources?.length) { obj.resources = message.resources.map((e) => - e ? CheckResourcesRequest_ResourceEntry.toJSON(e) : undefined, + CheckResourcesRequest_ResourceEntry.toJSON(e), ); - } else { - obj.resources = []; } - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -503,15 +513,12 @@ export const CheckResourcesRequest_ResourceEntry = { toJSON(message: CheckResourcesRequest_ResourceEntry): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.resource !== undefined && - (obj.resource = message.resource - ? Resource.toJSON(message.resource) - : undefined); + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.resource !== undefined) { + obj.resource = Resource.toJSON(message.resource); + } return obj; }, }; @@ -525,8 +532,9 @@ export const AuxData = { toJSON(message: AuxData): unknown { const obj: any = {}; - message.jwt !== undefined && - (obj.jwt = message.jwt ? AuxData_JWT.toJSON(message.jwt) : undefined); + if (message.jwt !== undefined) { + obj.jwt = AuxData_JWT.toJSON(message.jwt); + } return obj; }, }; @@ -541,8 +549,12 @@ export const AuxData_JWT = { toJSON(message: AuxData_JWT): unknown { const obj: any = {}; - message.token !== undefined && (obj.token = message.token); - message.keySetId !== undefined && (obj.keySetId = message.keySetId); + if (message.token !== "") { + obj.token = message.token; + } + if (message.keySetId !== "") { + obj.keySetId = message.keySetId; + } return obj; }, }; @@ -558,12 +570,8 @@ export const AddOrUpdatePolicyRequest = { toJSON(message: AddOrUpdatePolicyRequest): unknown { const obj: any = {}; - if (message.policies) { - obj.policies = message.policies.map((e) => - e ? Policy.toJSON(e) : undefined, - ); - } else { - obj.policies = []; + if (message.policies?.length) { + obj.policies = message.policies.map((e) => Policy.toJSON(e)); } return obj; }, @@ -594,19 +602,23 @@ export const ListAuditLogEntriesRequest = { toJSON(message: ListAuditLogEntriesRequest): unknown { const obj: any = {}; - message.kind !== undefined && - (obj.kind = listAuditLogEntriesRequest_KindToJSON(message.kind)); - message.filter?.$case === "tail" && - (obj.tail = Math.round(message.filter?.tail)); - message.filter?.$case === "between" && - (obj.between = message.filter?.between - ? ListAuditLogEntriesRequest_TimeRange.toJSON(message.filter?.between) - : undefined); - message.filter?.$case === "since" && - (obj.since = message.filter?.since - ? Duration.toJSON(message.filter?.since) - : undefined); - message.filter?.$case === "lookup" && (obj.lookup = message.filter?.lookup); + if (message.kind !== 0) { + obj.kind = listAuditLogEntriesRequest_KindToJSON(message.kind); + } + if (message.filter?.$case === "tail") { + obj.tail = Math.round(message.filter.tail); + } + if (message.filter?.$case === "between") { + obj.between = ListAuditLogEntriesRequest_TimeRange.toJSON( + message.filter.between, + ); + } + if (message.filter?.$case === "since") { + obj.since = Duration.toJSON(message.filter.since); + } + if (message.filter?.$case === "lookup") { + obj.lookup = message.filter.lookup; + } return obj; }, }; @@ -621,8 +633,12 @@ export const ListAuditLogEntriesRequest_TimeRange = { toJSON(message: ListAuditLogEntriesRequest_TimeRange): unknown { const obj: any = {}; - message.start !== undefined && (obj.start = message.start.toISOString()); - message.end !== undefined && (obj.end = message.end.toISOString()); + if (message.start !== undefined) { + obj.start = message.start.toISOString(); + } + if (message.end !== undefined) { + obj.end = message.end.toISOString(); + } return obj; }, }; @@ -654,13 +670,18 @@ export const ListPoliciesRequest = { toJSON(message: ListPoliciesRequest): unknown { const obj: any = {}; - message.includeDisabled !== undefined && - (obj.includeDisabled = message.includeDisabled); - message.nameRegexp !== undefined && (obj.nameRegexp = message.nameRegexp); - message.scopeRegexp !== undefined && - (obj.scopeRegexp = message.scopeRegexp); - message.versionRegexp !== undefined && - (obj.versionRegexp = message.versionRegexp); + if (message.includeDisabled === true) { + obj.includeDisabled = message.includeDisabled; + } + if (message.nameRegexp !== "") { + obj.nameRegexp = message.nameRegexp; + } + if (message.scopeRegexp !== "") { + obj.scopeRegexp = message.scopeRegexp; + } + if (message.versionRegexp !== "") { + obj.versionRegexp = message.versionRegexp; + } return obj; }, }; @@ -674,10 +695,8 @@ export const GetPolicyRequest = { toJSON(message: GetPolicyRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -692,10 +711,8 @@ export const DisablePolicyRequest = { toJSON(message: DisablePolicyRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -710,10 +727,8 @@ export const EnablePolicyRequest = { toJSON(message: EnablePolicyRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -730,12 +745,8 @@ export const AddOrUpdateSchemaRequest = { toJSON(message: AddOrUpdateSchemaRequest): unknown { const obj: any = {}; - if (message.schemas) { - obj.schemas = message.schemas.map((e) => - e ? Schema.toJSON(e) : undefined, - ); - } else { - obj.schemas = []; + if (message.schemas?.length) { + obj.schemas = message.schemas.map((e) => Schema.toJSON(e)); } return obj; }, @@ -761,10 +772,8 @@ export const GetSchemaRequest = { toJSON(message: GetSchemaRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -779,10 +788,8 @@ export const DeleteSchemaRequest = { toJSON(message: DeleteSchemaRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -795,7 +802,9 @@ export const ReloadStoreRequest = { toJSON(message: ReloadStoreRequest): unknown { const obj: any = {}; - message.wait !== undefined && (obj.wait = message.wait); + if (message.wait === true) { + obj.wait = message.wait; + } return obj; }, }; diff --git a/packages/http/src/protobuf/cerbos/response/v1/response.ts b/packages/http/src/protobuf/cerbos/response/v1/response.ts index 93ff82e5..41e9902f 100644 --- a/packages/http/src/protobuf/cerbos/response/v1/response.ts +++ b/packages/http/src/protobuf/cerbos/response/v1/response.ts @@ -207,26 +207,28 @@ export const PlanResourcesResponse = { toJSON(message: PlanResourcesResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.resourceKind !== undefined && - (obj.resourceKind = message.resourceKind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.filter !== undefined && - (obj.filter = message.filter - ? PlanResourcesFilter.toJSON(message.filter) - : undefined); - message.meta !== undefined && - (obj.meta = message.meta - ? PlanResourcesResponse_Meta.toJSON(message.meta) - : undefined); - if (message.validationErrors) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.resourceKind !== "") { + obj.resourceKind = message.resourceKind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.filter !== undefined) { + obj.filter = PlanResourcesFilter.toJSON(message.filter); + } + if (message.meta !== undefined) { + obj.meta = PlanResourcesResponse_Meta.toJSON(message.meta); + } + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -244,10 +246,12 @@ export const PlanResourcesResponse_Meta = { toJSON(message: PlanResourcesResponse_Meta): unknown { const obj: any = {}; - message.filterDebug !== undefined && - (obj.filterDebug = message.filterDebug); - message.matchedScope !== undefined && - (obj.matchedScope = message.matchedScope); + if (message.filterDebug !== "") { + obj.filterDebug = message.filterDebug; + } + if (message.matchedScope !== "") { + obj.matchedScope = message.matchedScope; + } return obj; }, }; @@ -272,18 +276,22 @@ export const CheckResourceSetResponse = { toJSON(message: CheckResourceSetResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - obj.resourceInstances = {}; + if (message.requestId !== "") { + obj.requestId = message.requestId; + } if (message.resourceInstances) { - Object.entries(message.resourceInstances).forEach(([k, v]) => { - obj.resourceInstances[k] = - CheckResourceSetResponse_ActionEffectMap.toJSON(v); - }); - } - message.meta !== undefined && - (obj.meta = message.meta - ? CheckResourceSetResponse_Meta.toJSON(message.meta) - : undefined); + const entries = Object.entries(message.resourceInstances); + if (entries.length > 0) { + obj.resourceInstances = {}; + entries.forEach(([k, v]) => { + obj.resourceInstances[k] = + CheckResourceSetResponse_ActionEffectMap.toJSON(v); + }); + } + } + if (message.meta !== undefined) { + obj.meta = CheckResourceSetResponse_Meta.toJSON(message.meta); + } return obj; }, }; @@ -308,18 +316,19 @@ export const CheckResourceSetResponse_ActionEffectMap = { toJSON(message: CheckResourceSetResponse_ActionEffectMap): unknown { const obj: any = {}; - obj.actions = {}; if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = effectToJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = effectToJSON(v); + }); + } } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -337,8 +346,12 @@ export const CheckResourceSetResponse_ActionEffectMap_ActionsEntry = { message: CheckResourceSetResponse_ActionEffectMap_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = effectToJSON(message.value)); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== 0) { + obj.value = effectToJSON(message.value); + } return obj; }, }; @@ -359,12 +372,15 @@ export const CheckResourceSetResponse_Meta = { toJSON(message: CheckResourceSetResponse_Meta): unknown { const obj: any = {}; - obj.resourceInstances = {}; if (message.resourceInstances) { - Object.entries(message.resourceInstances).forEach(([k, v]) => { - obj.resourceInstances[k] = - CheckResourceSetResponse_Meta_ActionMeta.toJSON(v); - }); + const entries = Object.entries(message.resourceInstances); + if (entries.length > 0) { + obj.resourceInstances = {}; + entries.forEach(([k, v]) => { + obj.resourceInstances[k] = + CheckResourceSetResponse_Meta_ActionMeta.toJSON(v); + }); + } } return obj; }, @@ -384,10 +400,12 @@ export const CheckResourceSetResponse_Meta_EffectMeta = { toJSON(message: CheckResourceSetResponse_Meta_EffectMeta): unknown { const obj: any = {}; - message.matchedPolicy !== undefined && - (obj.matchedPolicy = message.matchedPolicy); - message.matchedScope !== undefined && - (obj.matchedScope = message.matchedScope); + if (message.matchedPolicy !== "") { + obj.matchedPolicy = message.matchedPolicy; + } + if (message.matchedScope !== "") { + obj.matchedScope = message.matchedScope; + } return obj; }, }; @@ -411,16 +429,17 @@ export const CheckResourceSetResponse_Meta_ActionMeta = { toJSON(message: CheckResourceSetResponse_Meta_ActionMeta): unknown { const obj: any = {}; - obj.actions = {}; if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = CheckResourceSetResponse_Meta_EffectMeta.toJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = CheckResourceSetResponse_Meta_EffectMeta.toJSON(v); + }); + } } - if (message.effectiveDerivedRoles) { - obj.effectiveDerivedRoles = message.effectiveDerivedRoles.map((e) => e); - } else { - obj.effectiveDerivedRoles = []; + if (message.effectiveDerivedRoles?.length) { + obj.effectiveDerivedRoles = message.effectiveDerivedRoles; } return obj; }, @@ -440,11 +459,14 @@ export const CheckResourceSetResponse_Meta_ActionMeta_ActionsEntry = { message: CheckResourceSetResponse_Meta_ActionMeta_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourceSetResponse_Meta_EffectMeta.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourceSetResponse_Meta_EffectMeta.toJSON( + message.value, + ); + } return obj; }, }; @@ -463,11 +485,14 @@ export const CheckResourceSetResponse_Meta_ResourceInstancesEntry = { message: CheckResourceSetResponse_Meta_ResourceInstancesEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourceSetResponse_Meta_ActionMeta.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourceSetResponse_Meta_ActionMeta.toJSON( + message.value, + ); + } return obj; }, }; @@ -484,11 +509,14 @@ export const CheckResourceSetResponse_ResourceInstancesEntry = { toJSON(message: CheckResourceSetResponse_ResourceInstancesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourceSetResponse_ActionEffectMap.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourceSetResponse_ActionEffectMap.toJSON( + message.value, + ); + } return obj; }, }; @@ -507,13 +535,13 @@ export const CheckResourceBatchResponse = { toJSON(message: CheckResourceBatchResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - if (message.results) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.results?.length) { obj.results = message.results.map((e) => - e ? CheckResourceBatchResponse_ActionEffectMap.toJSON(e) : undefined, + CheckResourceBatchResponse_ActionEffectMap.toJSON(e), ); - } else { - obj.results = []; } return obj; }, @@ -540,19 +568,22 @@ export const CheckResourceBatchResponse_ActionEffectMap = { toJSON(message: CheckResourceBatchResponse_ActionEffectMap): unknown { const obj: any = {}; - message.resourceId !== undefined && (obj.resourceId = message.resourceId); - obj.actions = {}; + if (message.resourceId !== "") { + obj.resourceId = message.resourceId; + } if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = effectToJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = effectToJSON(v); + }); + } } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -572,8 +603,12 @@ export const CheckResourceBatchResponse_ActionEffectMap_ActionsEntry = { message: CheckResourceBatchResponse_ActionEffectMap_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = effectToJSON(message.value)); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== 0) { + obj.value = effectToJSON(message.value); + } return obj; }, }; @@ -592,13 +627,13 @@ export const CheckResourcesResponse = { toJSON(message: CheckResourcesResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - if (message.results) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.results?.length) { obj.results = message.results.map((e) => - e ? CheckResourcesResponse_ResultEntry.toJSON(e) : undefined, + CheckResourcesResponse_ResultEntry.toJSON(e), ); - } else { - obj.results = []; } return obj; }, @@ -633,33 +668,30 @@ export const CheckResourcesResponse_ResultEntry = { toJSON(message: CheckResourcesResponse_ResultEntry): unknown { const obj: any = {}; - message.resource !== undefined && - (obj.resource = message.resource - ? CheckResourcesResponse_ResultEntry_Resource.toJSON(message.resource) - : undefined); - obj.actions = {}; + if (message.resource !== undefined) { + obj.resource = CheckResourcesResponse_ResultEntry_Resource.toJSON( + message.resource, + ); + } if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = effectToJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = effectToJSON(v); + }); + } } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; - } - message.meta !== undefined && - (obj.meta = message.meta - ? CheckResourcesResponse_ResultEntry_Meta.toJSON(message.meta) - : undefined); - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? OutputEntry.toJSON(e) : undefined, - ); - } else { - obj.outputs = []; + } + if (message.meta !== undefined) { + obj.meta = CheckResourcesResponse_ResultEntry_Meta.toJSON(message.meta); + } + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => OutputEntry.toJSON(e)); } return obj; }, @@ -679,11 +711,18 @@ export const CheckResourcesResponse_ResultEntry_Resource = { toJSON(message: CheckResourcesResponse_ResultEntry_Resource): unknown { const obj: any = {}; - message.id !== undefined && (obj.id = message.id); - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.scope !== undefined && (obj.scope = message.scope); + if (message.id !== "") { + obj.id = message.id; + } + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.scope !== "") { + obj.scope = message.scope; + } return obj; }, }; @@ -710,17 +749,18 @@ export const CheckResourcesResponse_ResultEntry_Meta = { toJSON(message: CheckResourcesResponse_ResultEntry_Meta): unknown { const obj: any = {}; - obj.actions = {}; if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = - CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = + CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON(v); + }); + } } - if (message.effectiveDerivedRoles) { - obj.effectiveDerivedRoles = message.effectiveDerivedRoles.map((e) => e); - } else { - obj.effectiveDerivedRoles = []; + if (message.effectiveDerivedRoles?.length) { + obj.effectiveDerivedRoles = message.effectiveDerivedRoles; } return obj; }, @@ -740,10 +780,12 @@ export const CheckResourcesResponse_ResultEntry_Meta_EffectMeta = { toJSON(message: CheckResourcesResponse_ResultEntry_Meta_EffectMeta): unknown { const obj: any = {}; - message.matchedPolicy !== undefined && - (obj.matchedPolicy = message.matchedPolicy); - message.matchedScope !== undefined && - (obj.matchedScope = message.matchedScope); + if (message.matchedPolicy !== "") { + obj.matchedPolicy = message.matchedPolicy; + } + if (message.matchedScope !== "") { + obj.matchedScope = message.matchedScope; + } return obj; }, }; @@ -764,13 +806,14 @@ export const CheckResourcesResponse_ResultEntry_Meta_ActionsEntry = { message: CheckResourcesResponse_ResultEntry_Meta_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON( - message.value, - ) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON( + message.value, + ); + } return obj; }, }; @@ -785,8 +828,12 @@ export const CheckResourcesResponse_ResultEntry_ActionsEntry = { toJSON(message: CheckResourcesResponse_ResultEntry_ActionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = effectToJSON(message.value)); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== 0) { + obj.value = effectToJSON(message.value); + } return obj; }, }; @@ -802,10 +849,9 @@ export const AddOrUpdatePolicyResponse = { toJSON(message: AddOrUpdatePolicyResponse): unknown { const obj: any = {}; - message.success !== undefined && - (obj.success = message.success - ? Empty.toJSON(message.success) - : undefined); + if (message.success !== undefined) { + obj.success = Empty.toJSON(message.success); + } return obj; }, }; @@ -831,14 +877,14 @@ export const ListAuditLogEntriesResponse = { toJSON(message: ListAuditLogEntriesResponse): unknown { const obj: any = {}; - message.entry?.$case === "accessLogEntry" && - (obj.accessLogEntry = message.entry?.accessLogEntry - ? AccessLogEntry.toJSON(message.entry?.accessLogEntry) - : undefined); - message.entry?.$case === "decisionLogEntry" && - (obj.decisionLogEntry = message.entry?.decisionLogEntry - ? DecisionLogEntry.toJSON(message.entry?.decisionLogEntry) - : undefined); + if (message.entry?.$case === "accessLogEntry") { + obj.accessLogEntry = AccessLogEntry.toJSON(message.entry.accessLogEntry); + } + if (message.entry?.$case === "decisionLogEntry") { + obj.decisionLogEntry = DecisionLogEntry.toJSON( + message.entry.decisionLogEntry, + ); + } return obj; }, }; @@ -854,9 +900,15 @@ export const ServerInfoResponse = { toJSON(message: ServerInfoResponse): unknown { const obj: any = {}; - message.version !== undefined && (obj.version = message.version); - message.commit !== undefined && (obj.commit = message.commit); - message.buildDate !== undefined && (obj.buildDate = message.buildDate); + if (message.version !== "") { + obj.version = message.version; + } + if (message.commit !== "") { + obj.commit = message.commit; + } + if (message.buildDate !== "") { + obj.buildDate = message.buildDate; + } return obj; }, }; @@ -872,10 +924,8 @@ export const ListPoliciesResponse = { toJSON(message: ListPoliciesResponse): unknown { const obj: any = {}; - if (message.policyIds) { - obj.policyIds = message.policyIds.map((e) => e); - } else { - obj.policyIds = []; + if (message.policyIds?.length) { + obj.policyIds = message.policyIds; } return obj; }, @@ -892,12 +942,8 @@ export const GetPolicyResponse = { toJSON(message: GetPolicyResponse): unknown { const obj: any = {}; - if (message.policies) { - obj.policies = message.policies.map((e) => - e ? Policy.toJSON(e) : undefined, - ); - } else { - obj.policies = []; + if (message.policies?.length) { + obj.policies = message.policies.map((e) => Policy.toJSON(e)); } return obj; }, @@ -914,8 +960,9 @@ export const DisablePolicyResponse = { toJSON(message: DisablePolicyResponse): unknown { const obj: any = {}; - message.disabledPolicies !== undefined && - (obj.disabledPolicies = Math.round(message.disabledPolicies)); + if (message.disabledPolicies !== 0) { + obj.disabledPolicies = Math.round(message.disabledPolicies); + } return obj; }, }; @@ -931,8 +978,9 @@ export const EnablePolicyResponse = { toJSON(message: EnablePolicyResponse): unknown { const obj: any = {}; - message.enabledPolicies !== undefined && - (obj.enabledPolicies = Math.round(message.enabledPolicies)); + if (message.enabledPolicies !== 0) { + obj.enabledPolicies = Math.round(message.enabledPolicies); + } return obj; }, }; @@ -959,10 +1007,8 @@ export const ListSchemasResponse = { toJSON(message: ListSchemasResponse): unknown { const obj: any = {}; - if (message.schemaIds) { - obj.schemaIds = message.schemaIds.map((e) => e); - } else { - obj.schemaIds = []; + if (message.schemaIds?.length) { + obj.schemaIds = message.schemaIds; } return obj; }, @@ -979,12 +1025,8 @@ export const GetSchemaResponse = { toJSON(message: GetSchemaResponse): unknown { const obj: any = {}; - if (message.schemas) { - obj.schemas = message.schemas.map((e) => - e ? Schema.toJSON(e) : undefined, - ); - } else { - obj.schemas = []; + if (message.schemas?.length) { + obj.schemas = message.schemas.map((e) => Schema.toJSON(e)); } return obj; }, @@ -1001,8 +1043,9 @@ export const DeleteSchemaResponse = { toJSON(message: DeleteSchemaResponse): unknown { const obj: any = {}; - message.deletedSchemas !== undefined && - (obj.deletedSchemas = Math.round(message.deletedSchemas)); + if (message.deletedSchemas !== 0) { + obj.deletedSchemas = Math.round(message.deletedSchemas); + } return obj; }, }; diff --git a/packages/http/src/protobuf/cerbos/schema/v1/schema.ts b/packages/http/src/protobuf/cerbos/schema/v1/schema.ts index 241aba6b..ec1cb2e8 100644 --- a/packages/http/src/protobuf/cerbos/schema/v1/schema.ts +++ b/packages/http/src/protobuf/cerbos/schema/v1/schema.ts @@ -73,10 +73,15 @@ export const ValidationError = { toJSON(message: ValidationError): unknown { const obj: any = {}; - message.path !== undefined && (obj.path = message.path); - message.message !== undefined && (obj.message = message.message); - message.source !== undefined && - (obj.source = validationError_SourceToJSON(message.source)); + if (message.path !== "") { + obj.path = message.path; + } + if (message.message !== "") { + obj.message = message.message; + } + if (message.source !== 0) { + obj.source = validationError_SourceToJSON(message.source); + } return obj; }, }; @@ -93,13 +98,12 @@ export const Schema = { toJSON(message: Schema): unknown { const obj: any = {}; - message.id !== undefined && (obj.id = message.id); - message.definition !== undefined && - (obj.definition = base64FromBytes( - message.definition !== undefined - ? message.definition - : new Uint8Array(0), - )); + if (message.id !== "") { + obj.id = message.id; + } + if (message.definition.length !== 0) { + obj.definition = base64FromBytes(message.definition); + } return obj; }, }; diff --git a/packages/http/src/protobuf/google/api/http.ts b/packages/http/src/protobuf/google/api/http.ts index 6ca49c1e..64b75382 100644 --- a/packages/http/src/protobuf/google/api/http.ts +++ b/packages/http/src/protobuf/google/api/http.ts @@ -51,26 +51,37 @@ export const HttpRule = { toJSON(message: HttpRule): unknown { const obj: any = {}; - message.selector !== undefined && (obj.selector = message.selector); - message.pattern?.$case === "get" && (obj.get = message.pattern?.get); - message.pattern?.$case === "put" && (obj.put = message.pattern?.put); - message.pattern?.$case === "post" && (obj.post = message.pattern?.post); - message.pattern?.$case === "delete" && - (obj.delete = message.pattern?.delete); - message.pattern?.$case === "patch" && (obj.patch = message.pattern?.patch); - message.pattern?.$case === "custom" && - (obj.custom = message.pattern?.custom - ? CustomHttpPattern.toJSON(message.pattern?.custom) - : undefined); - message.body !== undefined && (obj.body = message.body); - message.responseBody !== undefined && - (obj.responseBody = message.responseBody); - if (message.additionalBindings) { + if (message.selector !== "") { + obj.selector = message.selector; + } + if (message.pattern?.$case === "get") { + obj.get = message.pattern.get; + } + if (message.pattern?.$case === "put") { + obj.put = message.pattern.put; + } + if (message.pattern?.$case === "post") { + obj.post = message.pattern.post; + } + if (message.pattern?.$case === "delete") { + obj.delete = message.pattern.delete; + } + if (message.pattern?.$case === "patch") { + obj.patch = message.pattern.patch; + } + if (message.pattern?.$case === "custom") { + obj.custom = CustomHttpPattern.toJSON(message.pattern.custom); + } + if (message.body !== "") { + obj.body = message.body; + } + if (message.responseBody !== "") { + obj.responseBody = message.responseBody; + } + if (message.additionalBindings?.length) { obj.additionalBindings = message.additionalBindings.map((e) => - e ? HttpRule.toJSON(e) : undefined, + HttpRule.toJSON(e), ); - } else { - obj.additionalBindings = []; } return obj; }, @@ -86,8 +97,12 @@ export const CustomHttpPattern = { toJSON(message: CustomHttpPattern): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - message.path !== undefined && (obj.path = message.path); + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.path !== "") { + obj.path = message.path; + } return obj; }, }; diff --git a/packages/http/src/protobuf/google/protobuf/descriptor.ts b/packages/http/src/protobuf/google/protobuf/descriptor.ts index f976d44a..ad83ebbc 100644 --- a/packages/http/src/protobuf/google/protobuf/descriptor.ts +++ b/packages/http/src/protobuf/google/protobuf/descriptor.ts @@ -450,50 +450,70 @@ export const FileOptions = { toJSON(message: FileOptions): unknown { const obj: any = {}; - message.javaPackage !== undefined && - (obj.javaPackage = message.javaPackage); - message.javaOuterClassname !== undefined && - (obj.javaOuterClassname = message.javaOuterClassname); - message.javaMultipleFiles !== undefined && - (obj.javaMultipleFiles = message.javaMultipleFiles); - message.javaGenerateEqualsAndHash !== undefined && - (obj.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash); - message.javaStringCheckUtf8 !== undefined && - (obj.javaStringCheckUtf8 = message.javaStringCheckUtf8); - message.optimizeFor !== undefined && - (obj.optimizeFor = fileOptions_OptimizeModeToJSON(message.optimizeFor)); - message.goPackage !== undefined && (obj.goPackage = message.goPackage); - message.ccGenericServices !== undefined && - (obj.ccGenericServices = message.ccGenericServices); - message.javaGenericServices !== undefined && - (obj.javaGenericServices = message.javaGenericServices); - message.pyGenericServices !== undefined && - (obj.pyGenericServices = message.pyGenericServices); - message.phpGenericServices !== undefined && - (obj.phpGenericServices = message.phpGenericServices); - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.ccEnableArenas !== undefined && - (obj.ccEnableArenas = message.ccEnableArenas); - message.objcClassPrefix !== undefined && - (obj.objcClassPrefix = message.objcClassPrefix); - message.csharpNamespace !== undefined && - (obj.csharpNamespace = message.csharpNamespace); - message.swiftPrefix !== undefined && - (obj.swiftPrefix = message.swiftPrefix); - message.phpClassPrefix !== undefined && - (obj.phpClassPrefix = message.phpClassPrefix); - message.phpNamespace !== undefined && - (obj.phpNamespace = message.phpNamespace); - message.phpMetadataNamespace !== undefined && - (obj.phpMetadataNamespace = message.phpMetadataNamespace); - message.rubyPackage !== undefined && - (obj.rubyPackage = message.rubyPackage); - if (message.uninterpretedOption) { + if (message.javaPackage !== "") { + obj.javaPackage = message.javaPackage; + } + if (message.javaOuterClassname !== "") { + obj.javaOuterClassname = message.javaOuterClassname; + } + if (message.javaMultipleFiles === true) { + obj.javaMultipleFiles = message.javaMultipleFiles; + } + if (message.javaGenerateEqualsAndHash === true) { + obj.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash; + } + if (message.javaStringCheckUtf8 === true) { + obj.javaStringCheckUtf8 = message.javaStringCheckUtf8; + } + if (message.optimizeFor !== 1) { + obj.optimizeFor = fileOptions_OptimizeModeToJSON(message.optimizeFor); + } + if (message.goPackage !== "") { + obj.goPackage = message.goPackage; + } + if (message.ccGenericServices === true) { + obj.ccGenericServices = message.ccGenericServices; + } + if (message.javaGenericServices === true) { + obj.javaGenericServices = message.javaGenericServices; + } + if (message.pyGenericServices === true) { + obj.pyGenericServices = message.pyGenericServices; + } + if (message.phpGenericServices === true) { + obj.phpGenericServices = message.phpGenericServices; + } + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.ccEnableArenas === true) { + obj.ccEnableArenas = message.ccEnableArenas; + } + if (message.objcClassPrefix !== "") { + obj.objcClassPrefix = message.objcClassPrefix; + } + if (message.csharpNamespace !== "") { + obj.csharpNamespace = message.csharpNamespace; + } + if (message.swiftPrefix !== "") { + obj.swiftPrefix = message.swiftPrefix; + } + if (message.phpClassPrefix !== "") { + obj.phpClassPrefix = message.phpClassPrefix; + } + if (message.phpNamespace !== "") { + obj.phpNamespace = message.phpNamespace; + } + if (message.phpMetadataNamespace !== "") { + obj.phpMetadataNamespace = message.phpMetadataNamespace; + } + if (message.rubyPackage !== "") { + obj.rubyPackage = message.rubyPackage; + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -525,21 +545,26 @@ export const MessageOptions = { toJSON(message: MessageOptions): unknown { const obj: any = {}; - message.messageSetWireFormat !== undefined && - (obj.messageSetWireFormat = message.messageSetWireFormat); - message.noStandardDescriptorAccessor !== undefined && - (obj.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor); - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.mapEntry !== undefined && (obj.mapEntry = message.mapEntry); - message.deprecatedLegacyJsonFieldConflicts !== undefined && - (obj.deprecatedLegacyJsonFieldConflicts = - message.deprecatedLegacyJsonFieldConflicts); - if (message.uninterpretedOption) { + if (message.messageSetWireFormat === true) { + obj.messageSetWireFormat = message.messageSetWireFormat; + } + if (message.noStandardDescriptorAccessor === true) { + obj.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor; + } + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.mapEntry === true) { + obj.mapEntry = message.mapEntry; + } + if (message.deprecatedLegacyJsonFieldConflicts === true) { + obj.deprecatedLegacyJsonFieldConflicts = + message.deprecatedLegacyJsonFieldConflicts; + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -578,28 +603,40 @@ export const FieldOptions = { toJSON(message: FieldOptions): unknown { const obj: any = {}; - message.ctype !== undefined && - (obj.ctype = fieldOptions_CTypeToJSON(message.ctype)); - message.packed !== undefined && (obj.packed = message.packed); - message.jstype !== undefined && - (obj.jstype = fieldOptions_JSTypeToJSON(message.jstype)); - message.lazy !== undefined && (obj.lazy = message.lazy); - message.unverifiedLazy !== undefined && - (obj.unverifiedLazy = message.unverifiedLazy); - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.weak !== undefined && (obj.weak = message.weak); - message.debugRedact !== undefined && - (obj.debugRedact = message.debugRedact); - message.retention !== undefined && - (obj.retention = fieldOptions_OptionRetentionToJSON(message.retention)); - message.target !== undefined && - (obj.target = fieldOptions_OptionTargetTypeToJSON(message.target)); - if (message.uninterpretedOption) { + if (message.ctype !== 0) { + obj.ctype = fieldOptions_CTypeToJSON(message.ctype); + } + if (message.packed === true) { + obj.packed = message.packed; + } + if (message.jstype !== 0) { + obj.jstype = fieldOptions_JSTypeToJSON(message.jstype); + } + if (message.lazy === true) { + obj.lazy = message.lazy; + } + if (message.unverifiedLazy === true) { + obj.unverifiedLazy = message.unverifiedLazy; + } + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.weak === true) { + obj.weak = message.weak; + } + if (message.debugRedact === true) { + obj.debugRedact = message.debugRedact; + } + if (message.retention !== 0) { + obj.retention = fieldOptions_OptionRetentionToJSON(message.retention); + } + if (message.target !== 0) { + obj.target = fieldOptions_OptionTargetTypeToJSON(message.target); + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -618,12 +655,10 @@ export const OneofOptions = { toJSON(message: OneofOptions): unknown { const obj: any = {}; - if (message.uninterpretedOption) { + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -643,13 +678,13 @@ export const ServiceOptions = { toJSON(message: ServiceOptions): unknown { const obj: any = {}; - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - if (message.uninterpretedOption) { + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -672,17 +707,18 @@ export const MethodOptions = { toJSON(message: MethodOptions): unknown { const obj: any = {}; - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.idempotencyLevel !== undefined && - (obj.idempotencyLevel = methodOptions_IdempotencyLevelToJSON( + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.idempotencyLevel !== 0) { + obj.idempotencyLevel = methodOptions_IdempotencyLevelToJSON( message.idempotencyLevel, - )); - if (message.uninterpretedOption) { + ); + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -715,29 +751,29 @@ export const UninterpretedOption = { toJSON(message: UninterpretedOption): unknown { const obj: any = {}; - if (message.name) { + if (message.name?.length) { obj.name = message.name.map((e) => - e ? UninterpretedOption_NamePart.toJSON(e) : undefined, + UninterpretedOption_NamePart.toJSON(e), ); - } else { - obj.name = []; - } - message.identifierValue !== undefined && - (obj.identifierValue = message.identifierValue); - message.positiveIntValue !== undefined && - (obj.positiveIntValue = message.positiveIntValue); - message.negativeIntValue !== undefined && - (obj.negativeIntValue = message.negativeIntValue); - message.doubleValue !== undefined && - (obj.doubleValue = message.doubleValue); - message.stringValue !== undefined && - (obj.stringValue = base64FromBytes( - message.stringValue !== undefined - ? message.stringValue - : new Uint8Array(0), - )); - message.aggregateValue !== undefined && - (obj.aggregateValue = message.aggregateValue); + } + if (message.identifierValue !== "") { + obj.identifierValue = message.identifierValue; + } + if (message.positiveIntValue !== "0") { + obj.positiveIntValue = message.positiveIntValue; + } + if (message.negativeIntValue !== "0") { + obj.negativeIntValue = message.negativeIntValue; + } + if (message.doubleValue !== 0) { + obj.doubleValue = message.doubleValue; + } + if (message.stringValue.length !== 0) { + obj.stringValue = base64FromBytes(message.stringValue); + } + if (message.aggregateValue !== "") { + obj.aggregateValue = message.aggregateValue; + } return obj; }, }; @@ -754,9 +790,12 @@ export const UninterpretedOption_NamePart = { toJSON(message: UninterpretedOption_NamePart): unknown { const obj: any = {}; - message.namePart !== undefined && (obj.namePart = message.namePart); - message.isExtension !== undefined && - (obj.isExtension = message.isExtension); + if (message.namePart !== "") { + obj.namePart = message.namePart; + } + if (message.isExtension === true) { + obj.isExtension = message.isExtension; + } return obj; }, }; diff --git a/packages/http/src/protobuf/google/protobuf/duration.ts b/packages/http/src/protobuf/google/protobuf/duration.ts index 4fd10cda..09ee441d 100644 --- a/packages/http/src/protobuf/google/protobuf/duration.ts +++ b/packages/http/src/protobuf/google/protobuf/duration.ts @@ -17,8 +17,12 @@ export const Duration = { toJSON(message: Duration): unknown { const obj: any = {}; - message.seconds !== undefined && (obj.seconds = message.seconds); - message.nanos !== undefined && (obj.nanos = Math.round(message.nanos)); + if (message.seconds !== "0") { + obj.seconds = message.seconds; + } + if (message.nanos !== 0) { + obj.nanos = Math.round(message.nanos); + } return obj; }, }; diff --git a/packages/http/src/protobuf/google/protobuf/struct.ts b/packages/http/src/protobuf/google/protobuf/struct.ts index f02033c2..ef5a5ed5 100644 --- a/packages/http/src/protobuf/google/protobuf/struct.ts +++ b/packages/http/src/protobuf/google/protobuf/struct.ts @@ -73,11 +73,14 @@ export const Struct = { toJSON(message: Struct): unknown { const obj: any = {}; - obj.fields = {}; if (message.fields) { - Object.entries(message.fields).forEach(([k, v]) => { - obj.fields[k] = v; - }); + const entries = Object.entries(message.fields); + if (entries.length > 0) { + obj.fields = {}; + entries.forEach(([k, v]) => { + obj.fields[k] = v; + }); + } } return obj; }, @@ -113,8 +116,12 @@ export const Struct_FieldsEntry = { toJSON(message: Struct_FieldsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -144,21 +151,24 @@ export const Value = { toJSON(message: Value): unknown { const obj: any = {}; - message.kind?.$case === "nullValue" && - (obj.nullValue = - message.kind?.nullValue !== undefined - ? nullValueToJSON(message.kind?.nullValue) - : undefined); - message.kind?.$case === "numberValue" && - (obj.numberValue = message.kind?.numberValue); - message.kind?.$case === "stringValue" && - (obj.stringValue = message.kind?.stringValue); - message.kind?.$case === "boolValue" && - (obj.boolValue = message.kind?.boolValue); - message.kind?.$case === "structValue" && - (obj.structValue = message.kind?.structValue); - message.kind?.$case === "listValue" && - (obj.listValue = message.kind?.listValue); + if (message.kind?.$case === "nullValue") { + obj.nullValue = nullValueToJSON(message.kind.nullValue); + } + if (message.kind?.$case === "numberValue") { + obj.numberValue = message.kind.numberValue; + } + if (message.kind?.$case === "stringValue") { + obj.stringValue = message.kind.stringValue; + } + if (message.kind?.$case === "boolValue") { + obj.boolValue = message.kind.boolValue; + } + if (message.kind?.$case === "structValue") { + obj.structValue = message.kind.structValue; + } + if (message.kind?.$case === "listValue") { + obj.listValue = message.kind.listValue; + } return obj; }, @@ -214,10 +224,8 @@ export const ListValue = { toJSON(message: ListValue): unknown { const obj: any = {}; - if (message.values) { - obj.values = message.values.map((e) => e); - } else { - obj.values = []; + if (message.values?.length) { + obj.values = message.values; } return obj; }, diff --git a/packages/http/src/protobuf/google/protobuf/timestamp.ts b/packages/http/src/protobuf/google/protobuf/timestamp.ts index 1b826b5c..928b970d 100644 --- a/packages/http/src/protobuf/google/protobuf/timestamp.ts +++ b/packages/http/src/protobuf/google/protobuf/timestamp.ts @@ -17,8 +17,12 @@ export const Timestamp = { toJSON(message: Timestamp): unknown { const obj: any = {}; - message.seconds !== undefined && (obj.seconds = message.seconds); - message.nanos !== undefined && (obj.nanos = Math.round(message.nanos)); + if (message.seconds !== "0") { + obj.seconds = message.seconds; + } + if (message.nanos !== 0) { + obj.nanos = Math.round(message.nanos); + } return obj; }, }; diff --git a/packages/http/src/protobuf/google/protobuf/wrappers.ts b/packages/http/src/protobuf/google/protobuf/wrappers.ts index 6aad4df2..8391f882 100644 --- a/packages/http/src/protobuf/google/protobuf/wrappers.ts +++ b/packages/http/src/protobuf/google/protobuf/wrappers.ts @@ -13,7 +13,9 @@ export const UInt64Value = { toJSON(message: UInt64Value): unknown { const obj: any = {}; - message.value !== undefined && (obj.value = message.value); + if (message.value !== "0") { + obj.value = message.value; + } return obj; }, }; diff --git a/packages/http/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts b/packages/http/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts index 434f70e0..e2c1a812 100644 --- a/packages/http/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts +++ b/packages/http/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts @@ -604,57 +604,58 @@ export const Swagger = { toJSON(message: Swagger): unknown { const obj: any = {}; - message.swagger !== undefined && (obj.swagger = message.swagger); - message.info !== undefined && - (obj.info = message.info ? Info.toJSON(message.info) : undefined); - message.host !== undefined && (obj.host = message.host); - message.basePath !== undefined && (obj.basePath = message.basePath); - if (message.schemes) { + if (message.swagger !== "") { + obj.swagger = message.swagger; + } + if (message.info !== undefined) { + obj.info = Info.toJSON(message.info); + } + if (message.host !== "") { + obj.host = message.host; + } + if (message.basePath !== "") { + obj.basePath = message.basePath; + } + if (message.schemes?.length) { obj.schemes = message.schemes.map((e) => schemeToJSON(e)); - } else { - obj.schemes = []; } - if (message.consumes) { - obj.consumes = message.consumes.map((e) => e); - } else { - obj.consumes = []; + if (message.consumes?.length) { + obj.consumes = message.consumes; } - if (message.produces) { - obj.produces = message.produces.map((e) => e); - } else { - obj.produces = []; + if (message.produces?.length) { + obj.produces = message.produces; } - obj.responses = {}; if (message.responses) { - Object.entries(message.responses).forEach(([k, v]) => { - obj.responses[k] = Response.toJSON(v); - }); - } - message.securityDefinitions !== undefined && - (obj.securityDefinitions = message.securityDefinitions - ? SecurityDefinitions.toJSON(message.securityDefinitions) - : undefined); - if (message.security) { - obj.security = message.security.map((e) => - e ? SecurityRequirement.toJSON(e) : undefined, + const entries = Object.entries(message.responses); + if (entries.length > 0) { + obj.responses = {}; + entries.forEach(([k, v]) => { + obj.responses[k] = Response.toJSON(v); + }); + } + } + if (message.securityDefinitions !== undefined) { + obj.securityDefinitions = SecurityDefinitions.toJSON( + message.securityDefinitions, ); - } else { - obj.security = []; - } - if (message.tags) { - obj.tags = message.tags.map((e) => (e ? Tag.toJSON(e) : undefined)); - } else { - obj.tags = []; - } - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - obj.extensions = {}; + } + if (message.security?.length) { + obj.security = message.security.map((e) => SecurityRequirement.toJSON(e)); + } + if (message.tags?.length) { + obj.tags = message.tags.map((e) => Tag.toJSON(e)); + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -670,9 +671,12 @@ export const Swagger_ResponsesEntry = { toJSON(message: Swagger_ResponsesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value ? Response.toJSON(message.value) : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = Response.toJSON(message.value); + } return obj; }, }; @@ -687,8 +691,12 @@ export const Swagger_ExtensionsEntry = { toJSON(message: Swagger_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -743,59 +751,57 @@ export const Operation = { toJSON(message: Operation): unknown { const obj: any = {}; - if (message.tags) { - obj.tags = message.tags.map((e) => e); - } else { - obj.tags = []; - } - message.summary !== undefined && (obj.summary = message.summary); - message.description !== undefined && - (obj.description = message.description); - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - message.operationId !== undefined && - (obj.operationId = message.operationId); - if (message.consumes) { - obj.consumes = message.consumes.map((e) => e); - } else { - obj.consumes = []; - } - if (message.produces) { - obj.produces = message.produces.map((e) => e); - } else { - obj.produces = []; - } - obj.responses = {}; + if (message.tags?.length) { + obj.tags = message.tags; + } + if (message.summary !== "") { + obj.summary = message.summary; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } + if (message.operationId !== "") { + obj.operationId = message.operationId; + } + if (message.consumes?.length) { + obj.consumes = message.consumes; + } + if (message.produces?.length) { + obj.produces = message.produces; + } if (message.responses) { - Object.entries(message.responses).forEach(([k, v]) => { - obj.responses[k] = Response.toJSON(v); - }); + const entries = Object.entries(message.responses); + if (entries.length > 0) { + obj.responses = {}; + entries.forEach(([k, v]) => { + obj.responses[k] = Response.toJSON(v); + }); + } } - if (message.schemes) { + if (message.schemes?.length) { obj.schemes = message.schemes.map((e) => schemeToJSON(e)); - } else { - obj.schemes = []; } - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - if (message.security) { - obj.security = message.security.map((e) => - e ? SecurityRequirement.toJSON(e) : undefined, - ); - } else { - obj.security = []; + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.security?.length) { + obj.security = message.security.map((e) => SecurityRequirement.toJSON(e)); } - obj.extensions = {}; if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); - } - message.parameters !== undefined && - (obj.parameters = message.parameters - ? Parameters.toJSON(message.parameters) - : undefined); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } + } + if (message.parameters !== undefined) { + obj.parameters = Parameters.toJSON(message.parameters); + } return obj; }, }; @@ -810,9 +816,12 @@ export const Operation_ResponsesEntry = { toJSON(message: Operation_ResponsesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value ? Response.toJSON(message.value) : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = Response.toJSON(message.value); + } return obj; }, }; @@ -827,8 +836,12 @@ export const Operation_ExtensionsEntry = { toJSON(message: Operation_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -844,12 +857,8 @@ export const Parameters = { toJSON(message: Parameters): unknown { const obj: any = {}; - if (message.headers) { - obj.headers = message.headers.map((e) => - e ? HeaderParameter.toJSON(e) : undefined, - ); - } else { - obj.headers = []; + if (message.headers?.length) { + obj.headers = message.headers.map((e) => HeaderParameter.toJSON(e)); } return obj; }, @@ -868,13 +877,21 @@ export const HeaderParameter = { toJSON(message: HeaderParameter): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.description !== undefined && - (obj.description = message.description); - message.type !== undefined && - (obj.type = headerParameter_TypeToJSON(message.type)); - message.format !== undefined && (obj.format = message.format); - message.required !== undefined && (obj.required = message.required); + if (message.name !== "") { + obj.name = message.name; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.type !== 0) { + obj.type = headerParameter_TypeToJSON(message.type); + } + if (message.format !== "") { + obj.format = message.format; + } + if (message.required === true) { + obj.required = message.required; + } return obj; }, }; @@ -892,12 +909,21 @@ export const Header = { toJSON(message: Header): unknown { const obj: any = {}; - message.description !== undefined && - (obj.description = message.description); - message.type !== undefined && (obj.type = message.type); - message.format !== undefined && (obj.format = message.format); - message.default !== undefined && (obj.default = message.default); - message.pattern !== undefined && (obj.pattern = message.pattern); + if (message.description !== "") { + obj.description = message.description; + } + if (message.type !== "") { + obj.type = message.type; + } + if (message.format !== "") { + obj.format = message.format; + } + if (message.default !== "") { + obj.default = message.default; + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } return obj; }, }; @@ -938,27 +964,38 @@ export const Response = { toJSON(message: Response): unknown { const obj: any = {}; - message.description !== undefined && - (obj.description = message.description); - message.schema !== undefined && - (obj.schema = message.schema ? Schema.toJSON(message.schema) : undefined); - obj.headers = {}; + if (message.description !== "") { + obj.description = message.description; + } + if (message.schema !== undefined) { + obj.schema = Schema.toJSON(message.schema); + } if (message.headers) { - Object.entries(message.headers).forEach(([k, v]) => { - obj.headers[k] = Header.toJSON(v); - }); + const entries = Object.entries(message.headers); + if (entries.length > 0) { + obj.headers = {}; + entries.forEach(([k, v]) => { + obj.headers[k] = Header.toJSON(v); + }); + } } - obj.examples = {}; if (message.examples) { - Object.entries(message.examples).forEach(([k, v]) => { - obj.examples[k] = v; - }); + const entries = Object.entries(message.examples); + if (entries.length > 0) { + obj.examples = {}; + entries.forEach(([k, v]) => { + obj.examples[k] = v; + }); + } } - obj.extensions = {}; if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -974,9 +1011,12 @@ export const Response_HeadersEntry = { toJSON(message: Response_HeadersEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value ? Header.toJSON(message.value) : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = Header.toJSON(message.value); + } return obj; }, }; @@ -991,8 +1031,12 @@ export const Response_ExamplesEntry = { toJSON(message: Response_ExamplesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -1007,8 +1051,12 @@ export const Response_ExtensionsEntry = { toJSON(message: Response_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1041,25 +1089,32 @@ export const Info = { toJSON(message: Info): unknown { const obj: any = {}; - message.title !== undefined && (obj.title = message.title); - message.description !== undefined && - (obj.description = message.description); - message.termsOfService !== undefined && - (obj.termsOfService = message.termsOfService); - message.contact !== undefined && - (obj.contact = message.contact - ? Contact.toJSON(message.contact) - : undefined); - message.license !== undefined && - (obj.license = message.license - ? License.toJSON(message.license) - : undefined); - message.version !== undefined && (obj.version = message.version); - obj.extensions = {}; + if (message.title !== "") { + obj.title = message.title; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.termsOfService !== "") { + obj.termsOfService = message.termsOfService; + } + if (message.contact !== undefined) { + obj.contact = Contact.toJSON(message.contact); + } + if (message.license !== undefined) { + obj.license = License.toJSON(message.license); + } + if (message.version !== "") { + obj.version = message.version; + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1075,8 +1130,12 @@ export const Info_ExtensionsEntry = { toJSON(message: Info_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1092,9 +1151,15 @@ export const Contact = { toJSON(message: Contact): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.url !== undefined && (obj.url = message.url); - message.email !== undefined && (obj.email = message.email); + if (message.name !== "") { + obj.name = message.name; + } + if (message.url !== "") { + obj.url = message.url; + } + if (message.email !== "") { + obj.email = message.email; + } return obj; }, }; @@ -1109,8 +1174,12 @@ export const License = { toJSON(message: License): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.url !== undefined && (obj.url = message.url); + if (message.name !== "") { + obj.name = message.name; + } + if (message.url !== "") { + obj.url = message.url; + } return obj; }, }; @@ -1125,9 +1194,12 @@ export const ExternalDocumentation = { toJSON(message: ExternalDocumentation): unknown { const obj: any = {}; - message.description !== undefined && - (obj.description = message.description); - message.url !== undefined && (obj.url = message.url); + if (message.description !== "") { + obj.description = message.description; + } + if (message.url !== "") { + obj.url = message.url; + } return obj; }, }; @@ -1151,18 +1223,21 @@ export const Schema = { toJSON(message: Schema): unknown { const obj: any = {}; - message.jsonSchema !== undefined && - (obj.jsonSchema = message.jsonSchema - ? JSONSchema.toJSON(message.jsonSchema) - : undefined); - message.discriminator !== undefined && - (obj.discriminator = message.discriminator); - message.readOnly !== undefined && (obj.readOnly = message.readOnly); - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - message.example !== undefined && (obj.example = message.example); + if (message.jsonSchema !== undefined) { + obj.jsonSchema = JSONSchema.toJSON(message.jsonSchema); + } + if (message.discriminator !== "") { + obj.discriminator = message.discriminator; + } + if (message.readOnly === true) { + obj.readOnly = message.readOnly; + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } + if (message.example !== "") { + obj.example = message.example; + } return obj; }, }; @@ -1230,63 +1305,93 @@ export const JSONSchema = { toJSON(message: JSONSchema): unknown { const obj: any = {}; - message.ref !== undefined && (obj.ref = message.ref); - message.title !== undefined && (obj.title = message.title); - message.description !== undefined && - (obj.description = message.description); - message.default !== undefined && (obj.default = message.default); - message.readOnly !== undefined && (obj.readOnly = message.readOnly); - message.example !== undefined && (obj.example = message.example); - message.multipleOf !== undefined && (obj.multipleOf = message.multipleOf); - message.maximum !== undefined && (obj.maximum = message.maximum); - message.exclusiveMaximum !== undefined && - (obj.exclusiveMaximum = message.exclusiveMaximum); - message.minimum !== undefined && (obj.minimum = message.minimum); - message.exclusiveMinimum !== undefined && - (obj.exclusiveMinimum = message.exclusiveMinimum); - message.maxLength !== undefined && (obj.maxLength = message.maxLength); - message.minLength !== undefined && (obj.minLength = message.minLength); - message.pattern !== undefined && (obj.pattern = message.pattern); - message.maxItems !== undefined && (obj.maxItems = message.maxItems); - message.minItems !== undefined && (obj.minItems = message.minItems); - message.uniqueItems !== undefined && - (obj.uniqueItems = message.uniqueItems); - message.maxProperties !== undefined && - (obj.maxProperties = message.maxProperties); - message.minProperties !== undefined && - (obj.minProperties = message.minProperties); - if (message.required) { - obj.required = message.required.map((e) => e); - } else { - obj.required = []; - } - if (message.array) { - obj.array = message.array.map((e) => e); - } else { - obj.array = []; - } - if (message.type) { + if (message.ref !== "") { + obj.ref = message.ref; + } + if (message.title !== "") { + obj.title = message.title; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.default !== "") { + obj.default = message.default; + } + if (message.readOnly === true) { + obj.readOnly = message.readOnly; + } + if (message.example !== "") { + obj.example = message.example; + } + if (message.multipleOf !== 0) { + obj.multipleOf = message.multipleOf; + } + if (message.maximum !== 0) { + obj.maximum = message.maximum; + } + if (message.exclusiveMaximum === true) { + obj.exclusiveMaximum = message.exclusiveMaximum; + } + if (message.minimum !== 0) { + obj.minimum = message.minimum; + } + if (message.exclusiveMinimum === true) { + obj.exclusiveMinimum = message.exclusiveMinimum; + } + if (message.maxLength !== "0") { + obj.maxLength = message.maxLength; + } + if (message.minLength !== "0") { + obj.minLength = message.minLength; + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } + if (message.maxItems !== "0") { + obj.maxItems = message.maxItems; + } + if (message.minItems !== "0") { + obj.minItems = message.minItems; + } + if (message.uniqueItems === true) { + obj.uniqueItems = message.uniqueItems; + } + if (message.maxProperties !== "0") { + obj.maxProperties = message.maxProperties; + } + if (message.minProperties !== "0") { + obj.minProperties = message.minProperties; + } + if (message.required?.length) { + obj.required = message.required; + } + if (message.array?.length) { + obj.array = message.array; + } + if (message.type?.length) { obj.type = message.type.map((e) => jSONSchema_JSONSchemaSimpleTypesToJSON(e), ); - } else { - obj.type = []; - } - message.format !== undefined && (obj.format = message.format); - if (message.enum) { - obj.enum = message.enum.map((e) => e); - } else { - obj.enum = []; - } - message.fieldConfiguration !== undefined && - (obj.fieldConfiguration = message.fieldConfiguration - ? JSONSchema_FieldConfiguration.toJSON(message.fieldConfiguration) - : undefined); - obj.extensions = {}; + } + if (message.format !== "") { + obj.format = message.format; + } + if (message.enum?.length) { + obj.enum = message.enum; + } + if (message.fieldConfiguration !== undefined) { + obj.fieldConfiguration = JSONSchema_FieldConfiguration.toJSON( + message.fieldConfiguration, + ); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1303,8 +1408,9 @@ export const JSONSchema_FieldConfiguration = { toJSON(message: JSONSchema_FieldConfiguration): unknown { const obj: any = {}; - message.pathParamName !== undefined && - (obj.pathParamName = message.pathParamName); + if (message.pathParamName !== "") { + obj.pathParamName = message.pathParamName; + } return obj; }, }; @@ -1319,8 +1425,12 @@ export const JSONSchema_ExtensionsEntry = { toJSON(message: JSONSchema_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1346,18 +1456,23 @@ export const Tag = { toJSON(message: Tag): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.description !== undefined && - (obj.description = message.description); - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - obj.extensions = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1373,8 +1488,12 @@ export const Tag_ExtensionsEntry = { toJSON(message: Tag_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1395,11 +1514,14 @@ export const SecurityDefinitions = { toJSON(message: SecurityDefinitions): unknown { const obj: any = {}; - obj.security = {}; if (message.security) { - Object.entries(message.security).forEach(([k, v]) => { - obj.security[k] = SecurityScheme.toJSON(v); - }); + const entries = Object.entries(message.security); + if (entries.length > 0) { + obj.security = {}; + entries.forEach(([k, v]) => { + obj.security[k] = SecurityScheme.toJSON(v); + }); + } } return obj; }, @@ -1417,11 +1539,12 @@ export const SecurityDefinitions_SecurityEntry = { toJSON(message: SecurityDefinitions_SecurityEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? SecurityScheme.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = SecurityScheme.toJSON(message.value); + } return obj; }, }; @@ -1452,24 +1575,38 @@ export const SecurityScheme = { toJSON(message: SecurityScheme): unknown { const obj: any = {}; - message.type !== undefined && - (obj.type = securityScheme_TypeToJSON(message.type)); - message.description !== undefined && - (obj.description = message.description); - message.name !== undefined && (obj.name = message.name); - message.in !== undefined && (obj.in = securityScheme_InToJSON(message.in)); - message.flow !== undefined && - (obj.flow = securityScheme_FlowToJSON(message.flow)); - message.authorizationUrl !== undefined && - (obj.authorizationUrl = message.authorizationUrl); - message.tokenUrl !== undefined && (obj.tokenUrl = message.tokenUrl); - message.scopes !== undefined && - (obj.scopes = message.scopes ? Scopes.toJSON(message.scopes) : undefined); - obj.extensions = {}; + if (message.type !== 0) { + obj.type = securityScheme_TypeToJSON(message.type); + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.in !== 0) { + obj.in = securityScheme_InToJSON(message.in); + } + if (message.flow !== 0) { + obj.flow = securityScheme_FlowToJSON(message.flow); + } + if (message.authorizationUrl !== "") { + obj.authorizationUrl = message.authorizationUrl; + } + if (message.tokenUrl !== "") { + obj.tokenUrl = message.tokenUrl; + } + if (message.scopes !== undefined) { + obj.scopes = Scopes.toJSON(message.scopes); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1485,8 +1622,12 @@ export const SecurityScheme_ExtensionsEntry = { toJSON(message: SecurityScheme_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1508,12 +1649,15 @@ export const SecurityRequirement = { toJSON(message: SecurityRequirement): unknown { const obj: any = {}; - obj.securityRequirement = {}; if (message.securityRequirement) { - Object.entries(message.securityRequirement).forEach(([k, v]) => { - obj.securityRequirement[k] = - SecurityRequirement_SecurityRequirementValue.toJSON(v); - }); + const entries = Object.entries(message.securityRequirement); + if (entries.length > 0) { + obj.securityRequirement = {}; + entries.forEach(([k, v]) => { + obj.securityRequirement[k] = + SecurityRequirement_SecurityRequirementValue.toJSON(v); + }); + } } return obj; }, @@ -1530,10 +1674,8 @@ export const SecurityRequirement_SecurityRequirementValue = { toJSON(message: SecurityRequirement_SecurityRequirementValue): unknown { const obj: any = {}; - if (message.scope) { - obj.scope = message.scope.map((e) => e); - } else { - obj.scope = []; + if (message.scope?.length) { + obj.scope = message.scope; } return obj; }, @@ -1551,11 +1693,14 @@ export const SecurityRequirement_SecurityRequirementEntry = { toJSON(message: SecurityRequirement_SecurityRequirementEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? SecurityRequirement_SecurityRequirementValue.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = SecurityRequirement_SecurityRequirementValue.toJSON( + message.value, + ); + } return obj; }, }; @@ -1577,11 +1722,14 @@ export const Scopes = { toJSON(message: Scopes): unknown { const obj: any = {}; - obj.scope = {}; if (message.scope) { - Object.entries(message.scope).forEach(([k, v]) => { - obj.scope[k] = v; - }); + const entries = Object.entries(message.scope); + if (entries.length > 0) { + obj.scope = {}; + entries.forEach(([k, v]) => { + obj.scope[k] = v; + }); + } } return obj; }, @@ -1597,8 +1745,12 @@ export const Scopes_ScopeEntry = { toJSON(message: Scopes_ScopeEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; diff --git a/packages/http/src/protobuf/validate/validate.ts b/packages/http/src/protobuf/validate/validate.ts index ec046e29..36aa1175 100644 --- a/packages/http/src/protobuf/validate/validate.ts +++ b/packages/http/src/protobuf/validate/validate.ts @@ -383,94 +383,72 @@ export const FieldRules = { toJSON(message: FieldRules): unknown { const obj: any = {}; - message.message !== undefined && - (obj.message = message.message - ? MessageRules.toJSON(message.message) - : undefined); - message.type?.$case === "float" && - (obj.float = message.type?.float - ? FloatRules.toJSON(message.type?.float) - : undefined); - message.type?.$case === "double" && - (obj.double = message.type?.double - ? DoubleRules.toJSON(message.type?.double) - : undefined); - message.type?.$case === "int32" && - (obj.int32 = message.type?.int32 - ? Int32Rules.toJSON(message.type?.int32) - : undefined); - message.type?.$case === "int64" && - (obj.int64 = message.type?.int64 - ? Int64Rules.toJSON(message.type?.int64) - : undefined); - message.type?.$case === "uint32" && - (obj.uint32 = message.type?.uint32 - ? UInt32Rules.toJSON(message.type?.uint32) - : undefined); - message.type?.$case === "uint64" && - (obj.uint64 = message.type?.uint64 - ? UInt64Rules.toJSON(message.type?.uint64) - : undefined); - message.type?.$case === "sint32" && - (obj.sint32 = message.type?.sint32 - ? SInt32Rules.toJSON(message.type?.sint32) - : undefined); - message.type?.$case === "sint64" && - (obj.sint64 = message.type?.sint64 - ? SInt64Rules.toJSON(message.type?.sint64) - : undefined); - message.type?.$case === "fixed32" && - (obj.fixed32 = message.type?.fixed32 - ? Fixed32Rules.toJSON(message.type?.fixed32) - : undefined); - message.type?.$case === "fixed64" && - (obj.fixed64 = message.type?.fixed64 - ? Fixed64Rules.toJSON(message.type?.fixed64) - : undefined); - message.type?.$case === "sfixed32" && - (obj.sfixed32 = message.type?.sfixed32 - ? SFixed32Rules.toJSON(message.type?.sfixed32) - : undefined); - message.type?.$case === "sfixed64" && - (obj.sfixed64 = message.type?.sfixed64 - ? SFixed64Rules.toJSON(message.type?.sfixed64) - : undefined); - message.type?.$case === "bool" && - (obj.bool = message.type?.bool - ? BoolRules.toJSON(message.type?.bool) - : undefined); - message.type?.$case === "string" && - (obj.string = message.type?.string - ? StringRules.toJSON(message.type?.string) - : undefined); - message.type?.$case === "bytes" && - (obj.bytes = message.type?.bytes - ? BytesRules.toJSON(message.type?.bytes) - : undefined); - message.type?.$case === "enum" && - (obj.enum = message.type?.enum - ? EnumRules.toJSON(message.type?.enum) - : undefined); - message.type?.$case === "repeated" && - (obj.repeated = message.type?.repeated - ? RepeatedRules.toJSON(message.type?.repeated) - : undefined); - message.type?.$case === "map" && - (obj.map = message.type?.map - ? MapRules.toJSON(message.type?.map) - : undefined); - message.type?.$case === "any" && - (obj.any = message.type?.any - ? AnyRules.toJSON(message.type?.any) - : undefined); - message.type?.$case === "duration" && - (obj.duration = message.type?.duration - ? DurationRules.toJSON(message.type?.duration) - : undefined); - message.type?.$case === "timestamp" && - (obj.timestamp = message.type?.timestamp - ? TimestampRules.toJSON(message.type?.timestamp) - : undefined); + if (message.message !== undefined) { + obj.message = MessageRules.toJSON(message.message); + } + if (message.type?.$case === "float") { + obj.float = FloatRules.toJSON(message.type.float); + } + if (message.type?.$case === "double") { + obj.double = DoubleRules.toJSON(message.type.double); + } + if (message.type?.$case === "int32") { + obj.int32 = Int32Rules.toJSON(message.type.int32); + } + if (message.type?.$case === "int64") { + obj.int64 = Int64Rules.toJSON(message.type.int64); + } + if (message.type?.$case === "uint32") { + obj.uint32 = UInt32Rules.toJSON(message.type.uint32); + } + if (message.type?.$case === "uint64") { + obj.uint64 = UInt64Rules.toJSON(message.type.uint64); + } + if (message.type?.$case === "sint32") { + obj.sint32 = SInt32Rules.toJSON(message.type.sint32); + } + if (message.type?.$case === "sint64") { + obj.sint64 = SInt64Rules.toJSON(message.type.sint64); + } + if (message.type?.$case === "fixed32") { + obj.fixed32 = Fixed32Rules.toJSON(message.type.fixed32); + } + if (message.type?.$case === "fixed64") { + obj.fixed64 = Fixed64Rules.toJSON(message.type.fixed64); + } + if (message.type?.$case === "sfixed32") { + obj.sfixed32 = SFixed32Rules.toJSON(message.type.sfixed32); + } + if (message.type?.$case === "sfixed64") { + obj.sfixed64 = SFixed64Rules.toJSON(message.type.sfixed64); + } + if (message.type?.$case === "bool") { + obj.bool = BoolRules.toJSON(message.type.bool); + } + if (message.type?.$case === "string") { + obj.string = StringRules.toJSON(message.type.string); + } + if (message.type?.$case === "bytes") { + obj.bytes = BytesRules.toJSON(message.type.bytes); + } + if (message.type?.$case === "enum") { + obj.enum = EnumRules.toJSON(message.type.enum); + } + if (message.type?.$case === "repeated") { + obj.repeated = RepeatedRules.toJSON(message.type.repeated); + } + if (message.type?.$case === "map") { + obj.map = MapRules.toJSON(message.type.map); + } + if (message.type?.$case === "any") { + obj.any = AnyRules.toJSON(message.type.any); + } + if (message.type?.$case === "duration") { + obj.duration = DurationRules.toJSON(message.type.duration); + } + if (message.type?.$case === "timestamp") { + obj.timestamp = TimestampRules.toJSON(message.type.timestamp); + } return obj; }, }; @@ -495,23 +473,30 @@ export const FloatRules = { toJSON(message: FloatRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== 0) { + obj.const = message.const; + } + if (message.lt !== 0) { + obj.lt = message.lt; + } + if (message.lte !== 0) { + obj.lte = message.lte; + } + if (message.gt !== 0) { + obj.gt = message.gt; + } + if (message.gte !== 0) { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -536,23 +521,30 @@ export const DoubleRules = { toJSON(message: DoubleRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== 0) { + obj.const = message.const; + } + if (message.lt !== 0) { + obj.lt = message.lt; + } + if (message.lte !== 0) { + obj.lte = message.lte; + } + if (message.gt !== 0) { + obj.gt = message.gt; + } + if (message.gte !== 0) { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -577,23 +569,30 @@ export const Int32Rules = { toJSON(message: Int32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -618,23 +617,30 @@ export const Int64Rules = { toJSON(message: Int64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== "0") { + obj.const = message.const; + } + if (message.lt !== "0") { + obj.lt = message.lt; + } + if (message.lte !== "0") { + obj.lte = message.lte; + } + if (message.gt !== "0") { + obj.gt = message.gt; + } + if (message.gte !== "0") { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -659,23 +665,30 @@ export const UInt32Rules = { toJSON(message: UInt32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -700,23 +713,30 @@ export const UInt64Rules = { toJSON(message: UInt64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== "0") { + obj.const = message.const; + } + if (message.lt !== "0") { + obj.lt = message.lt; + } + if (message.lte !== "0") { + obj.lte = message.lte; + } + if (message.gt !== "0") { + obj.gt = message.gt; + } + if (message.gte !== "0") { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -741,23 +761,30 @@ export const SInt32Rules = { toJSON(message: SInt32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -782,23 +809,30 @@ export const SInt64Rules = { toJSON(message: SInt64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== "0") { + obj.const = message.const; + } + if (message.lt !== "0") { + obj.lt = message.lt; + } + if (message.lte !== "0") { + obj.lte = message.lte; + } + if (message.gt !== "0") { + obj.gt = message.gt; + } + if (message.gte !== "0") { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -823,23 +857,30 @@ export const Fixed32Rules = { toJSON(message: Fixed32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -864,23 +905,30 @@ export const Fixed64Rules = { toJSON(message: Fixed64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== "0") { + obj.const = message.const; + } + if (message.lt !== "0") { + obj.lt = message.lt; + } + if (message.lte !== "0") { + obj.lte = message.lte; + } + if (message.gt !== "0") { + obj.gt = message.gt; + } + if (message.gte !== "0") { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -905,23 +953,30 @@ export const SFixed32Rules = { toJSON(message: SFixed32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -946,23 +1001,30 @@ export const SFixed64Rules = { toJSON(message: SFixed64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== "0") { + obj.const = message.const; + } + if (message.lt !== "0") { + obj.lt = message.lt; + } + if (message.lte !== "0") { + obj.lte = message.lte; + } + if (message.gt !== "0") { + obj.gt = message.gt; + } + if (message.gte !== "0") { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -974,7 +1036,9 @@ export const BoolRules = { toJSON(message: BoolRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); + if (message.const === true) { + obj.const = message.const; + } return obj; }, }; @@ -1031,50 +1095,84 @@ export const StringRules = { toJSON(message: StringRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.len !== undefined && (obj.len = message.len); - message.minLen !== undefined && (obj.minLen = message.minLen); - message.maxLen !== undefined && (obj.maxLen = message.maxLen); - message.lenBytes !== undefined && (obj.lenBytes = message.lenBytes); - message.minBytes !== undefined && (obj.minBytes = message.minBytes); - message.maxBytes !== undefined && (obj.maxBytes = message.maxBytes); - message.pattern !== undefined && (obj.pattern = message.pattern); - message.prefix !== undefined && (obj.prefix = message.prefix); - message.suffix !== undefined && (obj.suffix = message.suffix); - message.contains !== undefined && (obj.contains = message.contains); - message.notContains !== undefined && - (obj.notContains = message.notContains); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.wellKnown?.$case === "email" && - (obj.email = message.wellKnown?.email); - message.wellKnown?.$case === "hostname" && - (obj.hostname = message.wellKnown?.hostname); - message.wellKnown?.$case === "ip" && (obj.ip = message.wellKnown?.ip); - message.wellKnown?.$case === "ipv4" && (obj.ipv4 = message.wellKnown?.ipv4); - message.wellKnown?.$case === "ipv6" && (obj.ipv6 = message.wellKnown?.ipv6); - message.wellKnown?.$case === "uri" && (obj.uri = message.wellKnown?.uri); - message.wellKnown?.$case === "uriRef" && - (obj.uriRef = message.wellKnown?.uriRef); - message.wellKnown?.$case === "address" && - (obj.address = message.wellKnown?.address); - message.wellKnown?.$case === "uuid" && (obj.uuid = message.wellKnown?.uuid); - message.wellKnown?.$case === "wellKnownRegex" && - (obj.wellKnownRegex = - message.wellKnown?.wellKnownRegex !== undefined - ? knownRegexToJSON(message.wellKnown?.wellKnownRegex) - : undefined); - message.strict !== undefined && (obj.strict = message.strict); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== "") { + obj.const = message.const; + } + if (message.len !== "0") { + obj.len = message.len; + } + if (message.minLen !== "0") { + obj.minLen = message.minLen; + } + if (message.maxLen !== "0") { + obj.maxLen = message.maxLen; + } + if (message.lenBytes !== "0") { + obj.lenBytes = message.lenBytes; + } + if (message.minBytes !== "0") { + obj.minBytes = message.minBytes; + } + if (message.maxBytes !== "0") { + obj.maxBytes = message.maxBytes; + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } + if (message.prefix !== "") { + obj.prefix = message.prefix; + } + if (message.suffix !== "") { + obj.suffix = message.suffix; + } + if (message.contains !== "") { + obj.contains = message.contains; + } + if (message.notContains !== "") { + obj.notContains = message.notContains; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.wellKnown?.$case === "email") { + obj.email = message.wellKnown.email; + } + if (message.wellKnown?.$case === "hostname") { + obj.hostname = message.wellKnown.hostname; + } + if (message.wellKnown?.$case === "ip") { + obj.ip = message.wellKnown.ip; + } + if (message.wellKnown?.$case === "ipv4") { + obj.ipv4 = message.wellKnown.ipv4; + } + if (message.wellKnown?.$case === "ipv6") { + obj.ipv6 = message.wellKnown.ipv6; + } + if (message.wellKnown?.$case === "uri") { + obj.uri = message.wellKnown.uri; + } + if (message.wellKnown?.$case === "uriRef") { + obj.uriRef = message.wellKnown.uriRef; + } + if (message.wellKnown?.$case === "address") { + obj.address = message.wellKnown.address; + } + if (message.wellKnown?.$case === "uuid") { + obj.uuid = message.wellKnown.uuid; + } + if (message.wellKnown?.$case === "wellKnownRegex") { + obj.wellKnownRegex = knownRegexToJSON(message.wellKnown.wellKnownRegex); + } + if (message.strict === true) { + obj.strict = message.strict; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -1119,45 +1217,48 @@ export const BytesRules = { toJSON(message: BytesRules): unknown { const obj: any = {}; - message.const !== undefined && - (obj.const = base64FromBytes( - message.const !== undefined ? message.const : new Uint8Array(0), - )); - message.len !== undefined && (obj.len = message.len); - message.minLen !== undefined && (obj.minLen = message.minLen); - message.maxLen !== undefined && (obj.maxLen = message.maxLen); - message.pattern !== undefined && (obj.pattern = message.pattern); - message.prefix !== undefined && - (obj.prefix = base64FromBytes( - message.prefix !== undefined ? message.prefix : new Uint8Array(0), - )); - message.suffix !== undefined && - (obj.suffix = base64FromBytes( - message.suffix !== undefined ? message.suffix : new Uint8Array(0), - )); - message.contains !== undefined && - (obj.contains = base64FromBytes( - message.contains !== undefined ? message.contains : new Uint8Array(0), - )); - if (message.in) { - obj.in = message.in.map((e) => - base64FromBytes(e !== undefined ? e : new Uint8Array(0)), - ); - } else { - obj.in = []; + if (message.const.length !== 0) { + obj.const = base64FromBytes(message.const); + } + if (message.len !== "0") { + obj.len = message.len; + } + if (message.minLen !== "0") { + obj.minLen = message.minLen; + } + if (message.maxLen !== "0") { + obj.maxLen = message.maxLen; + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } + if (message.prefix.length !== 0) { + obj.prefix = base64FromBytes(message.prefix); + } + if (message.suffix.length !== 0) { + obj.suffix = base64FromBytes(message.suffix); + } + if (message.contains.length !== 0) { + obj.contains = base64FromBytes(message.contains); + } + if (message.in?.length) { + obj.in = message.in.map((e) => base64FromBytes(e)); + } + if (message.notIn?.length) { + obj.notIn = message.notIn.map((e) => base64FromBytes(e)); + } + if (message.wellKnown?.$case === "ip") { + obj.ip = message.wellKnown.ip; + } + if (message.wellKnown?.$case === "ipv4") { + obj.ipv4 = message.wellKnown.ipv4; + } + if (message.wellKnown?.$case === "ipv6") { + obj.ipv6 = message.wellKnown.ipv6; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => - base64FromBytes(e !== undefined ? e : new Uint8Array(0)), - ); - } else { - obj.notIn = []; - } - message.wellKnown?.$case === "ip" && (obj.ip = message.wellKnown?.ip); - message.wellKnown?.$case === "ipv4" && (obj.ipv4 = message.wellKnown?.ipv4); - message.wellKnown?.$case === "ipv6" && (obj.ipv6 = message.wellKnown?.ipv6); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); return obj; }, }; @@ -1178,18 +1279,17 @@ export const EnumRules = { toJSON(message: EnumRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.definedOnly !== undefined && - (obj.definedOnly = message.definedOnly); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.definedOnly === true) { + obj.definedOnly = message.definedOnly; + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } return obj; }, @@ -1205,8 +1305,12 @@ export const MessageRules = { toJSON(message: MessageRules): unknown { const obj: any = {}; - message.skip !== undefined && (obj.skip = message.skip); - message.required !== undefined && (obj.required = message.required); + if (message.skip === true) { + obj.skip = message.skip; + } + if (message.required === true) { + obj.required = message.required; + } return obj; }, }; @@ -1228,15 +1332,21 @@ export const RepeatedRules = { toJSON(message: RepeatedRules): unknown { const obj: any = {}; - message.minItems !== undefined && (obj.minItems = message.minItems); - message.maxItems !== undefined && (obj.maxItems = message.maxItems); - message.unique !== undefined && (obj.unique = message.unique); - message.items !== undefined && - (obj.items = message.items - ? FieldRules.toJSON(message.items) - : undefined); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.minItems !== "0") { + obj.minItems = message.minItems; + } + if (message.maxItems !== "0") { + obj.maxItems = message.maxItems; + } + if (message.unique === true) { + obj.unique = message.unique; + } + if (message.items !== undefined) { + obj.items = FieldRules.toJSON(message.items); + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -1259,17 +1369,24 @@ export const MapRules = { toJSON(message: MapRules): unknown { const obj: any = {}; - message.minPairs !== undefined && (obj.minPairs = message.minPairs); - message.maxPairs !== undefined && (obj.maxPairs = message.maxPairs); - message.noSparse !== undefined && (obj.noSparse = message.noSparse); - message.keys !== undefined && - (obj.keys = message.keys ? FieldRules.toJSON(message.keys) : undefined); - message.values !== undefined && - (obj.values = message.values - ? FieldRules.toJSON(message.values) - : undefined); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.minPairs !== "0") { + obj.minPairs = message.minPairs; + } + if (message.maxPairs !== "0") { + obj.maxPairs = message.maxPairs; + } + if (message.noSparse === true) { + obj.noSparse = message.noSparse; + } + if (message.keys !== undefined) { + obj.keys = FieldRules.toJSON(message.keys); + } + if (message.values !== undefined) { + obj.values = FieldRules.toJSON(message.values); + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -1287,16 +1404,14 @@ export const AnyRules = { toJSON(message: AnyRules): unknown { const obj: any = {}; - message.required !== undefined && (obj.required = message.required); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; + if (message.required === true) { + obj.required = message.required; + } + if (message.in?.length) { + obj.in = message.in; } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; + if (message.notIn?.length) { + obj.notIn = message.notIn; } return obj; }, @@ -1322,28 +1437,29 @@ export const DurationRules = { toJSON(message: DurationRules): unknown { const obj: any = {}; - message.required !== undefined && (obj.required = message.required); - message.const !== undefined && - (obj.const = message.const ? Duration.toJSON(message.const) : undefined); - message.lt !== undefined && - (obj.lt = message.lt ? Duration.toJSON(message.lt) : undefined); - message.lte !== undefined && - (obj.lte = message.lte ? Duration.toJSON(message.lte) : undefined); - message.gt !== undefined && - (obj.gt = message.gt ? Duration.toJSON(message.gt) : undefined); - message.gte !== undefined && - (obj.gte = message.gte ? Duration.toJSON(message.gte) : undefined); - if (message.in) { - obj.in = message.in.map((e) => (e ? Duration.toJSON(e) : undefined)); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => - e ? Duration.toJSON(e) : undefined, - ); - } else { - obj.notIn = []; + if (message.required === true) { + obj.required = message.required; + } + if (message.const !== undefined) { + obj.const = Duration.toJSON(message.const); + } + if (message.lt !== undefined) { + obj.lt = Duration.toJSON(message.lt); + } + if (message.lte !== undefined) { + obj.lte = Duration.toJSON(message.lte); + } + if (message.gt !== undefined) { + obj.gt = Duration.toJSON(message.gt); + } + if (message.gte !== undefined) { + obj.gte = Duration.toJSON(message.gte); + } + if (message.in?.length) { + obj.in = message.in.map((e) => Duration.toJSON(e)); + } + if (message.notIn?.length) { + obj.notIn = message.notIn.map((e) => Duration.toJSON(e)); } return obj; }, @@ -1368,18 +1484,33 @@ export const TimestampRules = { toJSON(message: TimestampRules): unknown { const obj: any = {}; - message.required !== undefined && (obj.required = message.required); - message.const !== undefined && (obj.const = message.const.toISOString()); - message.lt !== undefined && (obj.lt = message.lt.toISOString()); - message.lte !== undefined && (obj.lte = message.lte.toISOString()); - message.gt !== undefined && (obj.gt = message.gt.toISOString()); - message.gte !== undefined && (obj.gte = message.gte.toISOString()); - message.ltNow !== undefined && (obj.ltNow = message.ltNow); - message.gtNow !== undefined && (obj.gtNow = message.gtNow); - message.within !== undefined && - (obj.within = message.within - ? Duration.toJSON(message.within) - : undefined); + if (message.required === true) { + obj.required = message.required; + } + if (message.const !== undefined) { + obj.const = message.const.toISOString(); + } + if (message.lt !== undefined) { + obj.lt = message.lt.toISOString(); + } + if (message.lte !== undefined) { + obj.lte = message.lte.toISOString(); + } + if (message.gt !== undefined) { + obj.gt = message.gt.toISOString(); + } + if (message.gte !== undefined) { + obj.gte = message.gte.toISOString(); + } + if (message.ltNow === true) { + obj.ltNow = message.ltNow; + } + if (message.gtNow === true) { + obj.gtNow = message.gtNow; + } + if (message.within !== undefined) { + obj.within = Duration.toJSON(message.within); + } return obj; }, }; diff --git a/packages/lite/src/protobuf/cerbos/audit/v1/audit.ts b/packages/lite/src/protobuf/cerbos/audit/v1/audit.ts index 0785ca47..fc257dd0 100644 --- a/packages/lite/src/protobuf/cerbos/audit/v1/audit.ts +++ b/packages/lite/src/protobuf/cerbos/audit/v1/audit.ts @@ -95,20 +95,30 @@ export const AccessLogEntry = { toJSON(message: AccessLogEntry): unknown { const obj: any = {}; - message.callId !== undefined && (obj.callId = message.callId); - message.timestamp !== undefined && - (obj.timestamp = message.timestamp.toISOString()); - message.peer !== undefined && - (obj.peer = message.peer ? Peer.toJSON(message.peer) : undefined); - obj.metadata = {}; + if (message.callId !== "") { + obj.callId = message.callId; + } + if (message.timestamp !== undefined) { + obj.timestamp = message.timestamp.toISOString(); + } + if (message.peer !== undefined) { + obj.peer = Peer.toJSON(message.peer); + } if (message.metadata) { - Object.entries(message.metadata).forEach(([k, v]) => { - obj.metadata[k] = MetaValues.toJSON(v); - }); + const entries = Object.entries(message.metadata); + if (entries.length > 0) { + obj.metadata = {}; + entries.forEach(([k, v]) => { + obj.metadata[k] = MetaValues.toJSON(v); + }); + } + } + if (message.method !== "") { + obj.method = message.method; + } + if (message.statusCode !== 0) { + obj.statusCode = Math.round(message.statusCode); } - message.method !== undefined && (obj.method = message.method); - message.statusCode !== undefined && - (obj.statusCode = Math.round(message.statusCode)); return obj; }, }; @@ -125,11 +135,12 @@ export const AccessLogEntry_MetadataEntry = { toJSON(message: AccessLogEntry_MetadataEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? MetaValues.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = MetaValues.toJSON(message.value); + } return obj; }, }; @@ -178,39 +189,42 @@ export const DecisionLogEntry = { toJSON(message: DecisionLogEntry): unknown { const obj: any = {}; - message.callId !== undefined && (obj.callId = message.callId); - message.timestamp !== undefined && - (obj.timestamp = message.timestamp.toISOString()); - message.peer !== undefined && - (obj.peer = message.peer ? Peer.toJSON(message.peer) : undefined); - if (message.inputs) { - obj.inputs = message.inputs.map((e) => - e ? CheckInput.toJSON(e) : undefined, + if (message.callId !== "") { + obj.callId = message.callId; + } + if (message.timestamp !== undefined) { + obj.timestamp = message.timestamp.toISOString(); + } + if (message.peer !== undefined) { + obj.peer = Peer.toJSON(message.peer); + } + if (message.inputs?.length) { + obj.inputs = message.inputs.map((e) => CheckInput.toJSON(e)); + } + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => CheckOutput.toJSON(e)); + } + if (message.error !== "") { + obj.error = message.error; + } + if (message.method?.$case === "checkResources") { + obj.checkResources = DecisionLogEntry_CheckResources.toJSON( + message.method.checkResources, ); - } else { - obj.inputs = []; } - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? CheckOutput.toJSON(e) : undefined, + if (message.method?.$case === "planResources") { + obj.planResources = DecisionLogEntry_PlanResources.toJSON( + message.method.planResources, ); - } else { - obj.outputs = []; } - message.error !== undefined && (obj.error = message.error); - message.method?.$case === "checkResources" && - (obj.checkResources = message.method?.checkResources - ? DecisionLogEntry_CheckResources.toJSON(message.method?.checkResources) - : undefined); - message.method?.$case === "planResources" && - (obj.planResources = message.method?.planResources - ? DecisionLogEntry_PlanResources.toJSON(message.method?.planResources) - : undefined); - obj.metadata = {}; if (message.metadata) { - Object.entries(message.metadata).forEach(([k, v]) => { - obj.metadata[k] = MetaValues.toJSON(v); - }); + const entries = Object.entries(message.metadata); + if (entries.length > 0) { + obj.metadata = {}; + entries.forEach(([k, v]) => { + obj.metadata[k] = MetaValues.toJSON(v); + }); + } } return obj; }, @@ -231,21 +245,15 @@ export const DecisionLogEntry_CheckResources = { toJSON(message: DecisionLogEntry_CheckResources): unknown { const obj: any = {}; - if (message.inputs) { - obj.inputs = message.inputs.map((e) => - e ? CheckInput.toJSON(e) : undefined, - ); - } else { - obj.inputs = []; + if (message.inputs?.length) { + obj.inputs = message.inputs.map((e) => CheckInput.toJSON(e)); } - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? CheckOutput.toJSON(e) : undefined, - ); - } else { - obj.outputs = []; + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => CheckOutput.toJSON(e)); + } + if (message.error !== "") { + obj.error = message.error; } - message.error !== undefined && (obj.error = message.error); return obj; }, }; @@ -265,15 +273,15 @@ export const DecisionLogEntry_PlanResources = { toJSON(message: DecisionLogEntry_PlanResources): unknown { const obj: any = {}; - message.input !== undefined && - (obj.input = message.input - ? PlanResourcesInput.toJSON(message.input) - : undefined); - message.output !== undefined && - (obj.output = message.output - ? PlanResourcesOutput.toJSON(message.output) - : undefined); - message.error !== undefined && (obj.error = message.error); + if (message.input !== undefined) { + obj.input = PlanResourcesInput.toJSON(message.input); + } + if (message.output !== undefined) { + obj.output = PlanResourcesOutput.toJSON(message.output); + } + if (message.error !== "") { + obj.error = message.error; + } return obj; }, }; @@ -290,11 +298,12 @@ export const DecisionLogEntry_MetadataEntry = { toJSON(message: DecisionLogEntry_MetadataEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? MetaValues.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = MetaValues.toJSON(message.value); + } return obj; }, }; @@ -310,10 +319,8 @@ export const MetaValues = { toJSON(message: MetaValues): unknown { const obj: any = {}; - if (message.values) { - obj.values = message.values.map((e) => e); - } else { - obj.values = []; + if (message.values?.length) { + obj.values = message.values; } return obj; }, @@ -333,11 +340,18 @@ export const Peer = { toJSON(message: Peer): unknown { const obj: any = {}; - message.address !== undefined && (obj.address = message.address); - message.authInfo !== undefined && (obj.authInfo = message.authInfo); - message.userAgent !== undefined && (obj.userAgent = message.userAgent); - message.forwardedFor !== undefined && - (obj.forwardedFor = message.forwardedFor); + if (message.address !== "") { + obj.address = message.address; + } + if (message.authInfo !== "") { + obj.authInfo = message.authInfo; + } + if (message.userAgent !== "") { + obj.userAgent = message.userAgent; + } + if (message.forwardedFor !== "") { + obj.forwardedFor = message.forwardedFor; + } return obj; }, }; diff --git a/packages/lite/src/protobuf/cerbos/engine/v1/engine.ts b/packages/lite/src/protobuf/cerbos/engine/v1/engine.ts index fb6701c2..04d4a2f1 100644 --- a/packages/lite/src/protobuf/cerbos/engine/v1/engine.ts +++ b/packages/lite/src/protobuf/cerbos/engine/v1/engine.ts @@ -197,22 +197,24 @@ export const PlanResourcesInput = { toJSON(message: PlanResourcesInput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - message.resource !== undefined && - (obj.resource = message.resource - ? PlanResourcesInput_Resource.toJSON(message.resource) - : undefined); - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resource !== undefined) { + obj.resource = PlanResourcesInput_Resource.toJSON(message.resource); + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } return obj; }, }; @@ -238,16 +240,24 @@ export const PlanResourcesInput_Resource = { toJSON(message: PlanResourcesInput_Resource): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - obj.attr = {}; + if (message.kind !== "") { + obj.kind = message.kind; + } if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -262,8 +272,12 @@ export const PlanResourcesInput_Resource_AttrEntry = { toJSON(message: PlanResourcesInput_Resource_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -282,12 +296,14 @@ export const PlanResourcesFilter = { toJSON(message: PlanResourcesFilter): unknown { const obj: any = {}; - message.kind !== undefined && - (obj.kind = planResourcesFilter_KindToJSON(message.kind)); - message.condition !== undefined && - (obj.condition = message.condition - ? PlanResourcesFilter_Expression_Operand.toJSON(message.condition) - : undefined); + if (message.kind !== 0) { + obj.kind = planResourcesFilter_KindToJSON(message.kind); + } + if (message.condition !== undefined) { + obj.condition = PlanResourcesFilter_Expression_Operand.toJSON( + message.condition, + ); + } return obj; }, }; @@ -306,13 +322,13 @@ export const PlanResourcesFilter_Expression = { toJSON(message: PlanResourcesFilter_Expression): unknown { const obj: any = {}; - message.operator !== undefined && (obj.operator = message.operator); - if (message.operands) { + if (message.operator !== "") { + obj.operator = message.operator; + } + if (message.operands?.length) { obj.operands = message.operands.map((e) => - e ? PlanResourcesFilter_Expression_Operand.toJSON(e) : undefined, + PlanResourcesFilter_Expression_Operand.toJSON(e), ); - } else { - obj.operands = []; } return obj; }, @@ -338,13 +354,17 @@ export const PlanResourcesFilter_Expression_Operand = { toJSON(message: PlanResourcesFilter_Expression_Operand): unknown { const obj: any = {}; - message.node?.$case === "value" && (obj.value = message.node?.value); - message.node?.$case === "expression" && - (obj.expression = message.node?.expression - ? PlanResourcesFilter_Expression.toJSON(message.node?.expression) - : undefined); - message.node?.$case === "variable" && - (obj.variable = message.node?.variable); + if (message.node?.$case === "value") { + obj.value = message.node.value; + } + if (message.node?.$case === "expression") { + obj.expression = PlanResourcesFilter_Expression.toJSON( + message.node.expression, + ); + } + if (message.node?.$case === "variable") { + obj.variable = message.node.variable; + } return obj; }, }; @@ -371,24 +391,31 @@ export const PlanResourcesOutput = { toJSON(message: PlanResourcesOutput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.scope !== undefined && (obj.scope = message.scope); - message.filter !== undefined && - (obj.filter = message.filter - ? PlanResourcesFilter.toJSON(message.filter) - : undefined); - message.filterDebug !== undefined && - (obj.filterDebug = message.filterDebug); - if (message.validationErrors) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.scope !== "") { + obj.scope = message.scope; + } + if (message.filter !== undefined) { + obj.filter = PlanResourcesFilter.toJSON(message.filter); + } + if (message.filterDebug !== "") { + obj.filterDebug = message.filterDebug; + } + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -415,24 +442,21 @@ export const CheckInput = { toJSON(message: CheckInput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.resource !== undefined && - (obj.resource = message.resource - ? Resource.toJSON(message.resource) - : undefined); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.resource !== undefined) { + obj.resource = Resource.toJSON(message.resource); + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -464,32 +488,31 @@ export const CheckOutput = { toJSON(message: CheckOutput): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.resourceId !== undefined && (obj.resourceId = message.resourceId); - obj.actions = {}; + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.resourceId !== "") { + obj.resourceId = message.resourceId; + } if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = CheckOutput_ActionEffect.toJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = CheckOutput_ActionEffect.toJSON(v); + }); + } } - if (message.effectiveDerivedRoles) { - obj.effectiveDerivedRoles = message.effectiveDerivedRoles.map((e) => e); - } else { - obj.effectiveDerivedRoles = []; + if (message.effectiveDerivedRoles?.length) { + obj.effectiveDerivedRoles = message.effectiveDerivedRoles; } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? OutputEntry.toJSON(e) : undefined, - ); - } else { - obj.outputs = []; + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => OutputEntry.toJSON(e)); } return obj; }, @@ -506,9 +529,15 @@ export const CheckOutput_ActionEffect = { toJSON(message: CheckOutput_ActionEffect): unknown { const obj: any = {}; - message.effect !== undefined && (obj.effect = effectToJSON(message.effect)); - message.policy !== undefined && (obj.policy = message.policy); - message.scope !== undefined && (obj.scope = message.scope); + if (message.effect !== 0) { + obj.effect = effectToJSON(message.effect); + } + if (message.policy !== "") { + obj.policy = message.policy; + } + if (message.scope !== "") { + obj.scope = message.scope; + } return obj; }, }; @@ -525,11 +554,12 @@ export const CheckOutput_ActionsEntry = { toJSON(message: CheckOutput_ActionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckOutput_ActionEffect.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckOutput_ActionEffect.toJSON(message.value); + } return obj; }, }; @@ -544,8 +574,12 @@ export const OutputEntry = { toJSON(message: OutputEntry): unknown { const obj: any = {}; - message.src !== undefined && (obj.src = message.src); - message.val !== undefined && (obj.val = message.val); + if (message.src !== "") { + obj.src = message.src; + } + if (message.val !== undefined) { + obj.val = message.val; + } return obj; }, }; @@ -572,17 +606,27 @@ export const Resource = { toJSON(message: Resource): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.id !== undefined && (obj.id = message.id); - obj.attr = {}; + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.id !== "") { + obj.id = message.id; + } if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -597,8 +641,12 @@ export const Resource_AttrEntry = { toJSON(message: Resource_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -627,21 +675,27 @@ export const Principal = { toJSON(message: Principal): unknown { const obj: any = {}; - message.id !== undefined && (obj.id = message.id); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - if (message.roles) { - obj.roles = message.roles.map((e) => e); - } else { - obj.roles = []; - } - obj.attr = {}; + if (message.id !== "") { + obj.id = message.id; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.roles?.length) { + obj.roles = message.roles; + } if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -656,8 +710,12 @@ export const Principal_AttrEntry = { toJSON(message: Principal_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -679,11 +737,14 @@ export const AuxData = { toJSON(message: AuxData): unknown { const obj: any = {}; - obj.jwt = {}; if (message.jwt) { - Object.entries(message.jwt).forEach(([k, v]) => { - obj.jwt[k] = v; - }); + const entries = Object.entries(message.jwt); + if (entries.length > 0) { + obj.jwt = {}; + entries.forEach(([k, v]) => { + obj.jwt[k] = v; + }); + } } return obj; }, @@ -699,8 +760,12 @@ export const AuxData_JwtEntry = { toJSON(message: AuxData_JwtEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; diff --git a/packages/lite/src/protobuf/cerbos/policy/v1/policy.ts b/packages/lite/src/protobuf/cerbos/policy/v1/policy.ts index f1ac0b82..0d4aa309 100644 --- a/packages/lite/src/protobuf/cerbos/policy/v1/policy.ts +++ b/packages/lite/src/protobuf/cerbos/policy/v1/policy.ts @@ -12,8 +12,10 @@ export interface Policy { | { $case: "resourcePolicy"; resourcePolicy: ResourcePolicy } | { $case: "principalPolicy"; principalPolicy: PrincipalPolicy } | { $case: "derivedRoles"; derivedRoles: DerivedRoles } + | { $case: "exportVariables"; exportVariables: ExportVariables } | undefined; variables: { [key: string]: string }; + jsonSchema: string; } export interface Policy_VariablesEntry { @@ -41,6 +43,7 @@ export interface ResourcePolicy { rules: ResourceRule[]; scope: string; schemas: Schemas | undefined; + variables: Variables | undefined; } export interface ResourceRule { @@ -58,6 +61,7 @@ export interface PrincipalPolicy { version: string; rules: PrincipalRule[]; scope: string; + variables: Variables | undefined; } export interface PrincipalRule { @@ -76,6 +80,7 @@ export interface PrincipalRule_Action { export interface DerivedRoles { name: string; definitions: RoleDef[]; + variables: Variables | undefined; } export interface RoleDef { @@ -84,6 +89,26 @@ export interface RoleDef { condition: Condition | 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 } @@ -146,6 +171,11 @@ export const Policy = { $case: "derivedRoles", derivedRoles: DerivedRoles.fromJSON(object.derivedRoles), } + : isSet(object.exportVariables) + ? { + $case: "exportVariables", + exportVariables: ExportVariables.fromJSON(object.exportVariables), + } : undefined, variables: isObject(object.variables) ? Object.entries(object.variables).reduce<{ [key: string]: string }>( @@ -156,36 +186,53 @@ export const Policy = { {}, ) : {}, + jsonSchema: isSet(object.$schema) ? String(object.$schema) : "", }; }, toJSON(message: Policy): unknown { const obj: any = {}; - message.apiVersion !== undefined && (obj.apiVersion = message.apiVersion); - message.disabled !== undefined && (obj.disabled = message.disabled); - message.description !== undefined && - (obj.description = message.description); - message.metadata !== undefined && - (obj.metadata = message.metadata - ? Metadata.toJSON(message.metadata) - : undefined); - message.policyType?.$case === "resourcePolicy" && - (obj.resourcePolicy = message.policyType?.resourcePolicy - ? ResourcePolicy.toJSON(message.policyType?.resourcePolicy) - : undefined); - message.policyType?.$case === "principalPolicy" && - (obj.principalPolicy = message.policyType?.principalPolicy - ? PrincipalPolicy.toJSON(message.policyType?.principalPolicy) - : undefined); - message.policyType?.$case === "derivedRoles" && - (obj.derivedRoles = message.policyType?.derivedRoles - ? DerivedRoles.toJSON(message.policyType?.derivedRoles) - : undefined); - obj.variables = {}; + if (message.apiVersion !== "") { + obj.apiVersion = message.apiVersion; + } + if (message.disabled === true) { + obj.disabled = message.disabled; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.metadata !== undefined) { + obj.metadata = Metadata.toJSON(message.metadata); + } + if (message.policyType?.$case === "resourcePolicy") { + obj.resourcePolicy = ResourcePolicy.toJSON( + message.policyType.resourcePolicy, + ); + } + if (message.policyType?.$case === "principalPolicy") { + obj.principalPolicy = PrincipalPolicy.toJSON( + message.policyType.principalPolicy, + ); + } + if (message.policyType?.$case === "derivedRoles") { + obj.derivedRoles = DerivedRoles.toJSON(message.policyType.derivedRoles); + } + if (message.policyType?.$case === "exportVariables") { + obj.exportVariables = ExportVariables.toJSON( + message.policyType.exportVariables, + ); + } if (message.variables) { - Object.entries(message.variables).forEach(([k, v]) => { - obj.variables[k] = v; - }); + const entries = Object.entries(message.variables); + if (entries.length > 0) { + obj.variables = {}; + entries.forEach(([k, v]) => { + obj.variables[k] = v; + }); + } + } + if (message.jsonSchema !== "") { + obj.$schema = message.jsonSchema; } return obj; }, @@ -201,8 +248,12 @@ export const Policy_VariablesEntry = { toJSON(message: Policy_VariablesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -232,18 +283,27 @@ export const Metadata = { toJSON(message: Metadata): unknown { const obj: any = {}; - message.sourceFile !== undefined && (obj.sourceFile = message.sourceFile); - obj.annotations = {}; + if (message.sourceFile !== "") { + obj.sourceFile = message.sourceFile; + } if (message.annotations) { - Object.entries(message.annotations).forEach(([k, v]) => { - obj.annotations[k] = v; - }); - } - message.hash !== undefined && (obj.hash = message.hash); - message.storeIdentifer !== undefined && - (obj.storeIdentifer = message.storeIdentifer); - message.storeIdentifier !== undefined && - (obj.storeIdentifier = message.storeIdentifier); + const entries = Object.entries(message.annotations); + if (entries.length > 0) { + obj.annotations = {}; + entries.forEach(([k, v]) => { + obj.annotations[k] = v; + }); + } + } + if (message.hash !== undefined) { + obj.hash = message.hash; + } + if (message.storeIdentifer !== "") { + obj.storeIdentifer = message.storeIdentifer; + } + if (message.storeIdentifier !== "") { + obj.storeIdentifier = message.storeIdentifier; + } return obj; }, }; @@ -258,8 +318,12 @@ export const Metadata_AnnotationsEntry = { toJSON(message: Metadata_AnnotationsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -279,30 +343,35 @@ export const ResourcePolicy = { schemas: isSet(object.schemas) ? Schemas.fromJSON(object.schemas) : undefined, + variables: isSet(object.variables) + ? Variables.fromJSON(object.variables) + : undefined, }; }, toJSON(message: ResourcePolicy): unknown { const obj: any = {}; - message.resource !== undefined && (obj.resource = message.resource); - message.version !== undefined && (obj.version = message.version); - if (message.importDerivedRoles) { - obj.importDerivedRoles = message.importDerivedRoles.map((e) => e); - } else { - obj.importDerivedRoles = []; - } - if (message.rules) { - obj.rules = message.rules.map((e) => - e ? ResourceRule.toJSON(e) : undefined, - ); - } else { - obj.rules = []; - } - message.scope !== undefined && (obj.scope = message.scope); - message.schemas !== undefined && - (obj.schemas = message.schemas - ? Schemas.toJSON(message.schemas) - : undefined); + if (message.resource !== "") { + obj.resource = message.resource; + } + if (message.version !== "") { + obj.version = message.version; + } + if (message.importDerivedRoles?.length) { + obj.importDerivedRoles = message.importDerivedRoles; + } + if (message.rules?.length) { + obj.rules = message.rules.map((e) => ResourceRule.toJSON(e)); + } + if (message.scope !== "") { + obj.scope = message.scope; + } + if (message.schemas !== undefined) { + obj.schemas = Schemas.toJSON(message.schemas); + } + if (message.variables !== undefined) { + obj.variables = Variables.toJSON(message.variables); + } return obj; }, }; @@ -330,29 +399,27 @@ export const ResourceRule = { toJSON(message: ResourceRule): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - if (message.derivedRoles) { - obj.derivedRoles = message.derivedRoles.map((e) => e); - } else { - obj.derivedRoles = []; - } - if (message.roles) { - obj.roles = message.roles.map((e) => e); - } else { - obj.roles = []; - } - message.condition !== undefined && - (obj.condition = message.condition - ? Condition.toJSON(message.condition) - : undefined); - message.effect !== undefined && (obj.effect = effectToJSON(message.effect)); - message.name !== undefined && (obj.name = message.name); - message.output !== undefined && - (obj.output = message.output ? Output.toJSON(message.output) : undefined); + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.derivedRoles?.length) { + obj.derivedRoles = message.derivedRoles; + } + if (message.roles?.length) { + obj.roles = message.roles; + } + if (message.condition !== undefined) { + obj.condition = Condition.toJSON(message.condition); + } + if (message.effect !== 0) { + obj.effect = effectToJSON(message.effect); + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.output !== undefined) { + obj.output = Output.toJSON(message.output); + } return obj; }, }; @@ -366,21 +433,29 @@ export const PrincipalPolicy = { ? object.rules.map((e: any) => PrincipalRule.fromJSON(e)) : [], scope: isSet(object.scope) ? String(object.scope) : "", + variables: isSet(object.variables) + ? Variables.fromJSON(object.variables) + : undefined, }; }, toJSON(message: PrincipalPolicy): unknown { const obj: any = {}; - message.principal !== undefined && (obj.principal = message.principal); - message.version !== undefined && (obj.version = message.version); - if (message.rules) { - obj.rules = message.rules.map((e) => - e ? PrincipalRule.toJSON(e) : undefined, - ); - } else { - obj.rules = []; + if (message.principal !== "") { + obj.principal = message.principal; + } + if (message.version !== "") { + obj.version = message.version; + } + if (message.rules?.length) { + obj.rules = message.rules.map((e) => PrincipalRule.toJSON(e)); + } + if (message.scope !== "") { + obj.scope = message.scope; + } + if (message.variables !== undefined) { + obj.variables = Variables.toJSON(message.variables); } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -397,13 +472,11 @@ export const PrincipalRule = { toJSON(message: PrincipalRule): unknown { const obj: any = {}; - message.resource !== undefined && (obj.resource = message.resource); - if (message.actions) { - obj.actions = message.actions.map((e) => - e ? PrincipalRule_Action.toJSON(e) : undefined, - ); - } else { - obj.actions = []; + if (message.resource !== "") { + obj.resource = message.resource; + } + if (message.actions?.length) { + obj.actions = message.actions.map((e) => PrincipalRule_Action.toJSON(e)); } return obj; }, @@ -424,15 +497,21 @@ export const PrincipalRule_Action = { toJSON(message: PrincipalRule_Action): unknown { const obj: any = {}; - message.action !== undefined && (obj.action = message.action); - message.condition !== undefined && - (obj.condition = message.condition - ? Condition.toJSON(message.condition) - : undefined); - message.effect !== undefined && (obj.effect = effectToJSON(message.effect)); - message.name !== undefined && (obj.name = message.name); - message.output !== undefined && - (obj.output = message.output ? Output.toJSON(message.output) : undefined); + if (message.action !== "") { + obj.action = message.action; + } + if (message.condition !== undefined) { + obj.condition = Condition.toJSON(message.condition); + } + if (message.effect !== 0) { + obj.effect = effectToJSON(message.effect); + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.output !== undefined) { + obj.output = Output.toJSON(message.output); + } return obj; }, }; @@ -444,18 +523,22 @@ export const DerivedRoles = { definitions: Array.isArray(object?.definitions) ? object.definitions.map((e: any) => RoleDef.fromJSON(e)) : [], + variables: isSet(object.variables) + ? Variables.fromJSON(object.variables) + : undefined, }; }, toJSON(message: DerivedRoles): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - if (message.definitions) { - obj.definitions = message.definitions.map((e) => - e ? RoleDef.toJSON(e) : undefined, - ); - } else { - obj.definitions = []; + if (message.name !== "") { + obj.name = message.name; + } + if (message.definitions?.length) { + obj.definitions = message.definitions.map((e) => RoleDef.toJSON(e)); + } + if (message.variables !== undefined) { + obj.variables = Variables.toJSON(message.variables); } return obj; }, @@ -476,16 +559,125 @@ export const RoleDef = { toJSON(message: RoleDef): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - if (message.parentRoles) { - obj.parentRoles = message.parentRoles.map((e) => e); - } else { - obj.parentRoles = []; - } - message.condition !== undefined && - (obj.condition = message.condition - ? Condition.toJSON(message.condition) - : undefined); + if (message.name !== "") { + obj.name = message.name; + } + if (message.parentRoles?.length) { + obj.parentRoles = message.parentRoles; + } + if (message.condition !== undefined) { + obj.condition = Condition.toJSON(message.condition); + } + return obj; + }, +}; + +export const ExportVariables = { + fromJSON(object: any): ExportVariables { + return { + name: isSet(object.name) ? String(object.name) : "", + definitions: isObject(object.definitions) + ? Object.entries(object.definitions).reduce<{ [key: string]: string }>( + (acc, [key, value]) => { + acc[key] = String(value); + return acc; + }, + {}, + ) + : {}, + }; + }, + + toJSON(message: ExportVariables): unknown { + const obj: any = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.definitions) { + const entries = Object.entries(message.definitions); + if (entries.length > 0) { + obj.definitions = {}; + entries.forEach(([k, v]) => { + obj.definitions[k] = v; + }); + } + } + return obj; + }, +}; + +export const ExportVariables_DefinitionsEntry = { + fromJSON(object: any): ExportVariables_DefinitionsEntry { + return { + key: isSet(object.key) ? String(object.key) : "", + value: isSet(object.value) ? String(object.value) : "", + }; + }, + + toJSON(message: ExportVariables_DefinitionsEntry): unknown { + const obj: any = {}; + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } + return obj; + }, +}; + +export const Variables = { + fromJSON(object: any): Variables { + return { + import: Array.isArray(object?.import) + ? object.import.map((e: any) => String(e)) + : [], + local: isObject(object.local) + ? Object.entries(object.local).reduce<{ [key: string]: string }>( + (acc, [key, value]) => { + acc[key] = String(value); + return acc; + }, + {}, + ) + : {}, + }; + }, + + toJSON(message: Variables): unknown { + const obj: any = {}; + if (message.import?.length > 0) { + obj.import = message.import; + } + if (message.local) { + const entries = Object.entries(message.local); + if (entries.length > 0) { + obj.local = {}; + entries.forEach(([k, v]) => { + obj.local[k] = v; + }); + } + } + return obj; + }, +}; + +export const Variables_LocalEntry = { + fromJSON(object: any): Variables_LocalEntry { + return { + key: isSet(object.key) ? String(object.key) : "", + value: isSet(object.value) ? String(object.value) : "", + }; + }, + + toJSON(message: Variables_LocalEntry): unknown { + const obj: any = {}; + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -503,12 +695,12 @@ export const Condition = { toJSON(message: Condition): unknown { const obj: any = {}; - message.condition?.$case === "match" && - (obj.match = message.condition?.match - ? Match.toJSON(message.condition?.match) - : undefined); - message.condition?.$case === "script" && - (obj.script = message.condition?.script); + if (message.condition?.$case === "match") { + obj.match = Match.toJSON(message.condition.match); + } + if (message.condition?.$case === "script") { + obj.script = message.condition.script; + } return obj; }, }; @@ -530,19 +722,18 @@ export const Match = { toJSON(message: Match): unknown { const obj: any = {}; - message.op?.$case === "all" && - (obj.all = message.op?.all - ? Match_ExprList.toJSON(message.op?.all) - : undefined); - message.op?.$case === "any" && - (obj.any = message.op?.any - ? Match_ExprList.toJSON(message.op?.any) - : undefined); - message.op?.$case === "none" && - (obj.none = message.op?.none - ? Match_ExprList.toJSON(message.op?.none) - : undefined); - message.op?.$case === "expr" && (obj.expr = message.op?.expr); + if (message.op?.$case === "all") { + obj.all = Match_ExprList.toJSON(message.op.all); + } + if (message.op?.$case === "any") { + obj.any = Match_ExprList.toJSON(message.op.any); + } + if (message.op?.$case === "none") { + obj.none = Match_ExprList.toJSON(message.op.none); + } + if (message.op?.$case === "expr") { + obj.expr = message.op.expr; + } return obj; }, }; @@ -558,10 +749,8 @@ export const Match_ExprList = { toJSON(message: Match_ExprList): unknown { const obj: any = {}; - if (message.of) { - obj.of = message.of.map((e) => (e ? Match.toJSON(e) : undefined)); - } else { - obj.of = []; + if (message.of?.length) { + obj.of = message.of.map((e) => Match.toJSON(e)); } return obj; }, @@ -574,7 +763,9 @@ export const Output = { toJSON(message: Output): unknown { const obj: any = {}; - message.expr !== undefined && (obj.expr = message.expr); + if (message.expr !== "") { + obj.expr = message.expr; + } return obj; }, }; @@ -593,14 +784,12 @@ export const Schemas = { toJSON(message: Schemas): unknown { const obj: any = {}; - message.principalSchema !== undefined && - (obj.principalSchema = message.principalSchema - ? Schemas_Schema.toJSON(message.principalSchema) - : undefined); - message.resourceSchema !== undefined && - (obj.resourceSchema = message.resourceSchema - ? Schemas_Schema.toJSON(message.resourceSchema) - : undefined); + if (message.principalSchema !== undefined) { + obj.principalSchema = Schemas_Schema.toJSON(message.principalSchema); + } + if (message.resourceSchema !== undefined) { + obj.resourceSchema = Schemas_Schema.toJSON(message.resourceSchema); + } return obj; }, }; @@ -616,10 +805,8 @@ export const Schemas_IgnoreWhen = { toJSON(message: Schemas_IgnoreWhen): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; + if (message.actions?.length) { + obj.actions = message.actions; } return obj; }, @@ -637,11 +824,12 @@ export const Schemas_Schema = { toJSON(message: Schemas_Schema): unknown { const obj: any = {}; - message.ref !== undefined && (obj.ref = message.ref); - message.ignoreWhen !== undefined && - (obj.ignoreWhen = message.ignoreWhen - ? Schemas_IgnoreWhen.toJSON(message.ignoreWhen) - : undefined); + if (message.ref !== "") { + obj.ref = message.ref; + } + if (message.ignoreWhen !== undefined) { + obj.ignoreWhen = Schemas_IgnoreWhen.toJSON(message.ignoreWhen); + } return obj; }, }; diff --git a/packages/lite/src/protobuf/cerbos/request/v1/request.ts b/packages/lite/src/protobuf/cerbos/request/v1/request.ts index 1bef3d4c..6b7d4c56 100644 --- a/packages/lite/src/protobuf/cerbos/request/v1/request.ts +++ b/packages/lite/src/protobuf/cerbos/request/v1/request.ts @@ -211,22 +211,24 @@ export const PlanResourcesRequest = { toJSON(message: PlanResourcesRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - message.resource !== undefined && - (obj.resource = message.resource - ? PlanResourcesInput_Resource.toJSON(message.resource) - : undefined); - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resource !== undefined) { + obj.resource = PlanResourcesInput_Resource.toJSON(message.resource); + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } return obj; }, }; @@ -255,26 +257,24 @@ export const CheckResourceSetRequest = { toJSON(message: CheckResourceSetRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - message.resource !== undefined && - (obj.resource = message.resource - ? ResourceSet.toJSON(message.resource) - : undefined); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resource !== undefined) { + obj.resource = ResourceSet.toJSON(message.resource); + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -300,16 +300,24 @@ export const ResourceSet = { toJSON(message: ResourceSet): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - obj.instances = {}; + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } if (message.instances) { - Object.entries(message.instances).forEach(([k, v]) => { - obj.instances[k] = AttributesMap.toJSON(v); - }); + const entries = Object.entries(message.instances); + if (entries.length > 0) { + obj.instances = {}; + entries.forEach(([k, v]) => { + obj.instances[k] = AttributesMap.toJSON(v); + }); + } + } + if (message.scope !== "") { + obj.scope = message.scope; } - message.scope !== undefined && (obj.scope = message.scope); return obj; }, }; @@ -326,11 +334,12 @@ export const ResourceSet_InstancesEntry = { toJSON(message: ResourceSet_InstancesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? AttributesMap.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = AttributesMap.toJSON(message.value); + } return obj; }, }; @@ -351,11 +360,14 @@ export const AttributesMap = { toJSON(message: AttributesMap): unknown { const obj: any = {}; - obj.attr = {}; if (message.attr) { - Object.entries(message.attr).forEach(([k, v]) => { - obj.attr[k] = v; - }); + const entries = Object.entries(message.attr); + if (entries.length > 0) { + obj.attr = {}; + entries.forEach(([k, v]) => { + obj.attr[k] = v; + }); + } } return obj; }, @@ -371,8 +383,12 @@ export const AttributesMap_AttrEntry = { toJSON(message: AttributesMap_AttrEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -397,22 +413,20 @@ export const CheckResourceBatchRequest = { toJSON(message: CheckResourceBatchRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - if (message.resources) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resources?.length) { obj.resources = message.resources.map((e) => - e ? CheckResourceBatchRequest_BatchEntry.toJSON(e) : undefined, + CheckResourceBatchRequest_BatchEntry.toJSON(e), ); - } else { - obj.resources = []; } - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -431,15 +445,12 @@ export const CheckResourceBatchRequest_BatchEntry = { toJSON(message: CheckResourceBatchRequest_BatchEntry): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.resource !== undefined && - (obj.resource = message.resource - ? Resource.toJSON(message.resource) - : undefined); + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.resource !== undefined) { + obj.resource = Resource.toJSON(message.resource); + } return obj; }, }; @@ -467,24 +478,23 @@ export const CheckResourcesRequest = { toJSON(message: CheckResourcesRequest): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.includeMeta !== undefined && - (obj.includeMeta = message.includeMeta); - message.principal !== undefined && - (obj.principal = message.principal - ? Principal.toJSON(message.principal) - : undefined); - if (message.resources) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.includeMeta === true) { + obj.includeMeta = message.includeMeta; + } + if (message.principal !== undefined) { + obj.principal = Principal.toJSON(message.principal); + } + if (message.resources?.length) { obj.resources = message.resources.map((e) => - e ? CheckResourcesRequest_ResourceEntry.toJSON(e) : undefined, + CheckResourcesRequest_ResourceEntry.toJSON(e), ); - } else { - obj.resources = []; } - message.auxData !== undefined && - (obj.auxData = message.auxData - ? AuxData.toJSON(message.auxData) - : undefined); + if (message.auxData !== undefined) { + obj.auxData = AuxData.toJSON(message.auxData); + } return obj; }, }; @@ -503,15 +513,12 @@ export const CheckResourcesRequest_ResourceEntry = { toJSON(message: CheckResourcesRequest_ResourceEntry): unknown { const obj: any = {}; - if (message.actions) { - obj.actions = message.actions.map((e) => e); - } else { - obj.actions = []; - } - message.resource !== undefined && - (obj.resource = message.resource - ? Resource.toJSON(message.resource) - : undefined); + if (message.actions?.length) { + obj.actions = message.actions; + } + if (message.resource !== undefined) { + obj.resource = Resource.toJSON(message.resource); + } return obj; }, }; @@ -525,8 +532,9 @@ export const AuxData = { toJSON(message: AuxData): unknown { const obj: any = {}; - message.jwt !== undefined && - (obj.jwt = message.jwt ? AuxData_JWT.toJSON(message.jwt) : undefined); + if (message.jwt !== undefined) { + obj.jwt = AuxData_JWT.toJSON(message.jwt); + } return obj; }, }; @@ -541,8 +549,12 @@ export const AuxData_JWT = { toJSON(message: AuxData_JWT): unknown { const obj: any = {}; - message.token !== undefined && (obj.token = message.token); - message.keySetId !== undefined && (obj.keySetId = message.keySetId); + if (message.token !== "") { + obj.token = message.token; + } + if (message.keySetId !== "") { + obj.keySetId = message.keySetId; + } return obj; }, }; @@ -558,12 +570,8 @@ export const AddOrUpdatePolicyRequest = { toJSON(message: AddOrUpdatePolicyRequest): unknown { const obj: any = {}; - if (message.policies) { - obj.policies = message.policies.map((e) => - e ? Policy.toJSON(e) : undefined, - ); - } else { - obj.policies = []; + if (message.policies?.length) { + obj.policies = message.policies.map((e) => Policy.toJSON(e)); } return obj; }, @@ -594,19 +602,23 @@ export const ListAuditLogEntriesRequest = { toJSON(message: ListAuditLogEntriesRequest): unknown { const obj: any = {}; - message.kind !== undefined && - (obj.kind = listAuditLogEntriesRequest_KindToJSON(message.kind)); - message.filter?.$case === "tail" && - (obj.tail = Math.round(message.filter?.tail)); - message.filter?.$case === "between" && - (obj.between = message.filter?.between - ? ListAuditLogEntriesRequest_TimeRange.toJSON(message.filter?.between) - : undefined); - message.filter?.$case === "since" && - (obj.since = message.filter?.since - ? Duration.toJSON(message.filter?.since) - : undefined); - message.filter?.$case === "lookup" && (obj.lookup = message.filter?.lookup); + if (message.kind !== 0) { + obj.kind = listAuditLogEntriesRequest_KindToJSON(message.kind); + } + if (message.filter?.$case === "tail") { + obj.tail = Math.round(message.filter.tail); + } + if (message.filter?.$case === "between") { + obj.between = ListAuditLogEntriesRequest_TimeRange.toJSON( + message.filter.between, + ); + } + if (message.filter?.$case === "since") { + obj.since = Duration.toJSON(message.filter.since); + } + if (message.filter?.$case === "lookup") { + obj.lookup = message.filter.lookup; + } return obj; }, }; @@ -621,8 +633,12 @@ export const ListAuditLogEntriesRequest_TimeRange = { toJSON(message: ListAuditLogEntriesRequest_TimeRange): unknown { const obj: any = {}; - message.start !== undefined && (obj.start = message.start.toISOString()); - message.end !== undefined && (obj.end = message.end.toISOString()); + if (message.start !== undefined) { + obj.start = message.start.toISOString(); + } + if (message.end !== undefined) { + obj.end = message.end.toISOString(); + } return obj; }, }; @@ -654,13 +670,18 @@ export const ListPoliciesRequest = { toJSON(message: ListPoliciesRequest): unknown { const obj: any = {}; - message.includeDisabled !== undefined && - (obj.includeDisabled = message.includeDisabled); - message.nameRegexp !== undefined && (obj.nameRegexp = message.nameRegexp); - message.scopeRegexp !== undefined && - (obj.scopeRegexp = message.scopeRegexp); - message.versionRegexp !== undefined && - (obj.versionRegexp = message.versionRegexp); + if (message.includeDisabled === true) { + obj.includeDisabled = message.includeDisabled; + } + if (message.nameRegexp !== "") { + obj.nameRegexp = message.nameRegexp; + } + if (message.scopeRegexp !== "") { + obj.scopeRegexp = message.scopeRegexp; + } + if (message.versionRegexp !== "") { + obj.versionRegexp = message.versionRegexp; + } return obj; }, }; @@ -674,10 +695,8 @@ export const GetPolicyRequest = { toJSON(message: GetPolicyRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -692,10 +711,8 @@ export const DisablePolicyRequest = { toJSON(message: DisablePolicyRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -710,10 +727,8 @@ export const EnablePolicyRequest = { toJSON(message: EnablePolicyRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -730,12 +745,8 @@ export const AddOrUpdateSchemaRequest = { toJSON(message: AddOrUpdateSchemaRequest): unknown { const obj: any = {}; - if (message.schemas) { - obj.schemas = message.schemas.map((e) => - e ? Schema.toJSON(e) : undefined, - ); - } else { - obj.schemas = []; + if (message.schemas?.length) { + obj.schemas = message.schemas.map((e) => Schema.toJSON(e)); } return obj; }, @@ -761,10 +772,8 @@ export const GetSchemaRequest = { toJSON(message: GetSchemaRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -779,10 +788,8 @@ export const DeleteSchemaRequest = { toJSON(message: DeleteSchemaRequest): unknown { const obj: any = {}; - if (message.id) { - obj.id = message.id.map((e) => e); - } else { - obj.id = []; + if (message.id?.length) { + obj.id = message.id; } return obj; }, @@ -795,7 +802,9 @@ export const ReloadStoreRequest = { toJSON(message: ReloadStoreRequest): unknown { const obj: any = {}; - message.wait !== undefined && (obj.wait = message.wait); + if (message.wait === true) { + obj.wait = message.wait; + } return obj; }, }; diff --git a/packages/lite/src/protobuf/cerbos/response/v1/response.ts b/packages/lite/src/protobuf/cerbos/response/v1/response.ts index 93ff82e5..41e9902f 100644 --- a/packages/lite/src/protobuf/cerbos/response/v1/response.ts +++ b/packages/lite/src/protobuf/cerbos/response/v1/response.ts @@ -207,26 +207,28 @@ export const PlanResourcesResponse = { toJSON(message: PlanResourcesResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - message.action !== undefined && (obj.action = message.action); - message.resourceKind !== undefined && - (obj.resourceKind = message.resourceKind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.filter !== undefined && - (obj.filter = message.filter - ? PlanResourcesFilter.toJSON(message.filter) - : undefined); - message.meta !== undefined && - (obj.meta = message.meta - ? PlanResourcesResponse_Meta.toJSON(message.meta) - : undefined); - if (message.validationErrors) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.action !== "") { + obj.action = message.action; + } + if (message.resourceKind !== "") { + obj.resourceKind = message.resourceKind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.filter !== undefined) { + obj.filter = PlanResourcesFilter.toJSON(message.filter); + } + if (message.meta !== undefined) { + obj.meta = PlanResourcesResponse_Meta.toJSON(message.meta); + } + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -244,10 +246,12 @@ export const PlanResourcesResponse_Meta = { toJSON(message: PlanResourcesResponse_Meta): unknown { const obj: any = {}; - message.filterDebug !== undefined && - (obj.filterDebug = message.filterDebug); - message.matchedScope !== undefined && - (obj.matchedScope = message.matchedScope); + if (message.filterDebug !== "") { + obj.filterDebug = message.filterDebug; + } + if (message.matchedScope !== "") { + obj.matchedScope = message.matchedScope; + } return obj; }, }; @@ -272,18 +276,22 @@ export const CheckResourceSetResponse = { toJSON(message: CheckResourceSetResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - obj.resourceInstances = {}; + if (message.requestId !== "") { + obj.requestId = message.requestId; + } if (message.resourceInstances) { - Object.entries(message.resourceInstances).forEach(([k, v]) => { - obj.resourceInstances[k] = - CheckResourceSetResponse_ActionEffectMap.toJSON(v); - }); - } - message.meta !== undefined && - (obj.meta = message.meta - ? CheckResourceSetResponse_Meta.toJSON(message.meta) - : undefined); + const entries = Object.entries(message.resourceInstances); + if (entries.length > 0) { + obj.resourceInstances = {}; + entries.forEach(([k, v]) => { + obj.resourceInstances[k] = + CheckResourceSetResponse_ActionEffectMap.toJSON(v); + }); + } + } + if (message.meta !== undefined) { + obj.meta = CheckResourceSetResponse_Meta.toJSON(message.meta); + } return obj; }, }; @@ -308,18 +316,19 @@ export const CheckResourceSetResponse_ActionEffectMap = { toJSON(message: CheckResourceSetResponse_ActionEffectMap): unknown { const obj: any = {}; - obj.actions = {}; if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = effectToJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = effectToJSON(v); + }); + } } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -337,8 +346,12 @@ export const CheckResourceSetResponse_ActionEffectMap_ActionsEntry = { message: CheckResourceSetResponse_ActionEffectMap_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = effectToJSON(message.value)); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== 0) { + obj.value = effectToJSON(message.value); + } return obj; }, }; @@ -359,12 +372,15 @@ export const CheckResourceSetResponse_Meta = { toJSON(message: CheckResourceSetResponse_Meta): unknown { const obj: any = {}; - obj.resourceInstances = {}; if (message.resourceInstances) { - Object.entries(message.resourceInstances).forEach(([k, v]) => { - obj.resourceInstances[k] = - CheckResourceSetResponse_Meta_ActionMeta.toJSON(v); - }); + const entries = Object.entries(message.resourceInstances); + if (entries.length > 0) { + obj.resourceInstances = {}; + entries.forEach(([k, v]) => { + obj.resourceInstances[k] = + CheckResourceSetResponse_Meta_ActionMeta.toJSON(v); + }); + } } return obj; }, @@ -384,10 +400,12 @@ export const CheckResourceSetResponse_Meta_EffectMeta = { toJSON(message: CheckResourceSetResponse_Meta_EffectMeta): unknown { const obj: any = {}; - message.matchedPolicy !== undefined && - (obj.matchedPolicy = message.matchedPolicy); - message.matchedScope !== undefined && - (obj.matchedScope = message.matchedScope); + if (message.matchedPolicy !== "") { + obj.matchedPolicy = message.matchedPolicy; + } + if (message.matchedScope !== "") { + obj.matchedScope = message.matchedScope; + } return obj; }, }; @@ -411,16 +429,17 @@ export const CheckResourceSetResponse_Meta_ActionMeta = { toJSON(message: CheckResourceSetResponse_Meta_ActionMeta): unknown { const obj: any = {}; - obj.actions = {}; if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = CheckResourceSetResponse_Meta_EffectMeta.toJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = CheckResourceSetResponse_Meta_EffectMeta.toJSON(v); + }); + } } - if (message.effectiveDerivedRoles) { - obj.effectiveDerivedRoles = message.effectiveDerivedRoles.map((e) => e); - } else { - obj.effectiveDerivedRoles = []; + if (message.effectiveDerivedRoles?.length) { + obj.effectiveDerivedRoles = message.effectiveDerivedRoles; } return obj; }, @@ -440,11 +459,14 @@ export const CheckResourceSetResponse_Meta_ActionMeta_ActionsEntry = { message: CheckResourceSetResponse_Meta_ActionMeta_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourceSetResponse_Meta_EffectMeta.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourceSetResponse_Meta_EffectMeta.toJSON( + message.value, + ); + } return obj; }, }; @@ -463,11 +485,14 @@ export const CheckResourceSetResponse_Meta_ResourceInstancesEntry = { message: CheckResourceSetResponse_Meta_ResourceInstancesEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourceSetResponse_Meta_ActionMeta.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourceSetResponse_Meta_ActionMeta.toJSON( + message.value, + ); + } return obj; }, }; @@ -484,11 +509,14 @@ export const CheckResourceSetResponse_ResourceInstancesEntry = { toJSON(message: CheckResourceSetResponse_ResourceInstancesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourceSetResponse_ActionEffectMap.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourceSetResponse_ActionEffectMap.toJSON( + message.value, + ); + } return obj; }, }; @@ -507,13 +535,13 @@ export const CheckResourceBatchResponse = { toJSON(message: CheckResourceBatchResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - if (message.results) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.results?.length) { obj.results = message.results.map((e) => - e ? CheckResourceBatchResponse_ActionEffectMap.toJSON(e) : undefined, + CheckResourceBatchResponse_ActionEffectMap.toJSON(e), ); - } else { - obj.results = []; } return obj; }, @@ -540,19 +568,22 @@ export const CheckResourceBatchResponse_ActionEffectMap = { toJSON(message: CheckResourceBatchResponse_ActionEffectMap): unknown { const obj: any = {}; - message.resourceId !== undefined && (obj.resourceId = message.resourceId); - obj.actions = {}; + if (message.resourceId !== "") { + obj.resourceId = message.resourceId; + } if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = effectToJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = effectToJSON(v); + }); + } } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; } return obj; }, @@ -572,8 +603,12 @@ export const CheckResourceBatchResponse_ActionEffectMap_ActionsEntry = { message: CheckResourceBatchResponse_ActionEffectMap_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = effectToJSON(message.value)); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== 0) { + obj.value = effectToJSON(message.value); + } return obj; }, }; @@ -592,13 +627,13 @@ export const CheckResourcesResponse = { toJSON(message: CheckResourcesResponse): unknown { const obj: any = {}; - message.requestId !== undefined && (obj.requestId = message.requestId); - if (message.results) { + if (message.requestId !== "") { + obj.requestId = message.requestId; + } + if (message.results?.length) { obj.results = message.results.map((e) => - e ? CheckResourcesResponse_ResultEntry.toJSON(e) : undefined, + CheckResourcesResponse_ResultEntry.toJSON(e), ); - } else { - obj.results = []; } return obj; }, @@ -633,33 +668,30 @@ export const CheckResourcesResponse_ResultEntry = { toJSON(message: CheckResourcesResponse_ResultEntry): unknown { const obj: any = {}; - message.resource !== undefined && - (obj.resource = message.resource - ? CheckResourcesResponse_ResultEntry_Resource.toJSON(message.resource) - : undefined); - obj.actions = {}; + if (message.resource !== undefined) { + obj.resource = CheckResourcesResponse_ResultEntry_Resource.toJSON( + message.resource, + ); + } if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = effectToJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = effectToJSON(v); + }); + } } - if (message.validationErrors) { + if (message.validationErrors?.length) { obj.validationErrors = message.validationErrors.map((e) => - e ? ValidationError.toJSON(e) : undefined, + ValidationError.toJSON(e), ); - } else { - obj.validationErrors = []; - } - message.meta !== undefined && - (obj.meta = message.meta - ? CheckResourcesResponse_ResultEntry_Meta.toJSON(message.meta) - : undefined); - if (message.outputs) { - obj.outputs = message.outputs.map((e) => - e ? OutputEntry.toJSON(e) : undefined, - ); - } else { - obj.outputs = []; + } + if (message.meta !== undefined) { + obj.meta = CheckResourcesResponse_ResultEntry_Meta.toJSON(message.meta); + } + if (message.outputs?.length) { + obj.outputs = message.outputs.map((e) => OutputEntry.toJSON(e)); } return obj; }, @@ -679,11 +711,18 @@ export const CheckResourcesResponse_ResultEntry_Resource = { toJSON(message: CheckResourcesResponse_ResultEntry_Resource): unknown { const obj: any = {}; - message.id !== undefined && (obj.id = message.id); - message.kind !== undefined && (obj.kind = message.kind); - message.policyVersion !== undefined && - (obj.policyVersion = message.policyVersion); - message.scope !== undefined && (obj.scope = message.scope); + if (message.id !== "") { + obj.id = message.id; + } + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.policyVersion !== "") { + obj.policyVersion = message.policyVersion; + } + if (message.scope !== "") { + obj.scope = message.scope; + } return obj; }, }; @@ -710,17 +749,18 @@ export const CheckResourcesResponse_ResultEntry_Meta = { toJSON(message: CheckResourcesResponse_ResultEntry_Meta): unknown { const obj: any = {}; - obj.actions = {}; if (message.actions) { - Object.entries(message.actions).forEach(([k, v]) => { - obj.actions[k] = - CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON(v); - }); + const entries = Object.entries(message.actions); + if (entries.length > 0) { + obj.actions = {}; + entries.forEach(([k, v]) => { + obj.actions[k] = + CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON(v); + }); + } } - if (message.effectiveDerivedRoles) { - obj.effectiveDerivedRoles = message.effectiveDerivedRoles.map((e) => e); - } else { - obj.effectiveDerivedRoles = []; + if (message.effectiveDerivedRoles?.length) { + obj.effectiveDerivedRoles = message.effectiveDerivedRoles; } return obj; }, @@ -740,10 +780,12 @@ export const CheckResourcesResponse_ResultEntry_Meta_EffectMeta = { toJSON(message: CheckResourcesResponse_ResultEntry_Meta_EffectMeta): unknown { const obj: any = {}; - message.matchedPolicy !== undefined && - (obj.matchedPolicy = message.matchedPolicy); - message.matchedScope !== undefined && - (obj.matchedScope = message.matchedScope); + if (message.matchedPolicy !== "") { + obj.matchedPolicy = message.matchedPolicy; + } + if (message.matchedScope !== "") { + obj.matchedScope = message.matchedScope; + } return obj; }, }; @@ -764,13 +806,14 @@ export const CheckResourcesResponse_ResultEntry_Meta_ActionsEntry = { message: CheckResourcesResponse_ResultEntry_Meta_ActionsEntry, ): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON( - message.value, - ) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = CheckResourcesResponse_ResultEntry_Meta_EffectMeta.toJSON( + message.value, + ); + } return obj; }, }; @@ -785,8 +828,12 @@ export const CheckResourcesResponse_ResultEntry_ActionsEntry = { toJSON(message: CheckResourcesResponse_ResultEntry_ActionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = effectToJSON(message.value)); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== 0) { + obj.value = effectToJSON(message.value); + } return obj; }, }; @@ -802,10 +849,9 @@ export const AddOrUpdatePolicyResponse = { toJSON(message: AddOrUpdatePolicyResponse): unknown { const obj: any = {}; - message.success !== undefined && - (obj.success = message.success - ? Empty.toJSON(message.success) - : undefined); + if (message.success !== undefined) { + obj.success = Empty.toJSON(message.success); + } return obj; }, }; @@ -831,14 +877,14 @@ export const ListAuditLogEntriesResponse = { toJSON(message: ListAuditLogEntriesResponse): unknown { const obj: any = {}; - message.entry?.$case === "accessLogEntry" && - (obj.accessLogEntry = message.entry?.accessLogEntry - ? AccessLogEntry.toJSON(message.entry?.accessLogEntry) - : undefined); - message.entry?.$case === "decisionLogEntry" && - (obj.decisionLogEntry = message.entry?.decisionLogEntry - ? DecisionLogEntry.toJSON(message.entry?.decisionLogEntry) - : undefined); + if (message.entry?.$case === "accessLogEntry") { + obj.accessLogEntry = AccessLogEntry.toJSON(message.entry.accessLogEntry); + } + if (message.entry?.$case === "decisionLogEntry") { + obj.decisionLogEntry = DecisionLogEntry.toJSON( + message.entry.decisionLogEntry, + ); + } return obj; }, }; @@ -854,9 +900,15 @@ export const ServerInfoResponse = { toJSON(message: ServerInfoResponse): unknown { const obj: any = {}; - message.version !== undefined && (obj.version = message.version); - message.commit !== undefined && (obj.commit = message.commit); - message.buildDate !== undefined && (obj.buildDate = message.buildDate); + if (message.version !== "") { + obj.version = message.version; + } + if (message.commit !== "") { + obj.commit = message.commit; + } + if (message.buildDate !== "") { + obj.buildDate = message.buildDate; + } return obj; }, }; @@ -872,10 +924,8 @@ export const ListPoliciesResponse = { toJSON(message: ListPoliciesResponse): unknown { const obj: any = {}; - if (message.policyIds) { - obj.policyIds = message.policyIds.map((e) => e); - } else { - obj.policyIds = []; + if (message.policyIds?.length) { + obj.policyIds = message.policyIds; } return obj; }, @@ -892,12 +942,8 @@ export const GetPolicyResponse = { toJSON(message: GetPolicyResponse): unknown { const obj: any = {}; - if (message.policies) { - obj.policies = message.policies.map((e) => - e ? Policy.toJSON(e) : undefined, - ); - } else { - obj.policies = []; + if (message.policies?.length) { + obj.policies = message.policies.map((e) => Policy.toJSON(e)); } return obj; }, @@ -914,8 +960,9 @@ export const DisablePolicyResponse = { toJSON(message: DisablePolicyResponse): unknown { const obj: any = {}; - message.disabledPolicies !== undefined && - (obj.disabledPolicies = Math.round(message.disabledPolicies)); + if (message.disabledPolicies !== 0) { + obj.disabledPolicies = Math.round(message.disabledPolicies); + } return obj; }, }; @@ -931,8 +978,9 @@ export const EnablePolicyResponse = { toJSON(message: EnablePolicyResponse): unknown { const obj: any = {}; - message.enabledPolicies !== undefined && - (obj.enabledPolicies = Math.round(message.enabledPolicies)); + if (message.enabledPolicies !== 0) { + obj.enabledPolicies = Math.round(message.enabledPolicies); + } return obj; }, }; @@ -959,10 +1007,8 @@ export const ListSchemasResponse = { toJSON(message: ListSchemasResponse): unknown { const obj: any = {}; - if (message.schemaIds) { - obj.schemaIds = message.schemaIds.map((e) => e); - } else { - obj.schemaIds = []; + if (message.schemaIds?.length) { + obj.schemaIds = message.schemaIds; } return obj; }, @@ -979,12 +1025,8 @@ export const GetSchemaResponse = { toJSON(message: GetSchemaResponse): unknown { const obj: any = {}; - if (message.schemas) { - obj.schemas = message.schemas.map((e) => - e ? Schema.toJSON(e) : undefined, - ); - } else { - obj.schemas = []; + if (message.schemas?.length) { + obj.schemas = message.schemas.map((e) => Schema.toJSON(e)); } return obj; }, @@ -1001,8 +1043,9 @@ export const DeleteSchemaResponse = { toJSON(message: DeleteSchemaResponse): unknown { const obj: any = {}; - message.deletedSchemas !== undefined && - (obj.deletedSchemas = Math.round(message.deletedSchemas)); + if (message.deletedSchemas !== 0) { + obj.deletedSchemas = Math.round(message.deletedSchemas); + } return obj; }, }; diff --git a/packages/lite/src/protobuf/cerbos/schema/v1/schema.ts b/packages/lite/src/protobuf/cerbos/schema/v1/schema.ts index 241aba6b..ec1cb2e8 100644 --- a/packages/lite/src/protobuf/cerbos/schema/v1/schema.ts +++ b/packages/lite/src/protobuf/cerbos/schema/v1/schema.ts @@ -73,10 +73,15 @@ export const ValidationError = { toJSON(message: ValidationError): unknown { const obj: any = {}; - message.path !== undefined && (obj.path = message.path); - message.message !== undefined && (obj.message = message.message); - message.source !== undefined && - (obj.source = validationError_SourceToJSON(message.source)); + if (message.path !== "") { + obj.path = message.path; + } + if (message.message !== "") { + obj.message = message.message; + } + if (message.source !== 0) { + obj.source = validationError_SourceToJSON(message.source); + } return obj; }, }; @@ -93,13 +98,12 @@ export const Schema = { toJSON(message: Schema): unknown { const obj: any = {}; - message.id !== undefined && (obj.id = message.id); - message.definition !== undefined && - (obj.definition = base64FromBytes( - message.definition !== undefined - ? message.definition - : new Uint8Array(0), - )); + if (message.id !== "") { + obj.id = message.id; + } + if (message.definition.length !== 0) { + obj.definition = base64FromBytes(message.definition); + } return obj; }, }; diff --git a/packages/lite/src/protobuf/google/api/http.ts b/packages/lite/src/protobuf/google/api/http.ts index 6ca49c1e..64b75382 100644 --- a/packages/lite/src/protobuf/google/api/http.ts +++ b/packages/lite/src/protobuf/google/api/http.ts @@ -51,26 +51,37 @@ export const HttpRule = { toJSON(message: HttpRule): unknown { const obj: any = {}; - message.selector !== undefined && (obj.selector = message.selector); - message.pattern?.$case === "get" && (obj.get = message.pattern?.get); - message.pattern?.$case === "put" && (obj.put = message.pattern?.put); - message.pattern?.$case === "post" && (obj.post = message.pattern?.post); - message.pattern?.$case === "delete" && - (obj.delete = message.pattern?.delete); - message.pattern?.$case === "patch" && (obj.patch = message.pattern?.patch); - message.pattern?.$case === "custom" && - (obj.custom = message.pattern?.custom - ? CustomHttpPattern.toJSON(message.pattern?.custom) - : undefined); - message.body !== undefined && (obj.body = message.body); - message.responseBody !== undefined && - (obj.responseBody = message.responseBody); - if (message.additionalBindings) { + if (message.selector !== "") { + obj.selector = message.selector; + } + if (message.pattern?.$case === "get") { + obj.get = message.pattern.get; + } + if (message.pattern?.$case === "put") { + obj.put = message.pattern.put; + } + if (message.pattern?.$case === "post") { + obj.post = message.pattern.post; + } + if (message.pattern?.$case === "delete") { + obj.delete = message.pattern.delete; + } + if (message.pattern?.$case === "patch") { + obj.patch = message.pattern.patch; + } + if (message.pattern?.$case === "custom") { + obj.custom = CustomHttpPattern.toJSON(message.pattern.custom); + } + if (message.body !== "") { + obj.body = message.body; + } + if (message.responseBody !== "") { + obj.responseBody = message.responseBody; + } + if (message.additionalBindings?.length) { obj.additionalBindings = message.additionalBindings.map((e) => - e ? HttpRule.toJSON(e) : undefined, + HttpRule.toJSON(e), ); - } else { - obj.additionalBindings = []; } return obj; }, @@ -86,8 +97,12 @@ export const CustomHttpPattern = { toJSON(message: CustomHttpPattern): unknown { const obj: any = {}; - message.kind !== undefined && (obj.kind = message.kind); - message.path !== undefined && (obj.path = message.path); + if (message.kind !== "") { + obj.kind = message.kind; + } + if (message.path !== "") { + obj.path = message.path; + } return obj; }, }; diff --git a/packages/lite/src/protobuf/google/protobuf/descriptor.ts b/packages/lite/src/protobuf/google/protobuf/descriptor.ts index 4ddf4dcc..4ef73297 100644 --- a/packages/lite/src/protobuf/google/protobuf/descriptor.ts +++ b/packages/lite/src/protobuf/google/protobuf/descriptor.ts @@ -450,50 +450,70 @@ export const FileOptions = { toJSON(message: FileOptions): unknown { const obj: any = {}; - message.javaPackage !== undefined && - (obj.javaPackage = message.javaPackage); - message.javaOuterClassname !== undefined && - (obj.javaOuterClassname = message.javaOuterClassname); - message.javaMultipleFiles !== undefined && - (obj.javaMultipleFiles = message.javaMultipleFiles); - message.javaGenerateEqualsAndHash !== undefined && - (obj.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash); - message.javaStringCheckUtf8 !== undefined && - (obj.javaStringCheckUtf8 = message.javaStringCheckUtf8); - message.optimizeFor !== undefined && - (obj.optimizeFor = fileOptions_OptimizeModeToJSON(message.optimizeFor)); - message.goPackage !== undefined && (obj.goPackage = message.goPackage); - message.ccGenericServices !== undefined && - (obj.ccGenericServices = message.ccGenericServices); - message.javaGenericServices !== undefined && - (obj.javaGenericServices = message.javaGenericServices); - message.pyGenericServices !== undefined && - (obj.pyGenericServices = message.pyGenericServices); - message.phpGenericServices !== undefined && - (obj.phpGenericServices = message.phpGenericServices); - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.ccEnableArenas !== undefined && - (obj.ccEnableArenas = message.ccEnableArenas); - message.objcClassPrefix !== undefined && - (obj.objcClassPrefix = message.objcClassPrefix); - message.csharpNamespace !== undefined && - (obj.csharpNamespace = message.csharpNamespace); - message.swiftPrefix !== undefined && - (obj.swiftPrefix = message.swiftPrefix); - message.phpClassPrefix !== undefined && - (obj.phpClassPrefix = message.phpClassPrefix); - message.phpNamespace !== undefined && - (obj.phpNamespace = message.phpNamespace); - message.phpMetadataNamespace !== undefined && - (obj.phpMetadataNamespace = message.phpMetadataNamespace); - message.rubyPackage !== undefined && - (obj.rubyPackage = message.rubyPackage); - if (message.uninterpretedOption) { + if (message.javaPackage !== "") { + obj.javaPackage = message.javaPackage; + } + if (message.javaOuterClassname !== "") { + obj.javaOuterClassname = message.javaOuterClassname; + } + if (message.javaMultipleFiles === true) { + obj.javaMultipleFiles = message.javaMultipleFiles; + } + if (message.javaGenerateEqualsAndHash === true) { + obj.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash; + } + if (message.javaStringCheckUtf8 === true) { + obj.javaStringCheckUtf8 = message.javaStringCheckUtf8; + } + if (message.optimizeFor !== 1) { + obj.optimizeFor = fileOptions_OptimizeModeToJSON(message.optimizeFor); + } + if (message.goPackage !== "") { + obj.goPackage = message.goPackage; + } + if (message.ccGenericServices === true) { + obj.ccGenericServices = message.ccGenericServices; + } + if (message.javaGenericServices === true) { + obj.javaGenericServices = message.javaGenericServices; + } + if (message.pyGenericServices === true) { + obj.pyGenericServices = message.pyGenericServices; + } + if (message.phpGenericServices === true) { + obj.phpGenericServices = message.phpGenericServices; + } + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.ccEnableArenas === true) { + obj.ccEnableArenas = message.ccEnableArenas; + } + if (message.objcClassPrefix !== "") { + obj.objcClassPrefix = message.objcClassPrefix; + } + if (message.csharpNamespace !== "") { + obj.csharpNamespace = message.csharpNamespace; + } + if (message.swiftPrefix !== "") { + obj.swiftPrefix = message.swiftPrefix; + } + if (message.phpClassPrefix !== "") { + obj.phpClassPrefix = message.phpClassPrefix; + } + if (message.phpNamespace !== "") { + obj.phpNamespace = message.phpNamespace; + } + if (message.phpMetadataNamespace !== "") { + obj.phpMetadataNamespace = message.phpMetadataNamespace; + } + if (message.rubyPackage !== "") { + obj.rubyPackage = message.rubyPackage; + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -525,21 +545,26 @@ export const MessageOptions = { toJSON(message: MessageOptions): unknown { const obj: any = {}; - message.messageSetWireFormat !== undefined && - (obj.messageSetWireFormat = message.messageSetWireFormat); - message.noStandardDescriptorAccessor !== undefined && - (obj.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor); - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.mapEntry !== undefined && (obj.mapEntry = message.mapEntry); - message.deprecatedLegacyJsonFieldConflicts !== undefined && - (obj.deprecatedLegacyJsonFieldConflicts = - message.deprecatedLegacyJsonFieldConflicts); - if (message.uninterpretedOption) { + if (message.messageSetWireFormat === true) { + obj.messageSetWireFormat = message.messageSetWireFormat; + } + if (message.noStandardDescriptorAccessor === true) { + obj.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor; + } + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.mapEntry === true) { + obj.mapEntry = message.mapEntry; + } + if (message.deprecatedLegacyJsonFieldConflicts === true) { + obj.deprecatedLegacyJsonFieldConflicts = + message.deprecatedLegacyJsonFieldConflicts; + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -578,28 +603,40 @@ export const FieldOptions = { toJSON(message: FieldOptions): unknown { const obj: any = {}; - message.ctype !== undefined && - (obj.ctype = fieldOptions_CTypeToJSON(message.ctype)); - message.packed !== undefined && (obj.packed = message.packed); - message.jstype !== undefined && - (obj.jstype = fieldOptions_JSTypeToJSON(message.jstype)); - message.lazy !== undefined && (obj.lazy = message.lazy); - message.unverifiedLazy !== undefined && - (obj.unverifiedLazy = message.unverifiedLazy); - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.weak !== undefined && (obj.weak = message.weak); - message.debugRedact !== undefined && - (obj.debugRedact = message.debugRedact); - message.retention !== undefined && - (obj.retention = fieldOptions_OptionRetentionToJSON(message.retention)); - message.target !== undefined && - (obj.target = fieldOptions_OptionTargetTypeToJSON(message.target)); - if (message.uninterpretedOption) { + if (message.ctype !== 0) { + obj.ctype = fieldOptions_CTypeToJSON(message.ctype); + } + if (message.packed === true) { + obj.packed = message.packed; + } + if (message.jstype !== 0) { + obj.jstype = fieldOptions_JSTypeToJSON(message.jstype); + } + if (message.lazy === true) { + obj.lazy = message.lazy; + } + if (message.unverifiedLazy === true) { + obj.unverifiedLazy = message.unverifiedLazy; + } + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.weak === true) { + obj.weak = message.weak; + } + if (message.debugRedact === true) { + obj.debugRedact = message.debugRedact; + } + if (message.retention !== 0) { + obj.retention = fieldOptions_OptionRetentionToJSON(message.retention); + } + if (message.target !== 0) { + obj.target = fieldOptions_OptionTargetTypeToJSON(message.target); + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -618,12 +655,10 @@ export const OneofOptions = { toJSON(message: OneofOptions): unknown { const obj: any = {}; - if (message.uninterpretedOption) { + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -643,13 +678,13 @@ export const ServiceOptions = { toJSON(message: ServiceOptions): unknown { const obj: any = {}; - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - if (message.uninterpretedOption) { + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -672,17 +707,18 @@ export const MethodOptions = { toJSON(message: MethodOptions): unknown { const obj: any = {}; - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - message.idempotencyLevel !== undefined && - (obj.idempotencyLevel = methodOptions_IdempotencyLevelToJSON( + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.idempotencyLevel !== 0) { + obj.idempotencyLevel = methodOptions_IdempotencyLevelToJSON( message.idempotencyLevel, - )); - if (message.uninterpretedOption) { + ); + } + if (message.uninterpretedOption?.length) { obj.uninterpretedOption = message.uninterpretedOption.map((e) => - e ? UninterpretedOption.toJSON(e) : undefined, + UninterpretedOption.toJSON(e), ); - } else { - obj.uninterpretedOption = []; } return obj; }, @@ -715,29 +751,29 @@ export const UninterpretedOption = { toJSON(message: UninterpretedOption): unknown { const obj: any = {}; - if (message.name) { + if (message.name?.length) { obj.name = message.name.map((e) => - e ? UninterpretedOption_NamePart.toJSON(e) : undefined, + UninterpretedOption_NamePart.toJSON(e), ); - } else { - obj.name = []; - } - message.identifierValue !== undefined && - (obj.identifierValue = message.identifierValue); - message.positiveIntValue !== undefined && - (obj.positiveIntValue = Math.round(message.positiveIntValue)); - message.negativeIntValue !== undefined && - (obj.negativeIntValue = Math.round(message.negativeIntValue)); - message.doubleValue !== undefined && - (obj.doubleValue = message.doubleValue); - message.stringValue !== undefined && - (obj.stringValue = base64FromBytes( - message.stringValue !== undefined - ? message.stringValue - : new Uint8Array(0), - )); - message.aggregateValue !== undefined && - (obj.aggregateValue = message.aggregateValue); + } + if (message.identifierValue !== "") { + obj.identifierValue = message.identifierValue; + } + if (message.positiveIntValue !== 0) { + obj.positiveIntValue = Math.round(message.positiveIntValue); + } + if (message.negativeIntValue !== 0) { + obj.negativeIntValue = Math.round(message.negativeIntValue); + } + if (message.doubleValue !== 0) { + obj.doubleValue = message.doubleValue; + } + if (message.stringValue.length !== 0) { + obj.stringValue = base64FromBytes(message.stringValue); + } + if (message.aggregateValue !== "") { + obj.aggregateValue = message.aggregateValue; + } return obj; }, }; @@ -754,9 +790,12 @@ export const UninterpretedOption_NamePart = { toJSON(message: UninterpretedOption_NamePart): unknown { const obj: any = {}; - message.namePart !== undefined && (obj.namePart = message.namePart); - message.isExtension !== undefined && - (obj.isExtension = message.isExtension); + if (message.namePart !== "") { + obj.namePart = message.namePart; + } + if (message.isExtension === true) { + obj.isExtension = message.isExtension; + } return obj; }, }; diff --git a/packages/lite/src/protobuf/google/protobuf/duration.ts b/packages/lite/src/protobuf/google/protobuf/duration.ts index 7ffd5f35..283f3ddc 100644 --- a/packages/lite/src/protobuf/google/protobuf/duration.ts +++ b/packages/lite/src/protobuf/google/protobuf/duration.ts @@ -17,9 +17,12 @@ export const Duration = { toJSON(message: Duration): unknown { const obj: any = {}; - message.seconds !== undefined && - (obj.seconds = Math.round(message.seconds)); - message.nanos !== undefined && (obj.nanos = Math.round(message.nanos)); + if (message.seconds !== 0) { + obj.seconds = Math.round(message.seconds); + } + if (message.nanos !== 0) { + obj.nanos = Math.round(message.nanos); + } return obj; }, }; diff --git a/packages/lite/src/protobuf/google/protobuf/struct.ts b/packages/lite/src/protobuf/google/protobuf/struct.ts index f02033c2..ef5a5ed5 100644 --- a/packages/lite/src/protobuf/google/protobuf/struct.ts +++ b/packages/lite/src/protobuf/google/protobuf/struct.ts @@ -73,11 +73,14 @@ export const Struct = { toJSON(message: Struct): unknown { const obj: any = {}; - obj.fields = {}; if (message.fields) { - Object.entries(message.fields).forEach(([k, v]) => { - obj.fields[k] = v; - }); + const entries = Object.entries(message.fields); + if (entries.length > 0) { + obj.fields = {}; + entries.forEach(([k, v]) => { + obj.fields[k] = v; + }); + } } return obj; }, @@ -113,8 +116,12 @@ export const Struct_FieldsEntry = { toJSON(message: Struct_FieldsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -144,21 +151,24 @@ export const Value = { toJSON(message: Value): unknown { const obj: any = {}; - message.kind?.$case === "nullValue" && - (obj.nullValue = - message.kind?.nullValue !== undefined - ? nullValueToJSON(message.kind?.nullValue) - : undefined); - message.kind?.$case === "numberValue" && - (obj.numberValue = message.kind?.numberValue); - message.kind?.$case === "stringValue" && - (obj.stringValue = message.kind?.stringValue); - message.kind?.$case === "boolValue" && - (obj.boolValue = message.kind?.boolValue); - message.kind?.$case === "structValue" && - (obj.structValue = message.kind?.structValue); - message.kind?.$case === "listValue" && - (obj.listValue = message.kind?.listValue); + if (message.kind?.$case === "nullValue") { + obj.nullValue = nullValueToJSON(message.kind.nullValue); + } + if (message.kind?.$case === "numberValue") { + obj.numberValue = message.kind.numberValue; + } + if (message.kind?.$case === "stringValue") { + obj.stringValue = message.kind.stringValue; + } + if (message.kind?.$case === "boolValue") { + obj.boolValue = message.kind.boolValue; + } + if (message.kind?.$case === "structValue") { + obj.structValue = message.kind.structValue; + } + if (message.kind?.$case === "listValue") { + obj.listValue = message.kind.listValue; + } return obj; }, @@ -214,10 +224,8 @@ export const ListValue = { toJSON(message: ListValue): unknown { const obj: any = {}; - if (message.values) { - obj.values = message.values.map((e) => e); - } else { - obj.values = []; + if (message.values?.length) { + obj.values = message.values; } return obj; }, diff --git a/packages/lite/src/protobuf/google/protobuf/timestamp.ts b/packages/lite/src/protobuf/google/protobuf/timestamp.ts index 92315fa3..95aef548 100644 --- a/packages/lite/src/protobuf/google/protobuf/timestamp.ts +++ b/packages/lite/src/protobuf/google/protobuf/timestamp.ts @@ -17,9 +17,12 @@ export const Timestamp = { toJSON(message: Timestamp): unknown { const obj: any = {}; - message.seconds !== undefined && - (obj.seconds = Math.round(message.seconds)); - message.nanos !== undefined && (obj.nanos = Math.round(message.nanos)); + if (message.seconds !== 0) { + obj.seconds = Math.round(message.seconds); + } + if (message.nanos !== 0) { + obj.nanos = Math.round(message.nanos); + } return obj; }, }; diff --git a/packages/lite/src/protobuf/google/protobuf/wrappers.ts b/packages/lite/src/protobuf/google/protobuf/wrappers.ts index bfb8a208..e6747387 100644 --- a/packages/lite/src/protobuf/google/protobuf/wrappers.ts +++ b/packages/lite/src/protobuf/google/protobuf/wrappers.ts @@ -13,7 +13,9 @@ export const UInt64Value = { toJSON(message: UInt64Value): unknown { const obj: any = {}; - message.value !== undefined && (obj.value = Math.round(message.value)); + if (message.value !== 0) { + obj.value = Math.round(message.value); + } return obj; }, }; diff --git a/packages/lite/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts b/packages/lite/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts index 4e53b842..7b1dfb55 100644 --- a/packages/lite/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts +++ b/packages/lite/src/protobuf/protoc-gen-openapiv2/options/openapiv2.ts @@ -604,57 +604,58 @@ export const Swagger = { toJSON(message: Swagger): unknown { const obj: any = {}; - message.swagger !== undefined && (obj.swagger = message.swagger); - message.info !== undefined && - (obj.info = message.info ? Info.toJSON(message.info) : undefined); - message.host !== undefined && (obj.host = message.host); - message.basePath !== undefined && (obj.basePath = message.basePath); - if (message.schemes) { + if (message.swagger !== "") { + obj.swagger = message.swagger; + } + if (message.info !== undefined) { + obj.info = Info.toJSON(message.info); + } + if (message.host !== "") { + obj.host = message.host; + } + if (message.basePath !== "") { + obj.basePath = message.basePath; + } + if (message.schemes?.length) { obj.schemes = message.schemes.map((e) => schemeToJSON(e)); - } else { - obj.schemes = []; } - if (message.consumes) { - obj.consumes = message.consumes.map((e) => e); - } else { - obj.consumes = []; + if (message.consumes?.length) { + obj.consumes = message.consumes; } - if (message.produces) { - obj.produces = message.produces.map((e) => e); - } else { - obj.produces = []; + if (message.produces?.length) { + obj.produces = message.produces; } - obj.responses = {}; if (message.responses) { - Object.entries(message.responses).forEach(([k, v]) => { - obj.responses[k] = Response.toJSON(v); - }); - } - message.securityDefinitions !== undefined && - (obj.securityDefinitions = message.securityDefinitions - ? SecurityDefinitions.toJSON(message.securityDefinitions) - : undefined); - if (message.security) { - obj.security = message.security.map((e) => - e ? SecurityRequirement.toJSON(e) : undefined, + const entries = Object.entries(message.responses); + if (entries.length > 0) { + obj.responses = {}; + entries.forEach(([k, v]) => { + obj.responses[k] = Response.toJSON(v); + }); + } + } + if (message.securityDefinitions !== undefined) { + obj.securityDefinitions = SecurityDefinitions.toJSON( + message.securityDefinitions, ); - } else { - obj.security = []; - } - if (message.tags) { - obj.tags = message.tags.map((e) => (e ? Tag.toJSON(e) : undefined)); - } else { - obj.tags = []; - } - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - obj.extensions = {}; + } + if (message.security?.length) { + obj.security = message.security.map((e) => SecurityRequirement.toJSON(e)); + } + if (message.tags?.length) { + obj.tags = message.tags.map((e) => Tag.toJSON(e)); + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -670,9 +671,12 @@ export const Swagger_ResponsesEntry = { toJSON(message: Swagger_ResponsesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value ? Response.toJSON(message.value) : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = Response.toJSON(message.value); + } return obj; }, }; @@ -687,8 +691,12 @@ export const Swagger_ExtensionsEntry = { toJSON(message: Swagger_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -743,59 +751,57 @@ export const Operation = { toJSON(message: Operation): unknown { const obj: any = {}; - if (message.tags) { - obj.tags = message.tags.map((e) => e); - } else { - obj.tags = []; - } - message.summary !== undefined && (obj.summary = message.summary); - message.description !== undefined && - (obj.description = message.description); - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - message.operationId !== undefined && - (obj.operationId = message.operationId); - if (message.consumes) { - obj.consumes = message.consumes.map((e) => e); - } else { - obj.consumes = []; - } - if (message.produces) { - obj.produces = message.produces.map((e) => e); - } else { - obj.produces = []; - } - obj.responses = {}; + if (message.tags?.length) { + obj.tags = message.tags; + } + if (message.summary !== "") { + obj.summary = message.summary; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } + if (message.operationId !== "") { + obj.operationId = message.operationId; + } + if (message.consumes?.length) { + obj.consumes = message.consumes; + } + if (message.produces?.length) { + obj.produces = message.produces; + } if (message.responses) { - Object.entries(message.responses).forEach(([k, v]) => { - obj.responses[k] = Response.toJSON(v); - }); + const entries = Object.entries(message.responses); + if (entries.length > 0) { + obj.responses = {}; + entries.forEach(([k, v]) => { + obj.responses[k] = Response.toJSON(v); + }); + } } - if (message.schemes) { + if (message.schemes?.length) { obj.schemes = message.schemes.map((e) => schemeToJSON(e)); - } else { - obj.schemes = []; } - message.deprecated !== undefined && (obj.deprecated = message.deprecated); - if (message.security) { - obj.security = message.security.map((e) => - e ? SecurityRequirement.toJSON(e) : undefined, - ); - } else { - obj.security = []; + if (message.deprecated === true) { + obj.deprecated = message.deprecated; + } + if (message.security?.length) { + obj.security = message.security.map((e) => SecurityRequirement.toJSON(e)); } - obj.extensions = {}; if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); - } - message.parameters !== undefined && - (obj.parameters = message.parameters - ? Parameters.toJSON(message.parameters) - : undefined); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } + } + if (message.parameters !== undefined) { + obj.parameters = Parameters.toJSON(message.parameters); + } return obj; }, }; @@ -810,9 +816,12 @@ export const Operation_ResponsesEntry = { toJSON(message: Operation_ResponsesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value ? Response.toJSON(message.value) : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = Response.toJSON(message.value); + } return obj; }, }; @@ -827,8 +836,12 @@ export const Operation_ExtensionsEntry = { toJSON(message: Operation_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -844,12 +857,8 @@ export const Parameters = { toJSON(message: Parameters): unknown { const obj: any = {}; - if (message.headers) { - obj.headers = message.headers.map((e) => - e ? HeaderParameter.toJSON(e) : undefined, - ); - } else { - obj.headers = []; + if (message.headers?.length) { + obj.headers = message.headers.map((e) => HeaderParameter.toJSON(e)); } return obj; }, @@ -868,13 +877,21 @@ export const HeaderParameter = { toJSON(message: HeaderParameter): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.description !== undefined && - (obj.description = message.description); - message.type !== undefined && - (obj.type = headerParameter_TypeToJSON(message.type)); - message.format !== undefined && (obj.format = message.format); - message.required !== undefined && (obj.required = message.required); + if (message.name !== "") { + obj.name = message.name; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.type !== 0) { + obj.type = headerParameter_TypeToJSON(message.type); + } + if (message.format !== "") { + obj.format = message.format; + } + if (message.required === true) { + obj.required = message.required; + } return obj; }, }; @@ -892,12 +909,21 @@ export const Header = { toJSON(message: Header): unknown { const obj: any = {}; - message.description !== undefined && - (obj.description = message.description); - message.type !== undefined && (obj.type = message.type); - message.format !== undefined && (obj.format = message.format); - message.default !== undefined && (obj.default = message.default); - message.pattern !== undefined && (obj.pattern = message.pattern); + if (message.description !== "") { + obj.description = message.description; + } + if (message.type !== "") { + obj.type = message.type; + } + if (message.format !== "") { + obj.format = message.format; + } + if (message.default !== "") { + obj.default = message.default; + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } return obj; }, }; @@ -938,27 +964,38 @@ export const Response = { toJSON(message: Response): unknown { const obj: any = {}; - message.description !== undefined && - (obj.description = message.description); - message.schema !== undefined && - (obj.schema = message.schema ? Schema.toJSON(message.schema) : undefined); - obj.headers = {}; + if (message.description !== "") { + obj.description = message.description; + } + if (message.schema !== undefined) { + obj.schema = Schema.toJSON(message.schema); + } if (message.headers) { - Object.entries(message.headers).forEach(([k, v]) => { - obj.headers[k] = Header.toJSON(v); - }); + const entries = Object.entries(message.headers); + if (entries.length > 0) { + obj.headers = {}; + entries.forEach(([k, v]) => { + obj.headers[k] = Header.toJSON(v); + }); + } } - obj.examples = {}; if (message.examples) { - Object.entries(message.examples).forEach(([k, v]) => { - obj.examples[k] = v; - }); + const entries = Object.entries(message.examples); + if (entries.length > 0) { + obj.examples = {}; + entries.forEach(([k, v]) => { + obj.examples[k] = v; + }); + } } - obj.extensions = {}; if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -974,9 +1011,12 @@ export const Response_HeadersEntry = { toJSON(message: Response_HeadersEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value ? Header.toJSON(message.value) : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = Header.toJSON(message.value); + } return obj; }, }; @@ -991,8 +1031,12 @@ export const Response_ExamplesEntry = { toJSON(message: Response_ExamplesEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; @@ -1007,8 +1051,12 @@ export const Response_ExtensionsEntry = { toJSON(message: Response_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1041,25 +1089,32 @@ export const Info = { toJSON(message: Info): unknown { const obj: any = {}; - message.title !== undefined && (obj.title = message.title); - message.description !== undefined && - (obj.description = message.description); - message.termsOfService !== undefined && - (obj.termsOfService = message.termsOfService); - message.contact !== undefined && - (obj.contact = message.contact - ? Contact.toJSON(message.contact) - : undefined); - message.license !== undefined && - (obj.license = message.license - ? License.toJSON(message.license) - : undefined); - message.version !== undefined && (obj.version = message.version); - obj.extensions = {}; + if (message.title !== "") { + obj.title = message.title; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.termsOfService !== "") { + obj.termsOfService = message.termsOfService; + } + if (message.contact !== undefined) { + obj.contact = Contact.toJSON(message.contact); + } + if (message.license !== undefined) { + obj.license = License.toJSON(message.license); + } + if (message.version !== "") { + obj.version = message.version; + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1075,8 +1130,12 @@ export const Info_ExtensionsEntry = { toJSON(message: Info_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1092,9 +1151,15 @@ export const Contact = { toJSON(message: Contact): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.url !== undefined && (obj.url = message.url); - message.email !== undefined && (obj.email = message.email); + if (message.name !== "") { + obj.name = message.name; + } + if (message.url !== "") { + obj.url = message.url; + } + if (message.email !== "") { + obj.email = message.email; + } return obj; }, }; @@ -1109,8 +1174,12 @@ export const License = { toJSON(message: License): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.url !== undefined && (obj.url = message.url); + if (message.name !== "") { + obj.name = message.name; + } + if (message.url !== "") { + obj.url = message.url; + } return obj; }, }; @@ -1125,9 +1194,12 @@ export const ExternalDocumentation = { toJSON(message: ExternalDocumentation): unknown { const obj: any = {}; - message.description !== undefined && - (obj.description = message.description); - message.url !== undefined && (obj.url = message.url); + if (message.description !== "") { + obj.description = message.description; + } + if (message.url !== "") { + obj.url = message.url; + } return obj; }, }; @@ -1151,18 +1223,21 @@ export const Schema = { toJSON(message: Schema): unknown { const obj: any = {}; - message.jsonSchema !== undefined && - (obj.jsonSchema = message.jsonSchema - ? JSONSchema.toJSON(message.jsonSchema) - : undefined); - message.discriminator !== undefined && - (obj.discriminator = message.discriminator); - message.readOnly !== undefined && (obj.readOnly = message.readOnly); - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - message.example !== undefined && (obj.example = message.example); + if (message.jsonSchema !== undefined) { + obj.jsonSchema = JSONSchema.toJSON(message.jsonSchema); + } + if (message.discriminator !== "") { + obj.discriminator = message.discriminator; + } + if (message.readOnly === true) { + obj.readOnly = message.readOnly; + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } + if (message.example !== "") { + obj.example = message.example; + } return obj; }, }; @@ -1230,67 +1305,93 @@ export const JSONSchema = { toJSON(message: JSONSchema): unknown { const obj: any = {}; - message.ref !== undefined && (obj.ref = message.ref); - message.title !== undefined && (obj.title = message.title); - message.description !== undefined && - (obj.description = message.description); - message.default !== undefined && (obj.default = message.default); - message.readOnly !== undefined && (obj.readOnly = message.readOnly); - message.example !== undefined && (obj.example = message.example); - message.multipleOf !== undefined && (obj.multipleOf = message.multipleOf); - message.maximum !== undefined && (obj.maximum = message.maximum); - message.exclusiveMaximum !== undefined && - (obj.exclusiveMaximum = message.exclusiveMaximum); - message.minimum !== undefined && (obj.minimum = message.minimum); - message.exclusiveMinimum !== undefined && - (obj.exclusiveMinimum = message.exclusiveMinimum); - message.maxLength !== undefined && - (obj.maxLength = Math.round(message.maxLength)); - message.minLength !== undefined && - (obj.minLength = Math.round(message.minLength)); - message.pattern !== undefined && (obj.pattern = message.pattern); - message.maxItems !== undefined && - (obj.maxItems = Math.round(message.maxItems)); - message.minItems !== undefined && - (obj.minItems = Math.round(message.minItems)); - message.uniqueItems !== undefined && - (obj.uniqueItems = message.uniqueItems); - message.maxProperties !== undefined && - (obj.maxProperties = Math.round(message.maxProperties)); - message.minProperties !== undefined && - (obj.minProperties = Math.round(message.minProperties)); - if (message.required) { - obj.required = message.required.map((e) => e); - } else { - obj.required = []; - } - if (message.array) { - obj.array = message.array.map((e) => e); - } else { - obj.array = []; - } - if (message.type) { + if (message.ref !== "") { + obj.ref = message.ref; + } + if (message.title !== "") { + obj.title = message.title; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.default !== "") { + obj.default = message.default; + } + if (message.readOnly === true) { + obj.readOnly = message.readOnly; + } + if (message.example !== "") { + obj.example = message.example; + } + if (message.multipleOf !== 0) { + obj.multipleOf = message.multipleOf; + } + if (message.maximum !== 0) { + obj.maximum = message.maximum; + } + if (message.exclusiveMaximum === true) { + obj.exclusiveMaximum = message.exclusiveMaximum; + } + if (message.minimum !== 0) { + obj.minimum = message.minimum; + } + if (message.exclusiveMinimum === true) { + obj.exclusiveMinimum = message.exclusiveMinimum; + } + if (message.maxLength !== 0) { + obj.maxLength = Math.round(message.maxLength); + } + if (message.minLength !== 0) { + obj.minLength = Math.round(message.minLength); + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } + if (message.maxItems !== 0) { + obj.maxItems = Math.round(message.maxItems); + } + if (message.minItems !== 0) { + obj.minItems = Math.round(message.minItems); + } + if (message.uniqueItems === true) { + obj.uniqueItems = message.uniqueItems; + } + if (message.maxProperties !== 0) { + obj.maxProperties = Math.round(message.maxProperties); + } + if (message.minProperties !== 0) { + obj.minProperties = Math.round(message.minProperties); + } + if (message.required?.length) { + obj.required = message.required; + } + if (message.array?.length) { + obj.array = message.array; + } + if (message.type?.length) { obj.type = message.type.map((e) => jSONSchema_JSONSchemaSimpleTypesToJSON(e), ); - } else { - obj.type = []; - } - message.format !== undefined && (obj.format = message.format); - if (message.enum) { - obj.enum = message.enum.map((e) => e); - } else { - obj.enum = []; - } - message.fieldConfiguration !== undefined && - (obj.fieldConfiguration = message.fieldConfiguration - ? JSONSchema_FieldConfiguration.toJSON(message.fieldConfiguration) - : undefined); - obj.extensions = {}; + } + if (message.format !== "") { + obj.format = message.format; + } + if (message.enum?.length) { + obj.enum = message.enum; + } + if (message.fieldConfiguration !== undefined) { + obj.fieldConfiguration = JSONSchema_FieldConfiguration.toJSON( + message.fieldConfiguration, + ); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1307,8 +1408,9 @@ export const JSONSchema_FieldConfiguration = { toJSON(message: JSONSchema_FieldConfiguration): unknown { const obj: any = {}; - message.pathParamName !== undefined && - (obj.pathParamName = message.pathParamName); + if (message.pathParamName !== "") { + obj.pathParamName = message.pathParamName; + } return obj; }, }; @@ -1323,8 +1425,12 @@ export const JSONSchema_ExtensionsEntry = { toJSON(message: JSONSchema_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1350,18 +1456,23 @@ export const Tag = { toJSON(message: Tag): unknown { const obj: any = {}; - message.name !== undefined && (obj.name = message.name); - message.description !== undefined && - (obj.description = message.description); - message.externalDocs !== undefined && - (obj.externalDocs = message.externalDocs - ? ExternalDocumentation.toJSON(message.externalDocs) - : undefined); - obj.extensions = {}; + if (message.name !== "") { + obj.name = message.name; + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.externalDocs !== undefined) { + obj.externalDocs = ExternalDocumentation.toJSON(message.externalDocs); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1377,8 +1488,12 @@ export const Tag_ExtensionsEntry = { toJSON(message: Tag_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1399,11 +1514,14 @@ export const SecurityDefinitions = { toJSON(message: SecurityDefinitions): unknown { const obj: any = {}; - obj.security = {}; if (message.security) { - Object.entries(message.security).forEach(([k, v]) => { - obj.security[k] = SecurityScheme.toJSON(v); - }); + const entries = Object.entries(message.security); + if (entries.length > 0) { + obj.security = {}; + entries.forEach(([k, v]) => { + obj.security[k] = SecurityScheme.toJSON(v); + }); + } } return obj; }, @@ -1421,11 +1539,12 @@ export const SecurityDefinitions_SecurityEntry = { toJSON(message: SecurityDefinitions_SecurityEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? SecurityScheme.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = SecurityScheme.toJSON(message.value); + } return obj; }, }; @@ -1456,24 +1575,38 @@ export const SecurityScheme = { toJSON(message: SecurityScheme): unknown { const obj: any = {}; - message.type !== undefined && - (obj.type = securityScheme_TypeToJSON(message.type)); - message.description !== undefined && - (obj.description = message.description); - message.name !== undefined && (obj.name = message.name); - message.in !== undefined && (obj.in = securityScheme_InToJSON(message.in)); - message.flow !== undefined && - (obj.flow = securityScheme_FlowToJSON(message.flow)); - message.authorizationUrl !== undefined && - (obj.authorizationUrl = message.authorizationUrl); - message.tokenUrl !== undefined && (obj.tokenUrl = message.tokenUrl); - message.scopes !== undefined && - (obj.scopes = message.scopes ? Scopes.toJSON(message.scopes) : undefined); - obj.extensions = {}; + if (message.type !== 0) { + obj.type = securityScheme_TypeToJSON(message.type); + } + if (message.description !== "") { + obj.description = message.description; + } + if (message.name !== "") { + obj.name = message.name; + } + if (message.in !== 0) { + obj.in = securityScheme_InToJSON(message.in); + } + if (message.flow !== 0) { + obj.flow = securityScheme_FlowToJSON(message.flow); + } + if (message.authorizationUrl !== "") { + obj.authorizationUrl = message.authorizationUrl; + } + if (message.tokenUrl !== "") { + obj.tokenUrl = message.tokenUrl; + } + if (message.scopes !== undefined) { + obj.scopes = Scopes.toJSON(message.scopes); + } if (message.extensions) { - Object.entries(message.extensions).forEach(([k, v]) => { - obj.extensions[k] = v; - }); + const entries = Object.entries(message.extensions); + if (entries.length > 0) { + obj.extensions = {}; + entries.forEach(([k, v]) => { + obj.extensions[k] = v; + }); + } } return obj; }, @@ -1489,8 +1622,12 @@ export const SecurityScheme_ExtensionsEntry = { toJSON(message: SecurityScheme_ExtensionsEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = message.value; + } return obj; }, }; @@ -1512,12 +1649,15 @@ export const SecurityRequirement = { toJSON(message: SecurityRequirement): unknown { const obj: any = {}; - obj.securityRequirement = {}; if (message.securityRequirement) { - Object.entries(message.securityRequirement).forEach(([k, v]) => { - obj.securityRequirement[k] = - SecurityRequirement_SecurityRequirementValue.toJSON(v); - }); + const entries = Object.entries(message.securityRequirement); + if (entries.length > 0) { + obj.securityRequirement = {}; + entries.forEach(([k, v]) => { + obj.securityRequirement[k] = + SecurityRequirement_SecurityRequirementValue.toJSON(v); + }); + } } return obj; }, @@ -1534,10 +1674,8 @@ export const SecurityRequirement_SecurityRequirementValue = { toJSON(message: SecurityRequirement_SecurityRequirementValue): unknown { const obj: any = {}; - if (message.scope) { - obj.scope = message.scope.map((e) => e); - } else { - obj.scope = []; + if (message.scope?.length) { + obj.scope = message.scope; } return obj; }, @@ -1555,11 +1693,14 @@ export const SecurityRequirement_SecurityRequirementEntry = { toJSON(message: SecurityRequirement_SecurityRequirementEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && - (obj.value = message.value - ? SecurityRequirement_SecurityRequirementValue.toJSON(message.value) - : undefined); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== undefined) { + obj.value = SecurityRequirement_SecurityRequirementValue.toJSON( + message.value, + ); + } return obj; }, }; @@ -1581,11 +1722,14 @@ export const Scopes = { toJSON(message: Scopes): unknown { const obj: any = {}; - obj.scope = {}; if (message.scope) { - Object.entries(message.scope).forEach(([k, v]) => { - obj.scope[k] = v; - }); + const entries = Object.entries(message.scope); + if (entries.length > 0) { + obj.scope = {}; + entries.forEach(([k, v]) => { + obj.scope[k] = v; + }); + } } return obj; }, @@ -1601,8 +1745,12 @@ export const Scopes_ScopeEntry = { toJSON(message: Scopes_ScopeEntry): unknown { const obj: any = {}; - message.key !== undefined && (obj.key = message.key); - message.value !== undefined && (obj.value = message.value); + if (message.key !== "") { + obj.key = message.key; + } + if (message.value !== "") { + obj.value = message.value; + } return obj; }, }; diff --git a/packages/lite/src/protobuf/validate/validate.ts b/packages/lite/src/protobuf/validate/validate.ts index c32fe1fd..dee271c2 100644 --- a/packages/lite/src/protobuf/validate/validate.ts +++ b/packages/lite/src/protobuf/validate/validate.ts @@ -383,94 +383,72 @@ export const FieldRules = { toJSON(message: FieldRules): unknown { const obj: any = {}; - message.message !== undefined && - (obj.message = message.message - ? MessageRules.toJSON(message.message) - : undefined); - message.type?.$case === "float" && - (obj.float = message.type?.float - ? FloatRules.toJSON(message.type?.float) - : undefined); - message.type?.$case === "double" && - (obj.double = message.type?.double - ? DoubleRules.toJSON(message.type?.double) - : undefined); - message.type?.$case === "int32" && - (obj.int32 = message.type?.int32 - ? Int32Rules.toJSON(message.type?.int32) - : undefined); - message.type?.$case === "int64" && - (obj.int64 = message.type?.int64 - ? Int64Rules.toJSON(message.type?.int64) - : undefined); - message.type?.$case === "uint32" && - (obj.uint32 = message.type?.uint32 - ? UInt32Rules.toJSON(message.type?.uint32) - : undefined); - message.type?.$case === "uint64" && - (obj.uint64 = message.type?.uint64 - ? UInt64Rules.toJSON(message.type?.uint64) - : undefined); - message.type?.$case === "sint32" && - (obj.sint32 = message.type?.sint32 - ? SInt32Rules.toJSON(message.type?.sint32) - : undefined); - message.type?.$case === "sint64" && - (obj.sint64 = message.type?.sint64 - ? SInt64Rules.toJSON(message.type?.sint64) - : undefined); - message.type?.$case === "fixed32" && - (obj.fixed32 = message.type?.fixed32 - ? Fixed32Rules.toJSON(message.type?.fixed32) - : undefined); - message.type?.$case === "fixed64" && - (obj.fixed64 = message.type?.fixed64 - ? Fixed64Rules.toJSON(message.type?.fixed64) - : undefined); - message.type?.$case === "sfixed32" && - (obj.sfixed32 = message.type?.sfixed32 - ? SFixed32Rules.toJSON(message.type?.sfixed32) - : undefined); - message.type?.$case === "sfixed64" && - (obj.sfixed64 = message.type?.sfixed64 - ? SFixed64Rules.toJSON(message.type?.sfixed64) - : undefined); - message.type?.$case === "bool" && - (obj.bool = message.type?.bool - ? BoolRules.toJSON(message.type?.bool) - : undefined); - message.type?.$case === "string" && - (obj.string = message.type?.string - ? StringRules.toJSON(message.type?.string) - : undefined); - message.type?.$case === "bytes" && - (obj.bytes = message.type?.bytes - ? BytesRules.toJSON(message.type?.bytes) - : undefined); - message.type?.$case === "enum" && - (obj.enum = message.type?.enum - ? EnumRules.toJSON(message.type?.enum) - : undefined); - message.type?.$case === "repeated" && - (obj.repeated = message.type?.repeated - ? RepeatedRules.toJSON(message.type?.repeated) - : undefined); - message.type?.$case === "map" && - (obj.map = message.type?.map - ? MapRules.toJSON(message.type?.map) - : undefined); - message.type?.$case === "any" && - (obj.any = message.type?.any - ? AnyRules.toJSON(message.type?.any) - : undefined); - message.type?.$case === "duration" && - (obj.duration = message.type?.duration - ? DurationRules.toJSON(message.type?.duration) - : undefined); - message.type?.$case === "timestamp" && - (obj.timestamp = message.type?.timestamp - ? TimestampRules.toJSON(message.type?.timestamp) - : undefined); + if (message.message !== undefined) { + obj.message = MessageRules.toJSON(message.message); + } + if (message.type?.$case === "float") { + obj.float = FloatRules.toJSON(message.type.float); + } + if (message.type?.$case === "double") { + obj.double = DoubleRules.toJSON(message.type.double); + } + if (message.type?.$case === "int32") { + obj.int32 = Int32Rules.toJSON(message.type.int32); + } + if (message.type?.$case === "int64") { + obj.int64 = Int64Rules.toJSON(message.type.int64); + } + if (message.type?.$case === "uint32") { + obj.uint32 = UInt32Rules.toJSON(message.type.uint32); + } + if (message.type?.$case === "uint64") { + obj.uint64 = UInt64Rules.toJSON(message.type.uint64); + } + if (message.type?.$case === "sint32") { + obj.sint32 = SInt32Rules.toJSON(message.type.sint32); + } + if (message.type?.$case === "sint64") { + obj.sint64 = SInt64Rules.toJSON(message.type.sint64); + } + if (message.type?.$case === "fixed32") { + obj.fixed32 = Fixed32Rules.toJSON(message.type.fixed32); + } + if (message.type?.$case === "fixed64") { + obj.fixed64 = Fixed64Rules.toJSON(message.type.fixed64); + } + if (message.type?.$case === "sfixed32") { + obj.sfixed32 = SFixed32Rules.toJSON(message.type.sfixed32); + } + if (message.type?.$case === "sfixed64") { + obj.sfixed64 = SFixed64Rules.toJSON(message.type.sfixed64); + } + if (message.type?.$case === "bool") { + obj.bool = BoolRules.toJSON(message.type.bool); + } + if (message.type?.$case === "string") { + obj.string = StringRules.toJSON(message.type.string); + } + if (message.type?.$case === "bytes") { + obj.bytes = BytesRules.toJSON(message.type.bytes); + } + if (message.type?.$case === "enum") { + obj.enum = EnumRules.toJSON(message.type.enum); + } + if (message.type?.$case === "repeated") { + obj.repeated = RepeatedRules.toJSON(message.type.repeated); + } + if (message.type?.$case === "map") { + obj.map = MapRules.toJSON(message.type.map); + } + if (message.type?.$case === "any") { + obj.any = AnyRules.toJSON(message.type.any); + } + if (message.type?.$case === "duration") { + obj.duration = DurationRules.toJSON(message.type.duration); + } + if (message.type?.$case === "timestamp") { + obj.timestamp = TimestampRules.toJSON(message.type.timestamp); + } return obj; }, }; @@ -495,23 +473,30 @@ export const FloatRules = { toJSON(message: FloatRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== 0) { + obj.const = message.const; + } + if (message.lt !== 0) { + obj.lt = message.lt; + } + if (message.lte !== 0) { + obj.lte = message.lte; + } + if (message.gt !== 0) { + obj.gt = message.gt; + } + if (message.gte !== 0) { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -536,23 +521,30 @@ export const DoubleRules = { toJSON(message: DoubleRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.lt !== undefined && (obj.lt = message.lt); - message.lte !== undefined && (obj.lte = message.lte); - message.gt !== undefined && (obj.gt = message.gt); - message.gte !== undefined && (obj.gte = message.gte); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== 0) { + obj.const = message.const; + } + if (message.lt !== 0) { + obj.lt = message.lt; + } + if (message.lte !== 0) { + obj.lte = message.lte; + } + if (message.gt !== 0) { + obj.gt = message.gt; + } + if (message.gte !== 0) { + obj.gte = message.gte; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -577,23 +569,30 @@ export const Int32Rules = { toJSON(message: Int32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -618,23 +617,30 @@ export const Int64Rules = { toJSON(message: Int64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -659,23 +665,30 @@ export const UInt32Rules = { toJSON(message: UInt32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -700,23 +713,30 @@ export const UInt64Rules = { toJSON(message: UInt64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -741,23 +761,30 @@ export const SInt32Rules = { toJSON(message: SInt32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -782,23 +809,30 @@ export const SInt64Rules = { toJSON(message: SInt64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -823,23 +857,30 @@ export const Fixed32Rules = { toJSON(message: Fixed32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -864,23 +905,30 @@ export const Fixed64Rules = { toJSON(message: Fixed64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -905,23 +953,30 @@ export const SFixed32Rules = { toJSON(message: SFixed32Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -946,23 +1001,30 @@ export const SFixed64Rules = { toJSON(message: SFixed64Rules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.lt !== undefined && (obj.lt = Math.round(message.lt)); - message.lte !== undefined && (obj.lte = Math.round(message.lte)); - message.gt !== undefined && (obj.gt = Math.round(message.gt)); - message.gte !== undefined && (obj.gte = Math.round(message.gte)); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.lt !== 0) { + obj.lt = Math.round(message.lt); + } + if (message.lte !== 0) { + obj.lte = Math.round(message.lte); + } + if (message.gt !== 0) { + obj.gt = Math.round(message.gt); + } + if (message.gte !== 0) { + obj.gte = Math.round(message.gte); + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -974,7 +1036,9 @@ export const BoolRules = { toJSON(message: BoolRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); + if (message.const === true) { + obj.const = message.const; + } return obj; }, }; @@ -1031,53 +1095,84 @@ export const StringRules = { toJSON(message: StringRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = message.const); - message.len !== undefined && (obj.len = Math.round(message.len)); - message.minLen !== undefined && (obj.minLen = Math.round(message.minLen)); - message.maxLen !== undefined && (obj.maxLen = Math.round(message.maxLen)); - message.lenBytes !== undefined && - (obj.lenBytes = Math.round(message.lenBytes)); - message.minBytes !== undefined && - (obj.minBytes = Math.round(message.minBytes)); - message.maxBytes !== undefined && - (obj.maxBytes = Math.round(message.maxBytes)); - message.pattern !== undefined && (obj.pattern = message.pattern); - message.prefix !== undefined && (obj.prefix = message.prefix); - message.suffix !== undefined && (obj.suffix = message.suffix); - message.contains !== undefined && (obj.contains = message.contains); - message.notContains !== undefined && - (obj.notContains = message.notContains); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; - } - message.wellKnown?.$case === "email" && - (obj.email = message.wellKnown?.email); - message.wellKnown?.$case === "hostname" && - (obj.hostname = message.wellKnown?.hostname); - message.wellKnown?.$case === "ip" && (obj.ip = message.wellKnown?.ip); - message.wellKnown?.$case === "ipv4" && (obj.ipv4 = message.wellKnown?.ipv4); - message.wellKnown?.$case === "ipv6" && (obj.ipv6 = message.wellKnown?.ipv6); - message.wellKnown?.$case === "uri" && (obj.uri = message.wellKnown?.uri); - message.wellKnown?.$case === "uriRef" && - (obj.uriRef = message.wellKnown?.uriRef); - message.wellKnown?.$case === "address" && - (obj.address = message.wellKnown?.address); - message.wellKnown?.$case === "uuid" && (obj.uuid = message.wellKnown?.uuid); - message.wellKnown?.$case === "wellKnownRegex" && - (obj.wellKnownRegex = - message.wellKnown?.wellKnownRegex !== undefined - ? knownRegexToJSON(message.wellKnown?.wellKnownRegex) - : undefined); - message.strict !== undefined && (obj.strict = message.strict); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.const !== "") { + obj.const = message.const; + } + if (message.len !== 0) { + obj.len = Math.round(message.len); + } + if (message.minLen !== 0) { + obj.minLen = Math.round(message.minLen); + } + if (message.maxLen !== 0) { + obj.maxLen = Math.round(message.maxLen); + } + if (message.lenBytes !== 0) { + obj.lenBytes = Math.round(message.lenBytes); + } + if (message.minBytes !== 0) { + obj.minBytes = Math.round(message.minBytes); + } + if (message.maxBytes !== 0) { + obj.maxBytes = Math.round(message.maxBytes); + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } + if (message.prefix !== "") { + obj.prefix = message.prefix; + } + if (message.suffix !== "") { + obj.suffix = message.suffix; + } + if (message.contains !== "") { + obj.contains = message.contains; + } + if (message.notContains !== "") { + obj.notContains = message.notContains; + } + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; + } + if (message.wellKnown?.$case === "email") { + obj.email = message.wellKnown.email; + } + if (message.wellKnown?.$case === "hostname") { + obj.hostname = message.wellKnown.hostname; + } + if (message.wellKnown?.$case === "ip") { + obj.ip = message.wellKnown.ip; + } + if (message.wellKnown?.$case === "ipv4") { + obj.ipv4 = message.wellKnown.ipv4; + } + if (message.wellKnown?.$case === "ipv6") { + obj.ipv6 = message.wellKnown.ipv6; + } + if (message.wellKnown?.$case === "uri") { + obj.uri = message.wellKnown.uri; + } + if (message.wellKnown?.$case === "uriRef") { + obj.uriRef = message.wellKnown.uriRef; + } + if (message.wellKnown?.$case === "address") { + obj.address = message.wellKnown.address; + } + if (message.wellKnown?.$case === "uuid") { + obj.uuid = message.wellKnown.uuid; + } + if (message.wellKnown?.$case === "wellKnownRegex") { + obj.wellKnownRegex = knownRegexToJSON(message.wellKnown.wellKnownRegex); + } + if (message.strict === true) { + obj.strict = message.strict; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -1122,45 +1217,48 @@ export const BytesRules = { toJSON(message: BytesRules): unknown { const obj: any = {}; - message.const !== undefined && - (obj.const = base64FromBytes( - message.const !== undefined ? message.const : new Uint8Array(0), - )); - message.len !== undefined && (obj.len = Math.round(message.len)); - message.minLen !== undefined && (obj.minLen = Math.round(message.minLen)); - message.maxLen !== undefined && (obj.maxLen = Math.round(message.maxLen)); - message.pattern !== undefined && (obj.pattern = message.pattern); - message.prefix !== undefined && - (obj.prefix = base64FromBytes( - message.prefix !== undefined ? message.prefix : new Uint8Array(0), - )); - message.suffix !== undefined && - (obj.suffix = base64FromBytes( - message.suffix !== undefined ? message.suffix : new Uint8Array(0), - )); - message.contains !== undefined && - (obj.contains = base64FromBytes( - message.contains !== undefined ? message.contains : new Uint8Array(0), - )); - if (message.in) { - obj.in = message.in.map((e) => - base64FromBytes(e !== undefined ? e : new Uint8Array(0)), - ); - } else { - obj.in = []; + if (message.const.length !== 0) { + obj.const = base64FromBytes(message.const); + } + if (message.len !== 0) { + obj.len = Math.round(message.len); + } + if (message.minLen !== 0) { + obj.minLen = Math.round(message.minLen); + } + if (message.maxLen !== 0) { + obj.maxLen = Math.round(message.maxLen); + } + if (message.pattern !== "") { + obj.pattern = message.pattern; + } + if (message.prefix.length !== 0) { + obj.prefix = base64FromBytes(message.prefix); + } + if (message.suffix.length !== 0) { + obj.suffix = base64FromBytes(message.suffix); + } + if (message.contains.length !== 0) { + obj.contains = base64FromBytes(message.contains); + } + if (message.in?.length) { + obj.in = message.in.map((e) => base64FromBytes(e)); + } + if (message.notIn?.length) { + obj.notIn = message.notIn.map((e) => base64FromBytes(e)); + } + if (message.wellKnown?.$case === "ip") { + obj.ip = message.wellKnown.ip; + } + if (message.wellKnown?.$case === "ipv4") { + obj.ipv4 = message.wellKnown.ipv4; + } + if (message.wellKnown?.$case === "ipv6") { + obj.ipv6 = message.wellKnown.ipv6; + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => - base64FromBytes(e !== undefined ? e : new Uint8Array(0)), - ); - } else { - obj.notIn = []; - } - message.wellKnown?.$case === "ip" && (obj.ip = message.wellKnown?.ip); - message.wellKnown?.$case === "ipv4" && (obj.ipv4 = message.wellKnown?.ipv4); - message.wellKnown?.$case === "ipv6" && (obj.ipv6 = message.wellKnown?.ipv6); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); return obj; }, }; @@ -1181,18 +1279,17 @@ export const EnumRules = { toJSON(message: EnumRules): unknown { const obj: any = {}; - message.const !== undefined && (obj.const = Math.round(message.const)); - message.definedOnly !== undefined && - (obj.definedOnly = message.definedOnly); - if (message.in) { + if (message.const !== 0) { + obj.const = Math.round(message.const); + } + if (message.definedOnly === true) { + obj.definedOnly = message.definedOnly; + } + if (message.in?.length) { obj.in = message.in.map((e) => Math.round(e)); - } else { - obj.in = []; } - if (message.notIn) { + if (message.notIn?.length) { obj.notIn = message.notIn.map((e) => Math.round(e)); - } else { - obj.notIn = []; } return obj; }, @@ -1208,8 +1305,12 @@ export const MessageRules = { toJSON(message: MessageRules): unknown { const obj: any = {}; - message.skip !== undefined && (obj.skip = message.skip); - message.required !== undefined && (obj.required = message.required); + if (message.skip === true) { + obj.skip = message.skip; + } + if (message.required === true) { + obj.required = message.required; + } return obj; }, }; @@ -1231,17 +1332,21 @@ export const RepeatedRules = { toJSON(message: RepeatedRules): unknown { const obj: any = {}; - message.minItems !== undefined && - (obj.minItems = Math.round(message.minItems)); - message.maxItems !== undefined && - (obj.maxItems = Math.round(message.maxItems)); - message.unique !== undefined && (obj.unique = message.unique); - message.items !== undefined && - (obj.items = message.items - ? FieldRules.toJSON(message.items) - : undefined); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.minItems !== 0) { + obj.minItems = Math.round(message.minItems); + } + if (message.maxItems !== 0) { + obj.maxItems = Math.round(message.maxItems); + } + if (message.unique === true) { + obj.unique = message.unique; + } + if (message.items !== undefined) { + obj.items = FieldRules.toJSON(message.items); + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -1264,19 +1369,24 @@ export const MapRules = { toJSON(message: MapRules): unknown { const obj: any = {}; - message.minPairs !== undefined && - (obj.minPairs = Math.round(message.minPairs)); - message.maxPairs !== undefined && - (obj.maxPairs = Math.round(message.maxPairs)); - message.noSparse !== undefined && (obj.noSparse = message.noSparse); - message.keys !== undefined && - (obj.keys = message.keys ? FieldRules.toJSON(message.keys) : undefined); - message.values !== undefined && - (obj.values = message.values - ? FieldRules.toJSON(message.values) - : undefined); - message.ignoreEmpty !== undefined && - (obj.ignoreEmpty = message.ignoreEmpty); + if (message.minPairs !== 0) { + obj.minPairs = Math.round(message.minPairs); + } + if (message.maxPairs !== 0) { + obj.maxPairs = Math.round(message.maxPairs); + } + if (message.noSparse === true) { + obj.noSparse = message.noSparse; + } + if (message.keys !== undefined) { + obj.keys = FieldRules.toJSON(message.keys); + } + if (message.values !== undefined) { + obj.values = FieldRules.toJSON(message.values); + } + if (message.ignoreEmpty === true) { + obj.ignoreEmpty = message.ignoreEmpty; + } return obj; }, }; @@ -1294,16 +1404,14 @@ export const AnyRules = { toJSON(message: AnyRules): unknown { const obj: any = {}; - message.required !== undefined && (obj.required = message.required); - if (message.in) { - obj.in = message.in.map((e) => e); - } else { - obj.in = []; + if (message.required === true) { + obj.required = message.required; } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => e); - } else { - obj.notIn = []; + if (message.in?.length) { + obj.in = message.in; + } + if (message.notIn?.length) { + obj.notIn = message.notIn; } return obj; }, @@ -1329,28 +1437,29 @@ export const DurationRules = { toJSON(message: DurationRules): unknown { const obj: any = {}; - message.required !== undefined && (obj.required = message.required); - message.const !== undefined && - (obj.const = message.const ? Duration.toJSON(message.const) : undefined); - message.lt !== undefined && - (obj.lt = message.lt ? Duration.toJSON(message.lt) : undefined); - message.lte !== undefined && - (obj.lte = message.lte ? Duration.toJSON(message.lte) : undefined); - message.gt !== undefined && - (obj.gt = message.gt ? Duration.toJSON(message.gt) : undefined); - message.gte !== undefined && - (obj.gte = message.gte ? Duration.toJSON(message.gte) : undefined); - if (message.in) { - obj.in = message.in.map((e) => (e ? Duration.toJSON(e) : undefined)); - } else { - obj.in = []; - } - if (message.notIn) { - obj.notIn = message.notIn.map((e) => - e ? Duration.toJSON(e) : undefined, - ); - } else { - obj.notIn = []; + if (message.required === true) { + obj.required = message.required; + } + if (message.const !== undefined) { + obj.const = Duration.toJSON(message.const); + } + if (message.lt !== undefined) { + obj.lt = Duration.toJSON(message.lt); + } + if (message.lte !== undefined) { + obj.lte = Duration.toJSON(message.lte); + } + if (message.gt !== undefined) { + obj.gt = Duration.toJSON(message.gt); + } + if (message.gte !== undefined) { + obj.gte = Duration.toJSON(message.gte); + } + if (message.in?.length) { + obj.in = message.in.map((e) => Duration.toJSON(e)); + } + if (message.notIn?.length) { + obj.notIn = message.notIn.map((e) => Duration.toJSON(e)); } return obj; }, @@ -1375,18 +1484,33 @@ export const TimestampRules = { toJSON(message: TimestampRules): unknown { const obj: any = {}; - message.required !== undefined && (obj.required = message.required); - message.const !== undefined && (obj.const = message.const.toISOString()); - message.lt !== undefined && (obj.lt = message.lt.toISOString()); - message.lte !== undefined && (obj.lte = message.lte.toISOString()); - message.gt !== undefined && (obj.gt = message.gt.toISOString()); - message.gte !== undefined && (obj.gte = message.gte.toISOString()); - message.ltNow !== undefined && (obj.ltNow = message.ltNow); - message.gtNow !== undefined && (obj.gtNow = message.gtNow); - message.within !== undefined && - (obj.within = message.within - ? Duration.toJSON(message.within) - : undefined); + if (message.required === true) { + obj.required = message.required; + } + if (message.const !== undefined) { + obj.const = message.const.toISOString(); + } + if (message.lt !== undefined) { + obj.lt = message.lt.toISOString(); + } + if (message.lte !== undefined) { + obj.lte = message.lte.toISOString(); + } + if (message.gt !== undefined) { + obj.gt = message.gt.toISOString(); + } + if (message.gte !== undefined) { + obj.gte = message.gte.toISOString(); + } + if (message.ltNow === true) { + obj.ltNow = message.ltNow; + } + if (message.gtNow === true) { + obj.gtNow = message.gtNow; + } + if (message.within !== undefined) { + obj.within = Duration.toJSON(message.within); + } return obj; }, }; diff --git a/patches/ts-proto+1.153.2.patch b/patches/ts-proto+1.153.2.patch index 0154d0e4..28627895 100644 --- a/patches/ts-proto+1.153.2.patch +++ b/patches/ts-proto+1.153.2.patch @@ -1,3 +1,112 @@ +diff --git a/node_modules/ts-proto/build/main.js b/node_modules/ts-proto/build/main.js +index 96015b3..251017d 100644 +--- a/node_modules/ts-proto/build/main.js ++++ b/node_modules/ts-proto/build/main.js +@@ -1662,9 +1662,7 @@ function generateToJson(ctx, fullName, fullProtobufTypeName, messageDesc) { + const readSnippet = (from) => { + if ((0, types_1.isEnum)(field)) { + const toJson = (0, types_1.getEnumMethod)(ctx, field.typeName, "ToJSON"); +- return (0, types_1.isWithinOneOf)(field) +- ? (0, ts_poet_1.code) `${from} !== undefined ? ${toJson}(${from}) : undefined` +- : (0, ts_poet_1.code) `${toJson}(${from})`; ++ return (0, ts_poet_1.code) `${toJson}(${from})`; + } + else if ((0, types_1.isObjectId)(field) && options.useMongoObjectId) { + return (0, ts_poet_1.code) `${from}.toString()`; +@@ -1729,19 +1727,13 @@ function generateToJson(ctx, fullName, fullProtobufTypeName, messageDesc) { + } + else if ((0, types_1.isMessage)(field) && !(0, types_1.isValueType)(ctx, field) && !(0, types_1.isMapType)(ctx, messageDesc, field)) { + const type = (0, types_1.basicTypeName)(ctx, field, { keepValueType: true }); +- return (0, ts_poet_1.code) `${from} ? ${type}.toJSON(${from}) : ${(0, types_1.defaultValue)(ctx, field)}`; ++ return (0, ts_poet_1.code) `${type}.toJSON(${from})`; + } + else if ((0, types_1.isBytes)(field)) { +- if ((0, types_1.isWithinOneOf)(field)) { +- return (0, ts_poet_1.code) `${from} !== undefined ? ${utils.base64FromBytes}(${from}) : undefined`; +- } +- else { +- return (0, ts_poet_1.code) `${utils.base64FromBytes}(${from} !== undefined ? ${from} : ${(0, types_1.defaultValue)(ctx, field)})`; +- } ++ return (0, ts_poet_1.code) `${utils.base64FromBytes}(${from})`; + } + else if ((0, types_1.isLong)(field) && options.forceLong === options_1.LongOption.LONG) { +- const v = (0, types_1.isWithinOneOf)(field) ? "undefined" : (0, types_1.defaultValue)(ctx, field); +- return (0, ts_poet_1.code) `(${from} || ${v}).toString()`; ++ return (0, ts_poet_1.code) `(${from} || ${(0, types_1.defaultValue)(ctx, field)}).toString()`; + } + else if ((0, types_1.isLong)(field) && options.forceLong === options_1.LongOption.BIGINT) { + return (0, ts_poet_1.code) `${from}.toString()`; +@@ -1758,8 +1750,8 @@ function generateToJson(ctx, fullName, fullProtobufTypeName, messageDesc) { + const i = convertToObjectKey(ctx, messageDesc, field, "k"); + if (ctx.options.useMapType) { + chunks.push((0, ts_poet_1.code) ` +- ${jsonProperty} = {}; +- if (message.${fieldName}) { ++ if (message.${fieldName}?.size) { ++ ${jsonProperty} = {}; + message.${fieldName}.forEach((v, k) => { + ${jsonProperty}[${i}] = ${readSnippet("v")}; + }); +@@ -1768,34 +1760,46 @@ function generateToJson(ctx, fullName, fullProtobufTypeName, messageDesc) { + } + else { + chunks.push((0, ts_poet_1.code) ` +- ${jsonProperty} = {}; +- if (message.${fieldName}) { +- Object.entries(message.${fieldName}).forEach(([k, v]) => { +- ${jsonProperty}[${i}] = ${readSnippet("v")}; +- }); ++ if (message.${fieldName}) { ++ const entries = Object.entries(message.${fieldName}); ++ if (entries.length > 0) { ++ ${jsonProperty} = {}; ++ entries.forEach(([k, v]) => { ++ ${jsonProperty}[${i}] = ${readSnippet("v")}; ++ }); ++ } + } + `); + } + } + else if ((0, types_1.isRepeated)(field)) { + // Arrays might need their elements transformed ++ const transformElement = readSnippet("e"); ++ const maybeMap = transformElement.toCodeString([]) !== "e" ? (0, ts_poet_1.code) `.map(e => ${transformElement})` : ""; + chunks.push((0, ts_poet_1.code) ` +- if (message.${fieldName}) { +- ${jsonProperty} = message.${fieldName}.map(e => ${readSnippet("e")}); +- } else { +- ${jsonProperty} = []; ++ if (message.${fieldName}?.length) { ++ ${jsonProperty} = message.${fieldName}${maybeMap}; + } + `); + } + else if ((0, types_1.isWithinOneOfThatShouldBeUnion)(options, field)) { + // oneofs in a union are only output as `oneof name = ...` + const oneofName = (0, case_1.maybeSnakeToCamel)(messageDesc.oneofDecl[field.oneofIndex].name, options); +- const v = readSnippet(`message.${oneofName}?.${fieldName}`); +- chunks.push((0, ts_poet_1.code) `message.${oneofName}?.$case === '${fieldName}' && (${jsonProperty} = ${v});`); ++ chunks.push((0, ts_poet_1.code) ` ++ if (message.${oneofName}?.$case === '${fieldName}') { ++ ${jsonProperty} = ${readSnippet(`message.${oneofName}.${fieldName}`)}; ++ } ++ `); + } + else { +- const v = readSnippet(`message.${fieldName}`); +- chunks.push((0, ts_poet_1.code) `message.${fieldName} !== undefined && (${jsonProperty} = ${v});`); ++ const check = ((0, types_1.isScalar)(field) || (0, types_1.isEnum)(field)) && !(0, types_1.isWithinOneOf)(field) ++ ? (0, types_1.notDefaultCheck)(ctx, field, messageDesc.options, `message.${fieldName}`) ++ : `message.${fieldName} !== undefined`; ++ chunks.push((0, ts_poet_1.code) ` ++ if (${check}) { ++ ${jsonProperty} = ${readSnippet(`message.${fieldName}`)}; ++ } ++ `); + } + }); + chunks.push((0, ts_poet_1.code) `return obj;`); diff --git a/node_modules/ts-proto/build/utils.js b/node_modules/ts-proto/build/utils.js index aab20fb..961506b 100644 --- a/node_modules/ts-proto/build/utils.js