diff --git a/packages/google-cloud-talent/README.md b/packages/google-cloud-talent/README.md index c1ee3eb29d4b..08dfdaabf2fd 100644 --- a/packages/google-cloud-talent/README.md +++ b/packages/google-cloud-talent/README.md @@ -75,7 +75,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ | search jobs | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4/job_service.search_jobs.js) | | search jobs for alert | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4/job_service.search_jobs_for_alert.js) | | update job | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4/job_service.update_job.js) | -| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4/snippet_metadata_google.cloud.talent.v4.json) | | create tenant | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4/tenant_service.create_tenant.js) | | delete tenant | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4/tenant_service.delete_tenant.js) | | get tenant | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4/tenant_service.get_tenant.js) | @@ -98,7 +97,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ | search jobs | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4beta1/job_service.search_jobs.js) | | search jobs for alert | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4beta1/job_service.search_jobs_for_alert.js) | | update job | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4beta1/job_service.update_job.js) | -| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4beta1/snippet_metadata_google.cloud.talent.v4beta1.json) | | create tenant | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4beta1/tenant_service.create_tenant.js) | | delete tenant | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4beta1/tenant_service.delete_tenant.js) | | get tenant | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/samples/generated/v4beta1/tenant_service.get_tenant.js) | @@ -137,7 +135,7 @@ More Information: [Google Cloud Platform Launch Stages][launch_stages] ## Contributing -Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/CONTRIBUTING.md). +Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/CONTRIBUTING.md). Please note that this `README.md` and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`) @@ -147,7 +145,7 @@ are generated from a central template. Apache Version 2.0 -See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-talent/LICENSE) +See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/LICENSE) [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png [projects]: https://console.cloud.google.com/project diff --git a/packages/google-cloud-talent/protos/protos.d.ts b/packages/google-cloud-talent/protos/protos.d.ts index 97313c45e830..dec27978082d 100644 --- a/packages/google-cloud-talent/protos/protos.d.ts +++ b/packages/google-cloud-talent/protos/protos.d.ts @@ -16091,6 +16091,9 @@ export namespace google { /** CommonLanguageSettings destinations */ destinations?: (google.api.ClientLibraryDestination[]|null); + + /** CommonLanguageSettings selectiveGapicGeneration */ + selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null); } /** Represents a CommonLanguageSettings. */ @@ -16108,6 +16111,9 @@ export namespace google { /** CommonLanguageSettings destinations. */ public destinations: google.api.ClientLibraryDestination[]; + /** CommonLanguageSettings selectiveGapicGeneration. */ + public selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null); + /** * Creates a new CommonLanguageSettings instance using the specified properties. * @param [properties] Properties to set @@ -16808,6 +16814,9 @@ export namespace google { /** PythonSettings common */ common?: (google.api.ICommonLanguageSettings|null); + + /** PythonSettings experimentalFeatures */ + experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null); } /** Represents a PythonSettings. */ @@ -16822,6 +16831,9 @@ export namespace google { /** PythonSettings common. */ public common?: (google.api.ICommonLanguageSettings|null); + /** PythonSettings experimentalFeatures. */ + public experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null); + /** * Creates a new PythonSettings instance using the specified properties. * @param [properties] Properties to set @@ -16900,6 +16912,118 @@ export namespace google { public static getTypeUrl(typeUrlPrefix?: string): string; } + namespace PythonSettings { + + /** Properties of an ExperimentalFeatures. */ + interface IExperimentalFeatures { + + /** ExperimentalFeatures restAsyncIoEnabled */ + restAsyncIoEnabled?: (boolean|null); + + /** ExperimentalFeatures protobufPythonicTypesEnabled */ + protobufPythonicTypesEnabled?: (boolean|null); + + /** ExperimentalFeatures unversionedPackageDisabled */ + unversionedPackageDisabled?: (boolean|null); + } + + /** Represents an ExperimentalFeatures. */ + class ExperimentalFeatures implements IExperimentalFeatures { + + /** + * Constructs a new ExperimentalFeatures. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.PythonSettings.IExperimentalFeatures); + + /** ExperimentalFeatures restAsyncIoEnabled. */ + public restAsyncIoEnabled: boolean; + + /** ExperimentalFeatures protobufPythonicTypesEnabled. */ + public protobufPythonicTypesEnabled: boolean; + + /** ExperimentalFeatures unversionedPackageDisabled. */ + public unversionedPackageDisabled: boolean; + + /** + * Creates a new ExperimentalFeatures instance using the specified properties. + * @param [properties] Properties to set + * @returns ExperimentalFeatures instance + */ + public static create(properties?: google.api.PythonSettings.IExperimentalFeatures): google.api.PythonSettings.ExperimentalFeatures; + + /** + * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages. + * @param message ExperimentalFeatures message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages. + * @param message ExperimentalFeatures message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExperimentalFeatures message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ExperimentalFeatures + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings.ExperimentalFeatures; + + /** + * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ExperimentalFeatures + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings.ExperimentalFeatures; + + /** + * Verifies an ExperimentalFeatures message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ExperimentalFeatures + */ + public static fromObject(object: { [k: string]: any }): google.api.PythonSettings.ExperimentalFeatures; + + /** + * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified. + * @param message ExperimentalFeatures + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.PythonSettings.ExperimentalFeatures, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ExperimentalFeatures to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ExperimentalFeatures + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + } + /** Properties of a NodeSettings. */ interface INodeSettings { @@ -17226,6 +17350,9 @@ export namespace google { /** GoSettings common */ common?: (google.api.ICommonLanguageSettings|null); + + /** GoSettings renamedServices */ + renamedServices?: ({ [k: string]: string }|null); } /** Represents a GoSettings. */ @@ -17240,6 +17367,9 @@ export namespace google { /** GoSettings common. */ public common?: (google.api.ICommonLanguageSettings|null); + /** GoSettings renamedServices. */ + public renamedServices: { [k: string]: string }; + /** * Creates a new GoSettings instance using the specified properties. * @param [properties] Properties to set @@ -17564,6 +17694,109 @@ export namespace google { PACKAGE_MANAGER = 20 } + /** Properties of a SelectiveGapicGeneration. */ + interface ISelectiveGapicGeneration { + + /** SelectiveGapicGeneration methods */ + methods?: (string[]|null); + + /** SelectiveGapicGeneration generateOmittedAsInternal */ + generateOmittedAsInternal?: (boolean|null); + } + + /** Represents a SelectiveGapicGeneration. */ + class SelectiveGapicGeneration implements ISelectiveGapicGeneration { + + /** + * Constructs a new SelectiveGapicGeneration. + * @param [properties] Properties to set + */ + constructor(properties?: google.api.ISelectiveGapicGeneration); + + /** SelectiveGapicGeneration methods. */ + public methods: string[]; + + /** SelectiveGapicGeneration generateOmittedAsInternal. */ + public generateOmittedAsInternal: boolean; + + /** + * Creates a new SelectiveGapicGeneration instance using the specified properties. + * @param [properties] Properties to set + * @returns SelectiveGapicGeneration instance + */ + public static create(properties?: google.api.ISelectiveGapicGeneration): google.api.SelectiveGapicGeneration; + + /** + * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages. + * @param message SelectiveGapicGeneration message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages. + * @param message SelectiveGapicGeneration message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SelectiveGapicGeneration message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SelectiveGapicGeneration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.SelectiveGapicGeneration; + + /** + * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SelectiveGapicGeneration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.SelectiveGapicGeneration; + + /** + * Verifies a SelectiveGapicGeneration message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SelectiveGapicGeneration + */ + public static fromObject(object: { [k: string]: any }): google.api.SelectiveGapicGeneration; + + /** + * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified. + * @param message SelectiveGapicGeneration + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.api.SelectiveGapicGeneration, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SelectiveGapicGeneration to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for SelectiveGapicGeneration + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + /** LaunchStage enum. */ enum LaunchStage { LAUNCH_STAGE_UNSPECIFIED = 0, @@ -17680,6 +17913,7 @@ export namespace google { /** Edition enum. */ enum Edition { EDITION_UNKNOWN = 0, + EDITION_LEGACY = 900, EDITION_PROTO2 = 998, EDITION_PROTO3 = 999, EDITION_2023 = 1000, @@ -17710,6 +17944,9 @@ export namespace google { /** FileDescriptorProto weakDependency */ weakDependency?: (number[]|null); + /** FileDescriptorProto optionDependency */ + optionDependency?: (string[]|null); + /** FileDescriptorProto messageType */ messageType?: (google.protobuf.IDescriptorProto[]|null); @@ -17759,6 +17996,9 @@ export namespace google { /** FileDescriptorProto weakDependency. */ public weakDependency: number[]; + /** FileDescriptorProto optionDependency. */ + public optionDependency: string[]; + /** FileDescriptorProto messageType. */ public messageType: google.protobuf.IDescriptorProto[]; @@ -17893,6 +18133,9 @@ export namespace google { /** DescriptorProto reservedName */ reservedName?: (string[]|null); + + /** DescriptorProto visibility */ + visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null); } /** Represents a DescriptorProto. */ @@ -17934,6 +18177,9 @@ export namespace google { /** DescriptorProto reservedName. */ public reservedName: string[]; + /** DescriptorProto visibility. */ + public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility); + /** * Creates a new DescriptorProto instance using the specified properties. * @param [properties] Properties to set @@ -18781,6 +19027,9 @@ export namespace google { /** EnumDescriptorProto reservedName */ reservedName?: (string[]|null); + + /** EnumDescriptorProto visibility */ + visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null); } /** Represents an EnumDescriptorProto. */ @@ -18807,6 +19056,9 @@ export namespace google { /** EnumDescriptorProto reservedName. */ public reservedName: string[]; + /** EnumDescriptorProto visibility. */ + public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility); + /** * Creates a new EnumDescriptorProto instance using the specified properties. * @param [properties] Properties to set @@ -19741,6 +19993,9 @@ export namespace google { /** FieldOptions features */ features?: (google.protobuf.IFeatureSet|null); + /** FieldOptions featureSupport */ + featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null); + /** FieldOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); @@ -19796,6 +20051,9 @@ export namespace google { /** FieldOptions features. */ public features?: (google.protobuf.IFeatureSet|null); + /** FieldOptions featureSupport. */ + public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null); + /** FieldOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -20016,6 +20274,121 @@ export namespace google { */ public static getTypeUrl(typeUrlPrefix?: string): string; } + + /** Properties of a FeatureSupport. */ + interface IFeatureSupport { + + /** FeatureSupport editionIntroduced */ + editionIntroduced?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); + + /** FeatureSupport editionDeprecated */ + editionDeprecated?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); + + /** FeatureSupport deprecationWarning */ + deprecationWarning?: (string|null); + + /** FeatureSupport editionRemoved */ + editionRemoved?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); + } + + /** Represents a FeatureSupport. */ + class FeatureSupport implements IFeatureSupport { + + /** + * Constructs a new FeatureSupport. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.FieldOptions.IFeatureSupport); + + /** FeatureSupport editionIntroduced. */ + public editionIntroduced: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); + + /** FeatureSupport editionDeprecated. */ + public editionDeprecated: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); + + /** FeatureSupport deprecationWarning. */ + public deprecationWarning: string; + + /** FeatureSupport editionRemoved. */ + public editionRemoved: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); + + /** + * Creates a new FeatureSupport instance using the specified properties. + * @param [properties] Properties to set + * @returns FeatureSupport instance + */ + public static create(properties?: google.protobuf.FieldOptions.IFeatureSupport): google.protobuf.FieldOptions.FeatureSupport; + + /** + * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages. + * @param message FeatureSupport message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages. + * @param message FeatureSupport message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FeatureSupport message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FeatureSupport + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.FeatureSupport; + + /** + * Decodes a FeatureSupport message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FeatureSupport + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.FeatureSupport; + + /** + * Verifies a FeatureSupport message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FeatureSupport + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.FeatureSupport; + + /** + * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified. + * @param message FeatureSupport + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FieldOptions.FeatureSupport, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FeatureSupport to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for FeatureSupport + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } } /** Properties of an OneofOptions. */ @@ -20254,6 +20627,9 @@ export namespace google { /** EnumValueOptions debugRedact */ debugRedact?: (boolean|null); + /** EnumValueOptions featureSupport */ + featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null); + /** EnumValueOptions uninterpretedOption */ uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null); } @@ -20276,6 +20652,9 @@ export namespace google { /** EnumValueOptions debugRedact. */ public debugRedact: boolean; + /** EnumValueOptions featureSupport. */ + public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null); + /** EnumValueOptions uninterpretedOption. */ public uninterpretedOption: google.protobuf.IUninterpretedOption[]; @@ -20868,6 +21247,12 @@ export namespace google { /** FeatureSet jsonFormat */ jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null); + + /** FeatureSet enforceNamingStyle */ + enforceNamingStyle?: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle|null); + + /** FeatureSet defaultSymbolVisibility */ + defaultSymbolVisibility?: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null); } /** Represents a FeatureSet. */ @@ -20897,6 +21282,12 @@ export namespace google { /** FeatureSet jsonFormat. */ public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat); + /** FeatureSet enforceNamingStyle. */ + public enforceNamingStyle: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle); + + /** FeatureSet defaultSymbolVisibility. */ + public defaultSymbolVisibility: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility); + /** * Creates a new FeatureSet instance using the specified properties. * @param [properties] Properties to set @@ -21019,6 +21410,116 @@ export namespace google { ALLOW = 1, LEGACY_BEST_EFFORT = 2 } + + /** EnforceNamingStyle enum. */ + enum EnforceNamingStyle { + ENFORCE_NAMING_STYLE_UNKNOWN = 0, + STYLE2024 = 1, + STYLE_LEGACY = 2 + } + + /** Properties of a VisibilityFeature. */ + interface IVisibilityFeature { + } + + /** Represents a VisibilityFeature. */ + class VisibilityFeature implements IVisibilityFeature { + + /** + * Constructs a new VisibilityFeature. + * @param [properties] Properties to set + */ + constructor(properties?: google.protobuf.FeatureSet.IVisibilityFeature); + + /** + * Creates a new VisibilityFeature instance using the specified properties. + * @param [properties] Properties to set + * @returns VisibilityFeature instance + */ + public static create(properties?: google.protobuf.FeatureSet.IVisibilityFeature): google.protobuf.FeatureSet.VisibilityFeature; + + /** + * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages. + * @param message VisibilityFeature message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages. + * @param message VisibilityFeature message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a VisibilityFeature message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns VisibilityFeature + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet.VisibilityFeature; + + /** + * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns VisibilityFeature + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet.VisibilityFeature; + + /** + * Verifies a VisibilityFeature message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns VisibilityFeature + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet.VisibilityFeature; + + /** + * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified. + * @param message VisibilityFeature + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.protobuf.FeatureSet.VisibilityFeature, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this VisibilityFeature to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for VisibilityFeature + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace VisibilityFeature { + + /** DefaultSymbolVisibility enum. */ + enum DefaultSymbolVisibility { + DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0, + EXPORT_ALL = 1, + EXPORT_TOP_LEVEL = 2, + LOCAL_ALL = 3, + STRICT = 4 + } + } } /** Properties of a FeatureSetDefaults. */ @@ -21138,8 +21639,11 @@ export namespace google { /** FeatureSetEditionDefault edition */ edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null); - /** FeatureSetEditionDefault features */ - features?: (google.protobuf.IFeatureSet|null); + /** FeatureSetEditionDefault overridableFeatures */ + overridableFeatures?: (google.protobuf.IFeatureSet|null); + + /** FeatureSetEditionDefault fixedFeatures */ + fixedFeatures?: (google.protobuf.IFeatureSet|null); } /** Represents a FeatureSetEditionDefault. */ @@ -21154,8 +21658,11 @@ export namespace google { /** FeatureSetEditionDefault edition. */ public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition); - /** FeatureSetEditionDefault features. */ - public features?: (google.protobuf.IFeatureSet|null); + /** FeatureSetEditionDefault overridableFeatures. */ + public overridableFeatures?: (google.protobuf.IFeatureSet|null); + + /** FeatureSetEditionDefault fixedFeatures. */ + public fixedFeatures?: (google.protobuf.IFeatureSet|null); /** * Creates a new FeatureSetEditionDefault instance using the specified properties. @@ -21688,6 +22195,13 @@ export namespace google { } } + /** SymbolVisibility enum. */ + enum SymbolVisibility { + VISIBILITY_UNSET = 0, + VISIBILITY_LOCAL = 1, + VISIBILITY_EXPORT = 2 + } + /** Properties of a Timestamp. */ interface ITimestamp { diff --git a/packages/google-cloud-talent/protos/protos.js b/packages/google-cloud-talent/protos/protos.js index 809b106a8f71..d2a8acaf313d 100644 --- a/packages/google-cloud-talent/protos/protos.js +++ b/packages/google-cloud-talent/protos/protos.js @@ -87,7 +87,7 @@ function TimestampRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -162,9 +162,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TimestampRange.decode = function decode(reader, length, error) { + TimestampRange.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.TimestampRange(); while (reader.pos < end) { var tag = reader.uint32(); @@ -172,15 +176,15 @@ break; switch (tag >>> 3) { case 1: { - message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -211,16 +215,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TimestampRange.verify = function verify(message) { + TimestampRange.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.startTime != null && message.hasOwnProperty("startTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.startTime); + var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1); if (error) return "startTime." + error; } if (message.endTime != null && message.hasOwnProperty("endTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.endTime); + var error = $root.google.protobuf.Timestamp.verify(message.endTime, long + 1); if (error) return "endTime." + error; } @@ -235,19 +243,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.TimestampRange} TimestampRange */ - TimestampRange.fromObject = function fromObject(object) { + TimestampRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.TimestampRange) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.TimestampRange(); if (object.startTime != null) { if (typeof object.startTime !== "object") throw TypeError(".google.cloud.talent.v4.TimestampRange.startTime: object expected"); - message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime); + message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1); } if (object.endTime != null) { if (typeof object.endTime !== "object") throw TypeError(".google.cloud.talent.v4.TimestampRange.endTime: object expected"); - message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime); + message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime, long + 1); } return message; }; @@ -616,7 +628,7 @@ function Location(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -711,9 +723,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Location.decode = function decode(reader, length, error) { + Location.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Location(); while (reader.pos < end) { var tag = reader.uint32(); @@ -725,11 +741,11 @@ break; } case 2: { - message.postalAddress = $root.google.type.PostalAddress.decode(reader, reader.uint32()); + message.postalAddress = $root.google.type.PostalAddress.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { - message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32()); + message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -737,7 +753,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -768,9 +784,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Location.verify = function verify(message) { + Location.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.locationType != null && message.hasOwnProperty("locationType")) switch (message.locationType) { default: @@ -789,12 +809,12 @@ break; } if (message.postalAddress != null && message.hasOwnProperty("postalAddress")) { - var error = $root.google.type.PostalAddress.verify(message.postalAddress); + var error = $root.google.type.PostalAddress.verify(message.postalAddress, long + 1); if (error) return "postalAddress." + error; } if (message.latLng != null && message.hasOwnProperty("latLng")) { - var error = $root.google.type.LatLng.verify(message.latLng); + var error = $root.google.type.LatLng.verify(message.latLng, long + 1); if (error) return "latLng." + error; } @@ -812,9 +832,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Location} Location */ - Location.fromObject = function fromObject(object) { + Location.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Location) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Location(); switch (object.locationType) { default: @@ -871,12 +895,12 @@ if (object.postalAddress != null) { if (typeof object.postalAddress !== "object") throw TypeError(".google.cloud.talent.v4.Location.postalAddress: object expected"); - message.postalAddress = $root.google.type.PostalAddress.fromObject(object.postalAddress); + message.postalAddress = $root.google.type.PostalAddress.fromObject(object.postalAddress, long + 1); } if (object.latLng != null) { if (typeof object.latLng !== "object") throw TypeError(".google.cloud.talent.v4.Location.latLng: object expected"); - message.latLng = $root.google.type.LatLng.fromObject(object.latLng); + message.latLng = $root.google.type.LatLng.fromObject(object.latLng, long + 1); } if (object.radiusMiles != null) message.radiusMiles = Number(object.radiusMiles); @@ -998,7 +1022,7 @@ function RequestMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -1103,9 +1127,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RequestMetadata.decode = function decode(reader, length, error) { + RequestMetadata.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.RequestMetadata(); while (reader.pos < end) { var tag = reader.uint32(); @@ -1129,11 +1157,11 @@ break; } case 5: { - message.deviceInfo = $root.google.cloud.talent.v4.DeviceInfo.decode(reader, reader.uint32()); + message.deviceInfo = $root.google.cloud.talent.v4.DeviceInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -1164,9 +1192,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RequestMetadata.verify = function verify(message) { + RequestMetadata.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.domain != null && message.hasOwnProperty("domain")) if (!$util.isString(message.domain)) return "domain: string expected"; @@ -1180,7 +1212,7 @@ if (typeof message.allowMissingIds !== "boolean") return "allowMissingIds: boolean expected"; if (message.deviceInfo != null && message.hasOwnProperty("deviceInfo")) { - var error = $root.google.cloud.talent.v4.DeviceInfo.verify(message.deviceInfo); + var error = $root.google.cloud.talent.v4.DeviceInfo.verify(message.deviceInfo, long + 1); if (error) return "deviceInfo." + error; } @@ -1195,9 +1227,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.RequestMetadata} RequestMetadata */ - RequestMetadata.fromObject = function fromObject(object) { + RequestMetadata.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.RequestMetadata) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.RequestMetadata(); if (object.domain != null) message.domain = String(object.domain); @@ -1210,7 +1246,7 @@ if (object.deviceInfo != null) { if (typeof object.deviceInfo !== "object") throw TypeError(".google.cloud.talent.v4.RequestMetadata.deviceInfo: object expected"); - message.deviceInfo = $root.google.cloud.talent.v4.DeviceInfo.fromObject(object.deviceInfo); + message.deviceInfo = $root.google.cloud.talent.v4.DeviceInfo.fromObject(object.deviceInfo, long + 1); } return message; }; @@ -1297,7 +1333,7 @@ function ResponseMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -1362,9 +1398,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ResponseMetadata.decode = function decode(reader, length, error) { + ResponseMetadata.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ResponseMetadata(); while (reader.pos < end) { var tag = reader.uint32(); @@ -1376,7 +1416,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -1407,9 +1447,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ResponseMetadata.verify = function verify(message) { + ResponseMetadata.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.requestId != null && message.hasOwnProperty("requestId")) if (!$util.isString(message.requestId)) return "requestId: string expected"; @@ -1424,9 +1468,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ResponseMetadata} ResponseMetadata */ - ResponseMetadata.fromObject = function fromObject(object) { + ResponseMetadata.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ResponseMetadata) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ResponseMetadata(); if (object.requestId != null) message.requestId = String(object.requestId); @@ -1503,7 +1551,7 @@ function DeviceInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -1578,9 +1626,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeviceInfo.decode = function decode(reader, length, error) { + DeviceInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.DeviceInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -1596,7 +1648,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -1627,9 +1679,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeviceInfo.verify = function verify(message) { + DeviceInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.deviceType != null && message.hasOwnProperty("deviceType")) switch (message.deviceType) { default: @@ -1657,9 +1713,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.DeviceInfo} DeviceInfo */ - DeviceInfo.fromObject = function fromObject(object) { + DeviceInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.DeviceInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.DeviceInfo(); switch (object.deviceType) { default: @@ -1804,7 +1864,7 @@ this.longValues = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -1904,9 +1964,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CustomAttribute.decode = function decode(reader, length, error) { + CustomAttribute.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CustomAttribute(); while (reader.pos < end) { var tag = reader.uint32(); @@ -1939,7 +2003,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -1970,9 +2034,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CustomAttribute.verify = function verify(message) { + CustomAttribute.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.stringValues != null && message.hasOwnProperty("stringValues")) { if (!Array.isArray(message.stringValues)) return "stringValues: array expected"; @@ -2004,9 +2072,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CustomAttribute} CustomAttribute */ - CustomAttribute.fromObject = function fromObject(object) { + CustomAttribute.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CustomAttribute) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CustomAttribute(); if (object.stringValues) { if (!Array.isArray(object.stringValues)) @@ -2128,7 +2200,7 @@ function SpellingCorrection(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -2213,9 +2285,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SpellingCorrection.decode = function decode(reader, length, error) { + SpellingCorrection.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.SpellingCorrection(); while (reader.pos < end) { var tag = reader.uint32(); @@ -2235,7 +2311,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -2266,9 +2342,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SpellingCorrection.verify = function verify(message) { + SpellingCorrection.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.corrected != null && message.hasOwnProperty("corrected")) if (typeof message.corrected !== "boolean") return "corrected: boolean expected"; @@ -2289,9 +2369,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.SpellingCorrection} SpellingCorrection */ - SpellingCorrection.fromObject = function fromObject(object) { + SpellingCorrection.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.SpellingCorrection) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.SpellingCorrection(); if (object.corrected != null) message.corrected = Boolean(object.corrected); @@ -2381,7 +2465,7 @@ this.entries = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -2467,9 +2551,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationInfo.decode = function decode(reader, length, error) { + CompensationInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CompensationInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -2479,19 +2567,19 @@ case 1: { if (!(message.entries && message.entries.length)) message.entries = []; - message.entries.push($root.google.cloud.talent.v4.CompensationInfo.CompensationEntry.decode(reader, reader.uint32())); + message.entries.push($root.google.cloud.talent.v4.CompensationInfo.CompensationEntry.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { - message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { - message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -2522,25 +2610,29 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationInfo.verify = function verify(message) { + CompensationInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.entries != null && message.hasOwnProperty("entries")) { if (!Array.isArray(message.entries)) return "entries: array expected"; for (var i = 0; i < message.entries.length; ++i) { - var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationEntry.verify(message.entries[i]); + var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationEntry.verify(message.entries[i], long + 1); if (error) return "entries." + error; } } if (message.annualizedBaseCompensationRange != null && message.hasOwnProperty("annualizedBaseCompensationRange")) { - var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.annualizedBaseCompensationRange); + var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.annualizedBaseCompensationRange, long + 1); if (error) return "annualizedBaseCompensationRange." + error; } if (message.annualizedTotalCompensationRange != null && message.hasOwnProperty("annualizedTotalCompensationRange")) { - var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.annualizedTotalCompensationRange); + var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.annualizedTotalCompensationRange, long + 1); if (error) return "annualizedTotalCompensationRange." + error; } @@ -2555,9 +2647,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CompensationInfo} CompensationInfo */ - CompensationInfo.fromObject = function fromObject(object) { + CompensationInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CompensationInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CompensationInfo(); if (object.entries) { if (!Array.isArray(object.entries)) @@ -2566,18 +2662,18 @@ for (var i = 0; i < object.entries.length; ++i) { if (typeof object.entries[i] !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.entries: object expected"); - message.entries[i] = $root.google.cloud.talent.v4.CompensationInfo.CompensationEntry.fromObject(object.entries[i]); + message.entries[i] = $root.google.cloud.talent.v4.CompensationInfo.CompensationEntry.fromObject(object.entries[i], long + 1); } } if (object.annualizedBaseCompensationRange != null) { if (typeof object.annualizedBaseCompensationRange !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.annualizedBaseCompensationRange: object expected"); - message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.annualizedBaseCompensationRange); + message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.annualizedBaseCompensationRange, long + 1); } if (object.annualizedTotalCompensationRange != null) { if (typeof object.annualizedTotalCompensationRange !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.annualizedTotalCompensationRange: object expected"); - message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.annualizedTotalCompensationRange); + message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.annualizedTotalCompensationRange, long + 1); } return message; }; @@ -2664,7 +2760,7 @@ function CompensationEntry(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -2793,9 +2889,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationEntry.decode = function decode(reader, length, error) { + CompensationEntry.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CompensationInfo.CompensationEntry(); while (reader.pos < end) { var tag = reader.uint32(); @@ -2811,11 +2911,11 @@ break; } case 3: { - message.amount = $root.google.type.Money.decode(reader, reader.uint32()); + message.amount = $root.google.type.Money.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { - message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { @@ -2823,11 +2923,11 @@ break; } case 6: { - message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.decode(reader, reader.uint32()); + message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -2858,9 +2958,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationEntry.verify = function verify(message) { + CompensationEntry.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.type != null && message.hasOwnProperty("type")) switch (message.type) { @@ -2894,7 +2998,7 @@ if (message.amount != null && message.hasOwnProperty("amount")) { properties.compensationAmount = 1; { - var error = $root.google.type.Money.verify(message.amount); + var error = $root.google.type.Money.verify(message.amount, long + 1); if (error) return "amount." + error; } @@ -2904,7 +3008,7 @@ return "compensationAmount: multiple values"; properties.compensationAmount = 1; { - var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.range); + var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.range, long + 1); if (error) return "range." + error; } @@ -2913,7 +3017,7 @@ if (!$util.isString(message.description)) return "description: string expected"; if (message.expectedUnitsPerYear != null && message.hasOwnProperty("expectedUnitsPerYear")) { - var error = $root.google.protobuf.DoubleValue.verify(message.expectedUnitsPerYear); + var error = $root.google.protobuf.DoubleValue.verify(message.expectedUnitsPerYear, long + 1); if (error) return "expectedUnitsPerYear." + error; } @@ -2928,9 +3032,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CompensationInfo.CompensationEntry} CompensationEntry */ - CompensationEntry.fromObject = function fromObject(object) { + CompensationEntry.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CompensationInfo.CompensationEntry) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CompensationInfo.CompensationEntry(); switch (object.type) { default: @@ -3019,19 +3127,19 @@ if (object.amount != null) { if (typeof object.amount !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.CompensationEntry.amount: object expected"); - message.amount = $root.google.type.Money.fromObject(object.amount); + message.amount = $root.google.type.Money.fromObject(object.amount, long + 1); } if (object.range != null) { if (typeof object.range !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.CompensationEntry.range: object expected"); - message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.range); + message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.range, long + 1); } if (object.description != null) message.description = String(object.description); if (object.expectedUnitsPerYear != null) { if (typeof object.expectedUnitsPerYear !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.CompensationEntry.expectedUnitsPerYear: object expected"); - message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.fromObject(object.expectedUnitsPerYear); + message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.fromObject(object.expectedUnitsPerYear, long + 1); } return message; }; @@ -3180,7 +3288,7 @@ function CompensationRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -3255,9 +3363,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationRange.decode = function decode(reader, length, error) { + CompensationRange.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CompensationInfo.CompensationRange(); while (reader.pos < end) { var tag = reader.uint32(); @@ -3265,15 +3377,15 @@ break; switch (tag >>> 3) { case 2: { - message.maxCompensation = $root.google.type.Money.decode(reader, reader.uint32()); + message.maxCompensation = $root.google.type.Money.decode(reader, reader.uint32(), undefined, long + 1); break; } case 1: { - message.minCompensation = $root.google.type.Money.decode(reader, reader.uint32()); + message.minCompensation = $root.google.type.Money.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -3304,16 +3416,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationRange.verify = function verify(message) { + CompensationRange.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.maxCompensation != null && message.hasOwnProperty("maxCompensation")) { - var error = $root.google.type.Money.verify(message.maxCompensation); + var error = $root.google.type.Money.verify(message.maxCompensation, long + 1); if (error) return "maxCompensation." + error; } if (message.minCompensation != null && message.hasOwnProperty("minCompensation")) { - var error = $root.google.type.Money.verify(message.minCompensation); + var error = $root.google.type.Money.verify(message.minCompensation, long + 1); if (error) return "minCompensation." + error; } @@ -3328,19 +3444,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CompensationInfo.CompensationRange} CompensationRange */ - CompensationRange.fromObject = function fromObject(object) { + CompensationRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CompensationInfo.CompensationRange) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CompensationInfo.CompensationRange(); if (object.maxCompensation != null) { if (typeof object.maxCompensation !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.CompensationRange.maxCompensation: object expected"); - message.maxCompensation = $root.google.type.Money.fromObject(object.maxCompensation); + message.maxCompensation = $root.google.type.Money.fromObject(object.maxCompensation, long + 1); } if (object.minCompensation != null) { if (typeof object.minCompensation !== "object") throw TypeError(".google.cloud.talent.v4.CompensationInfo.CompensationRange.minCompensation: object expected"); - message.minCompensation = $root.google.type.Money.fromObject(object.minCompensation); + message.minCompensation = $root.google.type.Money.fromObject(object.minCompensation, long + 1); } return message; }; @@ -3428,7 +3548,7 @@ function BatchOperationMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -3563,9 +3683,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchOperationMetadata.decode = function decode(reader, length, error) { + BatchOperationMetadata.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.BatchOperationMetadata(); while (reader.pos < end) { var tag = reader.uint32(); @@ -3593,19 +3717,19 @@ break; } case 6: { - message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 7: { - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { - message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -3636,9 +3760,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchOperationMetadata.verify = function verify(message) { + BatchOperationMetadata.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.state != null && message.hasOwnProperty("state")) switch (message.state) { default: @@ -3665,17 +3793,17 @@ if (!$util.isInteger(message.totalCount)) return "totalCount: integer expected"; if (message.createTime != null && message.hasOwnProperty("createTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.createTime); + var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1); if (error) return "createTime." + error; } if (message.updateTime != null && message.hasOwnProperty("updateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1); if (error) return "updateTime." + error; } if (message.endTime != null && message.hasOwnProperty("endTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.endTime); + var error = $root.google.protobuf.Timestamp.verify(message.endTime, long + 1); if (error) return "endTime." + error; } @@ -3690,9 +3818,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.BatchOperationMetadata} BatchOperationMetadata */ - BatchOperationMetadata.fromObject = function fromObject(object) { + BatchOperationMetadata.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.BatchOperationMetadata) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.BatchOperationMetadata(); switch (object.state) { default: @@ -3741,17 +3873,17 @@ if (object.createTime != null) { if (typeof object.createTime !== "object") throw TypeError(".google.cloud.talent.v4.BatchOperationMetadata.createTime: object expected"); - message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime); + message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1); } if (object.updateTime != null) { if (typeof object.updateTime !== "object") throw TypeError(".google.cloud.talent.v4.BatchOperationMetadata.updateTime: object expected"); - message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1); } if (object.endTime != null) { if (typeof object.endTime !== "object") throw TypeError(".google.cloud.talent.v4.BatchOperationMetadata.endTime: object expected"); - message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime); + message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime, long + 1); } return message; }; @@ -3884,7 +4016,7 @@ this.keywordSearchableJobCustomAttributes = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -4070,9 +4202,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Company.decode = function decode(reader, length, error) { + Company.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Company(); while (reader.pos < end) { var tag = reader.uint32(); @@ -4126,7 +4262,7 @@ break; } case 12: { - message.derivedInfo = $root.google.cloud.talent.v4.Company.DerivedInfo.decode(reader, reader.uint32()); + message.derivedInfo = $root.google.cloud.talent.v4.Company.DerivedInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 13: { @@ -4134,7 +4270,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -4165,9 +4301,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Company.verify = function verify(message) { + Company.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -4217,7 +4357,7 @@ return "keywordSearchableJobCustomAttributes: string[] expected"; } if (message.derivedInfo != null && message.hasOwnProperty("derivedInfo")) { - var error = $root.google.cloud.talent.v4.Company.DerivedInfo.verify(message.derivedInfo); + var error = $root.google.cloud.talent.v4.Company.DerivedInfo.verify(message.derivedInfo, long + 1); if (error) return "derivedInfo." + error; } @@ -4235,9 +4375,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Company} Company */ - Company.fromObject = function fromObject(object) { + Company.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Company) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Company(); if (object.name != null) message.name = String(object.name); @@ -4307,7 +4451,7 @@ if (object.derivedInfo != null) { if (typeof object.derivedInfo !== "object") throw TypeError(".google.cloud.talent.v4.Company.derivedInfo: object expected"); - message.derivedInfo = $root.google.cloud.talent.v4.Company.DerivedInfo.fromObject(object.derivedInfo); + message.derivedInfo = $root.google.cloud.talent.v4.Company.DerivedInfo.fromObject(object.derivedInfo, long + 1); } if (object.suspended != null) message.suspended = Boolean(object.suspended); @@ -4421,7 +4565,7 @@ function DerivedInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -4486,9 +4630,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DerivedInfo.decode = function decode(reader, length, error) { + DerivedInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Company.DerivedInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -4496,11 +4644,11 @@ break; switch (tag >>> 3) { case 1: { - message.headquartersLocation = $root.google.cloud.talent.v4.Location.decode(reader, reader.uint32()); + message.headquartersLocation = $root.google.cloud.talent.v4.Location.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -4531,11 +4679,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DerivedInfo.verify = function verify(message) { + DerivedInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.headquartersLocation != null && message.hasOwnProperty("headquartersLocation")) { - var error = $root.google.cloud.talent.v4.Location.verify(message.headquartersLocation); + var error = $root.google.cloud.talent.v4.Location.verify(message.headquartersLocation, long + 1); if (error) return "headquartersLocation." + error; } @@ -4550,14 +4702,18 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Company.DerivedInfo} DerivedInfo */ - DerivedInfo.fromObject = function fromObject(object) { + DerivedInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Company.DerivedInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Company.DerivedInfo(); if (object.headquartersLocation != null) { if (typeof object.headquartersLocation !== "object") throw TypeError(".google.cloud.talent.v4.Company.DerivedInfo.headquartersLocation: object expected"); - message.headquartersLocation = $root.google.cloud.talent.v4.Location.fromObject(object.headquartersLocation); + message.headquartersLocation = $root.google.cloud.talent.v4.Location.fromObject(object.headquartersLocation, long + 1); } return message; }; @@ -4835,7 +4991,7 @@ function CreateCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -4910,9 +5066,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateCompanyRequest.decode = function decode(reader, length, error) { + CreateCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CreateCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -4924,11 +5084,11 @@ break; } case 2: { - message.company = $root.google.cloud.talent.v4.Company.decode(reader, reader.uint32()); + message.company = $root.google.cloud.talent.v4.Company.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -4959,14 +5119,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateCompanyRequest.verify = function verify(message) { + CreateCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.company != null && message.hasOwnProperty("company")) { - var error = $root.google.cloud.talent.v4.Company.verify(message.company); + var error = $root.google.cloud.talent.v4.Company.verify(message.company, long + 1); if (error) return "company." + error; } @@ -4981,16 +5145,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CreateCompanyRequest} CreateCompanyRequest */ - CreateCompanyRequest.fromObject = function fromObject(object) { + CreateCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CreateCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CreateCompanyRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.company != null) { if (typeof object.company !== "object") throw TypeError(".google.cloud.talent.v4.CreateCompanyRequest.company: object expected"); - message.company = $root.google.cloud.talent.v4.Company.fromObject(object.company); + message.company = $root.google.cloud.talent.v4.Company.fromObject(object.company, long + 1); } return message; }; @@ -5068,7 +5236,7 @@ function GetCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -5133,9 +5301,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GetCompanyRequest.decode = function decode(reader, length, error) { + GetCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.GetCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -5147,7 +5319,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -5178,9 +5350,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GetCompanyRequest.verify = function verify(message) { + GetCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -5195,9 +5371,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.GetCompanyRequest} GetCompanyRequest */ - GetCompanyRequest.fromObject = function fromObject(object) { + GetCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.GetCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.GetCompanyRequest(); if (object.name != null) message.name = String(object.name); @@ -5274,7 +5454,7 @@ function UpdateCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -5349,9 +5529,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UpdateCompanyRequest.decode = function decode(reader, length, error) { + UpdateCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.UpdateCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -5359,15 +5543,15 @@ break; switch (tag >>> 3) { case 1: { - message.company = $root.google.cloud.talent.v4.Company.decode(reader, reader.uint32()); + message.company = $root.google.cloud.talent.v4.Company.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -5398,16 +5582,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UpdateCompanyRequest.verify = function verify(message) { + UpdateCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.company != null && message.hasOwnProperty("company")) { - var error = $root.google.cloud.talent.v4.Company.verify(message.company); + var error = $root.google.cloud.talent.v4.Company.verify(message.company, long + 1); if (error) return "company." + error; } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -5422,19 +5610,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.UpdateCompanyRequest} UpdateCompanyRequest */ - UpdateCompanyRequest.fromObject = function fromObject(object) { + UpdateCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.UpdateCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.UpdateCompanyRequest(); if (object.company != null) { if (typeof object.company !== "object") throw TypeError(".google.cloud.talent.v4.UpdateCompanyRequest.company: object expected"); - message.company = $root.google.cloud.talent.v4.Company.fromObject(object.company); + message.company = $root.google.cloud.talent.v4.Company.fromObject(object.company, long + 1); } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4.UpdateCompanyRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -5512,7 +5704,7 @@ function DeleteCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -5577,9 +5769,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeleteCompanyRequest.decode = function decode(reader, length, error) { + DeleteCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.DeleteCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -5591,7 +5787,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -5622,9 +5818,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeleteCompanyRequest.verify = function verify(message) { + DeleteCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -5639,9 +5839,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.DeleteCompanyRequest} DeleteCompanyRequest */ - DeleteCompanyRequest.fromObject = function fromObject(object) { + DeleteCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.DeleteCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.DeleteCompanyRequest(); if (object.name != null) message.name = String(object.name); @@ -5720,7 +5924,7 @@ function ListCompaniesRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -5815,9 +6019,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListCompaniesRequest.decode = function decode(reader, length, error) { + ListCompaniesRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ListCompaniesRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -5841,7 +6049,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -5872,9 +6080,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListCompaniesRequest.verify = function verify(message) { + ListCompaniesRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -5898,9 +6110,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ListCompaniesRequest} ListCompaniesRequest */ - ListCompaniesRequest.fromObject = function fromObject(object) { + ListCompaniesRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ListCompaniesRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ListCompaniesRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -5995,7 +6211,7 @@ this.companies = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -6081,9 +6297,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListCompaniesResponse.decode = function decode(reader, length, error) { + ListCompaniesResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ListCompaniesResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -6093,7 +6313,7 @@ case 1: { if (!(message.companies && message.companies.length)) message.companies = []; - message.companies.push($root.google.cloud.talent.v4.Company.decode(reader, reader.uint32())); + message.companies.push($root.google.cloud.talent.v4.Company.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -6101,11 +6321,11 @@ break; } case 3: { - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -6136,14 +6356,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListCompaniesResponse.verify = function verify(message) { + ListCompaniesResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.companies != null && message.hasOwnProperty("companies")) { if (!Array.isArray(message.companies)) return "companies: array expected"; for (var i = 0; i < message.companies.length; ++i) { - var error = $root.google.cloud.talent.v4.Company.verify(message.companies[i]); + var error = $root.google.cloud.talent.v4.Company.verify(message.companies[i], long + 1); if (error) return "companies." + error; } @@ -6152,7 +6376,7 @@ if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -6167,9 +6391,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ListCompaniesResponse} ListCompaniesResponse */ - ListCompaniesResponse.fromObject = function fromObject(object) { + ListCompaniesResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ListCompaniesResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ListCompaniesResponse(); if (object.companies) { if (!Array.isArray(object.companies)) @@ -6178,7 +6406,7 @@ for (var i = 0; i < object.companies.length; ++i) { if (typeof object.companies[i] !== "object") throw TypeError(".google.cloud.talent.v4.ListCompaniesResponse.companies: object expected"); - message.companies[i] = $root.google.cloud.talent.v4.Company.fromObject(object.companies[i]); + message.companies[i] = $root.google.cloud.talent.v4.Company.fromObject(object.companies[i], long + 1); } } if (object.nextPageToken != null) @@ -6186,7 +6414,7 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4.ListCompaniesResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -6346,7 +6574,7 @@ this.languageCodes = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -6472,9 +6700,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompleteQueryRequest.decode = function decode(reader, length, error) { + CompleteQueryRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CompleteQueryRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -6512,7 +6744,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -6543,9 +6775,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompleteQueryRequest.verify = function verify(message) { + CompleteQueryRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.tenant != null && message.hasOwnProperty("tenant")) if (!$util.isString(message.tenant)) return "tenant: string expected"; @@ -6595,9 +6831,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CompleteQueryRequest} CompleteQueryRequest */ - CompleteQueryRequest.fromObject = function fromObject(object) { + CompleteQueryRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CompleteQueryRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CompleteQueryRequest(); if (object.tenant != null) message.tenant = String(object.tenant); @@ -6789,7 +7029,7 @@ this.completionResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -6865,9 +7105,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompleteQueryResponse.decode = function decode(reader, length, error) { + CompleteQueryResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CompleteQueryResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -6877,15 +7121,15 @@ case 1: { if (!(message.completionResults && message.completionResults.length)) message.completionResults = []; - message.completionResults.push($root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult.decode(reader, reader.uint32())); + message.completionResults.push($root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -6916,20 +7160,24 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompleteQueryResponse.verify = function verify(message) { + CompleteQueryResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.completionResults != null && message.hasOwnProperty("completionResults")) { if (!Array.isArray(message.completionResults)) return "completionResults: array expected"; for (var i = 0; i < message.completionResults.length; ++i) { - var error = $root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult.verify(message.completionResults[i]); + var error = $root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult.verify(message.completionResults[i], long + 1); if (error) return "completionResults." + error; } } if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -6944,9 +7192,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CompleteQueryResponse} CompleteQueryResponse */ - CompleteQueryResponse.fromObject = function fromObject(object) { + CompleteQueryResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CompleteQueryResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CompleteQueryResponse(); if (object.completionResults) { if (!Array.isArray(object.completionResults)) @@ -6955,13 +7207,13 @@ for (var i = 0; i < object.completionResults.length; ++i) { if (typeof object.completionResults[i] !== "object") throw TypeError(".google.cloud.talent.v4.CompleteQueryResponse.completionResults: object expected"); - message.completionResults[i] = $root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult.fromObject(object.completionResults[i]); + message.completionResults[i] = $root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult.fromObject(object.completionResults[i], long + 1); } } if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4.CompleteQueryResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -7041,7 +7293,7 @@ function CompletionResult(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -7126,9 +7378,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompletionResult.decode = function decode(reader, length, error) { + CompletionResult.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult(); while (reader.pos < end) { var tag = reader.uint32(); @@ -7148,7 +7404,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -7179,9 +7435,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompletionResult.verify = function verify(message) { + CompletionResult.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.suggestion != null && message.hasOwnProperty("suggestion")) if (!$util.isString(message.suggestion)) return "suggestion: string expected"; @@ -7209,9 +7469,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CompleteQueryResponse.CompletionResult} CompletionResult */ - CompletionResult.fromObject = function fromObject(object) { + CompletionResult.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CompleteQueryResponse.CompletionResult(); if (object.suggestion != null) message.suggestion = String(object.suggestion); @@ -7327,7 +7591,7 @@ function ClientEvent(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -7446,9 +7710,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ClientEvent.decode = function decode(reader, length, error) { + ClientEvent.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ClientEvent(); while (reader.pos < end) { var tag = reader.uint32(); @@ -7464,11 +7732,11 @@ break; } case 4: { - message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { - message.jobEvent = $root.google.cloud.talent.v4.JobEvent.decode(reader, reader.uint32()); + message.jobEvent = $root.google.cloud.talent.v4.JobEvent.decode(reader, reader.uint32(), undefined, long + 1); break; } case 9: { @@ -7476,7 +7744,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -7507,9 +7775,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ClientEvent.verify = function verify(message) { + ClientEvent.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.requestId != null && message.hasOwnProperty("requestId")) if (!$util.isString(message.requestId)) @@ -7518,14 +7790,14 @@ if (!$util.isString(message.eventId)) return "eventId: string expected"; if (message.createTime != null && message.hasOwnProperty("createTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.createTime); + var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1); if (error) return "createTime." + error; } if (message.jobEvent != null && message.hasOwnProperty("jobEvent")) { properties.event = 1; { - var error = $root.google.cloud.talent.v4.JobEvent.verify(message.jobEvent); + var error = $root.google.cloud.talent.v4.JobEvent.verify(message.jobEvent, long + 1); if (error) return "jobEvent." + error; } @@ -7544,9 +7816,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ClientEvent} ClientEvent */ - ClientEvent.fromObject = function fromObject(object) { + ClientEvent.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ClientEvent) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ClientEvent(); if (object.requestId != null) message.requestId = String(object.requestId); @@ -7555,12 +7831,12 @@ if (object.createTime != null) { if (typeof object.createTime !== "object") throw TypeError(".google.cloud.talent.v4.ClientEvent.createTime: object expected"); - message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime); + message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1); } if (object.jobEvent != null) { if (typeof object.jobEvent !== "object") throw TypeError(".google.cloud.talent.v4.ClientEvent.jobEvent: object expected"); - message.jobEvent = $root.google.cloud.talent.v4.JobEvent.fromObject(object.jobEvent); + message.jobEvent = $root.google.cloud.talent.v4.JobEvent.fromObject(object.jobEvent, long + 1); } if (object.eventNotes != null) message.eventNotes = String(object.eventNotes); @@ -7653,7 +7929,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -7729,9 +8005,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JobEvent.decode = function decode(reader, length, error) { + JobEvent.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.JobEvent(); while (reader.pos < end) { var tag = reader.uint32(); @@ -7749,7 +8029,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -7780,9 +8060,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JobEvent.verify = function verify(message) { + JobEvent.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.type != null && message.hasOwnProperty("type")) switch (message.type) { default: @@ -7823,9 +8107,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.JobEvent} JobEvent */ - JobEvent.fromObject = function fromObject(object) { + JobEvent.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.JobEvent) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.JobEvent(); switch (object.type) { default: @@ -8096,7 +8384,7 @@ function CreateClientEventRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -8171,9 +8459,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateClientEventRequest.decode = function decode(reader, length, error) { + CreateClientEventRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CreateClientEventRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -8185,11 +8477,11 @@ break; } case 2: { - message.clientEvent = $root.google.cloud.talent.v4.ClientEvent.decode(reader, reader.uint32()); + message.clientEvent = $root.google.cloud.talent.v4.ClientEvent.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -8220,14 +8512,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateClientEventRequest.verify = function verify(message) { + CreateClientEventRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.clientEvent != null && message.hasOwnProperty("clientEvent")) { - var error = $root.google.cloud.talent.v4.ClientEvent.verify(message.clientEvent); + var error = $root.google.cloud.talent.v4.ClientEvent.verify(message.clientEvent, long + 1); if (error) return "clientEvent." + error; } @@ -8242,16 +8538,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CreateClientEventRequest} CreateClientEventRequest */ - CreateClientEventRequest.fromObject = function fromObject(object) { + CreateClientEventRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CreateClientEventRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CreateClientEventRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.clientEvent != null) { if (typeof object.clientEvent !== "object") throw TypeError(".google.cloud.talent.v4.CreateClientEventRequest.clientEvent: object expected"); - message.clientEvent = $root.google.cloud.talent.v4.ClientEvent.fromObject(object.clientEvent); + message.clientEvent = $root.google.cloud.talent.v4.ClientEvent.fromObject(object.clientEvent, long + 1); } return message; }; @@ -8349,7 +8649,7 @@ this.excludedJobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -8557,9 +8857,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JobQuery.decode = function decode(reader, length, error) { + JobQuery.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.JobQuery(); while (reader.pos < end) { var tag = reader.uint32(); @@ -8583,7 +8887,7 @@ case 3: { if (!(message.locationFilters && message.locationFilters.length)) message.locationFilters = []; - message.locationFilters.push($root.google.cloud.talent.v4.LocationFilter.decode(reader, reader.uint32())); + message.locationFilters.push($root.google.cloud.talent.v4.LocationFilter.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 4: { @@ -8598,7 +8902,7 @@ break; } case 5: { - message.commuteFilter = $root.google.cloud.talent.v4.CommuteFilter.decode(reader, reader.uint32()); + message.commuteFilter = $root.google.cloud.talent.v4.CommuteFilter.decode(reader, reader.uint32(), undefined, long + 1); break; } case 6: { @@ -8608,7 +8912,7 @@ break; } case 7: { - message.compensationFilter = $root.google.cloud.talent.v4.CompensationFilter.decode(reader, reader.uint32()); + message.compensationFilter = $root.google.cloud.talent.v4.CompensationFilter.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { @@ -8637,7 +8941,7 @@ break; } case 12: { - message.publishTimeRange = $root.google.cloud.talent.v4.TimestampRange.decode(reader, reader.uint32()); + message.publishTimeRange = $root.google.cloud.talent.v4.TimestampRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 13: { @@ -8647,7 +8951,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -8678,9 +8982,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JobQuery.verify = function verify(message) { + JobQuery.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.query != null && message.hasOwnProperty("query")) if (!$util.isString(message.query)) return "query: string expected"; @@ -8698,7 +9006,7 @@ if (!Array.isArray(message.locationFilters)) return "locationFilters: array expected"; for (var i = 0; i < message.locationFilters.length; ++i) { - var error = $root.google.cloud.talent.v4.LocationFilter.verify(message.locationFilters[i]); + var error = $root.google.cloud.talent.v4.LocationFilter.verify(message.locationFilters[i], long + 1); if (error) return "locationFilters." + error; } @@ -8745,7 +9053,7 @@ } } if (message.commuteFilter != null && message.hasOwnProperty("commuteFilter")) { - var error = $root.google.cloud.talent.v4.CommuteFilter.verify(message.commuteFilter); + var error = $root.google.cloud.talent.v4.CommuteFilter.verify(message.commuteFilter, long + 1); if (error) return "commuteFilter." + error; } @@ -8757,7 +9065,7 @@ return "companyDisplayNames: string[] expected"; } if (message.compensationFilter != null && message.hasOwnProperty("compensationFilter")) { - var error = $root.google.cloud.talent.v4.CompensationFilter.verify(message.compensationFilter); + var error = $root.google.cloud.talent.v4.CompensationFilter.verify(message.compensationFilter, long + 1); if (error) return "compensationFilter." + error; } @@ -8796,7 +9104,7 @@ return "languageCodes: string[] expected"; } if (message.publishTimeRange != null && message.hasOwnProperty("publishTimeRange")) { - var error = $root.google.cloud.talent.v4.TimestampRange.verify(message.publishTimeRange); + var error = $root.google.cloud.talent.v4.TimestampRange.verify(message.publishTimeRange, long + 1); if (error) return "publishTimeRange." + error; } @@ -8818,9 +9126,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.JobQuery} JobQuery */ - JobQuery.fromObject = function fromObject(object) { + JobQuery.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.JobQuery) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.JobQuery(); if (object.query != null) message.query = String(object.query); @@ -8840,7 +9152,7 @@ for (var i = 0; i < object.locationFilters.length; ++i) { if (typeof object.locationFilters[i] !== "object") throw TypeError(".google.cloud.talent.v4.JobQuery.locationFilters: object expected"); - message.locationFilters[i] = $root.google.cloud.talent.v4.LocationFilter.fromObject(object.locationFilters[i]); + message.locationFilters[i] = $root.google.cloud.talent.v4.LocationFilter.fromObject(object.locationFilters[i], long + 1); } } if (object.jobCategories) { @@ -8983,7 +9295,7 @@ if (object.commuteFilter != null) { if (typeof object.commuteFilter !== "object") throw TypeError(".google.cloud.talent.v4.JobQuery.commuteFilter: object expected"); - message.commuteFilter = $root.google.cloud.talent.v4.CommuteFilter.fromObject(object.commuteFilter); + message.commuteFilter = $root.google.cloud.talent.v4.CommuteFilter.fromObject(object.commuteFilter, long + 1); } if (object.companyDisplayNames) { if (!Array.isArray(object.companyDisplayNames)) @@ -8995,7 +9307,7 @@ if (object.compensationFilter != null) { if (typeof object.compensationFilter !== "object") throw TypeError(".google.cloud.talent.v4.JobQuery.compensationFilter: object expected"); - message.compensationFilter = $root.google.cloud.talent.v4.CompensationFilter.fromObject(object.compensationFilter); + message.compensationFilter = $root.google.cloud.talent.v4.CompensationFilter.fromObject(object.compensationFilter, long + 1); } if (object.customAttributeFilter != null) message.customAttributeFilter = String(object.customAttributeFilter); @@ -9068,7 +9380,7 @@ if (object.publishTimeRange != null) { if (typeof object.publishTimeRange !== "object") throw TypeError(".google.cloud.talent.v4.JobQuery.publishTimeRange: object expected"); - message.publishTimeRange = $root.google.cloud.talent.v4.TimestampRange.fromObject(object.publishTimeRange); + message.publishTimeRange = $root.google.cloud.talent.v4.TimestampRange.fromObject(object.publishTimeRange, long + 1); } if (object.excludedJobs) { if (!Array.isArray(object.excludedJobs)) @@ -9216,7 +9528,7 @@ function LocationFilter(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -9321,9 +9633,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LocationFilter.decode = function decode(reader, length, error) { + LocationFilter.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.LocationFilter(); while (reader.pos < end) { var tag = reader.uint32(); @@ -9339,7 +9655,7 @@ break; } case 3: { - message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32()); + message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -9351,7 +9667,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -9382,9 +9698,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LocationFilter.verify = function verify(message) { + LocationFilter.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.address != null && message.hasOwnProperty("address")) if (!$util.isString(message.address)) return "address: string expected"; @@ -9392,7 +9712,7 @@ if (!$util.isString(message.regionCode)) return "regionCode: string expected"; if (message.latLng != null && message.hasOwnProperty("latLng")) { - var error = $root.google.type.LatLng.verify(message.latLng); + var error = $root.google.type.LatLng.verify(message.latLng, long + 1); if (error) return "latLng." + error; } @@ -9420,9 +9740,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.LocationFilter} LocationFilter */ - LocationFilter.fromObject = function fromObject(object) { + LocationFilter.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.LocationFilter) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.LocationFilter(); if (object.address != null) message.address = String(object.address); @@ -9431,7 +9755,7 @@ if (object.latLng != null) { if (typeof object.latLng !== "object") throw TypeError(".google.cloud.talent.v4.LocationFilter.latLng: object expected"); - message.latLng = $root.google.type.LatLng.fromObject(object.latLng); + message.latLng = $root.google.type.LatLng.fromObject(object.latLng, long + 1); } if (object.distanceInMiles != null) message.distanceInMiles = Number(object.distanceInMiles); @@ -9566,7 +9890,7 @@ this.units = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -9665,9 +9989,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationFilter.decode = function decode(reader, length, error) { + CompensationFilter.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CompensationFilter(); while (reader.pos < end) { var tag = reader.uint32(); @@ -9690,7 +10018,7 @@ break; } case 3: { - message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -9698,7 +10026,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -9729,9 +10057,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationFilter.verify = function verify(message) { + CompensationFilter.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.type != null && message.hasOwnProperty("type")) switch (message.type) { default: @@ -9762,7 +10094,7 @@ } } if (message.range != null && message.hasOwnProperty("range")) { - var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.range); + var error = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.verify(message.range, long + 1); if (error) return "range." + error; } @@ -9780,9 +10112,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CompensationFilter} CompensationFilter */ - CompensationFilter.fromObject = function fromObject(object) { + CompensationFilter.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CompensationFilter) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CompensationFilter(); switch (object.type) { default: @@ -9860,7 +10196,7 @@ if (object.range != null) { if (typeof object.range !== "object") throw TypeError(".google.cloud.talent.v4.CompensationFilter.range: object expected"); - message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.range); + message.range = $root.google.cloud.talent.v4.CompensationInfo.CompensationRange.fromObject(object.range, long + 1); } if (object.includeJobsWithUnspecifiedCompensationRange != null) message.includeJobsWithUnspecifiedCompensationRange = Boolean(object.includeJobsWithUnspecifiedCompensationRange); @@ -9975,7 +10311,7 @@ function CommuteFilter(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -10104,9 +10440,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommuteFilter.decode = function decode(reader, length, error) { + CommuteFilter.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CommuteFilter(); while (reader.pos < end) { var tag = reader.uint32(); @@ -10118,11 +10458,11 @@ break; } case 2: { - message.startCoordinates = $root.google.type.LatLng.decode(reader, reader.uint32()); + message.startCoordinates = $root.google.type.LatLng.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { - message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -10134,11 +10474,11 @@ break; } case 6: { - message.departureTime = $root.google.type.TimeOfDay.decode(reader, reader.uint32()); + message.departureTime = $root.google.type.TimeOfDay.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -10169,9 +10509,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CommuteFilter.verify = function verify(message) { + CommuteFilter.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.commuteMethod != null && message.hasOwnProperty("commuteMethod")) switch (message.commuteMethod) { @@ -10186,12 +10530,12 @@ break; } if (message.startCoordinates != null && message.hasOwnProperty("startCoordinates")) { - var error = $root.google.type.LatLng.verify(message.startCoordinates); + var error = $root.google.type.LatLng.verify(message.startCoordinates, long + 1); if (error) return "startCoordinates." + error; } if (message.travelDuration != null && message.hasOwnProperty("travelDuration")) { - var error = $root.google.protobuf.Duration.verify(message.travelDuration); + var error = $root.google.protobuf.Duration.verify(message.travelDuration, long + 1); if (error) return "travelDuration." + error; } @@ -10214,7 +10558,7 @@ return "trafficOption: multiple values"; properties.trafficOption = 1; { - var error = $root.google.type.TimeOfDay.verify(message.departureTime); + var error = $root.google.type.TimeOfDay.verify(message.departureTime, long + 1); if (error) return "departureTime." + error; } @@ -10230,9 +10574,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CommuteFilter} CommuteFilter */ - CommuteFilter.fromObject = function fromObject(object) { + CommuteFilter.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CommuteFilter) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CommuteFilter(); switch (object.commuteMethod) { default: @@ -10269,12 +10617,12 @@ if (object.startCoordinates != null) { if (typeof object.startCoordinates !== "object") throw TypeError(".google.cloud.talent.v4.CommuteFilter.startCoordinates: object expected"); - message.startCoordinates = $root.google.type.LatLng.fromObject(object.startCoordinates); + message.startCoordinates = $root.google.type.LatLng.fromObject(object.startCoordinates, long + 1); } if (object.travelDuration != null) { if (typeof object.travelDuration !== "object") throw TypeError(".google.cloud.talent.v4.CommuteFilter.travelDuration: object expected"); - message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration); + message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration, long + 1); } if (object.allowImpreciseAddresses != null) message.allowImpreciseAddresses = Boolean(object.allowImpreciseAddresses); @@ -10301,7 +10649,7 @@ if (object.departureTime != null) { if (typeof object.departureTime !== "object") throw TypeError(".google.cloud.talent.v4.CommuteFilter.departureTime: object expected"); - message.departureTime = $root.google.type.TimeOfDay.fromObject(object.departureTime); + message.departureTime = $root.google.type.TimeOfDay.fromObject(object.departureTime, long + 1); } return message; }; @@ -10411,7 +10759,7 @@ function HistogramQuery(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -10476,9 +10824,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - HistogramQuery.decode = function decode(reader, length, error) { + HistogramQuery.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.HistogramQuery(); while (reader.pos < end) { var tag = reader.uint32(); @@ -10490,7 +10842,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -10521,9 +10873,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - HistogramQuery.verify = function verify(message) { + HistogramQuery.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.histogramQuery != null && message.hasOwnProperty("histogramQuery")) if (!$util.isString(message.histogramQuery)) return "histogramQuery: string expected"; @@ -10538,9 +10894,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.HistogramQuery} HistogramQuery */ - HistogramQuery.fromObject = function fromObject(object) { + HistogramQuery.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.HistogramQuery) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.HistogramQuery(); if (object.histogramQuery != null) message.histogramQuery = String(object.histogramQuery); @@ -10618,7 +10978,7 @@ this.histogram = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -10694,9 +11054,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - HistogramQueryResult.decode = function decode(reader, length, error) { + HistogramQueryResult.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.HistogramQueryResult(), key, value; while (reader.pos < end) { var tag = reader.uint32(); @@ -10723,15 +11087,17 @@ value = reader.int64(); break; default: - reader.skipType(tag2 & 7); + reader.skipType(tag2 & 7, long); break; } } + if (key === "__proto__") + $util.makeProp(message.histogram, key); message.histogram[key] = value; break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -10762,9 +11128,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - HistogramQueryResult.verify = function verify(message) { + HistogramQueryResult.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.histogramQuery != null && message.hasOwnProperty("histogramQuery")) if (!$util.isString(message.histogramQuery)) return "histogramQuery: string expected"; @@ -10787,9 +11157,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.HistogramQueryResult} HistogramQueryResult */ - HistogramQueryResult.fromObject = function fromObject(object) { + HistogramQueryResult.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.HistogramQueryResult) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.HistogramQueryResult(); if (object.histogramQuery != null) message.histogramQuery = String(object.histogramQuery); @@ -10797,7 +11171,9 @@ if (typeof object.histogram !== "object") throw TypeError(".google.cloud.talent.v4.HistogramQueryResult.histogram: object expected"); message.histogram = {}; - for (var keys = Object.keys(object.histogram), i = 0; i < keys.length; ++i) + for (var keys = Object.keys(object.histogram), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.histogram, keys[i]); if ($util.Long) (message.histogram[keys[i]] = $util.Long.fromValue(object.histogram[keys[i]])).unsigned = false; else if (typeof object.histogram[keys[i]] === "string") @@ -10806,6 +11182,7 @@ message.histogram[keys[i]] = object.histogram[keys[i]]; else if (typeof object.histogram[keys[i]] === "object") message.histogram[keys[i]] = new $util.LongBits(object.histogram[keys[i]].low >>> 0, object.histogram[keys[i]].high >>> 0).toNumber(); + } } return message; }; @@ -10832,11 +11209,14 @@ var keys2; if (message.histogram && (keys2 = Object.keys(message.histogram)).length) { object.histogram = {}; - for (var j = 0; j < keys2.length; ++j) + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.histogram, keys2[j]); if (typeof message.histogram[keys2[j]] === "number") object.histogram[keys2[j]] = options.longs === String ? String(message.histogram[keys2[j]]) : message.histogram[keys2[j]]; else object.histogram[keys2[j]] = options.longs === String ? $util.Long.prototype.toString.call(message.histogram[keys2[j]]) : options.longs === Number ? new $util.LongBits(message.histogram[keys2[j]].low >>> 0, message.histogram[keys2[j]].high >>> 0).toNumber() : message.histogram[keys2[j]]; + } } return object; }; @@ -10924,7 +11304,7 @@ this.employmentTypes = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -11295,9 +11675,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Job.decode = function decode(reader, length, error) { + Job.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Job(), key, value; while (reader.pos < end) { var tag = reader.uint32(); @@ -11331,7 +11715,7 @@ break; } case 7: { - message.applicationInfo = $root.google.cloud.talent.v4.Job.ApplicationInfo.decode(reader, reader.uint32()); + message.applicationInfo = $root.google.cloud.talent.v4.Job.ApplicationInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { @@ -11346,7 +11730,7 @@ break; } case 9: { - message.compensationInfo = $root.google.cloud.talent.v4.CompensationInfo.decode(reader, reader.uint32()); + message.compensationInfo = $root.google.cloud.talent.v4.CompensationInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 10: { @@ -11362,13 +11746,15 @@ key = reader.string(); break; case 2: - value = $root.google.cloud.talent.v4.CustomAttribute.decode(reader, reader.uint32()); + value = $root.google.cloud.talent.v4.CustomAttribute.decode(reader, reader.uint32(), undefined, long + 1); break; default: - reader.skipType(tag2 & 7); + reader.skipType(tag2 & 7, long); break; } } + if (key === "__proto__") + $util.makeProp(message.customAttributes, key); message.customAttributes[key] = value; break; } @@ -11431,27 +11817,27 @@ break; } case 22: { - message.jobStartTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.jobStartTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 23: { - message.jobEndTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.jobEndTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 24: { - message.postingPublishTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingPublishTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 25: { - message.postingExpireTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingExpireTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 26: { - message.postingCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 27: { - message.postingUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 28: { @@ -11459,15 +11845,15 @@ break; } case 29: { - message.derivedInfo = $root.google.cloud.talent.v4.Job.DerivedInfo.decode(reader, reader.uint32()); + message.derivedInfo = $root.google.cloud.talent.v4.Job.DerivedInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 30: { - message.processingOptions = $root.google.cloud.talent.v4.Job.ProcessingOptions.decode(reader, reader.uint32()); + message.processingOptions = $root.google.cloud.talent.v4.Job.ProcessingOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -11498,9 +11884,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Job.verify = function verify(message) { + Job.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -11524,7 +11914,7 @@ return "addresses: string[] expected"; } if (message.applicationInfo != null && message.hasOwnProperty("applicationInfo")) { - var error = $root.google.cloud.talent.v4.Job.ApplicationInfo.verify(message.applicationInfo); + var error = $root.google.cloud.talent.v4.Job.ApplicationInfo.verify(message.applicationInfo, long + 1); if (error) return "applicationInfo." + error; } @@ -11551,7 +11941,7 @@ } } if (message.compensationInfo != null && message.hasOwnProperty("compensationInfo")) { - var error = $root.google.cloud.talent.v4.CompensationInfo.verify(message.compensationInfo); + var error = $root.google.cloud.talent.v4.CompensationInfo.verify(message.compensationInfo, long + 1); if (error) return "compensationInfo." + error; } @@ -11560,7 +11950,7 @@ return "customAttributes: object expected"; var key = Object.keys(message.customAttributes); for (var i = 0; i < key.length; ++i) { - var error = $root.google.cloud.talent.v4.CustomAttribute.verify(message.customAttributes[key[i]]); + var error = $root.google.cloud.talent.v4.CustomAttribute.verify(message.customAttributes[key[i]], long + 1); if (error) return "customAttributes." + error; } @@ -11656,32 +12046,32 @@ break; } if (message.jobStartTime != null && message.hasOwnProperty("jobStartTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.jobStartTime); + var error = $root.google.protobuf.Timestamp.verify(message.jobStartTime, long + 1); if (error) return "jobStartTime." + error; } if (message.jobEndTime != null && message.hasOwnProperty("jobEndTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.jobEndTime); + var error = $root.google.protobuf.Timestamp.verify(message.jobEndTime, long + 1); if (error) return "jobEndTime." + error; } if (message.postingPublishTime != null && message.hasOwnProperty("postingPublishTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingPublishTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingPublishTime, long + 1); if (error) return "postingPublishTime." + error; } if (message.postingExpireTime != null && message.hasOwnProperty("postingExpireTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingExpireTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingExpireTime, long + 1); if (error) return "postingExpireTime." + error; } if (message.postingCreateTime != null && message.hasOwnProperty("postingCreateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingCreateTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingCreateTime, long + 1); if (error) return "postingCreateTime." + error; } if (message.postingUpdateTime != null && message.hasOwnProperty("postingUpdateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingUpdateTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingUpdateTime, long + 1); if (error) return "postingUpdateTime." + error; } @@ -11689,12 +12079,12 @@ if (!$util.isString(message.companyDisplayName)) return "companyDisplayName: string expected"; if (message.derivedInfo != null && message.hasOwnProperty("derivedInfo")) { - var error = $root.google.cloud.talent.v4.Job.DerivedInfo.verify(message.derivedInfo); + var error = $root.google.cloud.talent.v4.Job.DerivedInfo.verify(message.derivedInfo, long + 1); if (error) return "derivedInfo." + error; } if (message.processingOptions != null && message.hasOwnProperty("processingOptions")) { - var error = $root.google.cloud.talent.v4.Job.ProcessingOptions.verify(message.processingOptions); + var error = $root.google.cloud.talent.v4.Job.ProcessingOptions.verify(message.processingOptions, long + 1); if (error) return "processingOptions." + error; } @@ -11709,9 +12099,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Job} Job */ - Job.fromObject = function fromObject(object) { + Job.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Job) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Job(); if (object.name != null) message.name = String(object.name); @@ -11733,7 +12127,7 @@ if (object.applicationInfo != null) { if (typeof object.applicationInfo !== "object") throw TypeError(".google.cloud.talent.v4.Job.applicationInfo: object expected"); - message.applicationInfo = $root.google.cloud.talent.v4.Job.ApplicationInfo.fromObject(object.applicationInfo); + message.applicationInfo = $root.google.cloud.talent.v4.Job.ApplicationInfo.fromObject(object.applicationInfo, long + 1); } if (object.jobBenefits) { if (!Array.isArray(object.jobBenefits)) @@ -11799,16 +12193,18 @@ if (object.compensationInfo != null) { if (typeof object.compensationInfo !== "object") throw TypeError(".google.cloud.talent.v4.Job.compensationInfo: object expected"); - message.compensationInfo = $root.google.cloud.talent.v4.CompensationInfo.fromObject(object.compensationInfo); + message.compensationInfo = $root.google.cloud.talent.v4.CompensationInfo.fromObject(object.compensationInfo, long + 1); } if (object.customAttributes) { if (typeof object.customAttributes !== "object") throw TypeError(".google.cloud.talent.v4.Job.customAttributes: object expected"); message.customAttributes = {}; for (var keys = Object.keys(object.customAttributes), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.customAttributes, keys[i]); if (typeof object.customAttributes[keys[i]] !== "object") throw TypeError(".google.cloud.talent.v4.Job.customAttributes: object expected"); - message.customAttributes[keys[i]] = $root.google.cloud.talent.v4.CustomAttribute.fromObject(object.customAttributes[keys[i]]); + message.customAttributes[keys[i]] = $root.google.cloud.talent.v4.CustomAttribute.fromObject(object.customAttributes[keys[i]], long + 1); } } if (object.degreeTypes) { @@ -12012,44 +12408,44 @@ if (object.jobStartTime != null) { if (typeof object.jobStartTime !== "object") throw TypeError(".google.cloud.talent.v4.Job.jobStartTime: object expected"); - message.jobStartTime = $root.google.protobuf.Timestamp.fromObject(object.jobStartTime); + message.jobStartTime = $root.google.protobuf.Timestamp.fromObject(object.jobStartTime, long + 1); } if (object.jobEndTime != null) { if (typeof object.jobEndTime !== "object") throw TypeError(".google.cloud.talent.v4.Job.jobEndTime: object expected"); - message.jobEndTime = $root.google.protobuf.Timestamp.fromObject(object.jobEndTime); + message.jobEndTime = $root.google.protobuf.Timestamp.fromObject(object.jobEndTime, long + 1); } if (object.postingPublishTime != null) { if (typeof object.postingPublishTime !== "object") throw TypeError(".google.cloud.talent.v4.Job.postingPublishTime: object expected"); - message.postingPublishTime = $root.google.protobuf.Timestamp.fromObject(object.postingPublishTime); + message.postingPublishTime = $root.google.protobuf.Timestamp.fromObject(object.postingPublishTime, long + 1); } if (object.postingExpireTime != null) { if (typeof object.postingExpireTime !== "object") throw TypeError(".google.cloud.talent.v4.Job.postingExpireTime: object expected"); - message.postingExpireTime = $root.google.protobuf.Timestamp.fromObject(object.postingExpireTime); + message.postingExpireTime = $root.google.protobuf.Timestamp.fromObject(object.postingExpireTime, long + 1); } if (object.postingCreateTime != null) { if (typeof object.postingCreateTime !== "object") throw TypeError(".google.cloud.talent.v4.Job.postingCreateTime: object expected"); - message.postingCreateTime = $root.google.protobuf.Timestamp.fromObject(object.postingCreateTime); + message.postingCreateTime = $root.google.protobuf.Timestamp.fromObject(object.postingCreateTime, long + 1); } if (object.postingUpdateTime != null) { if (typeof object.postingUpdateTime !== "object") throw TypeError(".google.cloud.talent.v4.Job.postingUpdateTime: object expected"); - message.postingUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.postingUpdateTime); + message.postingUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.postingUpdateTime, long + 1); } if (object.companyDisplayName != null) message.companyDisplayName = String(object.companyDisplayName); if (object.derivedInfo != null) { if (typeof object.derivedInfo !== "object") throw TypeError(".google.cloud.talent.v4.Job.derivedInfo: object expected"); - message.derivedInfo = $root.google.cloud.talent.v4.Job.DerivedInfo.fromObject(object.derivedInfo); + message.derivedInfo = $root.google.cloud.talent.v4.Job.DerivedInfo.fromObject(object.derivedInfo, long + 1); } if (object.processingOptions != null) { if (typeof object.processingOptions !== "object") throw TypeError(".google.cloud.talent.v4.Job.processingOptions: object expected"); - message.processingOptions = $root.google.cloud.talent.v4.Job.ProcessingOptions.fromObject(object.processingOptions); + message.processingOptions = $root.google.cloud.talent.v4.Job.ProcessingOptions.fromObject(object.processingOptions, long + 1); } return message; }; @@ -12129,8 +12525,11 @@ var keys2; if (message.customAttributes && (keys2 = Object.keys(message.customAttributes)).length) { object.customAttributes = {}; - for (var j = 0; j < keys2.length; ++j) + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.customAttributes, keys2[j]); object.customAttributes[keys2[j]] = $root.google.cloud.talent.v4.CustomAttribute.toObject(message.customAttributes[keys2[j]], options); + } } if (message.degreeTypes && message.degreeTypes.length) { object.degreeTypes = []; @@ -12231,7 +12630,7 @@ this.uris = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -12318,9 +12717,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ApplicationInfo.decode = function decode(reader, length, error) { + ApplicationInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Job.ApplicationInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -12344,7 +12747,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -12375,9 +12778,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ApplicationInfo.verify = function verify(message) { + ApplicationInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.emails != null && message.hasOwnProperty("emails")) { if (!Array.isArray(message.emails)) return "emails: array expected"; @@ -12406,9 +12813,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Job.ApplicationInfo} ApplicationInfo */ - ApplicationInfo.fromObject = function fromObject(object) { + ApplicationInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Job.ApplicationInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Job.ApplicationInfo(); if (object.emails) { if (!Array.isArray(object.emails)) @@ -12515,7 +12926,7 @@ this.jobCategories = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -12595,9 +13006,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DerivedInfo.decode = function decode(reader, length, error) { + DerivedInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Job.DerivedInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -12607,7 +13022,7 @@ case 1: { if (!(message.locations && message.locations.length)) message.locations = []; - message.locations.push($root.google.cloud.talent.v4.Location.decode(reader, reader.uint32())); + message.locations.push($root.google.cloud.talent.v4.Location.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { @@ -12622,7 +13037,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -12653,14 +13068,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DerivedInfo.verify = function verify(message) { + DerivedInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.locations != null && message.hasOwnProperty("locations")) { if (!Array.isArray(message.locations)) return "locations: array expected"; for (var i = 0; i < message.locations.length; ++i) { - var error = $root.google.cloud.talent.v4.Location.verify(message.locations[i]); + var error = $root.google.cloud.talent.v4.Location.verify(message.locations[i], long + 1); if (error) return "locations." + error; } @@ -12717,9 +13136,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Job.DerivedInfo} DerivedInfo */ - DerivedInfo.fromObject = function fromObject(object) { + DerivedInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Job.DerivedInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Job.DerivedInfo(); if (object.locations) { if (!Array.isArray(object.locations)) @@ -12728,7 +13151,7 @@ for (var i = 0; i < object.locations.length; ++i) { if (typeof object.locations[i] !== "object") throw TypeError(".google.cloud.talent.v4.Job.DerivedInfo.locations: object expected"); - message.locations[i] = $root.google.cloud.talent.v4.Location.fromObject(object.locations[i]); + message.locations[i] = $root.google.cloud.talent.v4.Location.fromObject(object.locations[i], long + 1); } } if (object.jobCategories) { @@ -12951,7 +13374,7 @@ function ProcessingOptions(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -13026,9 +13449,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ProcessingOptions.decode = function decode(reader, length, error) { + ProcessingOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Job.ProcessingOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -13044,7 +13471,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -13075,9 +13502,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ProcessingOptions.verify = function verify(message) { + ProcessingOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.disableStreetAddressResolution != null && message.hasOwnProperty("disableStreetAddressResolution")) if (typeof message.disableStreetAddressResolution !== "boolean") return "disableStreetAddressResolution: boolean expected"; @@ -13101,9 +13532,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Job.ProcessingOptions} ProcessingOptions */ - ProcessingOptions.fromObject = function fromObject(object) { + ProcessingOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Job.ProcessingOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Job.ProcessingOptions(); if (object.disableStreetAddressResolution != null) message.disableStreetAddressResolution = Boolean(object.disableStreetAddressResolution); @@ -13572,7 +14007,7 @@ function CreateJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -13647,9 +14082,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateJobRequest.decode = function decode(reader, length, error) { + CreateJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CreateJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -13661,11 +14100,11 @@ break; } case 2: { - message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -13696,14 +14135,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateJobRequest.verify = function verify(message) { + CreateJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4.Job.verify(message.job); + var error = $root.google.cloud.talent.v4.Job.verify(message.job, long + 1); if (error) return "job." + error; } @@ -13718,16 +14161,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CreateJobRequest} CreateJobRequest */ - CreateJobRequest.fromObject = function fromObject(object) { + CreateJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CreateJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CreateJobRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4.CreateJobRequest.job: object expected"); - message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job, long + 1); } return message; }; @@ -13805,7 +14252,7 @@ function GetJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -13870,9 +14317,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GetJobRequest.decode = function decode(reader, length, error) { + GetJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.GetJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -13884,7 +14335,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -13915,9 +14366,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GetJobRequest.verify = function verify(message) { + GetJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -13932,9 +14387,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.GetJobRequest} GetJobRequest */ - GetJobRequest.fromObject = function fromObject(object) { + GetJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.GetJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.GetJobRequest(); if (object.name != null) message.name = String(object.name); @@ -14011,7 +14470,7 @@ function UpdateJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -14086,9 +14545,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UpdateJobRequest.decode = function decode(reader, length, error) { + UpdateJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.UpdateJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -14096,15 +14559,15 @@ break; switch (tag >>> 3) { case 1: { - message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -14135,16 +14598,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UpdateJobRequest.verify = function verify(message) { + UpdateJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4.Job.verify(message.job); + var error = $root.google.cloud.talent.v4.Job.verify(message.job, long + 1); if (error) return "job." + error; } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -14159,19 +14626,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.UpdateJobRequest} UpdateJobRequest */ - UpdateJobRequest.fromObject = function fromObject(object) { + UpdateJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.UpdateJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.UpdateJobRequest(); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4.UpdateJobRequest.job: object expected"); - message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job, long + 1); } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4.UpdateJobRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -14249,7 +14720,7 @@ function DeleteJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -14314,9 +14785,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeleteJobRequest.decode = function decode(reader, length, error) { + DeleteJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.DeleteJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -14328,7 +14803,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -14359,9 +14834,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeleteJobRequest.verify = function verify(message) { + DeleteJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -14376,9 +14855,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.DeleteJobRequest} DeleteJobRequest */ - DeleteJobRequest.fromObject = function fromObject(object) { + DeleteJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.DeleteJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.DeleteJobRequest(); if (object.name != null) message.name = String(object.name); @@ -14478,7 +14961,7 @@ function ListJobsRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -14583,9 +15066,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListJobsRequest.decode = function decode(reader, length, error) { + ListJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ListJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -14613,7 +15100,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -14644,9 +15131,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListJobsRequest.verify = function verify(message) { + ListJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -14681,9 +15172,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ListJobsRequest} ListJobsRequest */ - ListJobsRequest.fromObject = function fromObject(object) { + ListJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ListJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ListJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -14809,7 +15304,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -14895,9 +15390,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListJobsResponse.decode = function decode(reader, length, error) { + ListJobsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ListJobsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -14907,7 +15406,7 @@ case 1: { if (!(message.jobs && message.jobs.length)) message.jobs = []; - message.jobs.push($root.google.cloud.talent.v4.Job.decode(reader, reader.uint32())); + message.jobs.push($root.google.cloud.talent.v4.Job.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -14915,11 +15414,11 @@ break; } case 3: { - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -14950,14 +15449,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListJobsResponse.verify = function verify(message) { + ListJobsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobs != null && message.hasOwnProperty("jobs")) { if (!Array.isArray(message.jobs)) return "jobs: array expected"; for (var i = 0; i < message.jobs.length; ++i) { - var error = $root.google.cloud.talent.v4.Job.verify(message.jobs[i]); + var error = $root.google.cloud.talent.v4.Job.verify(message.jobs[i], long + 1); if (error) return "jobs." + error; } @@ -14966,7 +15469,7 @@ if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -14981,9 +15484,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ListJobsResponse} ListJobsResponse */ - ListJobsResponse.fromObject = function fromObject(object) { + ListJobsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ListJobsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ListJobsResponse(); if (object.jobs) { if (!Array.isArray(object.jobs)) @@ -14992,7 +15499,7 @@ for (var i = 0; i < object.jobs.length; ++i) { if (typeof object.jobs[i] !== "object") throw TypeError(".google.cloud.talent.v4.ListJobsResponse.jobs: object expected"); - message.jobs[i] = $root.google.cloud.talent.v4.Job.fromObject(object.jobs[i]); + message.jobs[i] = $root.google.cloud.talent.v4.Job.fromObject(object.jobs[i], long + 1); } } if (object.nextPageToken != null) @@ -15000,7 +15507,7 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4.ListJobsResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -15101,7 +15608,7 @@ this.histogramQueries = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -15317,9 +15824,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SearchJobsRequest.decode = function decode(reader, length, error) { + SearchJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.SearchJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -15335,11 +15846,11 @@ break; } case 3: { - message.requestMetadata = $root.google.cloud.talent.v4.RequestMetadata.decode(reader, reader.uint32()); + message.requestMetadata = $root.google.cloud.talent.v4.RequestMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { - message.jobQuery = $root.google.cloud.talent.v4.JobQuery.decode(reader, reader.uint32()); + message.jobQuery = $root.google.cloud.talent.v4.JobQuery.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { @@ -15349,7 +15860,7 @@ case 7: { if (!(message.histogramQueries && message.histogramQueries.length)) message.histogramQueries = []; - message.histogramQueries.push($root.google.cloud.talent.v4.HistogramQuery.decode(reader, reader.uint32())); + message.histogramQueries.push($root.google.cloud.talent.v4.HistogramQuery.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 8: { @@ -15377,7 +15888,7 @@ break; } case 14: { - message.customRankingInfo = $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.decode(reader, reader.uint32()); + message.customRankingInfo = $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 16: { @@ -15393,7 +15904,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -15424,9 +15935,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SearchJobsRequest.verify = function verify(message) { + SearchJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -15440,12 +15955,12 @@ break; } if (message.requestMetadata != null && message.hasOwnProperty("requestMetadata")) { - var error = $root.google.cloud.talent.v4.RequestMetadata.verify(message.requestMetadata); + var error = $root.google.cloud.talent.v4.RequestMetadata.verify(message.requestMetadata, long + 1); if (error) return "requestMetadata." + error; } if (message.jobQuery != null && message.hasOwnProperty("jobQuery")) { - var error = $root.google.cloud.talent.v4.JobQuery.verify(message.jobQuery); + var error = $root.google.cloud.talent.v4.JobQuery.verify(message.jobQuery, long + 1); if (error) return "jobQuery." + error; } @@ -15456,7 +15971,7 @@ if (!Array.isArray(message.histogramQueries)) return "histogramQueries: array expected"; for (var i = 0; i < message.histogramQueries.length; ++i) { - var error = $root.google.cloud.talent.v4.HistogramQuery.verify(message.histogramQueries[i]); + var error = $root.google.cloud.talent.v4.HistogramQuery.verify(message.histogramQueries[i], long + 1); if (error) return "histogramQueries." + error; } @@ -15498,7 +16013,7 @@ break; } if (message.customRankingInfo != null && message.hasOwnProperty("customRankingInfo")) { - var error = $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.verify(message.customRankingInfo); + var error = $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.verify(message.customRankingInfo, long + 1); if (error) return "customRankingInfo." + error; } @@ -15537,9 +16052,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.SearchJobsRequest} SearchJobsRequest */ - SearchJobsRequest.fromObject = function fromObject(object) { + SearchJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.SearchJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.SearchJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -15566,12 +16085,12 @@ if (object.requestMetadata != null) { if (typeof object.requestMetadata !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsRequest.requestMetadata: object expected"); - message.requestMetadata = $root.google.cloud.talent.v4.RequestMetadata.fromObject(object.requestMetadata); + message.requestMetadata = $root.google.cloud.talent.v4.RequestMetadata.fromObject(object.requestMetadata, long + 1); } if (object.jobQuery != null) { if (typeof object.jobQuery !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsRequest.jobQuery: object expected"); - message.jobQuery = $root.google.cloud.talent.v4.JobQuery.fromObject(object.jobQuery); + message.jobQuery = $root.google.cloud.talent.v4.JobQuery.fromObject(object.jobQuery, long + 1); } if (object.enableBroadening != null) message.enableBroadening = Boolean(object.enableBroadening); @@ -15582,7 +16101,7 @@ for (var i = 0; i < object.histogramQueries.length; ++i) { if (typeof object.histogramQueries[i] !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsRequest.histogramQueries: object expected"); - message.histogramQueries[i] = $root.google.cloud.talent.v4.HistogramQuery.fromObject(object.histogramQueries[i]); + message.histogramQueries[i] = $root.google.cloud.talent.v4.HistogramQuery.fromObject(object.histogramQueries[i], long + 1); } } switch (object.jobView) { @@ -15660,7 +16179,7 @@ if (object.customRankingInfo != null) { if (typeof object.customRankingInfo !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsRequest.customRankingInfo: object expected"); - message.customRankingInfo = $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.fromObject(object.customRankingInfo); + message.customRankingInfo = $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.fromObject(object.customRankingInfo, long + 1); } if (object.disableKeywordMatch != null) message.disableKeywordMatch = Boolean(object.disableKeywordMatch); @@ -15914,7 +16433,7 @@ function CustomRankingInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -15989,9 +16508,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CustomRankingInfo.decode = function decode(reader, length, error) { + CustomRankingInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -16007,7 +16530,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -16038,9 +16561,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CustomRankingInfo.verify = function verify(message) { + CustomRankingInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.importanceLevel != null && message.hasOwnProperty("importanceLevel")) switch (message.importanceLevel) { default: @@ -16068,9 +16595,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo} CustomRankingInfo */ - CustomRankingInfo.fromObject = function fromObject(object) { + CustomRankingInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo(); switch (object.importanceLevel) { default: @@ -16223,7 +16754,7 @@ this.locationFilters = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -16361,9 +16892,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SearchJobsResponse.decode = function decode(reader, length, error) { + SearchJobsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.SearchJobsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -16373,13 +16908,13 @@ case 1: { if (!(message.matchingJobs && message.matchingJobs.length)) message.matchingJobs = []; - message.matchingJobs.push($root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob.decode(reader, reader.uint32())); + message.matchingJobs.push($root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { if (!(message.histogramQueryResults && message.histogramQueryResults.length)) message.histogramQueryResults = []; - message.histogramQueryResults.push($root.google.cloud.talent.v4.HistogramQueryResult.decode(reader, reader.uint32())); + message.histogramQueryResults.push($root.google.cloud.talent.v4.HistogramQueryResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { @@ -16389,7 +16924,7 @@ case 4: { if (!(message.locationFilters && message.locationFilters.length)) message.locationFilters = []; - message.locationFilters.push($root.google.cloud.talent.v4.Location.decode(reader, reader.uint32())); + message.locationFilters.push($root.google.cloud.talent.v4.Location.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 6: { @@ -16397,7 +16932,7 @@ break; } case 7: { - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { @@ -16405,11 +16940,11 @@ break; } case 9: { - message.spellCorrection = $root.google.cloud.talent.v4.SpellingCorrection.decode(reader, reader.uint32()); + message.spellCorrection = $root.google.cloud.talent.v4.SpellingCorrection.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -16440,14 +16975,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SearchJobsResponse.verify = function verify(message) { + SearchJobsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.matchingJobs != null && message.hasOwnProperty("matchingJobs")) { if (!Array.isArray(message.matchingJobs)) return "matchingJobs: array expected"; for (var i = 0; i < message.matchingJobs.length; ++i) { - var error = $root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob.verify(message.matchingJobs[i]); + var error = $root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob.verify(message.matchingJobs[i], long + 1); if (error) return "matchingJobs." + error; } @@ -16456,7 +16995,7 @@ if (!Array.isArray(message.histogramQueryResults)) return "histogramQueryResults: array expected"; for (var i = 0; i < message.histogramQueryResults.length; ++i) { - var error = $root.google.cloud.talent.v4.HistogramQueryResult.verify(message.histogramQueryResults[i]); + var error = $root.google.cloud.talent.v4.HistogramQueryResult.verify(message.histogramQueryResults[i], long + 1); if (error) return "histogramQueryResults." + error; } @@ -16468,7 +17007,7 @@ if (!Array.isArray(message.locationFilters)) return "locationFilters: array expected"; for (var i = 0; i < message.locationFilters.length; ++i) { - var error = $root.google.cloud.talent.v4.Location.verify(message.locationFilters[i]); + var error = $root.google.cloud.talent.v4.Location.verify(message.locationFilters[i], long + 1); if (error) return "locationFilters." + error; } @@ -16477,7 +17016,7 @@ if (!$util.isInteger(message.totalSize)) return "totalSize: integer expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -16485,7 +17024,7 @@ if (!$util.isInteger(message.broadenedQueryJobsCount)) return "broadenedQueryJobsCount: integer expected"; if (message.spellCorrection != null && message.hasOwnProperty("spellCorrection")) { - var error = $root.google.cloud.talent.v4.SpellingCorrection.verify(message.spellCorrection); + var error = $root.google.cloud.talent.v4.SpellingCorrection.verify(message.spellCorrection, long + 1); if (error) return "spellCorrection." + error; } @@ -16500,9 +17039,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.SearchJobsResponse} SearchJobsResponse */ - SearchJobsResponse.fromObject = function fromObject(object) { + SearchJobsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.SearchJobsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.SearchJobsResponse(); if (object.matchingJobs) { if (!Array.isArray(object.matchingJobs)) @@ -16511,7 +17054,7 @@ for (var i = 0; i < object.matchingJobs.length; ++i) { if (typeof object.matchingJobs[i] !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.matchingJobs: object expected"); - message.matchingJobs[i] = $root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob.fromObject(object.matchingJobs[i]); + message.matchingJobs[i] = $root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob.fromObject(object.matchingJobs[i], long + 1); } } if (object.histogramQueryResults) { @@ -16521,7 +17064,7 @@ for (var i = 0; i < object.histogramQueryResults.length; ++i) { if (typeof object.histogramQueryResults[i] !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.histogramQueryResults: object expected"); - message.histogramQueryResults[i] = $root.google.cloud.talent.v4.HistogramQueryResult.fromObject(object.histogramQueryResults[i]); + message.histogramQueryResults[i] = $root.google.cloud.talent.v4.HistogramQueryResult.fromObject(object.histogramQueryResults[i], long + 1); } } if (object.nextPageToken != null) @@ -16533,7 +17076,7 @@ for (var i = 0; i < object.locationFilters.length; ++i) { if (typeof object.locationFilters[i] !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.locationFilters: object expected"); - message.locationFilters[i] = $root.google.cloud.talent.v4.Location.fromObject(object.locationFilters[i]); + message.locationFilters[i] = $root.google.cloud.talent.v4.Location.fromObject(object.locationFilters[i], long + 1); } } if (object.totalSize != null) @@ -16541,14 +17084,14 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata, long + 1); } if (object.broadenedQueryJobsCount != null) message.broadenedQueryJobsCount = object.broadenedQueryJobsCount | 0; if (object.spellCorrection != null) { if (typeof object.spellCorrection !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.spellCorrection: object expected"); - message.spellCorrection = $root.google.cloud.talent.v4.SpellingCorrection.fromObject(object.spellCorrection); + message.spellCorrection = $root.google.cloud.talent.v4.SpellingCorrection.fromObject(object.spellCorrection, long + 1); } return message; }; @@ -16656,7 +17199,7 @@ function MatchingJob(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -16761,9 +17304,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MatchingJob.decode = function decode(reader, length, error) { + MatchingJob.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob(); while (reader.pos < end) { var tag = reader.uint32(); @@ -16771,7 +17318,7 @@ break; switch (tag >>> 3) { case 1: { - message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { @@ -16787,11 +17334,11 @@ break; } case 5: { - message.commuteInfo = $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.decode(reader, reader.uint32()); + message.commuteInfo = $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -16822,11 +17369,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MatchingJob.verify = function verify(message) { + MatchingJob.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4.Job.verify(message.job); + var error = $root.google.cloud.talent.v4.Job.verify(message.job, long + 1); if (error) return "job." + error; } @@ -16840,7 +17391,7 @@ if (!$util.isString(message.searchTextSnippet)) return "searchTextSnippet: string expected"; if (message.commuteInfo != null && message.hasOwnProperty("commuteInfo")) { - var error = $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.verify(message.commuteInfo); + var error = $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.verify(message.commuteInfo, long + 1); if (error) return "commuteInfo." + error; } @@ -16855,14 +17406,18 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.SearchJobsResponse.MatchingJob} MatchingJob */ - MatchingJob.fromObject = function fromObject(object) { + MatchingJob.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.SearchJobsResponse.MatchingJob(); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.MatchingJob.job: object expected"); - message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job, long + 1); } if (object.jobSummary != null) message.jobSummary = String(object.jobSummary); @@ -16873,7 +17428,7 @@ if (object.commuteInfo != null) { if (typeof object.commuteInfo !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.MatchingJob.commuteInfo: object expected"); - message.commuteInfo = $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.fromObject(object.commuteInfo); + message.commuteInfo = $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.fromObject(object.commuteInfo, long + 1); } return message; }; @@ -16961,7 +17516,7 @@ function CommuteInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -17036,9 +17591,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommuteInfo.decode = function decode(reader, length, error) { + CommuteInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -17046,15 +17605,15 @@ break; switch (tag >>> 3) { case 1: { - message.jobLocation = $root.google.cloud.talent.v4.Location.decode(reader, reader.uint32()); + message.jobLocation = $root.google.cloud.talent.v4.Location.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -17085,16 +17644,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CommuteInfo.verify = function verify(message) { + CommuteInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobLocation != null && message.hasOwnProperty("jobLocation")) { - var error = $root.google.cloud.talent.v4.Location.verify(message.jobLocation); + var error = $root.google.cloud.talent.v4.Location.verify(message.jobLocation, long + 1); if (error) return "jobLocation." + error; } if (message.travelDuration != null && message.hasOwnProperty("travelDuration")) { - var error = $root.google.protobuf.Duration.verify(message.travelDuration); + var error = $root.google.protobuf.Duration.verify(message.travelDuration, long + 1); if (error) return "travelDuration." + error; } @@ -17109,19 +17672,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.SearchJobsResponse.CommuteInfo} CommuteInfo */ - CommuteInfo.fromObject = function fromObject(object) { + CommuteInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.SearchJobsResponse.CommuteInfo(); if (object.jobLocation != null) { if (typeof object.jobLocation !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.jobLocation: object expected"); - message.jobLocation = $root.google.cloud.talent.v4.Location.fromObject(object.jobLocation); + message.jobLocation = $root.google.cloud.talent.v4.Location.fromObject(object.jobLocation, long + 1); } if (object.travelDuration != null) { if (typeof object.travelDuration !== "object") throw TypeError(".google.cloud.talent.v4.SearchJobsResponse.CommuteInfo.travelDuration: object expected"); - message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration); + message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration, long + 1); } return message; }; @@ -17204,7 +17771,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -17280,9 +17847,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchCreateJobsRequest.decode = function decode(reader, length, error) { + BatchCreateJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.BatchCreateJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -17296,11 +17867,11 @@ case 2: { if (!(message.jobs && message.jobs.length)) message.jobs = []; - message.jobs.push($root.google.cloud.talent.v4.Job.decode(reader, reader.uint32())); + message.jobs.push($root.google.cloud.talent.v4.Job.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -17331,9 +17902,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchCreateJobsRequest.verify = function verify(message) { + BatchCreateJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -17341,7 +17916,7 @@ if (!Array.isArray(message.jobs)) return "jobs: array expected"; for (var i = 0; i < message.jobs.length; ++i) { - var error = $root.google.cloud.talent.v4.Job.verify(message.jobs[i]); + var error = $root.google.cloud.talent.v4.Job.verify(message.jobs[i], long + 1); if (error) return "jobs." + error; } @@ -17357,9 +17932,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.BatchCreateJobsRequest} BatchCreateJobsRequest */ - BatchCreateJobsRequest.fromObject = function fromObject(object) { + BatchCreateJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.BatchCreateJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.BatchCreateJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -17370,7 +17949,7 @@ for (var i = 0; i < object.jobs.length; ++i) { if (typeof object.jobs[i] !== "object") throw TypeError(".google.cloud.talent.v4.BatchCreateJobsRequest.jobs: object expected"); - message.jobs[i] = $root.google.cloud.talent.v4.Job.fromObject(object.jobs[i]); + message.jobs[i] = $root.google.cloud.talent.v4.Job.fromObject(object.jobs[i], long + 1); } } return message; @@ -17455,7 +18034,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -17541,9 +18120,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchUpdateJobsRequest.decode = function decode(reader, length, error) { + BatchUpdateJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.BatchUpdateJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -17557,15 +18140,15 @@ case 2: { if (!(message.jobs && message.jobs.length)) message.jobs = []; - message.jobs.push($root.google.cloud.talent.v4.Job.decode(reader, reader.uint32())); + message.jobs.push($root.google.cloud.talent.v4.Job.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -17596,9 +18179,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchUpdateJobsRequest.verify = function verify(message) { + BatchUpdateJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -17606,13 +18193,13 @@ if (!Array.isArray(message.jobs)) return "jobs: array expected"; for (var i = 0; i < message.jobs.length; ++i) { - var error = $root.google.cloud.talent.v4.Job.verify(message.jobs[i]); + var error = $root.google.cloud.talent.v4.Job.verify(message.jobs[i], long + 1); if (error) return "jobs." + error; } } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -17627,9 +18214,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.BatchUpdateJobsRequest} BatchUpdateJobsRequest */ - BatchUpdateJobsRequest.fromObject = function fromObject(object) { + BatchUpdateJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.BatchUpdateJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.BatchUpdateJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -17640,13 +18231,13 @@ for (var i = 0; i < object.jobs.length; ++i) { if (typeof object.jobs[i] !== "object") throw TypeError(".google.cloud.talent.v4.BatchUpdateJobsRequest.jobs: object expected"); - message.jobs[i] = $root.google.cloud.talent.v4.Job.fromObject(object.jobs[i]); + message.jobs[i] = $root.google.cloud.talent.v4.Job.fromObject(object.jobs[i], long + 1); } } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4.BatchUpdateJobsRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -17733,7 +18324,7 @@ this.names = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -17809,9 +18400,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchDeleteJobsRequest.decode = function decode(reader, length, error) { + BatchDeleteJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.BatchDeleteJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -17829,7 +18424,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -17860,9 +18455,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchDeleteJobsRequest.verify = function verify(message) { + BatchDeleteJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -17884,9 +18483,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.BatchDeleteJobsRequest} BatchDeleteJobsRequest */ - BatchDeleteJobsRequest.fromObject = function fromObject(object) { + BatchDeleteJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.BatchDeleteJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.BatchDeleteJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -17977,7 +18580,7 @@ function JobResult(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -18052,9 +18655,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JobResult.decode = function decode(reader, length, error) { + JobResult.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.JobResult(); while (reader.pos < end) { var tag = reader.uint32(); @@ -18062,15 +18669,15 @@ break; switch (tag >>> 3) { case 1: { - message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + message.status = $root.google.rpc.Status.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -18101,16 +18708,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JobResult.verify = function verify(message) { + JobResult.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4.Job.verify(message.job); + var error = $root.google.cloud.talent.v4.Job.verify(message.job, long + 1); if (error) return "job." + error; } if (message.status != null && message.hasOwnProperty("status")) { - var error = $root.google.rpc.Status.verify(message.status); + var error = $root.google.rpc.Status.verify(message.status, long + 1); if (error) return "status." + error; } @@ -18125,19 +18736,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.JobResult} JobResult */ - JobResult.fromObject = function fromObject(object) { + JobResult.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.JobResult) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.JobResult(); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4.JobResult.job: object expected"); - message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4.Job.fromObject(object.job, long + 1); } if (object.status != null) { if (typeof object.status !== "object") throw TypeError(".google.cloud.talent.v4.JobResult.status: object expected"); - message.status = $root.google.rpc.Status.fromObject(object.status); + message.status = $root.google.rpc.Status.fromObject(object.status, long + 1); } return message; }; @@ -18216,7 +18831,7 @@ this.jobResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -18282,9 +18897,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchCreateJobsResponse.decode = function decode(reader, length, error) { + BatchCreateJobsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.BatchCreateJobsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -18294,11 +18913,11 @@ case 1: { if (!(message.jobResults && message.jobResults.length)) message.jobResults = []; - message.jobResults.push($root.google.cloud.talent.v4.JobResult.decode(reader, reader.uint32())); + message.jobResults.push($root.google.cloud.talent.v4.JobResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -18329,14 +18948,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchCreateJobsResponse.verify = function verify(message) { + BatchCreateJobsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobResults != null && message.hasOwnProperty("jobResults")) { if (!Array.isArray(message.jobResults)) return "jobResults: array expected"; for (var i = 0; i < message.jobResults.length; ++i) { - var error = $root.google.cloud.talent.v4.JobResult.verify(message.jobResults[i]); + var error = $root.google.cloud.talent.v4.JobResult.verify(message.jobResults[i], long + 1); if (error) return "jobResults." + error; } @@ -18352,9 +18975,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.BatchCreateJobsResponse} BatchCreateJobsResponse */ - BatchCreateJobsResponse.fromObject = function fromObject(object) { + BatchCreateJobsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.BatchCreateJobsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.BatchCreateJobsResponse(); if (object.jobResults) { if (!Array.isArray(object.jobResults)) @@ -18363,7 +18990,7 @@ for (var i = 0; i < object.jobResults.length; ++i) { if (typeof object.jobResults[i] !== "object") throw TypeError(".google.cloud.talent.v4.BatchCreateJobsResponse.jobResults: object expected"); - message.jobResults[i] = $root.google.cloud.talent.v4.JobResult.fromObject(object.jobResults[i]); + message.jobResults[i] = $root.google.cloud.talent.v4.JobResult.fromObject(object.jobResults[i], long + 1); } } return message; @@ -18442,7 +19069,7 @@ this.jobResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -18508,9 +19135,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchUpdateJobsResponse.decode = function decode(reader, length, error) { + BatchUpdateJobsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.BatchUpdateJobsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -18520,11 +19151,11 @@ case 1: { if (!(message.jobResults && message.jobResults.length)) message.jobResults = []; - message.jobResults.push($root.google.cloud.talent.v4.JobResult.decode(reader, reader.uint32())); + message.jobResults.push($root.google.cloud.talent.v4.JobResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -18555,14 +19186,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchUpdateJobsResponse.verify = function verify(message) { + BatchUpdateJobsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobResults != null && message.hasOwnProperty("jobResults")) { if (!Array.isArray(message.jobResults)) return "jobResults: array expected"; for (var i = 0; i < message.jobResults.length; ++i) { - var error = $root.google.cloud.talent.v4.JobResult.verify(message.jobResults[i]); + var error = $root.google.cloud.talent.v4.JobResult.verify(message.jobResults[i], long + 1); if (error) return "jobResults." + error; } @@ -18578,9 +19213,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.BatchUpdateJobsResponse} BatchUpdateJobsResponse */ - BatchUpdateJobsResponse.fromObject = function fromObject(object) { + BatchUpdateJobsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.BatchUpdateJobsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.BatchUpdateJobsResponse(); if (object.jobResults) { if (!Array.isArray(object.jobResults)) @@ -18589,7 +19228,7 @@ for (var i = 0; i < object.jobResults.length; ++i) { if (typeof object.jobResults[i] !== "object") throw TypeError(".google.cloud.talent.v4.BatchUpdateJobsResponse.jobResults: object expected"); - message.jobResults[i] = $root.google.cloud.talent.v4.JobResult.fromObject(object.jobResults[i]); + message.jobResults[i] = $root.google.cloud.talent.v4.JobResult.fromObject(object.jobResults[i], long + 1); } } return message; @@ -18668,7 +19307,7 @@ this.jobResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -18734,9 +19373,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchDeleteJobsResponse.decode = function decode(reader, length, error) { + BatchDeleteJobsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.BatchDeleteJobsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -18746,11 +19389,11 @@ case 1: { if (!(message.jobResults && message.jobResults.length)) message.jobResults = []; - message.jobResults.push($root.google.cloud.talent.v4.JobResult.decode(reader, reader.uint32())); + message.jobResults.push($root.google.cloud.talent.v4.JobResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -18781,14 +19424,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchDeleteJobsResponse.verify = function verify(message) { + BatchDeleteJobsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobResults != null && message.hasOwnProperty("jobResults")) { if (!Array.isArray(message.jobResults)) return "jobResults: array expected"; for (var i = 0; i < message.jobResults.length; ++i) { - var error = $root.google.cloud.talent.v4.JobResult.verify(message.jobResults[i]); + var error = $root.google.cloud.talent.v4.JobResult.verify(message.jobResults[i], long + 1); if (error) return "jobResults." + error; } @@ -18804,9 +19451,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.BatchDeleteJobsResponse} BatchDeleteJobsResponse */ - BatchDeleteJobsResponse.fromObject = function fromObject(object) { + BatchDeleteJobsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.BatchDeleteJobsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.BatchDeleteJobsResponse(); if (object.jobResults) { if (!Array.isArray(object.jobResults)) @@ -18815,7 +19466,7 @@ for (var i = 0; i < object.jobResults.length; ++i) { if (typeof object.jobResults[i] !== "object") throw TypeError(".google.cloud.talent.v4.BatchDeleteJobsResponse.jobResults: object expected"); - message.jobResults[i] = $root.google.cloud.talent.v4.JobResult.fromObject(object.jobResults[i]); + message.jobResults[i] = $root.google.cloud.talent.v4.JobResult.fromObject(object.jobResults[i], long + 1); } } return message; @@ -18894,7 +19545,7 @@ function Tenant(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -18969,9 +19620,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Tenant.decode = function decode(reader, length, error) { + Tenant.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.Tenant(); while (reader.pos < end) { var tag = reader.uint32(); @@ -18987,7 +19642,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -19018,9 +19673,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Tenant.verify = function verify(message) { + Tenant.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -19038,9 +19697,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.Tenant} Tenant */ - Tenant.fromObject = function fromObject(object) { + Tenant.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.Tenant) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.Tenant(); if (object.name != null) message.name = String(object.name); @@ -19323,7 +19986,7 @@ function CreateTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -19398,9 +20061,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateTenantRequest.decode = function decode(reader, length, error) { + CreateTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.CreateTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -19412,11 +20079,11 @@ break; } case 2: { - message.tenant = $root.google.cloud.talent.v4.Tenant.decode(reader, reader.uint32()); + message.tenant = $root.google.cloud.talent.v4.Tenant.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -19447,14 +20114,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateTenantRequest.verify = function verify(message) { + CreateTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.tenant != null && message.hasOwnProperty("tenant")) { - var error = $root.google.cloud.talent.v4.Tenant.verify(message.tenant); + var error = $root.google.cloud.talent.v4.Tenant.verify(message.tenant, long + 1); if (error) return "tenant." + error; } @@ -19469,16 +20140,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.CreateTenantRequest} CreateTenantRequest */ - CreateTenantRequest.fromObject = function fromObject(object) { + CreateTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.CreateTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.CreateTenantRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.tenant != null) { if (typeof object.tenant !== "object") throw TypeError(".google.cloud.talent.v4.CreateTenantRequest.tenant: object expected"); - message.tenant = $root.google.cloud.talent.v4.Tenant.fromObject(object.tenant); + message.tenant = $root.google.cloud.talent.v4.Tenant.fromObject(object.tenant, long + 1); } return message; }; @@ -19556,7 +20231,7 @@ function GetTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -19621,9 +20296,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GetTenantRequest.decode = function decode(reader, length, error) { + GetTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.GetTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -19635,7 +20314,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -19666,9 +20345,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GetTenantRequest.verify = function verify(message) { + GetTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -19683,9 +20366,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.GetTenantRequest} GetTenantRequest */ - GetTenantRequest.fromObject = function fromObject(object) { + GetTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.GetTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.GetTenantRequest(); if (object.name != null) message.name = String(object.name); @@ -19762,7 +20449,7 @@ function UpdateTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -19837,9 +20524,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UpdateTenantRequest.decode = function decode(reader, length, error) { + UpdateTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.UpdateTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -19847,15 +20538,15 @@ break; switch (tag >>> 3) { case 1: { - message.tenant = $root.google.cloud.talent.v4.Tenant.decode(reader, reader.uint32()); + message.tenant = $root.google.cloud.talent.v4.Tenant.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -19886,16 +20577,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UpdateTenantRequest.verify = function verify(message) { + UpdateTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.tenant != null && message.hasOwnProperty("tenant")) { - var error = $root.google.cloud.talent.v4.Tenant.verify(message.tenant); + var error = $root.google.cloud.talent.v4.Tenant.verify(message.tenant, long + 1); if (error) return "tenant." + error; } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -19910,19 +20605,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.UpdateTenantRequest} UpdateTenantRequest */ - UpdateTenantRequest.fromObject = function fromObject(object) { + UpdateTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.UpdateTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.UpdateTenantRequest(); if (object.tenant != null) { if (typeof object.tenant !== "object") throw TypeError(".google.cloud.talent.v4.UpdateTenantRequest.tenant: object expected"); - message.tenant = $root.google.cloud.talent.v4.Tenant.fromObject(object.tenant); + message.tenant = $root.google.cloud.talent.v4.Tenant.fromObject(object.tenant, long + 1); } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4.UpdateTenantRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -20000,7 +20699,7 @@ function DeleteTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -20065,9 +20764,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeleteTenantRequest.decode = function decode(reader, length, error) { + DeleteTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.DeleteTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -20079,7 +20782,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -20110,9 +20813,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeleteTenantRequest.verify = function verify(message) { + DeleteTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -20127,9 +20834,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.DeleteTenantRequest} DeleteTenantRequest */ - DeleteTenantRequest.fromObject = function fromObject(object) { + DeleteTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.DeleteTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.DeleteTenantRequest(); if (object.name != null) message.name = String(object.name); @@ -20207,7 +20918,7 @@ function ListTenantsRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -20292,9 +21003,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListTenantsRequest.decode = function decode(reader, length, error) { + ListTenantsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ListTenantsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -20314,7 +21029,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -20345,9 +21060,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListTenantsRequest.verify = function verify(message) { + ListTenantsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -20368,9 +21087,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ListTenantsRequest} ListTenantsRequest */ - ListTenantsRequest.fromObject = function fromObject(object) { + ListTenantsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ListTenantsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ListTenantsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -20460,7 +21183,7 @@ this.tenants = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -20546,9 +21269,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListTenantsResponse.decode = function decode(reader, length, error) { + ListTenantsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4.ListTenantsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -20558,7 +21285,7 @@ case 1: { if (!(message.tenants && message.tenants.length)) message.tenants = []; - message.tenants.push($root.google.cloud.talent.v4.Tenant.decode(reader, reader.uint32())); + message.tenants.push($root.google.cloud.talent.v4.Tenant.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -20566,11 +21293,11 @@ break; } case 3: { - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -20601,14 +21328,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListTenantsResponse.verify = function verify(message) { + ListTenantsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.tenants != null && message.hasOwnProperty("tenants")) { if (!Array.isArray(message.tenants)) return "tenants: array expected"; for (var i = 0; i < message.tenants.length; ++i) { - var error = $root.google.cloud.talent.v4.Tenant.verify(message.tenants[i]); + var error = $root.google.cloud.talent.v4.Tenant.verify(message.tenants[i], long + 1); if (error) return "tenants." + error; } @@ -20617,7 +21348,7 @@ if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -20632,9 +21363,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4.ListTenantsResponse} ListTenantsResponse */ - ListTenantsResponse.fromObject = function fromObject(object) { + ListTenantsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4.ListTenantsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4.ListTenantsResponse(); if (object.tenants) { if (!Array.isArray(object.tenants)) @@ -20643,7 +21378,7 @@ for (var i = 0; i < object.tenants.length; ++i) { if (typeof object.tenants[i] !== "object") throw TypeError(".google.cloud.talent.v4.ListTenantsResponse.tenants: object expected"); - message.tenants[i] = $root.google.cloud.talent.v4.Tenant.fromObject(object.tenants[i]); + message.tenants[i] = $root.google.cloud.talent.v4.Tenant.fromObject(object.tenants[i], long + 1); } } if (object.nextPageToken != null) @@ -20651,7 +21386,7 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4.ListTenantsResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -20749,7 +21484,7 @@ function TimestampRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -20824,9 +21559,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TimestampRange.decode = function decode(reader, length, error) { + TimestampRange.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.TimestampRange(); while (reader.pos < end) { var tag = reader.uint32(); @@ -20834,15 +21573,15 @@ break; switch (tag >>> 3) { case 1: { - message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -20873,16 +21612,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TimestampRange.verify = function verify(message) { + TimestampRange.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.startTime != null && message.hasOwnProperty("startTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.startTime); + var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1); if (error) return "startTime." + error; } if (message.endTime != null && message.hasOwnProperty("endTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.endTime); + var error = $root.google.protobuf.Timestamp.verify(message.endTime, long + 1); if (error) return "endTime." + error; } @@ -20897,19 +21640,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.TimestampRange} TimestampRange */ - TimestampRange.fromObject = function fromObject(object) { + TimestampRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.TimestampRange) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.TimestampRange(); if (object.startTime != null) { if (typeof object.startTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.TimestampRange.startTime: object expected"); - message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime); + message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1); } if (object.endTime != null) { if (typeof object.endTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.TimestampRange.endTime: object expected"); - message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime); + message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime, long + 1); } return message; }; @@ -21276,7 +22023,7 @@ function Location(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -21371,9 +22118,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Location.decode = function decode(reader, length, error) { + Location.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Location(); while (reader.pos < end) { var tag = reader.uint32(); @@ -21385,11 +22136,11 @@ break; } case 2: { - message.postalAddress = $root.google.type.PostalAddress.decode(reader, reader.uint32()); + message.postalAddress = $root.google.type.PostalAddress.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { - message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32()); + message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -21397,7 +22148,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -21428,9 +22179,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Location.verify = function verify(message) { + Location.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.locationType != null && message.hasOwnProperty("locationType")) switch (message.locationType) { default: @@ -21449,12 +22204,12 @@ break; } if (message.postalAddress != null && message.hasOwnProperty("postalAddress")) { - var error = $root.google.type.PostalAddress.verify(message.postalAddress); + var error = $root.google.type.PostalAddress.verify(message.postalAddress, long + 1); if (error) return "postalAddress." + error; } if (message.latLng != null && message.hasOwnProperty("latLng")) { - var error = $root.google.type.LatLng.verify(message.latLng); + var error = $root.google.type.LatLng.verify(message.latLng, long + 1); if (error) return "latLng." + error; } @@ -21472,9 +22227,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Location} Location */ - Location.fromObject = function fromObject(object) { + Location.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Location) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Location(); switch (object.locationType) { default: @@ -21531,12 +22290,12 @@ if (object.postalAddress != null) { if (typeof object.postalAddress !== "object") throw TypeError(".google.cloud.talent.v4beta1.Location.postalAddress: object expected"); - message.postalAddress = $root.google.type.PostalAddress.fromObject(object.postalAddress); + message.postalAddress = $root.google.type.PostalAddress.fromObject(object.postalAddress, long + 1); } if (object.latLng != null) { if (typeof object.latLng !== "object") throw TypeError(".google.cloud.talent.v4beta1.Location.latLng: object expected"); - message.latLng = $root.google.type.LatLng.fromObject(object.latLng); + message.latLng = $root.google.type.LatLng.fromObject(object.latLng, long + 1); } if (object.radiusMiles != null) message.radiusMiles = Number(object.radiusMiles); @@ -21658,7 +22417,7 @@ function RequestMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -21763,9 +22522,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RequestMetadata.decode = function decode(reader, length, error) { + RequestMetadata.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.RequestMetadata(); while (reader.pos < end) { var tag = reader.uint32(); @@ -21789,11 +22552,11 @@ break; } case 5: { - message.deviceInfo = $root.google.cloud.talent.v4beta1.DeviceInfo.decode(reader, reader.uint32()); + message.deviceInfo = $root.google.cloud.talent.v4beta1.DeviceInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -21824,9 +22587,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RequestMetadata.verify = function verify(message) { + RequestMetadata.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.domain != null && message.hasOwnProperty("domain")) if (!$util.isString(message.domain)) return "domain: string expected"; @@ -21840,7 +22607,7 @@ if (typeof message.allowMissingIds !== "boolean") return "allowMissingIds: boolean expected"; if (message.deviceInfo != null && message.hasOwnProperty("deviceInfo")) { - var error = $root.google.cloud.talent.v4beta1.DeviceInfo.verify(message.deviceInfo); + var error = $root.google.cloud.talent.v4beta1.DeviceInfo.verify(message.deviceInfo, long + 1); if (error) return "deviceInfo." + error; } @@ -21855,9 +22622,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.RequestMetadata} RequestMetadata */ - RequestMetadata.fromObject = function fromObject(object) { + RequestMetadata.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.RequestMetadata) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.RequestMetadata(); if (object.domain != null) message.domain = String(object.domain); @@ -21870,7 +22641,7 @@ if (object.deviceInfo != null) { if (typeof object.deviceInfo !== "object") throw TypeError(".google.cloud.talent.v4beta1.RequestMetadata.deviceInfo: object expected"); - message.deviceInfo = $root.google.cloud.talent.v4beta1.DeviceInfo.fromObject(object.deviceInfo); + message.deviceInfo = $root.google.cloud.talent.v4beta1.DeviceInfo.fromObject(object.deviceInfo, long + 1); } return message; }; @@ -21957,7 +22728,7 @@ function ResponseMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -22022,9 +22793,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ResponseMetadata.decode = function decode(reader, length, error) { + ResponseMetadata.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ResponseMetadata(); while (reader.pos < end) { var tag = reader.uint32(); @@ -22036,7 +22811,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -22067,9 +22842,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ResponseMetadata.verify = function verify(message) { + ResponseMetadata.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.requestId != null && message.hasOwnProperty("requestId")) if (!$util.isString(message.requestId)) return "requestId: string expected"; @@ -22084,9 +22863,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ResponseMetadata} ResponseMetadata */ - ResponseMetadata.fromObject = function fromObject(object) { + ResponseMetadata.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ResponseMetadata) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ResponseMetadata(); if (object.requestId != null) message.requestId = String(object.requestId); @@ -22163,7 +22946,7 @@ function DeviceInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -22238,9 +23021,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeviceInfo.decode = function decode(reader, length, error) { + DeviceInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.DeviceInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -22256,7 +23043,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -22287,9 +23074,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeviceInfo.verify = function verify(message) { + DeviceInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.deviceType != null && message.hasOwnProperty("deviceType")) switch (message.deviceType) { default: @@ -22317,9 +23108,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.DeviceInfo} DeviceInfo */ - DeviceInfo.fromObject = function fromObject(object) { + DeviceInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.DeviceInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.DeviceInfo(); switch (object.deviceType) { default: @@ -22464,7 +23259,7 @@ this.longValues = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -22564,9 +23359,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CustomAttribute.decode = function decode(reader, length, error) { + CustomAttribute.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CustomAttribute(); while (reader.pos < end) { var tag = reader.uint32(); @@ -22599,7 +23398,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -22630,9 +23429,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CustomAttribute.verify = function verify(message) { + CustomAttribute.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.stringValues != null && message.hasOwnProperty("stringValues")) { if (!Array.isArray(message.stringValues)) return "stringValues: array expected"; @@ -22664,9 +23467,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CustomAttribute} CustomAttribute */ - CustomAttribute.fromObject = function fromObject(object) { + CustomAttribute.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CustomAttribute) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CustomAttribute(); if (object.stringValues) { if (!Array.isArray(object.stringValues)) @@ -22788,7 +23595,7 @@ function SpellingCorrection(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -22873,9 +23680,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SpellingCorrection.decode = function decode(reader, length, error) { + SpellingCorrection.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.SpellingCorrection(); while (reader.pos < end) { var tag = reader.uint32(); @@ -22895,7 +23706,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -22926,9 +23737,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SpellingCorrection.verify = function verify(message) { + SpellingCorrection.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.corrected != null && message.hasOwnProperty("corrected")) if (typeof message.corrected !== "boolean") return "corrected: boolean expected"; @@ -22949,9 +23764,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.SpellingCorrection} SpellingCorrection */ - SpellingCorrection.fromObject = function fromObject(object) { + SpellingCorrection.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.SpellingCorrection) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.SpellingCorrection(); if (object.corrected != null) message.corrected = Boolean(object.corrected); @@ -23041,7 +23860,7 @@ this.entries = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -23127,9 +23946,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationInfo.decode = function decode(reader, length, error) { + CompensationInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CompensationInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -23139,19 +23962,19 @@ case 1: { if (!(message.entries && message.entries.length)) message.entries = []; - message.entries.push($root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.decode(reader, reader.uint32())); + message.entries.push($root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { - message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { - message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -23182,25 +24005,29 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationInfo.verify = function verify(message) { + CompensationInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.entries != null && message.hasOwnProperty("entries")) { if (!Array.isArray(message.entries)) return "entries: array expected"; for (var i = 0; i < message.entries.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.verify(message.entries[i]); + var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.verify(message.entries[i], long + 1); if (error) return "entries." + error; } } if (message.annualizedBaseCompensationRange != null && message.hasOwnProperty("annualizedBaseCompensationRange")) { - var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.annualizedBaseCompensationRange); + var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.annualizedBaseCompensationRange, long + 1); if (error) return "annualizedBaseCompensationRange." + error; } if (message.annualizedTotalCompensationRange != null && message.hasOwnProperty("annualizedTotalCompensationRange")) { - var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.annualizedTotalCompensationRange); + var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.annualizedTotalCompensationRange, long + 1); if (error) return "annualizedTotalCompensationRange." + error; } @@ -23215,9 +24042,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CompensationInfo} CompensationInfo */ - CompensationInfo.fromObject = function fromObject(object) { + CompensationInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CompensationInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CompensationInfo(); if (object.entries) { if (!Array.isArray(object.entries)) @@ -23226,18 +24057,18 @@ for (var i = 0; i < object.entries.length; ++i) { if (typeof object.entries[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.entries: object expected"); - message.entries[i] = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.fromObject(object.entries[i]); + message.entries[i] = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.fromObject(object.entries[i], long + 1); } } if (object.annualizedBaseCompensationRange != null) { if (typeof object.annualizedBaseCompensationRange !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.annualizedBaseCompensationRange: object expected"); - message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.annualizedBaseCompensationRange); + message.annualizedBaseCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.annualizedBaseCompensationRange, long + 1); } if (object.annualizedTotalCompensationRange != null) { if (typeof object.annualizedTotalCompensationRange !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.annualizedTotalCompensationRange: object expected"); - message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.annualizedTotalCompensationRange); + message.annualizedTotalCompensationRange = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.annualizedTotalCompensationRange, long + 1); } return message; }; @@ -23324,7 +24155,7 @@ function CompensationEntry(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -23453,9 +24284,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationEntry.decode = function decode(reader, length, error) { + CompensationEntry.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry(); while (reader.pos < end) { var tag = reader.uint32(); @@ -23471,11 +24306,11 @@ break; } case 3: { - message.amount = $root.google.type.Money.decode(reader, reader.uint32()); + message.amount = $root.google.type.Money.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { - message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { @@ -23483,11 +24318,11 @@ break; } case 6: { - message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.decode(reader, reader.uint32()); + message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -23518,9 +24353,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationEntry.verify = function verify(message) { + CompensationEntry.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.type != null && message.hasOwnProperty("type")) switch (message.type) { @@ -23554,7 +24393,7 @@ if (message.amount != null && message.hasOwnProperty("amount")) { properties.compensationAmount = 1; { - var error = $root.google.type.Money.verify(message.amount); + var error = $root.google.type.Money.verify(message.amount, long + 1); if (error) return "amount." + error; } @@ -23564,7 +24403,7 @@ return "compensationAmount: multiple values"; properties.compensationAmount = 1; { - var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.range); + var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.range, long + 1); if (error) return "range." + error; } @@ -23573,7 +24412,7 @@ if (!$util.isString(message.description)) return "description: string expected"; if (message.expectedUnitsPerYear != null && message.hasOwnProperty("expectedUnitsPerYear")) { - var error = $root.google.protobuf.DoubleValue.verify(message.expectedUnitsPerYear); + var error = $root.google.protobuf.DoubleValue.verify(message.expectedUnitsPerYear, long + 1); if (error) return "expectedUnitsPerYear." + error; } @@ -23588,9 +24427,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry} CompensationEntry */ - CompensationEntry.fromObject = function fromObject(object) { + CompensationEntry.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry(); switch (object.type) { default: @@ -23679,19 +24522,19 @@ if (object.amount != null) { if (typeof object.amount !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount: object expected"); - message.amount = $root.google.type.Money.fromObject(object.amount); + message.amount = $root.google.type.Money.fromObject(object.amount, long + 1); } if (object.range != null) { if (typeof object.range !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range: object expected"); - message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.range); + message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.range, long + 1); } if (object.description != null) message.description = String(object.description); if (object.expectedUnitsPerYear != null) { if (typeof object.expectedUnitsPerYear !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expectedUnitsPerYear: object expected"); - message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.fromObject(object.expectedUnitsPerYear); + message.expectedUnitsPerYear = $root.google.protobuf.DoubleValue.fromObject(object.expectedUnitsPerYear, long + 1); } return message; }; @@ -23840,7 +24683,7 @@ function CompensationRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -23915,9 +24758,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationRange.decode = function decode(reader, length, error) { + CompensationRange.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange(); while (reader.pos < end) { var tag = reader.uint32(); @@ -23925,15 +24772,15 @@ break; switch (tag >>> 3) { case 2: { - message.maxCompensation = $root.google.type.Money.decode(reader, reader.uint32()); + message.maxCompensation = $root.google.type.Money.decode(reader, reader.uint32(), undefined, long + 1); break; } case 1: { - message.minCompensation = $root.google.type.Money.decode(reader, reader.uint32()); + message.minCompensation = $root.google.type.Money.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -23964,16 +24811,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationRange.verify = function verify(message) { + CompensationRange.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.maxCompensation != null && message.hasOwnProperty("maxCompensation")) { - var error = $root.google.type.Money.verify(message.maxCompensation); + var error = $root.google.type.Money.verify(message.maxCompensation, long + 1); if (error) return "maxCompensation." + error; } if (message.minCompensation != null && message.hasOwnProperty("minCompensation")) { - var error = $root.google.type.Money.verify(message.minCompensation); + var error = $root.google.type.Money.verify(message.minCompensation, long + 1); if (error) return "minCompensation." + error; } @@ -23988,19 +24839,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CompensationInfo.CompensationRange} CompensationRange */ - CompensationRange.fromObject = function fromObject(object) { + CompensationRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange(); if (object.maxCompensation != null) { if (typeof object.maxCompensation !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.maxCompensation: object expected"); - message.maxCompensation = $root.google.type.Money.fromObject(object.maxCompensation); + message.maxCompensation = $root.google.type.Money.fromObject(object.maxCompensation, long + 1); } if (object.minCompensation != null) { if (typeof object.minCompensation !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.minCompensation: object expected"); - message.minCompensation = $root.google.type.Money.fromObject(object.minCompensation); + message.minCompensation = $root.google.type.Money.fromObject(object.minCompensation, long + 1); } return message; }; @@ -24088,7 +24943,7 @@ function BatchOperationMetadata(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -24223,9 +25078,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchOperationMetadata.decode = function decode(reader, length, error) { + BatchOperationMetadata.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.BatchOperationMetadata(); while (reader.pos < end) { var tag = reader.uint32(); @@ -24253,19 +25112,19 @@ break; } case 6: { - message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 7: { - message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { - message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -24296,9 +25155,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchOperationMetadata.verify = function verify(message) { + BatchOperationMetadata.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.state != null && message.hasOwnProperty("state")) switch (message.state) { default: @@ -24325,17 +25188,17 @@ if (!$util.isInteger(message.totalCount)) return "totalCount: integer expected"; if (message.createTime != null && message.hasOwnProperty("createTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.createTime); + var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1); if (error) return "createTime." + error; } if (message.updateTime != null && message.hasOwnProperty("updateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.updateTime); + var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1); if (error) return "updateTime." + error; } if (message.endTime != null && message.hasOwnProperty("endTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.endTime); + var error = $root.google.protobuf.Timestamp.verify(message.endTime, long + 1); if (error) return "endTime." + error; } @@ -24350,9 +25213,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.BatchOperationMetadata} BatchOperationMetadata */ - BatchOperationMetadata.fromObject = function fromObject(object) { + BatchOperationMetadata.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.BatchOperationMetadata) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.BatchOperationMetadata(); switch (object.state) { default: @@ -24401,17 +25268,17 @@ if (object.createTime != null) { if (typeof object.createTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.BatchOperationMetadata.createTime: object expected"); - message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime); + message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1); } if (object.updateTime != null) { if (typeof object.updateTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.BatchOperationMetadata.updateTime: object expected"); - message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime); + message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1); } if (object.endTime != null) { if (typeof object.endTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.BatchOperationMetadata.endTime: object expected"); - message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime); + message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime, long + 1); } return message; }; @@ -24544,7 +25411,7 @@ this.keywordSearchableJobCustomAttributes = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -24730,9 +25597,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Company.decode = function decode(reader, length, error) { + Company.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Company(); while (reader.pos < end) { var tag = reader.uint32(); @@ -24786,7 +25657,7 @@ break; } case 12: { - message.derivedInfo = $root.google.cloud.talent.v4beta1.Company.DerivedInfo.decode(reader, reader.uint32()); + message.derivedInfo = $root.google.cloud.talent.v4beta1.Company.DerivedInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 13: { @@ -24794,7 +25665,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -24825,9 +25696,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Company.verify = function verify(message) { + Company.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -24877,7 +25752,7 @@ return "keywordSearchableJobCustomAttributes: string[] expected"; } if (message.derivedInfo != null && message.hasOwnProperty("derivedInfo")) { - var error = $root.google.cloud.talent.v4beta1.Company.DerivedInfo.verify(message.derivedInfo); + var error = $root.google.cloud.talent.v4beta1.Company.DerivedInfo.verify(message.derivedInfo, long + 1); if (error) return "derivedInfo." + error; } @@ -24895,9 +25770,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Company} Company */ - Company.fromObject = function fromObject(object) { + Company.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Company) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Company(); if (object.name != null) message.name = String(object.name); @@ -24967,7 +25846,7 @@ if (object.derivedInfo != null) { if (typeof object.derivedInfo !== "object") throw TypeError(".google.cloud.talent.v4beta1.Company.derivedInfo: object expected"); - message.derivedInfo = $root.google.cloud.talent.v4beta1.Company.DerivedInfo.fromObject(object.derivedInfo); + message.derivedInfo = $root.google.cloud.talent.v4beta1.Company.DerivedInfo.fromObject(object.derivedInfo, long + 1); } if (object.suspended != null) message.suspended = Boolean(object.suspended); @@ -25081,7 +25960,7 @@ function DerivedInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -25146,9 +26025,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DerivedInfo.decode = function decode(reader, length, error) { + DerivedInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Company.DerivedInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -25156,11 +26039,11 @@ break; switch (tag >>> 3) { case 1: { - message.headquartersLocation = $root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32()); + message.headquartersLocation = $root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -25191,11 +26074,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DerivedInfo.verify = function verify(message) { + DerivedInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.headquartersLocation != null && message.hasOwnProperty("headquartersLocation")) { - var error = $root.google.cloud.talent.v4beta1.Location.verify(message.headquartersLocation); + var error = $root.google.cloud.talent.v4beta1.Location.verify(message.headquartersLocation, long + 1); if (error) return "headquartersLocation." + error; } @@ -25210,14 +26097,18 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Company.DerivedInfo} DerivedInfo */ - DerivedInfo.fromObject = function fromObject(object) { + DerivedInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Company.DerivedInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Company.DerivedInfo(); if (object.headquartersLocation != null) { if (typeof object.headquartersLocation !== "object") throw TypeError(".google.cloud.talent.v4beta1.Company.DerivedInfo.headquartersLocation: object expected"); - message.headquartersLocation = $root.google.cloud.talent.v4beta1.Location.fromObject(object.headquartersLocation); + message.headquartersLocation = $root.google.cloud.talent.v4beta1.Location.fromObject(object.headquartersLocation, long + 1); } return message; }; @@ -25495,7 +26386,7 @@ function CreateCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -25570,9 +26461,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateCompanyRequest.decode = function decode(reader, length, error) { + CreateCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CreateCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -25584,11 +26479,11 @@ break; } case 2: { - message.company = $root.google.cloud.talent.v4beta1.Company.decode(reader, reader.uint32()); + message.company = $root.google.cloud.talent.v4beta1.Company.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -25619,14 +26514,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateCompanyRequest.verify = function verify(message) { + CreateCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.company != null && message.hasOwnProperty("company")) { - var error = $root.google.cloud.talent.v4beta1.Company.verify(message.company); + var error = $root.google.cloud.talent.v4beta1.Company.verify(message.company, long + 1); if (error) return "company." + error; } @@ -25641,16 +26540,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CreateCompanyRequest} CreateCompanyRequest */ - CreateCompanyRequest.fromObject = function fromObject(object) { + CreateCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CreateCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CreateCompanyRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.company != null) { if (typeof object.company !== "object") throw TypeError(".google.cloud.talent.v4beta1.CreateCompanyRequest.company: object expected"); - message.company = $root.google.cloud.talent.v4beta1.Company.fromObject(object.company); + message.company = $root.google.cloud.talent.v4beta1.Company.fromObject(object.company, long + 1); } return message; }; @@ -25728,7 +26631,7 @@ function GetCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -25793,9 +26696,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GetCompanyRequest.decode = function decode(reader, length, error) { + GetCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.GetCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -25807,7 +26714,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -25838,9 +26745,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GetCompanyRequest.verify = function verify(message) { + GetCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -25855,9 +26766,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.GetCompanyRequest} GetCompanyRequest */ - GetCompanyRequest.fromObject = function fromObject(object) { + GetCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.GetCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.GetCompanyRequest(); if (object.name != null) message.name = String(object.name); @@ -25934,7 +26849,7 @@ function UpdateCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -26009,9 +26924,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UpdateCompanyRequest.decode = function decode(reader, length, error) { + UpdateCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.UpdateCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -26019,15 +26938,15 @@ break; switch (tag >>> 3) { case 1: { - message.company = $root.google.cloud.talent.v4beta1.Company.decode(reader, reader.uint32()); + message.company = $root.google.cloud.talent.v4beta1.Company.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -26058,16 +26977,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UpdateCompanyRequest.verify = function verify(message) { + UpdateCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.company != null && message.hasOwnProperty("company")) { - var error = $root.google.cloud.talent.v4beta1.Company.verify(message.company); + var error = $root.google.cloud.talent.v4beta1.Company.verify(message.company, long + 1); if (error) return "company." + error; } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -26082,19 +27005,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.UpdateCompanyRequest} UpdateCompanyRequest */ - UpdateCompanyRequest.fromObject = function fromObject(object) { + UpdateCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.UpdateCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.UpdateCompanyRequest(); if (object.company != null) { if (typeof object.company !== "object") throw TypeError(".google.cloud.talent.v4beta1.UpdateCompanyRequest.company: object expected"); - message.company = $root.google.cloud.talent.v4beta1.Company.fromObject(object.company); + message.company = $root.google.cloud.talent.v4beta1.Company.fromObject(object.company, long + 1); } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4beta1.UpdateCompanyRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -26172,7 +27099,7 @@ function DeleteCompanyRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -26237,9 +27164,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeleteCompanyRequest.decode = function decode(reader, length, error) { + DeleteCompanyRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.DeleteCompanyRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -26251,7 +27182,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -26282,9 +27213,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeleteCompanyRequest.verify = function verify(message) { + DeleteCompanyRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -26299,9 +27234,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.DeleteCompanyRequest} DeleteCompanyRequest */ - DeleteCompanyRequest.fromObject = function fromObject(object) { + DeleteCompanyRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.DeleteCompanyRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.DeleteCompanyRequest(); if (object.name != null) message.name = String(object.name); @@ -26380,7 +27319,7 @@ function ListCompaniesRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -26475,9 +27414,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListCompaniesRequest.decode = function decode(reader, length, error) { + ListCompaniesRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ListCompaniesRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -26501,7 +27444,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -26532,9 +27475,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListCompaniesRequest.verify = function verify(message) { + ListCompaniesRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -26558,9 +27505,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ListCompaniesRequest} ListCompaniesRequest */ - ListCompaniesRequest.fromObject = function fromObject(object) { + ListCompaniesRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ListCompaniesRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ListCompaniesRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -26655,7 +27606,7 @@ this.companies = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -26741,9 +27692,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListCompaniesResponse.decode = function decode(reader, length, error) { + ListCompaniesResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ListCompaniesResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -26753,7 +27708,7 @@ case 1: { if (!(message.companies && message.companies.length)) message.companies = []; - message.companies.push($root.google.cloud.talent.v4beta1.Company.decode(reader, reader.uint32())); + message.companies.push($root.google.cloud.talent.v4beta1.Company.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -26761,11 +27716,11 @@ break; } case 3: { - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -26796,14 +27751,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListCompaniesResponse.verify = function verify(message) { + ListCompaniesResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.companies != null && message.hasOwnProperty("companies")) { if (!Array.isArray(message.companies)) return "companies: array expected"; for (var i = 0; i < message.companies.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.Company.verify(message.companies[i]); + var error = $root.google.cloud.talent.v4beta1.Company.verify(message.companies[i], long + 1); if (error) return "companies." + error; } @@ -26812,7 +27771,7 @@ if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -26827,9 +27786,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ListCompaniesResponse} ListCompaniesResponse */ - ListCompaniesResponse.fromObject = function fromObject(object) { + ListCompaniesResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ListCompaniesResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ListCompaniesResponse(); if (object.companies) { if (!Array.isArray(object.companies)) @@ -26838,7 +27801,7 @@ for (var i = 0; i < object.companies.length; ++i) { if (typeof object.companies[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.ListCompaniesResponse.companies: object expected"); - message.companies[i] = $root.google.cloud.talent.v4beta1.Company.fromObject(object.companies[i]); + message.companies[i] = $root.google.cloud.talent.v4beta1.Company.fromObject(object.companies[i], long + 1); } } if (object.nextPageToken != null) @@ -26846,7 +27809,7 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4beta1.ListCompaniesResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -27006,7 +27969,7 @@ this.languageCodes = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -27132,9 +28095,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompleteQueryRequest.decode = function decode(reader, length, error) { + CompleteQueryRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CompleteQueryRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -27172,7 +28139,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -27203,9 +28170,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompleteQueryRequest.verify = function verify(message) { + CompleteQueryRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -27255,9 +28226,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CompleteQueryRequest} CompleteQueryRequest */ - CompleteQueryRequest.fromObject = function fromObject(object) { + CompleteQueryRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CompleteQueryRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CompleteQueryRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -27449,7 +28424,7 @@ this.completionResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -27525,9 +28500,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompleteQueryResponse.decode = function decode(reader, length, error) { + CompleteQueryResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CompleteQueryResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -27537,15 +28516,15 @@ case 1: { if (!(message.completionResults && message.completionResults.length)) message.completionResults = []; - message.completionResults.push($root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult.decode(reader, reader.uint32())); + message.completionResults.push($root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -27576,20 +28555,24 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompleteQueryResponse.verify = function verify(message) { + CompleteQueryResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.completionResults != null && message.hasOwnProperty("completionResults")) { if (!Array.isArray(message.completionResults)) return "completionResults: array expected"; for (var i = 0; i < message.completionResults.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult.verify(message.completionResults[i]); + var error = $root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult.verify(message.completionResults[i], long + 1); if (error) return "completionResults." + error; } } if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -27604,9 +28587,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CompleteQueryResponse} CompleteQueryResponse */ - CompleteQueryResponse.fromObject = function fromObject(object) { + CompleteQueryResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CompleteQueryResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CompleteQueryResponse(); if (object.completionResults) { if (!Array.isArray(object.completionResults)) @@ -27615,13 +28602,13 @@ for (var i = 0; i < object.completionResults.length; ++i) { if (typeof object.completionResults[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompleteQueryResponse.completionResults: object expected"); - message.completionResults[i] = $root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult.fromObject(object.completionResults[i]); + message.completionResults[i] = $root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult.fromObject(object.completionResults[i], long + 1); } } if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompleteQueryResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -27701,7 +28688,7 @@ function CompletionResult(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -27786,9 +28773,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompletionResult.decode = function decode(reader, length, error) { + CompletionResult.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult(); while (reader.pos < end) { var tag = reader.uint32(); @@ -27808,7 +28799,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -27839,9 +28830,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompletionResult.verify = function verify(message) { + CompletionResult.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.suggestion != null && message.hasOwnProperty("suggestion")) if (!$util.isString(message.suggestion)) return "suggestion: string expected"; @@ -27869,9 +28864,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult} CompletionResult */ - CompletionResult.fromObject = function fromObject(object) { + CompletionResult.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CompleteQueryResponse.CompletionResult(); if (object.suggestion != null) message.suggestion = String(object.suggestion); @@ -27987,7 +28986,7 @@ function ClientEvent(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -28106,9 +29105,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ClientEvent.decode = function decode(reader, length, error) { + ClientEvent.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ClientEvent(); while (reader.pos < end) { var tag = reader.uint32(); @@ -28124,11 +29127,11 @@ break; } case 4: { - message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { - message.jobEvent = $root.google.cloud.talent.v4beta1.JobEvent.decode(reader, reader.uint32()); + message.jobEvent = $root.google.cloud.talent.v4beta1.JobEvent.decode(reader, reader.uint32(), undefined, long + 1); break; } case 9: { @@ -28136,7 +29139,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -28167,9 +29170,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ClientEvent.verify = function verify(message) { + ClientEvent.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.requestId != null && message.hasOwnProperty("requestId")) if (!$util.isString(message.requestId)) @@ -28178,14 +29185,14 @@ if (!$util.isString(message.eventId)) return "eventId: string expected"; if (message.createTime != null && message.hasOwnProperty("createTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.createTime); + var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1); if (error) return "createTime." + error; } if (message.jobEvent != null && message.hasOwnProperty("jobEvent")) { properties.event = 1; { - var error = $root.google.cloud.talent.v4beta1.JobEvent.verify(message.jobEvent); + var error = $root.google.cloud.talent.v4beta1.JobEvent.verify(message.jobEvent, long + 1); if (error) return "jobEvent." + error; } @@ -28204,9 +29211,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ClientEvent} ClientEvent */ - ClientEvent.fromObject = function fromObject(object) { + ClientEvent.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ClientEvent) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ClientEvent(); if (object.requestId != null) message.requestId = String(object.requestId); @@ -28215,12 +29226,12 @@ if (object.createTime != null) { if (typeof object.createTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.ClientEvent.createTime: object expected"); - message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime); + message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1); } if (object.jobEvent != null) { if (typeof object.jobEvent !== "object") throw TypeError(".google.cloud.talent.v4beta1.ClientEvent.jobEvent: object expected"); - message.jobEvent = $root.google.cloud.talent.v4beta1.JobEvent.fromObject(object.jobEvent); + message.jobEvent = $root.google.cloud.talent.v4beta1.JobEvent.fromObject(object.jobEvent, long + 1); } if (object.eventNotes != null) message.eventNotes = String(object.eventNotes); @@ -28314,7 +29325,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -28400,9 +29411,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JobEvent.decode = function decode(reader, length, error) { + JobEvent.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.JobEvent(); while (reader.pos < end) { var tag = reader.uint32(); @@ -28424,7 +29439,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -28455,9 +29470,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JobEvent.verify = function verify(message) { + JobEvent.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.type != null && message.hasOwnProperty("type")) switch (message.type) { default: @@ -28501,9 +29520,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.JobEvent} JobEvent */ - JobEvent.fromObject = function fromObject(object) { + JobEvent.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.JobEvent) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.JobEvent(); switch (object.type) { default: @@ -28780,7 +29803,7 @@ function CreateClientEventRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -28855,9 +29878,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateClientEventRequest.decode = function decode(reader, length, error) { + CreateClientEventRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CreateClientEventRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -28869,11 +29896,11 @@ break; } case 2: { - message.clientEvent = $root.google.cloud.talent.v4beta1.ClientEvent.decode(reader, reader.uint32()); + message.clientEvent = $root.google.cloud.talent.v4beta1.ClientEvent.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -28904,14 +29931,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateClientEventRequest.verify = function verify(message) { + CreateClientEventRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.clientEvent != null && message.hasOwnProperty("clientEvent")) { - var error = $root.google.cloud.talent.v4beta1.ClientEvent.verify(message.clientEvent); + var error = $root.google.cloud.talent.v4beta1.ClientEvent.verify(message.clientEvent, long + 1); if (error) return "clientEvent." + error; } @@ -28926,16 +29957,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CreateClientEventRequest} CreateClientEventRequest */ - CreateClientEventRequest.fromObject = function fromObject(object) { + CreateClientEventRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CreateClientEventRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CreateClientEventRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.clientEvent != null) { if (typeof object.clientEvent !== "object") throw TypeError(".google.cloud.talent.v4beta1.CreateClientEventRequest.clientEvent: object expected"); - message.clientEvent = $root.google.cloud.talent.v4beta1.ClientEvent.fromObject(object.clientEvent); + message.clientEvent = $root.google.cloud.talent.v4beta1.ClientEvent.fromObject(object.clientEvent, long + 1); } return message; }; @@ -29033,7 +30068,7 @@ this.excludedJobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -29241,9 +30276,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JobQuery.decode = function decode(reader, length, error) { + JobQuery.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.JobQuery(); while (reader.pos < end) { var tag = reader.uint32(); @@ -29267,7 +30306,7 @@ case 3: { if (!(message.locationFilters && message.locationFilters.length)) message.locationFilters = []; - message.locationFilters.push($root.google.cloud.talent.v4beta1.LocationFilter.decode(reader, reader.uint32())); + message.locationFilters.push($root.google.cloud.talent.v4beta1.LocationFilter.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 4: { @@ -29282,7 +30321,7 @@ break; } case 5: { - message.commuteFilter = $root.google.cloud.talent.v4beta1.CommuteFilter.decode(reader, reader.uint32()); + message.commuteFilter = $root.google.cloud.talent.v4beta1.CommuteFilter.decode(reader, reader.uint32(), undefined, long + 1); break; } case 6: { @@ -29292,7 +30331,7 @@ break; } case 7: { - message.compensationFilter = $root.google.cloud.talent.v4beta1.CompensationFilter.decode(reader, reader.uint32()); + message.compensationFilter = $root.google.cloud.talent.v4beta1.CompensationFilter.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { @@ -29321,7 +30360,7 @@ break; } case 12: { - message.publishTimeRange = $root.google.cloud.talent.v4beta1.TimestampRange.decode(reader, reader.uint32()); + message.publishTimeRange = $root.google.cloud.talent.v4beta1.TimestampRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 13: { @@ -29331,7 +30370,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -29362,9 +30401,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JobQuery.verify = function verify(message) { + JobQuery.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.query != null && message.hasOwnProperty("query")) if (!$util.isString(message.query)) return "query: string expected"; @@ -29382,7 +30425,7 @@ if (!Array.isArray(message.locationFilters)) return "locationFilters: array expected"; for (var i = 0; i < message.locationFilters.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.LocationFilter.verify(message.locationFilters[i]); + var error = $root.google.cloud.talent.v4beta1.LocationFilter.verify(message.locationFilters[i], long + 1); if (error) return "locationFilters." + error; } @@ -29429,7 +30472,7 @@ } } if (message.commuteFilter != null && message.hasOwnProperty("commuteFilter")) { - var error = $root.google.cloud.talent.v4beta1.CommuteFilter.verify(message.commuteFilter); + var error = $root.google.cloud.talent.v4beta1.CommuteFilter.verify(message.commuteFilter, long + 1); if (error) return "commuteFilter." + error; } @@ -29441,7 +30484,7 @@ return "companyDisplayNames: string[] expected"; } if (message.compensationFilter != null && message.hasOwnProperty("compensationFilter")) { - var error = $root.google.cloud.talent.v4beta1.CompensationFilter.verify(message.compensationFilter); + var error = $root.google.cloud.talent.v4beta1.CompensationFilter.verify(message.compensationFilter, long + 1); if (error) return "compensationFilter." + error; } @@ -29480,7 +30523,7 @@ return "languageCodes: string[] expected"; } if (message.publishTimeRange != null && message.hasOwnProperty("publishTimeRange")) { - var error = $root.google.cloud.talent.v4beta1.TimestampRange.verify(message.publishTimeRange); + var error = $root.google.cloud.talent.v4beta1.TimestampRange.verify(message.publishTimeRange, long + 1); if (error) return "publishTimeRange." + error; } @@ -29502,9 +30545,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.JobQuery} JobQuery */ - JobQuery.fromObject = function fromObject(object) { + JobQuery.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.JobQuery) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.JobQuery(); if (object.query != null) message.query = String(object.query); @@ -29524,7 +30571,7 @@ for (var i = 0; i < object.locationFilters.length; ++i) { if (typeof object.locationFilters[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.JobQuery.locationFilters: object expected"); - message.locationFilters[i] = $root.google.cloud.talent.v4beta1.LocationFilter.fromObject(object.locationFilters[i]); + message.locationFilters[i] = $root.google.cloud.talent.v4beta1.LocationFilter.fromObject(object.locationFilters[i], long + 1); } } if (object.jobCategories) { @@ -29667,7 +30714,7 @@ if (object.commuteFilter != null) { if (typeof object.commuteFilter !== "object") throw TypeError(".google.cloud.talent.v4beta1.JobQuery.commuteFilter: object expected"); - message.commuteFilter = $root.google.cloud.talent.v4beta1.CommuteFilter.fromObject(object.commuteFilter); + message.commuteFilter = $root.google.cloud.talent.v4beta1.CommuteFilter.fromObject(object.commuteFilter, long + 1); } if (object.companyDisplayNames) { if (!Array.isArray(object.companyDisplayNames)) @@ -29679,7 +30726,7 @@ if (object.compensationFilter != null) { if (typeof object.compensationFilter !== "object") throw TypeError(".google.cloud.talent.v4beta1.JobQuery.compensationFilter: object expected"); - message.compensationFilter = $root.google.cloud.talent.v4beta1.CompensationFilter.fromObject(object.compensationFilter); + message.compensationFilter = $root.google.cloud.talent.v4beta1.CompensationFilter.fromObject(object.compensationFilter, long + 1); } if (object.customAttributeFilter != null) message.customAttributeFilter = String(object.customAttributeFilter); @@ -29752,7 +30799,7 @@ if (object.publishTimeRange != null) { if (typeof object.publishTimeRange !== "object") throw TypeError(".google.cloud.talent.v4beta1.JobQuery.publishTimeRange: object expected"); - message.publishTimeRange = $root.google.cloud.talent.v4beta1.TimestampRange.fromObject(object.publishTimeRange); + message.publishTimeRange = $root.google.cloud.talent.v4beta1.TimestampRange.fromObject(object.publishTimeRange, long + 1); } if (object.excludedJobs) { if (!Array.isArray(object.excludedJobs)) @@ -29901,7 +30948,7 @@ function LocationFilter(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -30016,9 +31063,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LocationFilter.decode = function decode(reader, length, error) { + LocationFilter.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.LocationFilter(); while (reader.pos < end) { var tag = reader.uint32(); @@ -30034,7 +31085,7 @@ break; } case 3: { - message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32()); + message.latLng = $root.google.type.LatLng.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -30050,7 +31101,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -30081,9 +31132,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LocationFilter.verify = function verify(message) { + LocationFilter.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.address != null && message.hasOwnProperty("address")) if (!$util.isString(message.address)) return "address: string expected"; @@ -30091,7 +31146,7 @@ if (!$util.isString(message.regionCode)) return "regionCode: string expected"; if (message.latLng != null && message.hasOwnProperty("latLng")) { - var error = $root.google.type.LatLng.verify(message.latLng); + var error = $root.google.type.LatLng.verify(message.latLng, long + 1); if (error) return "latLng." + error; } @@ -30122,9 +31177,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.LocationFilter} LocationFilter */ - LocationFilter.fromObject = function fromObject(object) { + LocationFilter.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.LocationFilter) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.LocationFilter(); if (object.address != null) message.address = String(object.address); @@ -30133,7 +31192,7 @@ if (object.latLng != null) { if (typeof object.latLng !== "object") throw TypeError(".google.cloud.talent.v4beta1.LocationFilter.latLng: object expected"); - message.latLng = $root.google.type.LatLng.fromObject(object.latLng); + message.latLng = $root.google.type.LatLng.fromObject(object.latLng, long + 1); } if (object.distanceInMiles != null) message.distanceInMiles = Number(object.distanceInMiles); @@ -30273,7 +31332,7 @@ this.units = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -30372,9 +31431,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CompensationFilter.decode = function decode(reader, length, error) { + CompensationFilter.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CompensationFilter(); while (reader.pos < end) { var tag = reader.uint32(); @@ -30397,7 +31460,7 @@ break; } case 3: { - message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32()); + message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -30405,7 +31468,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -30436,9 +31499,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CompensationFilter.verify = function verify(message) { + CompensationFilter.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.type != null && message.hasOwnProperty("type")) switch (message.type) { default: @@ -30469,7 +31536,7 @@ } } if (message.range != null && message.hasOwnProperty("range")) { - var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.range); + var error = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.verify(message.range, long + 1); if (error) return "range." + error; } @@ -30487,9 +31554,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CompensationFilter} CompensationFilter */ - CompensationFilter.fromObject = function fromObject(object) { + CompensationFilter.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CompensationFilter) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CompensationFilter(); switch (object.type) { default: @@ -30567,7 +31638,7 @@ if (object.range != null) { if (typeof object.range !== "object") throw TypeError(".google.cloud.talent.v4beta1.CompensationFilter.range: object expected"); - message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.range); + message.range = $root.google.cloud.talent.v4beta1.CompensationInfo.CompensationRange.fromObject(object.range, long + 1); } if (object.includeJobsWithUnspecifiedCompensationRange != null) message.includeJobsWithUnspecifiedCompensationRange = Boolean(object.includeJobsWithUnspecifiedCompensationRange); @@ -30682,7 +31753,7 @@ function CommuteFilter(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -30811,9 +31882,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommuteFilter.decode = function decode(reader, length, error) { + CommuteFilter.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CommuteFilter(); while (reader.pos < end) { var tag = reader.uint32(); @@ -30825,11 +31900,11 @@ break; } case 2: { - message.startCoordinates = $root.google.type.LatLng.decode(reader, reader.uint32()); + message.startCoordinates = $root.google.type.LatLng.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { - message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { @@ -30841,11 +31916,11 @@ break; } case 6: { - message.departureTime = $root.google.type.TimeOfDay.decode(reader, reader.uint32()); + message.departureTime = $root.google.type.TimeOfDay.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -30876,9 +31951,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CommuteFilter.verify = function verify(message) { + CommuteFilter.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.commuteMethod != null && message.hasOwnProperty("commuteMethod")) switch (message.commuteMethod) { @@ -30892,12 +31971,12 @@ break; } if (message.startCoordinates != null && message.hasOwnProperty("startCoordinates")) { - var error = $root.google.type.LatLng.verify(message.startCoordinates); + var error = $root.google.type.LatLng.verify(message.startCoordinates, long + 1); if (error) return "startCoordinates." + error; } if (message.travelDuration != null && message.hasOwnProperty("travelDuration")) { - var error = $root.google.protobuf.Duration.verify(message.travelDuration); + var error = $root.google.protobuf.Duration.verify(message.travelDuration, long + 1); if (error) return "travelDuration." + error; } @@ -30920,7 +31999,7 @@ return "trafficOption: multiple values"; properties.trafficOption = 1; { - var error = $root.google.type.TimeOfDay.verify(message.departureTime); + var error = $root.google.type.TimeOfDay.verify(message.departureTime, long + 1); if (error) return "departureTime." + error; } @@ -30936,9 +32015,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CommuteFilter} CommuteFilter */ - CommuteFilter.fromObject = function fromObject(object) { + CommuteFilter.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CommuteFilter) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CommuteFilter(); switch (object.commuteMethod) { default: @@ -30971,12 +32054,12 @@ if (object.startCoordinates != null) { if (typeof object.startCoordinates !== "object") throw TypeError(".google.cloud.talent.v4beta1.CommuteFilter.startCoordinates: object expected"); - message.startCoordinates = $root.google.type.LatLng.fromObject(object.startCoordinates); + message.startCoordinates = $root.google.type.LatLng.fromObject(object.startCoordinates, long + 1); } if (object.travelDuration != null) { if (typeof object.travelDuration !== "object") throw TypeError(".google.cloud.talent.v4beta1.CommuteFilter.travelDuration: object expected"); - message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration); + message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration, long + 1); } if (object.allowImpreciseAddresses != null) message.allowImpreciseAddresses = Boolean(object.allowImpreciseAddresses); @@ -31003,7 +32086,7 @@ if (object.departureTime != null) { if (typeof object.departureTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.CommuteFilter.departureTime: object expected"); - message.departureTime = $root.google.type.TimeOfDay.fromObject(object.departureTime); + message.departureTime = $root.google.type.TimeOfDay.fromObject(object.departureTime, long + 1); } return message; }; @@ -31113,7 +32196,7 @@ function HistogramQuery(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -31178,9 +32261,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - HistogramQuery.decode = function decode(reader, length, error) { + HistogramQuery.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.HistogramQuery(); while (reader.pos < end) { var tag = reader.uint32(); @@ -31192,7 +32279,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -31223,9 +32310,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - HistogramQuery.verify = function verify(message) { + HistogramQuery.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.histogramQuery != null && message.hasOwnProperty("histogramQuery")) if (!$util.isString(message.histogramQuery)) return "histogramQuery: string expected"; @@ -31240,9 +32331,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.HistogramQuery} HistogramQuery */ - HistogramQuery.fromObject = function fromObject(object) { + HistogramQuery.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.HistogramQuery) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.HistogramQuery(); if (object.histogramQuery != null) message.histogramQuery = String(object.histogramQuery); @@ -31320,7 +32415,7 @@ this.histogram = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -31396,9 +32491,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - HistogramQueryResult.decode = function decode(reader, length, error) { + HistogramQueryResult.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.HistogramQueryResult(), key, value; while (reader.pos < end) { var tag = reader.uint32(); @@ -31425,15 +32524,17 @@ value = reader.int64(); break; default: - reader.skipType(tag2 & 7); + reader.skipType(tag2 & 7, long); break; } } + if (key === "__proto__") + $util.makeProp(message.histogram, key); message.histogram[key] = value; break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -31464,9 +32565,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - HistogramQueryResult.verify = function verify(message) { + HistogramQueryResult.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.histogramQuery != null && message.hasOwnProperty("histogramQuery")) if (!$util.isString(message.histogramQuery)) return "histogramQuery: string expected"; @@ -31489,9 +32594,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.HistogramQueryResult} HistogramQueryResult */ - HistogramQueryResult.fromObject = function fromObject(object) { + HistogramQueryResult.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.HistogramQueryResult) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.HistogramQueryResult(); if (object.histogramQuery != null) message.histogramQuery = String(object.histogramQuery); @@ -31499,7 +32608,9 @@ if (typeof object.histogram !== "object") throw TypeError(".google.cloud.talent.v4beta1.HistogramQueryResult.histogram: object expected"); message.histogram = {}; - for (var keys = Object.keys(object.histogram), i = 0; i < keys.length; ++i) + for (var keys = Object.keys(object.histogram), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.histogram, keys[i]); if ($util.Long) (message.histogram[keys[i]] = $util.Long.fromValue(object.histogram[keys[i]])).unsigned = false; else if (typeof object.histogram[keys[i]] === "string") @@ -31508,6 +32619,7 @@ message.histogram[keys[i]] = object.histogram[keys[i]]; else if (typeof object.histogram[keys[i]] === "object") message.histogram[keys[i]] = new $util.LongBits(object.histogram[keys[i]].low >>> 0, object.histogram[keys[i]].high >>> 0).toNumber(); + } } return message; }; @@ -31534,11 +32646,14 @@ var keys2; if (message.histogram && (keys2 = Object.keys(message.histogram)).length) { object.histogram = {}; - for (var j = 0; j < keys2.length; ++j) + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.histogram, keys2[j]); if (typeof message.histogram[keys2[j]] === "number") object.histogram[keys2[j]] = options.longs === String ? String(message.histogram[keys2[j]]) : message.histogram[keys2[j]]; else object.histogram[keys2[j]] = options.longs === String ? $util.Long.prototype.toString.call(message.histogram[keys2[j]]) : options.longs === Number ? new $util.LongBits(message.histogram[keys2[j]].low >>> 0, message.histogram[keys2[j]].high >>> 0).toNumber() : message.histogram[keys2[j]]; + } } return object; }; @@ -31626,7 +32741,7 @@ this.employmentTypes = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -31997,9 +33112,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Job.decode = function decode(reader, length, error) { + Job.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Job(), key, value; while (reader.pos < end) { var tag = reader.uint32(); @@ -32033,7 +33152,7 @@ break; } case 7: { - message.applicationInfo = $root.google.cloud.talent.v4beta1.Job.ApplicationInfo.decode(reader, reader.uint32()); + message.applicationInfo = $root.google.cloud.talent.v4beta1.Job.ApplicationInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { @@ -32048,7 +33167,7 @@ break; } case 9: { - message.compensationInfo = $root.google.cloud.talent.v4beta1.CompensationInfo.decode(reader, reader.uint32()); + message.compensationInfo = $root.google.cloud.talent.v4beta1.CompensationInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 10: { @@ -32064,13 +33183,15 @@ key = reader.string(); break; case 2: - value = $root.google.cloud.talent.v4beta1.CustomAttribute.decode(reader, reader.uint32()); + value = $root.google.cloud.talent.v4beta1.CustomAttribute.decode(reader, reader.uint32(), undefined, long + 1); break; default: - reader.skipType(tag2 & 7); + reader.skipType(tag2 & 7, long); break; } } + if (key === "__proto__") + $util.makeProp(message.customAttributes, key); message.customAttributes[key] = value; break; } @@ -32133,27 +33254,27 @@ break; } case 22: { - message.jobStartTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.jobStartTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 23: { - message.jobEndTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.jobEndTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 24: { - message.postingPublishTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingPublishTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 25: { - message.postingExpireTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingExpireTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 26: { - message.postingCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 27: { - message.postingUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + message.postingUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1); break; } case 28: { @@ -32161,15 +33282,15 @@ break; } case 29: { - message.derivedInfo = $root.google.cloud.talent.v4beta1.Job.DerivedInfo.decode(reader, reader.uint32()); + message.derivedInfo = $root.google.cloud.talent.v4beta1.Job.DerivedInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 30: { - message.processingOptions = $root.google.cloud.talent.v4beta1.Job.ProcessingOptions.decode(reader, reader.uint32()); + message.processingOptions = $root.google.cloud.talent.v4beta1.Job.ProcessingOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -32200,9 +33321,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Job.verify = function verify(message) { + Job.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -32226,7 +33351,7 @@ return "addresses: string[] expected"; } if (message.applicationInfo != null && message.hasOwnProperty("applicationInfo")) { - var error = $root.google.cloud.talent.v4beta1.Job.ApplicationInfo.verify(message.applicationInfo); + var error = $root.google.cloud.talent.v4beta1.Job.ApplicationInfo.verify(message.applicationInfo, long + 1); if (error) return "applicationInfo." + error; } @@ -32253,7 +33378,7 @@ } } if (message.compensationInfo != null && message.hasOwnProperty("compensationInfo")) { - var error = $root.google.cloud.talent.v4beta1.CompensationInfo.verify(message.compensationInfo); + var error = $root.google.cloud.talent.v4beta1.CompensationInfo.verify(message.compensationInfo, long + 1); if (error) return "compensationInfo." + error; } @@ -32262,7 +33387,7 @@ return "customAttributes: object expected"; var key = Object.keys(message.customAttributes); for (var i = 0; i < key.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.CustomAttribute.verify(message.customAttributes[key[i]]); + var error = $root.google.cloud.talent.v4beta1.CustomAttribute.verify(message.customAttributes[key[i]], long + 1); if (error) return "customAttributes." + error; } @@ -32358,32 +33483,32 @@ break; } if (message.jobStartTime != null && message.hasOwnProperty("jobStartTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.jobStartTime); + var error = $root.google.protobuf.Timestamp.verify(message.jobStartTime, long + 1); if (error) return "jobStartTime." + error; } if (message.jobEndTime != null && message.hasOwnProperty("jobEndTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.jobEndTime); + var error = $root.google.protobuf.Timestamp.verify(message.jobEndTime, long + 1); if (error) return "jobEndTime." + error; } if (message.postingPublishTime != null && message.hasOwnProperty("postingPublishTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingPublishTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingPublishTime, long + 1); if (error) return "postingPublishTime." + error; } if (message.postingExpireTime != null && message.hasOwnProperty("postingExpireTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingExpireTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingExpireTime, long + 1); if (error) return "postingExpireTime." + error; } if (message.postingCreateTime != null && message.hasOwnProperty("postingCreateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingCreateTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingCreateTime, long + 1); if (error) return "postingCreateTime." + error; } if (message.postingUpdateTime != null && message.hasOwnProperty("postingUpdateTime")) { - var error = $root.google.protobuf.Timestamp.verify(message.postingUpdateTime); + var error = $root.google.protobuf.Timestamp.verify(message.postingUpdateTime, long + 1); if (error) return "postingUpdateTime." + error; } @@ -32391,12 +33516,12 @@ if (!$util.isString(message.companyDisplayName)) return "companyDisplayName: string expected"; if (message.derivedInfo != null && message.hasOwnProperty("derivedInfo")) { - var error = $root.google.cloud.talent.v4beta1.Job.DerivedInfo.verify(message.derivedInfo); + var error = $root.google.cloud.talent.v4beta1.Job.DerivedInfo.verify(message.derivedInfo, long + 1); if (error) return "derivedInfo." + error; } if (message.processingOptions != null && message.hasOwnProperty("processingOptions")) { - var error = $root.google.cloud.talent.v4beta1.Job.ProcessingOptions.verify(message.processingOptions); + var error = $root.google.cloud.talent.v4beta1.Job.ProcessingOptions.verify(message.processingOptions, long + 1); if (error) return "processingOptions." + error; } @@ -32411,9 +33536,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Job} Job */ - Job.fromObject = function fromObject(object) { + Job.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Job) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Job(); if (object.name != null) message.name = String(object.name); @@ -32435,7 +33564,7 @@ if (object.applicationInfo != null) { if (typeof object.applicationInfo !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.applicationInfo: object expected"); - message.applicationInfo = $root.google.cloud.talent.v4beta1.Job.ApplicationInfo.fromObject(object.applicationInfo); + message.applicationInfo = $root.google.cloud.talent.v4beta1.Job.ApplicationInfo.fromObject(object.applicationInfo, long + 1); } if (object.jobBenefits) { if (!Array.isArray(object.jobBenefits)) @@ -32501,16 +33630,18 @@ if (object.compensationInfo != null) { if (typeof object.compensationInfo !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.compensationInfo: object expected"); - message.compensationInfo = $root.google.cloud.talent.v4beta1.CompensationInfo.fromObject(object.compensationInfo); + message.compensationInfo = $root.google.cloud.talent.v4beta1.CompensationInfo.fromObject(object.compensationInfo, long + 1); } if (object.customAttributes) { if (typeof object.customAttributes !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.customAttributes: object expected"); message.customAttributes = {}; for (var keys = Object.keys(object.customAttributes), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.customAttributes, keys[i]); if (typeof object.customAttributes[keys[i]] !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.customAttributes: object expected"); - message.customAttributes[keys[i]] = $root.google.cloud.talent.v4beta1.CustomAttribute.fromObject(object.customAttributes[keys[i]]); + message.customAttributes[keys[i]] = $root.google.cloud.talent.v4beta1.CustomAttribute.fromObject(object.customAttributes[keys[i]], long + 1); } } if (object.degreeTypes) { @@ -32714,44 +33845,44 @@ if (object.jobStartTime != null) { if (typeof object.jobStartTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.jobStartTime: object expected"); - message.jobStartTime = $root.google.protobuf.Timestamp.fromObject(object.jobStartTime); + message.jobStartTime = $root.google.protobuf.Timestamp.fromObject(object.jobStartTime, long + 1); } if (object.jobEndTime != null) { if (typeof object.jobEndTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.jobEndTime: object expected"); - message.jobEndTime = $root.google.protobuf.Timestamp.fromObject(object.jobEndTime); + message.jobEndTime = $root.google.protobuf.Timestamp.fromObject(object.jobEndTime, long + 1); } if (object.postingPublishTime != null) { if (typeof object.postingPublishTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.postingPublishTime: object expected"); - message.postingPublishTime = $root.google.protobuf.Timestamp.fromObject(object.postingPublishTime); + message.postingPublishTime = $root.google.protobuf.Timestamp.fromObject(object.postingPublishTime, long + 1); } if (object.postingExpireTime != null) { if (typeof object.postingExpireTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.postingExpireTime: object expected"); - message.postingExpireTime = $root.google.protobuf.Timestamp.fromObject(object.postingExpireTime); + message.postingExpireTime = $root.google.protobuf.Timestamp.fromObject(object.postingExpireTime, long + 1); } if (object.postingCreateTime != null) { if (typeof object.postingCreateTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.postingCreateTime: object expected"); - message.postingCreateTime = $root.google.protobuf.Timestamp.fromObject(object.postingCreateTime); + message.postingCreateTime = $root.google.protobuf.Timestamp.fromObject(object.postingCreateTime, long + 1); } if (object.postingUpdateTime != null) { if (typeof object.postingUpdateTime !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.postingUpdateTime: object expected"); - message.postingUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.postingUpdateTime); + message.postingUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.postingUpdateTime, long + 1); } if (object.companyDisplayName != null) message.companyDisplayName = String(object.companyDisplayName); if (object.derivedInfo != null) { if (typeof object.derivedInfo !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.derivedInfo: object expected"); - message.derivedInfo = $root.google.cloud.talent.v4beta1.Job.DerivedInfo.fromObject(object.derivedInfo); + message.derivedInfo = $root.google.cloud.talent.v4beta1.Job.DerivedInfo.fromObject(object.derivedInfo, long + 1); } if (object.processingOptions != null) { if (typeof object.processingOptions !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.processingOptions: object expected"); - message.processingOptions = $root.google.cloud.talent.v4beta1.Job.ProcessingOptions.fromObject(object.processingOptions); + message.processingOptions = $root.google.cloud.talent.v4beta1.Job.ProcessingOptions.fromObject(object.processingOptions, long + 1); } return message; }; @@ -32831,8 +33962,11 @@ var keys2; if (message.customAttributes && (keys2 = Object.keys(message.customAttributes)).length) { object.customAttributes = {}; - for (var j = 0; j < keys2.length; ++j) + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.customAttributes, keys2[j]); object.customAttributes[keys2[j]] = $root.google.cloud.talent.v4beta1.CustomAttribute.toObject(message.customAttributes[keys2[j]], options); + } } if (message.degreeTypes && message.degreeTypes.length) { object.degreeTypes = []; @@ -32933,7 +34067,7 @@ this.uris = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -33020,9 +34154,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ApplicationInfo.decode = function decode(reader, length, error) { + ApplicationInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Job.ApplicationInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -33046,7 +34184,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -33077,9 +34215,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ApplicationInfo.verify = function verify(message) { + ApplicationInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.emails != null && message.hasOwnProperty("emails")) { if (!Array.isArray(message.emails)) return "emails: array expected"; @@ -33108,9 +34250,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Job.ApplicationInfo} ApplicationInfo */ - ApplicationInfo.fromObject = function fromObject(object) { + ApplicationInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Job.ApplicationInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Job.ApplicationInfo(); if (object.emails) { if (!Array.isArray(object.emails)) @@ -33217,7 +34363,7 @@ this.jobCategories = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -33297,9 +34443,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DerivedInfo.decode = function decode(reader, length, error) { + DerivedInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Job.DerivedInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -33309,7 +34459,7 @@ case 1: { if (!(message.locations && message.locations.length)) message.locations = []; - message.locations.push($root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32())); + message.locations.push($root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { @@ -33324,7 +34474,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -33355,14 +34505,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DerivedInfo.verify = function verify(message) { + DerivedInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.locations != null && message.hasOwnProperty("locations")) { if (!Array.isArray(message.locations)) return "locations: array expected"; for (var i = 0; i < message.locations.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.Location.verify(message.locations[i]); + var error = $root.google.cloud.talent.v4beta1.Location.verify(message.locations[i], long + 1); if (error) return "locations." + error; } @@ -33419,9 +34573,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Job.DerivedInfo} DerivedInfo */ - DerivedInfo.fromObject = function fromObject(object) { + DerivedInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Job.DerivedInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Job.DerivedInfo(); if (object.locations) { if (!Array.isArray(object.locations)) @@ -33430,7 +34588,7 @@ for (var i = 0; i < object.locations.length; ++i) { if (typeof object.locations[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.Job.DerivedInfo.locations: object expected"); - message.locations[i] = $root.google.cloud.talent.v4beta1.Location.fromObject(object.locations[i]); + message.locations[i] = $root.google.cloud.talent.v4beta1.Location.fromObject(object.locations[i], long + 1); } } if (object.jobCategories) { @@ -33653,7 +34811,7 @@ function ProcessingOptions(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -33728,9 +34886,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ProcessingOptions.decode = function decode(reader, length, error) { + ProcessingOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Job.ProcessingOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -33746,7 +34908,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -33777,9 +34939,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ProcessingOptions.verify = function verify(message) { + ProcessingOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.disableStreetAddressResolution != null && message.hasOwnProperty("disableStreetAddressResolution")) if (typeof message.disableStreetAddressResolution !== "boolean") return "disableStreetAddressResolution: boolean expected"; @@ -33803,9 +34969,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Job.ProcessingOptions} ProcessingOptions */ - ProcessingOptions.fromObject = function fromObject(object) { + ProcessingOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Job.ProcessingOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Job.ProcessingOptions(); if (object.disableStreetAddressResolution != null) message.disableStreetAddressResolution = Boolean(object.disableStreetAddressResolution); @@ -34274,7 +35444,7 @@ function CreateJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -34349,9 +35519,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateJobRequest.decode = function decode(reader, length, error) { + CreateJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CreateJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -34363,11 +35537,11 @@ break; } case 2: { - message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -34398,14 +35572,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateJobRequest.verify = function verify(message) { + CreateJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job); + var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job, long + 1); if (error) return "job." + error; } @@ -34420,16 +35598,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CreateJobRequest} CreateJobRequest */ - CreateJobRequest.fromObject = function fromObject(object) { + CreateJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CreateJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CreateJobRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4beta1.CreateJobRequest.job: object expected"); - message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job, long + 1); } return message; }; @@ -34507,7 +35689,7 @@ function GetJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -34572,9 +35754,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GetJobRequest.decode = function decode(reader, length, error) { + GetJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.GetJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -34586,7 +35772,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -34617,9 +35803,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GetJobRequest.verify = function verify(message) { + GetJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -34634,9 +35824,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.GetJobRequest} GetJobRequest */ - GetJobRequest.fromObject = function fromObject(object) { + GetJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.GetJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.GetJobRequest(); if (object.name != null) message.name = String(object.name); @@ -34713,7 +35907,7 @@ function UpdateJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -34788,9 +35982,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UpdateJobRequest.decode = function decode(reader, length, error) { + UpdateJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.UpdateJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -34798,15 +35996,15 @@ break; switch (tag >>> 3) { case 1: { - message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -34837,16 +36035,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UpdateJobRequest.verify = function verify(message) { + UpdateJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job); + var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job, long + 1); if (error) return "job." + error; } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -34861,19 +36063,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.UpdateJobRequest} UpdateJobRequest */ - UpdateJobRequest.fromObject = function fromObject(object) { + UpdateJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.UpdateJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.UpdateJobRequest(); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4beta1.UpdateJobRequest.job: object expected"); - message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job, long + 1); } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4beta1.UpdateJobRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -34951,7 +36157,7 @@ function DeleteJobRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -35016,9 +36222,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeleteJobRequest.decode = function decode(reader, length, error) { + DeleteJobRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.DeleteJobRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -35030,7 +36240,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -35061,9 +36271,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeleteJobRequest.verify = function verify(message) { + DeleteJobRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -35078,9 +36292,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.DeleteJobRequest} DeleteJobRequest */ - DeleteJobRequest.fromObject = function fromObject(object) { + DeleteJobRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.DeleteJobRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.DeleteJobRequest(); if (object.name != null) message.name = String(object.name); @@ -35157,7 +36375,7 @@ function BatchDeleteJobsRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -35232,9 +36450,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchDeleteJobsRequest.decode = function decode(reader, length, error) { + BatchDeleteJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.BatchDeleteJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -35250,7 +36472,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -35281,9 +36503,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchDeleteJobsRequest.verify = function verify(message) { + BatchDeleteJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -35301,9 +36527,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.BatchDeleteJobsRequest} BatchDeleteJobsRequest */ - BatchDeleteJobsRequest.fromObject = function fromObject(object) { + BatchDeleteJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.BatchDeleteJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.BatchDeleteJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -35409,7 +36639,7 @@ function ListJobsRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -35514,9 +36744,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListJobsRequest.decode = function decode(reader, length, error) { + ListJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ListJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -35544,7 +36778,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -35575,9 +36809,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListJobsRequest.verify = function verify(message) { + ListJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -35612,9 +36850,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ListJobsRequest} ListJobsRequest */ - ListJobsRequest.fromObject = function fromObject(object) { + ListJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ListJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ListJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -35740,7 +36982,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -35826,9 +37068,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListJobsResponse.decode = function decode(reader, length, error) { + ListJobsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ListJobsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -35838,7 +37084,7 @@ case 1: { if (!(message.jobs && message.jobs.length)) message.jobs = []; - message.jobs.push($root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32())); + message.jobs.push($root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -35846,11 +37092,11 @@ break; } case 3: { - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -35881,14 +37127,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListJobsResponse.verify = function verify(message) { + ListJobsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobs != null && message.hasOwnProperty("jobs")) { if (!Array.isArray(message.jobs)) return "jobs: array expected"; for (var i = 0; i < message.jobs.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.Job.verify(message.jobs[i]); + var error = $root.google.cloud.talent.v4beta1.Job.verify(message.jobs[i], long + 1); if (error) return "jobs." + error; } @@ -35897,7 +37147,7 @@ if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -35912,9 +37162,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ListJobsResponse} ListJobsResponse */ - ListJobsResponse.fromObject = function fromObject(object) { + ListJobsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ListJobsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ListJobsResponse(); if (object.jobs) { if (!Array.isArray(object.jobs)) @@ -35923,7 +37177,7 @@ for (var i = 0; i < object.jobs.length; ++i) { if (typeof object.jobs[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.ListJobsResponse.jobs: object expected"); - message.jobs[i] = $root.google.cloud.talent.v4beta1.Job.fromObject(object.jobs[i]); + message.jobs[i] = $root.google.cloud.talent.v4beta1.Job.fromObject(object.jobs[i], long + 1); } } if (object.nextPageToken != null) @@ -35931,7 +37185,7 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4beta1.ListJobsResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -36033,7 +37287,7 @@ this.histogramQueries = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -36259,9 +37513,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SearchJobsRequest.decode = function decode(reader, length, error) { + SearchJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.SearchJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -36277,11 +37535,11 @@ break; } case 3: { - message.requestMetadata = $root.google.cloud.talent.v4beta1.RequestMetadata.decode(reader, reader.uint32()); + message.requestMetadata = $root.google.cloud.talent.v4beta1.RequestMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { - message.jobQuery = $root.google.cloud.talent.v4beta1.JobQuery.decode(reader, reader.uint32()); + message.jobQuery = $root.google.cloud.talent.v4beta1.JobQuery.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { @@ -36295,7 +37553,7 @@ case 7: { if (!(message.histogramQueries && message.histogramQueries.length)) message.histogramQueries = []; - message.histogramQueries.push($root.google.cloud.talent.v4beta1.HistogramQuery.decode(reader, reader.uint32())); + message.histogramQueries.push($root.google.cloud.talent.v4beta1.HistogramQuery.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 8: { @@ -36323,7 +37581,7 @@ break; } case 14: { - message.customRankingInfo = $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.decode(reader, reader.uint32()); + message.customRankingInfo = $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 16: { @@ -36339,7 +37597,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -36370,9 +37628,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SearchJobsRequest.verify = function verify(message) { + SearchJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -36386,12 +37648,12 @@ break; } if (message.requestMetadata != null && message.hasOwnProperty("requestMetadata")) { - var error = $root.google.cloud.talent.v4beta1.RequestMetadata.verify(message.requestMetadata); + var error = $root.google.cloud.talent.v4beta1.RequestMetadata.verify(message.requestMetadata, long + 1); if (error) return "requestMetadata." + error; } if (message.jobQuery != null && message.hasOwnProperty("jobQuery")) { - var error = $root.google.cloud.talent.v4beta1.JobQuery.verify(message.jobQuery); + var error = $root.google.cloud.talent.v4beta1.JobQuery.verify(message.jobQuery, long + 1); if (error) return "jobQuery." + error; } @@ -36405,7 +37667,7 @@ if (!Array.isArray(message.histogramQueries)) return "histogramQueries: array expected"; for (var i = 0; i < message.histogramQueries.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.HistogramQuery.verify(message.histogramQueries[i]); + var error = $root.google.cloud.talent.v4beta1.HistogramQuery.verify(message.histogramQueries[i], long + 1); if (error) return "histogramQueries." + error; } @@ -36443,7 +37705,7 @@ break; } if (message.customRankingInfo != null && message.hasOwnProperty("customRankingInfo")) { - var error = $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.verify(message.customRankingInfo); + var error = $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.verify(message.customRankingInfo, long + 1); if (error) return "customRankingInfo." + error; } @@ -36482,9 +37744,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.SearchJobsRequest} SearchJobsRequest */ - SearchJobsRequest.fromObject = function fromObject(object) { + SearchJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.SearchJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.SearchJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -36511,12 +37777,12 @@ if (object.requestMetadata != null) { if (typeof object.requestMetadata !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsRequest.requestMetadata: object expected"); - message.requestMetadata = $root.google.cloud.talent.v4beta1.RequestMetadata.fromObject(object.requestMetadata); + message.requestMetadata = $root.google.cloud.talent.v4beta1.RequestMetadata.fromObject(object.requestMetadata, long + 1); } if (object.jobQuery != null) { if (typeof object.jobQuery !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsRequest.jobQuery: object expected"); - message.jobQuery = $root.google.cloud.talent.v4beta1.JobQuery.fromObject(object.jobQuery); + message.jobQuery = $root.google.cloud.talent.v4beta1.JobQuery.fromObject(object.jobQuery, long + 1); } if (object.enableBroadening != null) message.enableBroadening = Boolean(object.enableBroadening); @@ -36529,7 +37795,7 @@ for (var i = 0; i < object.histogramQueries.length; ++i) { if (typeof object.histogramQueries[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsRequest.histogramQueries: object expected"); - message.histogramQueries[i] = $root.google.cloud.talent.v4beta1.HistogramQuery.fromObject(object.histogramQueries[i]); + message.histogramQueries[i] = $root.google.cloud.talent.v4beta1.HistogramQuery.fromObject(object.histogramQueries[i], long + 1); } } switch (object.jobView) { @@ -36591,7 +37857,7 @@ if (object.customRankingInfo != null) { if (typeof object.customRankingInfo !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsRequest.customRankingInfo: object expected"); - message.customRankingInfo = $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.fromObject(object.customRankingInfo); + message.customRankingInfo = $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.fromObject(object.customRankingInfo, long + 1); } if (object.disableKeywordMatch != null) message.disableKeywordMatch = Boolean(object.disableKeywordMatch); @@ -36840,7 +38106,7 @@ function CustomRankingInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -36915,9 +38181,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CustomRankingInfo.decode = function decode(reader, length, error) { + CustomRankingInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -36933,7 +38203,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -36964,9 +38234,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CustomRankingInfo.verify = function verify(message) { + CustomRankingInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.importanceLevel != null && message.hasOwnProperty("importanceLevel")) switch (message.importanceLevel) { default: @@ -36994,9 +38268,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo} CustomRankingInfo */ - CustomRankingInfo.fromObject = function fromObject(object) { + CustomRankingInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo(); switch (object.importanceLevel) { default: @@ -37150,7 +38428,7 @@ this.locationFilters = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -37298,9 +38576,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SearchJobsResponse.decode = function decode(reader, length, error) { + SearchJobsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.SearchJobsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -37310,13 +38592,13 @@ case 1: { if (!(message.matchingJobs && message.matchingJobs.length)) message.matchingJobs = []; - message.matchingJobs.push($root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.decode(reader, reader.uint32())); + message.matchingJobs.push($root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { if (!(message.histogramQueryResults && message.histogramQueryResults.length)) message.histogramQueryResults = []; - message.histogramQueryResults.push($root.google.cloud.talent.v4beta1.HistogramQueryResult.decode(reader, reader.uint32())); + message.histogramQueryResults.push($root.google.cloud.talent.v4beta1.HistogramQueryResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { @@ -37326,7 +38608,7 @@ case 4: { if (!(message.locationFilters && message.locationFilters.length)) message.locationFilters = []; - message.locationFilters.push($root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32())); + message.locationFilters.push($root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 5: { @@ -37338,7 +38620,7 @@ break; } case 7: { - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } case 8: { @@ -37346,11 +38628,11 @@ break; } case 9: { - message.spellCorrection = $root.google.cloud.talent.v4beta1.SpellingCorrection.decode(reader, reader.uint32()); + message.spellCorrection = $root.google.cloud.talent.v4beta1.SpellingCorrection.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -37381,14 +38663,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SearchJobsResponse.verify = function verify(message) { + SearchJobsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.matchingJobs != null && message.hasOwnProperty("matchingJobs")) { if (!Array.isArray(message.matchingJobs)) return "matchingJobs: array expected"; for (var i = 0; i < message.matchingJobs.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.verify(message.matchingJobs[i]); + var error = $root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.verify(message.matchingJobs[i], long + 1); if (error) return "matchingJobs." + error; } @@ -37397,7 +38683,7 @@ if (!Array.isArray(message.histogramQueryResults)) return "histogramQueryResults: array expected"; for (var i = 0; i < message.histogramQueryResults.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.HistogramQueryResult.verify(message.histogramQueryResults[i]); + var error = $root.google.cloud.talent.v4beta1.HistogramQueryResult.verify(message.histogramQueryResults[i], long + 1); if (error) return "histogramQueryResults." + error; } @@ -37409,7 +38695,7 @@ if (!Array.isArray(message.locationFilters)) return "locationFilters: array expected"; for (var i = 0; i < message.locationFilters.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.Location.verify(message.locationFilters[i]); + var error = $root.google.cloud.talent.v4beta1.Location.verify(message.locationFilters[i], long + 1); if (error) return "locationFilters." + error; } @@ -37421,7 +38707,7 @@ if (!$util.isInteger(message.totalSize)) return "totalSize: integer expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -37429,7 +38715,7 @@ if (!$util.isInteger(message.broadenedQueryJobsCount)) return "broadenedQueryJobsCount: integer expected"; if (message.spellCorrection != null && message.hasOwnProperty("spellCorrection")) { - var error = $root.google.cloud.talent.v4beta1.SpellingCorrection.verify(message.spellCorrection); + var error = $root.google.cloud.talent.v4beta1.SpellingCorrection.verify(message.spellCorrection, long + 1); if (error) return "spellCorrection." + error; } @@ -37444,9 +38730,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.SearchJobsResponse} SearchJobsResponse */ - SearchJobsResponse.fromObject = function fromObject(object) { + SearchJobsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.SearchJobsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.SearchJobsResponse(); if (object.matchingJobs) { if (!Array.isArray(object.matchingJobs)) @@ -37455,7 +38745,7 @@ for (var i = 0; i < object.matchingJobs.length; ++i) { if (typeof object.matchingJobs[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.matchingJobs: object expected"); - message.matchingJobs[i] = $root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.fromObject(object.matchingJobs[i]); + message.matchingJobs[i] = $root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.fromObject(object.matchingJobs[i], long + 1); } } if (object.histogramQueryResults) { @@ -37465,7 +38755,7 @@ for (var i = 0; i < object.histogramQueryResults.length; ++i) { if (typeof object.histogramQueryResults[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.histogramQueryResults: object expected"); - message.histogramQueryResults[i] = $root.google.cloud.talent.v4beta1.HistogramQueryResult.fromObject(object.histogramQueryResults[i]); + message.histogramQueryResults[i] = $root.google.cloud.talent.v4beta1.HistogramQueryResult.fromObject(object.histogramQueryResults[i], long + 1); } } if (object.nextPageToken != null) @@ -37477,7 +38767,7 @@ for (var i = 0; i < object.locationFilters.length; ++i) { if (typeof object.locationFilters[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.locationFilters: object expected"); - message.locationFilters[i] = $root.google.cloud.talent.v4beta1.Location.fromObject(object.locationFilters[i]); + message.locationFilters[i] = $root.google.cloud.talent.v4beta1.Location.fromObject(object.locationFilters[i], long + 1); } } if (object.estimatedTotalSize != null) @@ -37487,14 +38777,14 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata, long + 1); } if (object.broadenedQueryJobsCount != null) message.broadenedQueryJobsCount = object.broadenedQueryJobsCount | 0; if (object.spellCorrection != null) { if (typeof object.spellCorrection !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.spellCorrection: object expected"); - message.spellCorrection = $root.google.cloud.talent.v4beta1.SpellingCorrection.fromObject(object.spellCorrection); + message.spellCorrection = $root.google.cloud.talent.v4beta1.SpellingCorrection.fromObject(object.spellCorrection, long + 1); } return message; }; @@ -37605,7 +38895,7 @@ function MatchingJob(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -37710,9 +39000,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MatchingJob.decode = function decode(reader, length, error) { + MatchingJob.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob(); while (reader.pos < end) { var tag = reader.uint32(); @@ -37720,7 +39014,7 @@ break; switch (tag >>> 3) { case 1: { - message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { @@ -37736,11 +39030,11 @@ break; } case 5: { - message.commuteInfo = $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.decode(reader, reader.uint32()); + message.commuteInfo = $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -37771,11 +39065,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MatchingJob.verify = function verify(message) { + MatchingJob.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job); + var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job, long + 1); if (error) return "job." + error; } @@ -37789,7 +39087,7 @@ if (!$util.isString(message.searchTextSnippet)) return "searchTextSnippet: string expected"; if (message.commuteInfo != null && message.hasOwnProperty("commuteInfo")) { - var error = $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.verify(message.commuteInfo); + var error = $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.verify(message.commuteInfo, long + 1); if (error) return "commuteInfo." + error; } @@ -37804,14 +39102,18 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob} MatchingJob */ - MatchingJob.fromObject = function fromObject(object) { + MatchingJob.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob(); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.job: object expected"); - message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job, long + 1); } if (object.jobSummary != null) message.jobSummary = String(object.jobSummary); @@ -37822,7 +39124,7 @@ if (object.commuteInfo != null) { if (typeof object.commuteInfo !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob.commuteInfo: object expected"); - message.commuteInfo = $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.fromObject(object.commuteInfo); + message.commuteInfo = $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.fromObject(object.commuteInfo, long + 1); } return message; }; @@ -37910,7 +39212,7 @@ function CommuteInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -37985,9 +39287,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommuteInfo.decode = function decode(reader, length, error) { + CommuteInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -37995,15 +39301,15 @@ break; switch (tag >>> 3) { case 1: { - message.jobLocation = $root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32()); + message.jobLocation = $root.google.cloud.talent.v4beta1.Location.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.travelDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -38034,16 +39340,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CommuteInfo.verify = function verify(message) { + CommuteInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobLocation != null && message.hasOwnProperty("jobLocation")) { - var error = $root.google.cloud.talent.v4beta1.Location.verify(message.jobLocation); + var error = $root.google.cloud.talent.v4beta1.Location.verify(message.jobLocation, long + 1); if (error) return "jobLocation." + error; } if (message.travelDuration != null && message.hasOwnProperty("travelDuration")) { - var error = $root.google.protobuf.Duration.verify(message.travelDuration); + var error = $root.google.protobuf.Duration.verify(message.travelDuration, long + 1); if (error) return "travelDuration." + error; } @@ -38058,19 +39368,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo} CommuteInfo */ - CommuteInfo.fromObject = function fromObject(object) { + CommuteInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo(); if (object.jobLocation != null) { if (typeof object.jobLocation !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.jobLocation: object expected"); - message.jobLocation = $root.google.cloud.talent.v4beta1.Location.fromObject(object.jobLocation); + message.jobLocation = $root.google.cloud.talent.v4beta1.Location.fromObject(object.jobLocation, long + 1); } if (object.travelDuration != null) { if (typeof object.travelDuration !== "object") throw TypeError(".google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo.travelDuration: object expected"); - message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration); + message.travelDuration = $root.google.protobuf.Duration.fromObject(object.travelDuration, long + 1); } return message; }; @@ -38153,7 +39467,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -38229,9 +39543,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchCreateJobsRequest.decode = function decode(reader, length, error) { + BatchCreateJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.BatchCreateJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -38245,11 +39563,11 @@ case 2: { if (!(message.jobs && message.jobs.length)) message.jobs = []; - message.jobs.push($root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32())); + message.jobs.push($root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -38280,9 +39598,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchCreateJobsRequest.verify = function verify(message) { + BatchCreateJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -38290,7 +39612,7 @@ if (!Array.isArray(message.jobs)) return "jobs: array expected"; for (var i = 0; i < message.jobs.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.Job.verify(message.jobs[i]); + var error = $root.google.cloud.talent.v4beta1.Job.verify(message.jobs[i], long + 1); if (error) return "jobs." + error; } @@ -38306,9 +39628,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.BatchCreateJobsRequest} BatchCreateJobsRequest */ - BatchCreateJobsRequest.fromObject = function fromObject(object) { + BatchCreateJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.BatchCreateJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.BatchCreateJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -38319,7 +39645,7 @@ for (var i = 0; i < object.jobs.length; ++i) { if (typeof object.jobs[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.BatchCreateJobsRequest.jobs: object expected"); - message.jobs[i] = $root.google.cloud.talent.v4beta1.Job.fromObject(object.jobs[i]); + message.jobs[i] = $root.google.cloud.talent.v4beta1.Job.fromObject(object.jobs[i], long + 1); } } return message; @@ -38404,7 +39730,7 @@ this.jobs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -38490,9 +39816,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BatchUpdateJobsRequest.decode = function decode(reader, length, error) { + BatchUpdateJobsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.BatchUpdateJobsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -38506,15 +39836,15 @@ case 2: { if (!(message.jobs && message.jobs.length)) message.jobs = []; - message.jobs.push($root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32())); + message.jobs.push($root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -38545,9 +39875,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BatchUpdateJobsRequest.verify = function verify(message) { + BatchUpdateJobsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -38555,13 +39889,13 @@ if (!Array.isArray(message.jobs)) return "jobs: array expected"; for (var i = 0; i < message.jobs.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.Job.verify(message.jobs[i]); + var error = $root.google.cloud.talent.v4beta1.Job.verify(message.jobs[i], long + 1); if (error) return "jobs." + error; } } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -38576,9 +39910,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.BatchUpdateJobsRequest} BatchUpdateJobsRequest */ - BatchUpdateJobsRequest.fromObject = function fromObject(object) { + BatchUpdateJobsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.BatchUpdateJobsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.BatchUpdateJobsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -38589,13 +39927,13 @@ for (var i = 0; i < object.jobs.length; ++i) { if (typeof object.jobs[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.BatchUpdateJobsRequest.jobs: object expected"); - message.jobs[i] = $root.google.cloud.talent.v4beta1.Job.fromObject(object.jobs[i]); + message.jobs[i] = $root.google.cloud.talent.v4beta1.Job.fromObject(object.jobs[i], long + 1); } } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4beta1.BatchUpdateJobsRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -38681,7 +40019,7 @@ this.jobResults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -38747,9 +40085,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JobOperationResult.decode = function decode(reader, length, error) { + JobOperationResult.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.JobOperationResult(); while (reader.pos < end) { var tag = reader.uint32(); @@ -38759,11 +40101,11 @@ case 1: { if (!(message.jobResults && message.jobResults.length)) message.jobResults = []; - message.jobResults.push($root.google.cloud.talent.v4beta1.JobOperationResult.JobResult.decode(reader, reader.uint32())); + message.jobResults.push($root.google.cloud.talent.v4beta1.JobOperationResult.JobResult.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -38794,14 +40136,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JobOperationResult.verify = function verify(message) { + JobOperationResult.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.jobResults != null && message.hasOwnProperty("jobResults")) { if (!Array.isArray(message.jobResults)) return "jobResults: array expected"; for (var i = 0; i < message.jobResults.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.JobOperationResult.JobResult.verify(message.jobResults[i]); + var error = $root.google.cloud.talent.v4beta1.JobOperationResult.JobResult.verify(message.jobResults[i], long + 1); if (error) return "jobResults." + error; } @@ -38817,9 +40163,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.JobOperationResult} JobOperationResult */ - JobOperationResult.fromObject = function fromObject(object) { + JobOperationResult.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.JobOperationResult) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.JobOperationResult(); if (object.jobResults) { if (!Array.isArray(object.jobResults)) @@ -38828,7 +40178,7 @@ for (var i = 0; i < object.jobResults.length; ++i) { if (typeof object.jobResults[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.JobOperationResult.jobResults: object expected"); - message.jobResults[i] = $root.google.cloud.talent.v4beta1.JobOperationResult.JobResult.fromObject(object.jobResults[i]); + message.jobResults[i] = $root.google.cloud.talent.v4beta1.JobOperationResult.JobResult.fromObject(object.jobResults[i], long + 1); } } return message; @@ -38904,7 +40254,7 @@ function JobResult(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -38979,9 +40329,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JobResult.decode = function decode(reader, length, error) { + JobResult.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.JobOperationResult.JobResult(); while (reader.pos < end) { var tag = reader.uint32(); @@ -38989,15 +40343,15 @@ break; switch (tag >>> 3) { case 1: { - message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32()); + message.job = $root.google.cloud.talent.v4beta1.Job.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.status = $root.google.rpc.Status.decode(reader, reader.uint32()); + message.status = $root.google.rpc.Status.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -39028,16 +40382,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JobResult.verify = function verify(message) { + JobResult.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.job != null && message.hasOwnProperty("job")) { - var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job); + var error = $root.google.cloud.talent.v4beta1.Job.verify(message.job, long + 1); if (error) return "job." + error; } if (message.status != null && message.hasOwnProperty("status")) { - var error = $root.google.rpc.Status.verify(message.status); + var error = $root.google.rpc.Status.verify(message.status, long + 1); if (error) return "status." + error; } @@ -39052,19 +40410,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.JobOperationResult.JobResult} JobResult */ - JobResult.fromObject = function fromObject(object) { + JobResult.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.JobOperationResult.JobResult) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.JobOperationResult.JobResult(); if (object.job != null) { if (typeof object.job !== "object") throw TypeError(".google.cloud.talent.v4beta1.JobOperationResult.JobResult.job: object expected"); - message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job); + message.job = $root.google.cloud.talent.v4beta1.Job.fromObject(object.job, long + 1); } if (object.status != null) { if (typeof object.status !== "object") throw TypeError(".google.cloud.talent.v4beta1.JobOperationResult.JobResult.status: object expected"); - message.status = $root.google.rpc.Status.fromObject(object.status); + message.status = $root.google.rpc.Status.fromObject(object.status, long + 1); } return message; }; @@ -39149,7 +40511,7 @@ this.keywordSearchableProfileCustomAttributes = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -39245,9 +40607,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Tenant.decode = function decode(reader, length, error) { + Tenant.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.Tenant(); while (reader.pos < end) { var tag = reader.uint32(); @@ -39273,7 +40639,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -39304,9 +40670,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Tenant.verify = function verify(message) { + Tenant.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -39340,9 +40710,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.Tenant} Tenant */ - Tenant.fromObject = function fromObject(object) { + Tenant.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.Tenant) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.Tenant(); if (object.name != null) message.name = String(object.name); @@ -39678,7 +41052,7 @@ function CreateTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -39753,9 +41127,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CreateTenantRequest.decode = function decode(reader, length, error) { + CreateTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.CreateTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -39767,11 +41145,11 @@ break; } case 2: { - message.tenant = $root.google.cloud.talent.v4beta1.Tenant.decode(reader, reader.uint32()); + message.tenant = $root.google.cloud.talent.v4beta1.Tenant.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -39802,14 +41180,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CreateTenantRequest.verify = function verify(message) { + CreateTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; if (message.tenant != null && message.hasOwnProperty("tenant")) { - var error = $root.google.cloud.talent.v4beta1.Tenant.verify(message.tenant); + var error = $root.google.cloud.talent.v4beta1.Tenant.verify(message.tenant, long + 1); if (error) return "tenant." + error; } @@ -39824,16 +41206,20 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.CreateTenantRequest} CreateTenantRequest */ - CreateTenantRequest.fromObject = function fromObject(object) { + CreateTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.CreateTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.CreateTenantRequest(); if (object.parent != null) message.parent = String(object.parent); if (object.tenant != null) { if (typeof object.tenant !== "object") throw TypeError(".google.cloud.talent.v4beta1.CreateTenantRequest.tenant: object expected"); - message.tenant = $root.google.cloud.talent.v4beta1.Tenant.fromObject(object.tenant); + message.tenant = $root.google.cloud.talent.v4beta1.Tenant.fromObject(object.tenant, long + 1); } return message; }; @@ -39911,7 +41297,7 @@ function GetTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -39976,9 +41362,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GetTenantRequest.decode = function decode(reader, length, error) { + GetTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.GetTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -39990,7 +41380,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -40021,9 +41411,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GetTenantRequest.verify = function verify(message) { + GetTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -40038,9 +41432,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.GetTenantRequest} GetTenantRequest */ - GetTenantRequest.fromObject = function fromObject(object) { + GetTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.GetTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.GetTenantRequest(); if (object.name != null) message.name = String(object.name); @@ -40117,7 +41515,7 @@ function UpdateTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -40192,9 +41590,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UpdateTenantRequest.decode = function decode(reader, length, error) { + UpdateTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.UpdateTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -40202,15 +41604,15 @@ break; switch (tag >>> 3) { case 1: { - message.tenant = $root.google.cloud.talent.v4beta1.Tenant.decode(reader, reader.uint32()); + message.tenant = $root.google.cloud.talent.v4beta1.Tenant.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { - message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32()); + message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -40241,16 +41643,20 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UpdateTenantRequest.verify = function verify(message) { + UpdateTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.tenant != null && message.hasOwnProperty("tenant")) { - var error = $root.google.cloud.talent.v4beta1.Tenant.verify(message.tenant); + var error = $root.google.cloud.talent.v4beta1.Tenant.verify(message.tenant, long + 1); if (error) return "tenant." + error; } if (message.updateMask != null && message.hasOwnProperty("updateMask")) { - var error = $root.google.protobuf.FieldMask.verify(message.updateMask); + var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1); if (error) return "updateMask." + error; } @@ -40265,19 +41671,23 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.UpdateTenantRequest} UpdateTenantRequest */ - UpdateTenantRequest.fromObject = function fromObject(object) { + UpdateTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.UpdateTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.UpdateTenantRequest(); if (object.tenant != null) { if (typeof object.tenant !== "object") throw TypeError(".google.cloud.talent.v4beta1.UpdateTenantRequest.tenant: object expected"); - message.tenant = $root.google.cloud.talent.v4beta1.Tenant.fromObject(object.tenant); + message.tenant = $root.google.cloud.talent.v4beta1.Tenant.fromObject(object.tenant, long + 1); } if (object.updateMask != null) { if (typeof object.updateMask !== "object") throw TypeError(".google.cloud.talent.v4beta1.UpdateTenantRequest.updateMask: object expected"); - message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask); + message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1); } return message; }; @@ -40355,7 +41765,7 @@ function DeleteTenantRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -40420,9 +41830,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeleteTenantRequest.decode = function decode(reader, length, error) { + DeleteTenantRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.DeleteTenantRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -40434,7 +41848,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -40465,9 +41879,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeleteTenantRequest.verify = function verify(message) { + DeleteTenantRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -40482,9 +41900,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.DeleteTenantRequest} DeleteTenantRequest */ - DeleteTenantRequest.fromObject = function fromObject(object) { + DeleteTenantRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.DeleteTenantRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.DeleteTenantRequest(); if (object.name != null) message.name = String(object.name); @@ -40562,7 +41984,7 @@ function ListTenantsRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -40647,9 +42069,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListTenantsRequest.decode = function decode(reader, length, error) { + ListTenantsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ListTenantsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -40669,7 +42095,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -40700,9 +42126,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListTenantsRequest.verify = function verify(message) { + ListTenantsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.parent != null && message.hasOwnProperty("parent")) if (!$util.isString(message.parent)) return "parent: string expected"; @@ -40723,9 +42153,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ListTenantsRequest} ListTenantsRequest */ - ListTenantsRequest.fromObject = function fromObject(object) { + ListTenantsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ListTenantsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ListTenantsRequest(); if (object.parent != null) message.parent = String(object.parent); @@ -40815,7 +42249,7 @@ this.tenants = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -40901,9 +42335,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListTenantsResponse.decode = function decode(reader, length, error) { + ListTenantsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.talent.v4beta1.ListTenantsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -40913,7 +42351,7 @@ case 1: { if (!(message.tenants && message.tenants.length)) message.tenants = []; - message.tenants.push($root.google.cloud.talent.v4beta1.Tenant.decode(reader, reader.uint32())); + message.tenants.push($root.google.cloud.talent.v4beta1.Tenant.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -40921,11 +42359,11 @@ break; } case 3: { - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32()); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -40956,14 +42394,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListTenantsResponse.verify = function verify(message) { + ListTenantsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.tenants != null && message.hasOwnProperty("tenants")) { if (!Array.isArray(message.tenants)) return "tenants: array expected"; for (var i = 0; i < message.tenants.length; ++i) { - var error = $root.google.cloud.talent.v4beta1.Tenant.verify(message.tenants[i]); + var error = $root.google.cloud.talent.v4beta1.Tenant.verify(message.tenants[i], long + 1); if (error) return "tenants." + error; } @@ -40972,7 +42414,7 @@ if (!$util.isString(message.nextPageToken)) return "nextPageToken: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata); + var error = $root.google.cloud.talent.v4beta1.ResponseMetadata.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -40987,9 +42429,13 @@ * @param {Object.} object Plain object * @returns {google.cloud.talent.v4beta1.ListTenantsResponse} ListTenantsResponse */ - ListTenantsResponse.fromObject = function fromObject(object) { + ListTenantsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.cloud.talent.v4beta1.ListTenantsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.cloud.talent.v4beta1.ListTenantsResponse(); if (object.tenants) { if (!Array.isArray(object.tenants)) @@ -40998,7 +42444,7 @@ for (var i = 0; i < object.tenants.length; ++i) { if (typeof object.tenants[i] !== "object") throw TypeError(".google.cloud.talent.v4beta1.ListTenantsResponse.tenants: object expected"); - message.tenants[i] = $root.google.cloud.talent.v4beta1.Tenant.fromObject(object.tenants[i]); + message.tenants[i] = $root.google.cloud.talent.v4beta1.Tenant.fromObject(object.tenants[i], long + 1); } } if (object.nextPageToken != null) @@ -41006,7 +42452,7 @@ if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.cloud.talent.v4beta1.ListTenantsResponse.metadata: object expected"); - message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata); + message.metadata = $root.google.cloud.talent.v4beta1.ResponseMetadata.fromObject(object.metadata, long + 1); } return message; }; @@ -41145,7 +42591,7 @@ this.style = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -41275,9 +42721,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ResourceDescriptor.decode = function decode(reader, length, error) { + ResourceDescriptor.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceDescriptor(); while (reader.pos < end) { var tag = reader.uint32(); @@ -41322,7 +42772,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -41353,9 +42803,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ResourceDescriptor.verify = function verify(message) { + ResourceDescriptor.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.type != null && message.hasOwnProperty("type")) if (!$util.isString(message.type)) return "type: string expected"; @@ -41407,9 +42861,13 @@ * @param {Object.} object Plain object * @returns {google.api.ResourceDescriptor} ResourceDescriptor */ - ResourceDescriptor.fromObject = function fromObject(object) { + ResourceDescriptor.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.ResourceDescriptor) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.ResourceDescriptor(); if (object.type != null) message.type = String(object.type); @@ -41597,7 +43055,7 @@ function ResourceReference(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -41672,9 +43130,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ResourceReference.decode = function decode(reader, length, error) { + ResourceReference.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceReference(); while (reader.pos < end) { var tag = reader.uint32(); @@ -41690,7 +43152,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -41721,9 +43183,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ResourceReference.verify = function verify(message) { + ResourceReference.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.type != null && message.hasOwnProperty("type")) if (!$util.isString(message.type)) return "type: string expected"; @@ -41741,9 +43207,13 @@ * @param {Object.} object Plain object * @returns {google.api.ResourceReference} ResourceReference */ - ResourceReference.fromObject = function fromObject(object) { + ResourceReference.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.ResourceReference) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.ResourceReference(); if (object.type != null) message.type = String(object.type); @@ -41827,7 +43297,7 @@ this.rules = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -41903,9 +43373,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Http.decode = function decode(reader, length, error) { + Http.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http(); while (reader.pos < end) { var tag = reader.uint32(); @@ -41915,7 +43389,7 @@ case 1: { if (!(message.rules && message.rules.length)) message.rules = []; - message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32())); + message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -41923,7 +43397,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -41954,14 +43428,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Http.verify = function verify(message) { + Http.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.rules != null && message.hasOwnProperty("rules")) { if (!Array.isArray(message.rules)) return "rules: array expected"; for (var i = 0; i < message.rules.length; ++i) { - var error = $root.google.api.HttpRule.verify(message.rules[i]); + var error = $root.google.api.HttpRule.verify(message.rules[i], long + 1); if (error) return "rules." + error; } @@ -41980,9 +43458,13 @@ * @param {Object.} object Plain object * @returns {google.api.Http} Http */ - Http.fromObject = function fromObject(object) { + Http.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.Http) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.Http(); if (object.rules) { if (!Array.isArray(object.rules)) @@ -41991,7 +43473,7 @@ for (var i = 0; i < object.rules.length; ++i) { if (typeof object.rules[i] !== "object") throw TypeError(".google.api.Http.rules: object expected"); - message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]); + message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i], long + 1); } } if (object.fullyDecodeReservedExpansion != null) @@ -42085,7 +43567,7 @@ this.additionalBindings = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -42255,9 +43737,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - HttpRule.decode = function decode(reader, length, error) { + HttpRule.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule(); while (reader.pos < end) { var tag = reader.uint32(); @@ -42289,7 +43775,7 @@ break; } case 8: { - message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32()); + message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32(), undefined, long + 1); break; } case 7: { @@ -42303,11 +43789,11 @@ case 11: { if (!(message.additionalBindings && message.additionalBindings.length)) message.additionalBindings = []; - message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32())); + message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -42338,9 +43824,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - HttpRule.verify = function verify(message) { + HttpRule.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.selector != null && message.hasOwnProperty("selector")) if (!$util.isString(message.selector)) @@ -42383,7 +43873,7 @@ return "pattern: multiple values"; properties.pattern = 1; { - var error = $root.google.api.CustomHttpPattern.verify(message.custom); + var error = $root.google.api.CustomHttpPattern.verify(message.custom, long + 1); if (error) return "custom." + error; } @@ -42398,7 +43888,7 @@ if (!Array.isArray(message.additionalBindings)) return "additionalBindings: array expected"; for (var i = 0; i < message.additionalBindings.length; ++i) { - var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]); + var error = $root.google.api.HttpRule.verify(message.additionalBindings[i], long + 1); if (error) return "additionalBindings." + error; } @@ -42414,9 +43904,13 @@ * @param {Object.} object Plain object * @returns {google.api.HttpRule} HttpRule */ - HttpRule.fromObject = function fromObject(object) { + HttpRule.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.HttpRule) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.HttpRule(); if (object.selector != null) message.selector = String(object.selector); @@ -42433,7 +43927,7 @@ if (object.custom != null) { if (typeof object.custom !== "object") throw TypeError(".google.api.HttpRule.custom: object expected"); - message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom); + message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom, long + 1); } if (object.body != null) message.body = String(object.body); @@ -42446,7 +43940,7 @@ for (var i = 0; i < object.additionalBindings.length; ++i) { if (typeof object.additionalBindings[i] !== "object") throw TypeError(".google.api.HttpRule.additionalBindings: object expected"); - message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]); + message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i], long + 1); } } return message; @@ -42566,7 +44060,7 @@ function CustomHttpPattern(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -42641,9 +44135,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CustomHttpPattern.decode = function decode(reader, length, error) { + CustomHttpPattern.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern(); while (reader.pos < end) { var tag = reader.uint32(); @@ -42659,7 +44157,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -42690,9 +44188,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CustomHttpPattern.verify = function verify(message) { + CustomHttpPattern.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.kind != null && message.hasOwnProperty("kind")) if (!$util.isString(message.kind)) return "kind: string expected"; @@ -42710,9 +44212,13 @@ * @param {Object.} object Plain object * @returns {google.api.CustomHttpPattern} CustomHttpPattern */ - CustomHttpPattern.fromObject = function fromObject(object) { + CustomHttpPattern.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.CustomHttpPattern) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.CustomHttpPattern(); if (object.kind != null) message.kind = String(object.kind); @@ -42782,6 +44288,7 @@ * @interface ICommonLanguageSettings * @property {string|null} [referenceDocsUri] CommonLanguageSettings referenceDocsUri * @property {Array.|null} [destinations] CommonLanguageSettings destinations + * @property {google.api.ISelectiveGapicGeneration|null} [selectiveGapicGeneration] CommonLanguageSettings selectiveGapicGeneration */ /** @@ -42796,7 +44303,7 @@ this.destinations = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -42816,6 +44323,14 @@ */ CommonLanguageSettings.prototype.destinations = $util.emptyArray; + /** + * CommonLanguageSettings selectiveGapicGeneration. + * @member {google.api.ISelectiveGapicGeneration|null|undefined} selectiveGapicGeneration + * @memberof google.api.CommonLanguageSettings + * @instance + */ + CommonLanguageSettings.prototype.selectiveGapicGeneration = null; + /** * Creates a new CommonLanguageSettings instance using the specified properties. * @function create @@ -42848,6 +44363,8 @@ writer.int32(message.destinations[i]); writer.ldelim(); } + if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration")) + $root.google.api.SelectiveGapicGeneration.encode(message.selectiveGapicGeneration, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -42875,9 +44392,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CommonLanguageSettings.decode = function decode(reader, length, error) { + CommonLanguageSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -42899,8 +44420,12 @@ message.destinations.push(reader.int32()); break; } + case 3: { + message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32(), undefined, long + 1); + break; + } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -42931,9 +44456,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CommonLanguageSettings.verify = function verify(message) { + CommonLanguageSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri")) if (!$util.isString(message.referenceDocsUri)) return "referenceDocsUri: string expected"; @@ -42950,6 +44479,11 @@ break; } } + if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) { + var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration, long + 1); + if (error) + return "selectiveGapicGeneration." + error; + } return null; }; @@ -42961,9 +44495,13 @@ * @param {Object.} object Plain object * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings */ - CommonLanguageSettings.fromObject = function fromObject(object) { + CommonLanguageSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.CommonLanguageSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.CommonLanguageSettings(); if (object.referenceDocsUri != null) message.referenceDocsUri = String(object.referenceDocsUri); @@ -42992,6 +44530,11 @@ break; } } + if (object.selectiveGapicGeneration != null) { + if (typeof object.selectiveGapicGeneration !== "object") + throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected"); + message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration, long + 1); + } return message; }; @@ -43010,8 +44553,10 @@ var object = {}; if (options.arrays || options.defaults) object.destinations = []; - if (options.defaults) + if (options.defaults) { object.referenceDocsUri = ""; + object.selectiveGapicGeneration = null; + } if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri")) object.referenceDocsUri = message.referenceDocsUri; if (message.destinations && message.destinations.length) { @@ -43019,6 +44564,8 @@ for (var j = 0; j < message.destinations.length; ++j) object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j]; } + if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) + object.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.toObject(message.selectiveGapicGeneration, options); return object; }; @@ -43081,7 +44628,7 @@ function ClientLibrarySettings(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -43246,9 +44793,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ClientLibrarySettings.decode = function decode(reader, length, error) { + ClientLibrarySettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -43268,39 +44819,39 @@ break; } case 21: { - message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32()); + message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 22: { - message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32()); + message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 23: { - message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32()); + message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 24: { - message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32()); + message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 25: { - message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32()); + message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 26: { - message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32()); + message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 27: { - message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32()); + message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 28: { - message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32()); + message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -43331,9 +44882,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ClientLibrarySettings.verify = function verify(message) { + ClientLibrarySettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.version != null && message.hasOwnProperty("version")) if (!$util.isString(message.version)) return "version: string expected"; @@ -43355,42 +44910,42 @@ if (typeof message.restNumericEnums !== "boolean") return "restNumericEnums: boolean expected"; if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) { - var error = $root.google.api.JavaSettings.verify(message.javaSettings); + var error = $root.google.api.JavaSettings.verify(message.javaSettings, long + 1); if (error) return "javaSettings." + error; } if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) { - var error = $root.google.api.CppSettings.verify(message.cppSettings); + var error = $root.google.api.CppSettings.verify(message.cppSettings, long + 1); if (error) return "cppSettings." + error; } if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) { - var error = $root.google.api.PhpSettings.verify(message.phpSettings); + var error = $root.google.api.PhpSettings.verify(message.phpSettings, long + 1); if (error) return "phpSettings." + error; } if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) { - var error = $root.google.api.PythonSettings.verify(message.pythonSettings); + var error = $root.google.api.PythonSettings.verify(message.pythonSettings, long + 1); if (error) return "pythonSettings." + error; } if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) { - var error = $root.google.api.NodeSettings.verify(message.nodeSettings); + var error = $root.google.api.NodeSettings.verify(message.nodeSettings, long + 1); if (error) return "nodeSettings." + error; } if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) { - var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings); + var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings, long + 1); if (error) return "dotnetSettings." + error; } if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) { - var error = $root.google.api.RubySettings.verify(message.rubySettings); + var error = $root.google.api.RubySettings.verify(message.rubySettings, long + 1); if (error) return "rubySettings." + error; } if (message.goSettings != null && message.hasOwnProperty("goSettings")) { - var error = $root.google.api.GoSettings.verify(message.goSettings); + var error = $root.google.api.GoSettings.verify(message.goSettings, long + 1); if (error) return "goSettings." + error; } @@ -43405,9 +44960,13 @@ * @param {Object.} object Plain object * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings */ - ClientLibrarySettings.fromObject = function fromObject(object) { + ClientLibrarySettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.ClientLibrarySettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.ClientLibrarySettings(); if (object.version != null) message.version = String(object.version); @@ -43456,42 +45015,42 @@ if (object.javaSettings != null) { if (typeof object.javaSettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected"); - message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings); + message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings, long + 1); } if (object.cppSettings != null) { if (typeof object.cppSettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected"); - message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings); + message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings, long + 1); } if (object.phpSettings != null) { if (typeof object.phpSettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected"); - message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings); + message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings, long + 1); } if (object.pythonSettings != null) { if (typeof object.pythonSettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected"); - message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings); + message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings, long + 1); } if (object.nodeSettings != null) { if (typeof object.nodeSettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected"); - message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings); + message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings, long + 1); } if (object.dotnetSettings != null) { if (typeof object.dotnetSettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected"); - message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings); + message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings, long + 1); } if (object.rubySettings != null) { if (typeof object.rubySettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected"); - message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings); + message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings, long + 1); } if (object.goSettings != null) { if (typeof object.goSettings !== "object") throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected"); - message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings); + message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings, long + 1); } return message; }; @@ -43609,7 +45168,7 @@ this.librarySettings = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -43777,9 +45336,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Publishing.decode = function decode(reader, length, error) { + Publishing.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing(); while (reader.pos < end) { var tag = reader.uint32(); @@ -43789,7 +45352,7 @@ case 2: { if (!(message.methodSettings && message.methodSettings.length)) message.methodSettings = []; - message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32())); + message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 101: { @@ -43825,7 +45388,7 @@ case 109: { if (!(message.librarySettings && message.librarySettings.length)) message.librarySettings = []; - message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32())); + message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 110: { @@ -43837,7 +45400,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -43868,14 +45431,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Publishing.verify = function verify(message) { + Publishing.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) { if (!Array.isArray(message.methodSettings)) return "methodSettings: array expected"; for (var i = 0; i < message.methodSettings.length; ++i) { - var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]); + var error = $root.google.api.MethodSettings.verify(message.methodSettings[i], long + 1); if (error) return "methodSettings." + error; } @@ -43920,7 +45487,7 @@ if (!Array.isArray(message.librarySettings)) return "librarySettings: array expected"; for (var i = 0; i < message.librarySettings.length; ++i) { - var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]); + var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i], long + 1); if (error) return "librarySettings." + error; } @@ -43942,9 +45509,13 @@ * @param {Object.} object Plain object * @returns {google.api.Publishing} Publishing */ - Publishing.fromObject = function fromObject(object) { + Publishing.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.Publishing) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.Publishing(); if (object.methodSettings) { if (!Array.isArray(object.methodSettings)) @@ -43953,7 +45524,7 @@ for (var i = 0; i < object.methodSettings.length; ++i) { if (typeof object.methodSettings[i] !== "object") throw TypeError(".google.api.Publishing.methodSettings: object expected"); - message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]); + message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i], long + 1); } } if (object.newIssueUri != null) @@ -44020,7 +45591,7 @@ for (var i = 0; i < object.librarySettings.length; ++i) { if (typeof object.librarySettings[i] !== "object") throw TypeError(".google.api.Publishing.librarySettings: object expected"); - message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]); + message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i], long + 1); } } if (object.protoReferenceDocumentationUri != null) @@ -44144,7 +45715,7 @@ this.serviceClassNames = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -44230,9 +45801,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - JavaSettings.decode = function decode(reader, length, error) { + JavaSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value; while (reader.pos < end) { var tag = reader.uint32(); @@ -44259,19 +45834,21 @@ value = reader.string(); break; default: - reader.skipType(tag2 & 7); + reader.skipType(tag2 & 7, long); break; } } + if (key === "__proto__") + $util.makeProp(message.serviceClassNames, key); message.serviceClassNames[key] = value; break; } case 3: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -44302,9 +45879,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - JavaSettings.verify = function verify(message) { + JavaSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage")) if (!$util.isString(message.libraryPackage)) return "libraryPackage: string expected"; @@ -44317,7 +45898,7 @@ return "serviceClassNames: string{k:string} expected"; } if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } @@ -44332,9 +45913,13 @@ * @param {Object.} object Plain object * @returns {google.api.JavaSettings} JavaSettings */ - JavaSettings.fromObject = function fromObject(object) { + JavaSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.JavaSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.JavaSettings(); if (object.libraryPackage != null) message.libraryPackage = String(object.libraryPackage); @@ -44342,13 +45927,16 @@ if (typeof object.serviceClassNames !== "object") throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected"); message.serviceClassNames = {}; - for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) + for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.serviceClassNames, keys[i]); message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]); + } } if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.JavaSettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } return message; }; @@ -44377,8 +45965,11 @@ var keys2; if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) { object.serviceClassNames = {}; - for (var j = 0; j < keys2.length; ++j) + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.serviceClassNames, keys2[j]); object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]]; + } } if (message.common != null && message.hasOwnProperty("common")) object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); @@ -44434,7 +46025,7 @@ function CppSettings(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -44499,9 +46090,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CppSettings.decode = function decode(reader, length, error) { + CppSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -44509,11 +46104,11 @@ break; switch (tag >>> 3) { case 1: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -44544,11 +46139,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CppSettings.verify = function verify(message) { + CppSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } @@ -44563,14 +46162,18 @@ * @param {Object.} object Plain object * @returns {google.api.CppSettings} CppSettings */ - CppSettings.fromObject = function fromObject(object) { + CppSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.CppSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.CppSettings(); if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.CppSettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } return message; }; @@ -44644,7 +46247,7 @@ function PhpSettings(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -44709,9 +46312,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PhpSettings.decode = function decode(reader, length, error) { + PhpSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -44719,11 +46326,11 @@ break; switch (tag >>> 3) { case 1: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -44754,11 +46361,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PhpSettings.verify = function verify(message) { + PhpSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } @@ -44773,14 +46384,18 @@ * @param {Object.} object Plain object * @returns {google.api.PhpSettings} PhpSettings */ - PhpSettings.fromObject = function fromObject(object) { + PhpSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.PhpSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.PhpSettings(); if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.PhpSettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } return message; }; @@ -44841,6 +46456,7 @@ * @memberof google.api * @interface IPythonSettings * @property {google.api.ICommonLanguageSettings|null} [common] PythonSettings common + * @property {google.api.PythonSettings.IExperimentalFeatures|null} [experimentalFeatures] PythonSettings experimentalFeatures */ /** @@ -44854,7 +46470,7 @@ function PythonSettings(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -44866,6 +46482,14 @@ */ PythonSettings.prototype.common = null; + /** + * PythonSettings experimentalFeatures. + * @member {google.api.PythonSettings.IExperimentalFeatures|null|undefined} experimentalFeatures + * @memberof google.api.PythonSettings + * @instance + */ + PythonSettings.prototype.experimentalFeatures = null; + /** * Creates a new PythonSettings instance using the specified properties. * @function create @@ -44892,6 +46516,8 @@ writer = $Writer.create(); if (message.common != null && Object.hasOwnProperty.call(message, "common")) $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures")) + $root.google.api.PythonSettings.ExperimentalFeatures.encode(message.experimentalFeatures, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; }; @@ -44919,9 +46545,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PythonSettings.decode = function decode(reader, length, error) { + PythonSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -44929,11 +46559,15 @@ break; switch (tag >>> 3) { case 1: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); + break; + } + case 2: { + message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -44964,14 +46598,23 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PythonSettings.verify = function verify(message) { + PythonSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } + if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) { + var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures, long + 1); + if (error) + return "experimentalFeatures." + error; + } return null; }; @@ -44983,14 +46626,23 @@ * @param {Object.} object Plain object * @returns {google.api.PythonSettings} PythonSettings */ - PythonSettings.fromObject = function fromObject(object) { + PythonSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.PythonSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.PythonSettings(); if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.PythonSettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); + } + if (object.experimentalFeatures != null) { + if (typeof object.experimentalFeatures !== "object") + throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected"); + message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures, long + 1); } return message; }; @@ -45008,10 +46660,14 @@ if (!options) options = {}; var object = {}; - if (options.defaults) + if (options.defaults) { object.common = null; + object.experimentalFeatures = null; + } if (message.common != null && message.hasOwnProperty("common")) object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) + object.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.toObject(message.experimentalFeatures, options); return object; }; @@ -45041,6 +46697,270 @@ return typeUrlPrefix + "/google.api.PythonSettings"; }; + PythonSettings.ExperimentalFeatures = (function() { + + /** + * Properties of an ExperimentalFeatures. + * @memberof google.api.PythonSettings + * @interface IExperimentalFeatures + * @property {boolean|null} [restAsyncIoEnabled] ExperimentalFeatures restAsyncIoEnabled + * @property {boolean|null} [protobufPythonicTypesEnabled] ExperimentalFeatures protobufPythonicTypesEnabled + * @property {boolean|null} [unversionedPackageDisabled] ExperimentalFeatures unversionedPackageDisabled + */ + + /** + * Constructs a new ExperimentalFeatures. + * @memberof google.api.PythonSettings + * @classdesc Represents an ExperimentalFeatures. + * @implements IExperimentalFeatures + * @constructor + * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set + */ + function ExperimentalFeatures(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null && keys[i] !== "__proto__") + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExperimentalFeatures restAsyncIoEnabled. + * @member {boolean} restAsyncIoEnabled + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @instance + */ + ExperimentalFeatures.prototype.restAsyncIoEnabled = false; + + /** + * ExperimentalFeatures protobufPythonicTypesEnabled. + * @member {boolean} protobufPythonicTypesEnabled + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @instance + */ + ExperimentalFeatures.prototype.protobufPythonicTypesEnabled = false; + + /** + * ExperimentalFeatures unversionedPackageDisabled. + * @member {boolean} unversionedPackageDisabled + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @instance + */ + ExperimentalFeatures.prototype.unversionedPackageDisabled = false; + + /** + * Creates a new ExperimentalFeatures instance using the specified properties. + * @function create + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set + * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures instance + */ + ExperimentalFeatures.create = function create(properties) { + return new ExperimentalFeatures(properties); + }; + + /** + * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages. + * @function encode + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExperimentalFeatures.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.restAsyncIoEnabled); + if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.protobufPythonicTypesEnabled); + if (message.unversionedPackageDisabled != null && Object.hasOwnProperty.call(message, "unversionedPackageDisabled")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.unversionedPackageDisabled); + return writer; + }; + + /** + * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExperimentalFeatures.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExperimentalFeatures message from the specified reader or buffer. + * @function decode + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExperimentalFeatures.decode = function decode(reader, length, error, long) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings.ExperimentalFeatures(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.restAsyncIoEnabled = reader.bool(); + break; + } + case 2: { + message.protobufPythonicTypesEnabled = reader.bool(); + break; + } + case 3: { + message.unversionedPackageDisabled = reader.bool(); + break; + } + default: + reader.skipType(tag & 7, long); + break; + } + } + return message; + }; + + /** + * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExperimentalFeatures.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExperimentalFeatures message. + * @function verify + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExperimentalFeatures.verify = function verify(message, long) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled")) + if (typeof message.restAsyncIoEnabled !== "boolean") + return "restAsyncIoEnabled: boolean expected"; + if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled")) + if (typeof message.protobufPythonicTypesEnabled !== "boolean") + return "protobufPythonicTypesEnabled: boolean expected"; + if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled")) + if (typeof message.unversionedPackageDisabled !== "boolean") + return "unversionedPackageDisabled: boolean expected"; + return null; + }; + + /** + * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {Object.} object Plain object + * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures + */ + ExperimentalFeatures.fromObject = function fromObject(object, long) { + if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures) + return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var message = new $root.google.api.PythonSettings.ExperimentalFeatures(); + if (object.restAsyncIoEnabled != null) + message.restAsyncIoEnabled = Boolean(object.restAsyncIoEnabled); + if (object.protobufPythonicTypesEnabled != null) + message.protobufPythonicTypesEnabled = Boolean(object.protobufPythonicTypesEnabled); + if (object.unversionedPackageDisabled != null) + message.unversionedPackageDisabled = Boolean(object.unversionedPackageDisabled); + return message; + }; + + /** + * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {google.api.PythonSettings.ExperimentalFeatures} message ExperimentalFeatures + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExperimentalFeatures.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.restAsyncIoEnabled = false; + object.protobufPythonicTypesEnabled = false; + object.unversionedPackageDisabled = false; + } + if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled")) + object.restAsyncIoEnabled = message.restAsyncIoEnabled; + if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled")) + object.protobufPythonicTypesEnabled = message.protobufPythonicTypesEnabled; + if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled")) + object.unversionedPackageDisabled = message.unversionedPackageDisabled; + return object; + }; + + /** + * Converts this ExperimentalFeatures to JSON. + * @function toJSON + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @instance + * @returns {Object.} JSON object + */ + ExperimentalFeatures.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ExperimentalFeatures + * @function getTypeUrl + * @memberof google.api.PythonSettings.ExperimentalFeatures + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ExperimentalFeatures.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.PythonSettings.ExperimentalFeatures"; + }; + + return ExperimentalFeatures; + })(); + return PythonSettings; })(); @@ -45064,7 +46984,7 @@ function NodeSettings(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -45129,9 +47049,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - NodeSettings.decode = function decode(reader, length, error) { + NodeSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -45139,11 +47063,11 @@ break; switch (tag >>> 3) { case 1: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -45174,11 +47098,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - NodeSettings.verify = function verify(message) { + NodeSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } @@ -45193,14 +47121,18 @@ * @param {Object.} object Plain object * @returns {google.api.NodeSettings} NodeSettings */ - NodeSettings.fromObject = function fromObject(object) { + NodeSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.NodeSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.NodeSettings(); if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.NodeSettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } return message; }; @@ -45284,7 +47216,7 @@ this.handwrittenSignatures = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -45404,9 +47336,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DotnetSettings.decode = function decode(reader, length, error) { + DotnetSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value; while (reader.pos < end) { var tag = reader.uint32(); @@ -45414,7 +47350,7 @@ break; switch (tag >>> 3) { case 1: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { @@ -45433,10 +47369,12 @@ value = reader.string(); break; default: - reader.skipType(tag2 & 7); + reader.skipType(tag2 & 7, long); break; } } + if (key === "__proto__") + $util.makeProp(message.renamedServices, key); message.renamedServices[key] = value; break; } @@ -45456,10 +47394,12 @@ value = reader.string(); break; default: - reader.skipType(tag2 & 7); + reader.skipType(tag2 & 7, long); break; } } + if (key === "__proto__") + $util.makeProp(message.renamedResources, key); message.renamedResources[key] = value; break; } @@ -45482,7 +47422,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -45513,11 +47453,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DotnetSettings.verify = function verify(message) { + DotnetSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } @@ -45569,28 +47513,38 @@ * @param {Object.} object Plain object * @returns {google.api.DotnetSettings} DotnetSettings */ - DotnetSettings.fromObject = function fromObject(object) { + DotnetSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.DotnetSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.DotnetSettings(); if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.DotnetSettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } if (object.renamedServices) { if (typeof object.renamedServices !== "object") throw TypeError(".google.api.DotnetSettings.renamedServices: object expected"); message.renamedServices = {}; - for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) + for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.renamedServices, keys[i]); message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]); + } } if (object.renamedResources) { if (typeof object.renamedResources !== "object") throw TypeError(".google.api.DotnetSettings.renamedResources: object expected"); message.renamedResources = {}; - for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) + for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.renamedResources, keys[i]); message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]); + } } if (object.ignoredResources) { if (!Array.isArray(object.ignoredResources)) @@ -45645,13 +47599,19 @@ var keys2; if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) { object.renamedServices = {}; - for (var j = 0; j < keys2.length; ++j) + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.renamedServices, keys2[j]); object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]]; + } } if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) { object.renamedResources = {}; - for (var j = 0; j < keys2.length; ++j) + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.renamedResources, keys2[j]); object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]]; + } } if (message.ignoredResources && message.ignoredResources.length) { object.ignoredResources = []; @@ -45720,7 +47680,7 @@ function RubySettings(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -45785,9 +47745,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RubySettings.decode = function decode(reader, length, error) { + RubySettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -45795,11 +47759,11 @@ break; switch (tag >>> 3) { case 1: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -45830,11 +47794,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RubySettings.verify = function verify(message) { + RubySettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } @@ -45849,14 +47817,18 @@ * @param {Object.} object Plain object * @returns {google.api.RubySettings} RubySettings */ - RubySettings.fromObject = function fromObject(object) { + RubySettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.RubySettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.RubySettings(); if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.RubySettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); } return message; }; @@ -45917,6 +47889,7 @@ * @memberof google.api * @interface IGoSettings * @property {google.api.ICommonLanguageSettings|null} [common] GoSettings common + * @property {Object.|null} [renamedServices] GoSettings renamedServices */ /** @@ -45928,9 +47901,10 @@ * @param {google.api.IGoSettings=} [properties] Properties to set */ function GoSettings(properties) { + this.renamedServices = {}; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -45942,6 +47916,14 @@ */ GoSettings.prototype.common = null; + /** + * GoSettings renamedServices. + * @member {Object.} renamedServices + * @memberof google.api.GoSettings + * @instance + */ + GoSettings.prototype.renamedServices = $util.emptyObject; + /** * Creates a new GoSettings instance using the specified properties. * @function create @@ -45968,6 +47950,9 @@ writer = $Writer.create(); if (message.common != null && Object.hasOwnProperty.call(message, "common")) $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices")) + for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i) + writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim(); return writer; }; @@ -45995,21 +47980,50 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GoSettings.decode = function decode(reader, length, error) { + GoSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(), key, value; while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32()); + message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1); + break; + } + case 2: { + if (message.renamedServices === $util.emptyObject) + message.renamedServices = {}; + var end2 = reader.uint32() + reader.pos; + key = ""; + value = ""; + while (reader.pos < end2) { + var tag2 = reader.uint32(); + switch (tag2 >>> 3) { + case 1: + key = reader.string(); + break; + case 2: + value = reader.string(); + break; + default: + reader.skipType(tag2 & 7, long); + break; + } + } + if (key === "__proto__") + $util.makeProp(message.renamedServices, key); + message.renamedServices[key] = value; break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -46040,14 +48054,26 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GoSettings.verify = function verify(message) { + GoSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.common != null && message.hasOwnProperty("common")) { - var error = $root.google.api.CommonLanguageSettings.verify(message.common); + var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1); if (error) return "common." + error; } + if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) { + if (!$util.isObject(message.renamedServices)) + return "renamedServices: object expected"; + var key = Object.keys(message.renamedServices); + for (var i = 0; i < key.length; ++i) + if (!$util.isString(message.renamedServices[key[i]])) + return "renamedServices: string{k:string} expected"; + } return null; }; @@ -46059,14 +48085,28 @@ * @param {Object.} object Plain object * @returns {google.api.GoSettings} GoSettings */ - GoSettings.fromObject = function fromObject(object) { + GoSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.GoSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.GoSettings(); if (object.common != null) { if (typeof object.common !== "object") throw TypeError(".google.api.GoSettings.common: object expected"); - message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common); + message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1); + } + if (object.renamedServices) { + if (typeof object.renamedServices !== "object") + throw TypeError(".google.api.GoSettings.renamedServices: object expected"); + message.renamedServices = {}; + for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) { + if (keys[i] === "__proto__") + $util.makeProp(message.renamedServices, keys[i]); + message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]); + } } return message; }; @@ -46084,10 +48124,21 @@ if (!options) options = {}; var object = {}; + if (options.objects || options.defaults) + object.renamedServices = {}; if (options.defaults) object.common = null; if (message.common != null && message.hasOwnProperty("common")) object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options); + var keys2; + if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) { + object.renamedServices = {}; + for (var j = 0; j < keys2.length; ++j) { + if (keys2[j] === "__proto__") + $util.makeProp(object.renamedServices, keys2[j]); + object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]]; + } + } return object; }; @@ -46143,7 +48194,7 @@ this.autoPopulatedFields = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -46229,9 +48280,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MethodSettings.decode = function decode(reader, length, error) { + MethodSettings.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings(); while (reader.pos < end) { var tag = reader.uint32(); @@ -46243,7 +48298,7 @@ break; } case 2: { - message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32()); + message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { @@ -46253,7 +48308,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -46284,14 +48339,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MethodSettings.verify = function verify(message) { + MethodSettings.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.selector != null && message.hasOwnProperty("selector")) if (!$util.isString(message.selector)) return "selector: string expected"; if (message.longRunning != null && message.hasOwnProperty("longRunning")) { - var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning); + var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning, long + 1); if (error) return "longRunning." + error; } @@ -46313,16 +48372,20 @@ * @param {Object.} object Plain object * @returns {google.api.MethodSettings} MethodSettings */ - MethodSettings.fromObject = function fromObject(object) { + MethodSettings.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.MethodSettings) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.MethodSettings(); if (object.selector != null) message.selector = String(object.selector); if (object.longRunning != null) { if (typeof object.longRunning !== "object") throw TypeError(".google.api.MethodSettings.longRunning: object expected"); - message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning); + message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning, long + 1); } if (object.autoPopulatedFields) { if (!Array.isArray(object.autoPopulatedFields)) @@ -46414,7 +48477,7 @@ function LongRunning(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -46509,9 +48572,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LongRunning.decode = function decode(reader, length, error) { + LongRunning.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning(); while (reader.pos < end) { var tag = reader.uint32(); @@ -46519,7 +48586,7 @@ break; switch (tag >>> 3) { case 1: { - message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } case 2: { @@ -46527,15 +48594,15 @@ break; } case 3: { - message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { - message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -46566,11 +48633,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LongRunning.verify = function verify(message) { + LongRunning.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) { - var error = $root.google.protobuf.Duration.verify(message.initialPollDelay); + var error = $root.google.protobuf.Duration.verify(message.initialPollDelay, long + 1); if (error) return "initialPollDelay." + error; } @@ -46578,12 +48649,12 @@ if (typeof message.pollDelayMultiplier !== "number") return "pollDelayMultiplier: number expected"; if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) { - var error = $root.google.protobuf.Duration.verify(message.maxPollDelay); + var error = $root.google.protobuf.Duration.verify(message.maxPollDelay, long + 1); if (error) return "maxPollDelay." + error; } if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) { - var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout); + var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout, long + 1); if (error) return "totalPollTimeout." + error; } @@ -46598,26 +48669,30 @@ * @param {Object.} object Plain object * @returns {google.api.MethodSettings.LongRunning} LongRunning */ - LongRunning.fromObject = function fromObject(object) { + LongRunning.fromObject = function fromObject(object, long) { if (object instanceof $root.google.api.MethodSettings.LongRunning) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.api.MethodSettings.LongRunning(); if (object.initialPollDelay != null) { if (typeof object.initialPollDelay !== "object") throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected"); - message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay); + message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay, long + 1); } if (object.pollDelayMultiplier != null) message.pollDelayMultiplier = Number(object.pollDelayMultiplier); if (object.maxPollDelay != null) { if (typeof object.maxPollDelay !== "object") throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected"); - message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay); + message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay, long + 1); } if (object.totalPollTimeout != null) { if (typeof object.totalPollTimeout !== "object") throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected"); - message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout); + message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout, long + 1); } return message; }; @@ -46726,6 +48801,263 @@ return values; })(); + api.SelectiveGapicGeneration = (function() { + + /** + * Properties of a SelectiveGapicGeneration. + * @memberof google.api + * @interface ISelectiveGapicGeneration + * @property {Array.|null} [methods] SelectiveGapicGeneration methods + * @property {boolean|null} [generateOmittedAsInternal] SelectiveGapicGeneration generateOmittedAsInternal + */ + + /** + * Constructs a new SelectiveGapicGeneration. + * @memberof google.api + * @classdesc Represents a SelectiveGapicGeneration. + * @implements ISelectiveGapicGeneration + * @constructor + * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set + */ + function SelectiveGapicGeneration(properties) { + this.methods = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null && keys[i] !== "__proto__") + this[keys[i]] = properties[keys[i]]; + } + + /** + * SelectiveGapicGeneration methods. + * @member {Array.} methods + * @memberof google.api.SelectiveGapicGeneration + * @instance + */ + SelectiveGapicGeneration.prototype.methods = $util.emptyArray; + + /** + * SelectiveGapicGeneration generateOmittedAsInternal. + * @member {boolean} generateOmittedAsInternal + * @memberof google.api.SelectiveGapicGeneration + * @instance + */ + SelectiveGapicGeneration.prototype.generateOmittedAsInternal = false; + + /** + * Creates a new SelectiveGapicGeneration instance using the specified properties. + * @function create + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set + * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration instance + */ + SelectiveGapicGeneration.create = function create(properties) { + return new SelectiveGapicGeneration(properties); + }; + + /** + * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages. + * @function encode + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SelectiveGapicGeneration.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.methods != null && message.methods.length) + for (var i = 0; i < message.methods.length; ++i) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.methods[i]); + if (message.generateOmittedAsInternal != null && Object.hasOwnProperty.call(message, "generateOmittedAsInternal")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.generateOmittedAsInternal); + return writer; + }; + + /** + * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages. + * @function encodeDelimited + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SelectiveGapicGeneration.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SelectiveGapicGeneration message from the specified reader or buffer. + * @function decode + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SelectiveGapicGeneration.decode = function decode(reader, length, error, long) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.SelectiveGapicGeneration(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.methods && message.methods.length)) + message.methods = []; + message.methods.push(reader.string()); + break; + } + case 2: { + message.generateOmittedAsInternal = reader.bool(); + break; + } + default: + reader.skipType(tag & 7, long); + break; + } + } + return message; + }; + + /** + * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SelectiveGapicGeneration.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SelectiveGapicGeneration message. + * @function verify + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SelectiveGapicGeneration.verify = function verify(message, long) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.methods != null && message.hasOwnProperty("methods")) { + if (!Array.isArray(message.methods)) + return "methods: array expected"; + for (var i = 0; i < message.methods.length; ++i) + if (!$util.isString(message.methods[i])) + return "methods: string[] expected"; + } + if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal")) + if (typeof message.generateOmittedAsInternal !== "boolean") + return "generateOmittedAsInternal: boolean expected"; + return null; + }; + + /** + * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {Object.} object Plain object + * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration + */ + SelectiveGapicGeneration.fromObject = function fromObject(object, long) { + if (object instanceof $root.google.api.SelectiveGapicGeneration) + return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var message = new $root.google.api.SelectiveGapicGeneration(); + if (object.methods) { + if (!Array.isArray(object.methods)) + throw TypeError(".google.api.SelectiveGapicGeneration.methods: array expected"); + message.methods = []; + for (var i = 0; i < object.methods.length; ++i) + message.methods[i] = String(object.methods[i]); + } + if (object.generateOmittedAsInternal != null) + message.generateOmittedAsInternal = Boolean(object.generateOmittedAsInternal); + return message; + }; + + /** + * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified. + * @function toObject + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {google.api.SelectiveGapicGeneration} message SelectiveGapicGeneration + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SelectiveGapicGeneration.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.methods = []; + if (options.defaults) + object.generateOmittedAsInternal = false; + if (message.methods && message.methods.length) { + object.methods = []; + for (var j = 0; j < message.methods.length; ++j) + object.methods[j] = message.methods[j]; + } + if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal")) + object.generateOmittedAsInternal = message.generateOmittedAsInternal; + return object; + }; + + /** + * Converts this SelectiveGapicGeneration to JSON. + * @function toJSON + * @memberof google.api.SelectiveGapicGeneration + * @instance + * @returns {Object.} JSON object + */ + SelectiveGapicGeneration.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for SelectiveGapicGeneration + * @function getTypeUrl + * @memberof google.api.SelectiveGapicGeneration + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + SelectiveGapicGeneration.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.api.SelectiveGapicGeneration"; + }; + + return SelectiveGapicGeneration; + })(); + /** * LaunchStage enum. * @name google.api.LaunchStage @@ -46785,7 +49117,7 @@ this.file = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -46851,9 +49183,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FileDescriptorSet.decode = function decode(reader, length, error) { + FileDescriptorSet.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet(); while (reader.pos < end) { var tag = reader.uint32(); @@ -46863,11 +49199,11 @@ case 1: { if (!(message.file && message.file.length)) message.file = []; - message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32())); + message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -46898,14 +49234,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FileDescriptorSet.verify = function verify(message) { + FileDescriptorSet.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.file != null && message.hasOwnProperty("file")) { if (!Array.isArray(message.file)) return "file: array expected"; for (var i = 0; i < message.file.length; ++i) { - var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]); + var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i], long + 1); if (error) return "file." + error; } @@ -46921,9 +49261,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet */ - FileDescriptorSet.fromObject = function fromObject(object) { + FileDescriptorSet.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FileDescriptorSet) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FileDescriptorSet(); if (object.file) { if (!Array.isArray(object.file)) @@ -46932,7 +49276,7 @@ for (var i = 0; i < object.file.length; ++i) { if (typeof object.file[i] !== "object") throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected"); - message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]); + message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i], long + 1); } } return message; @@ -46995,6 +49339,7 @@ * @name google.protobuf.Edition * @enum {number} * @property {number} EDITION_UNKNOWN=0 EDITION_UNKNOWN value + * @property {number} EDITION_LEGACY=900 EDITION_LEGACY value * @property {number} EDITION_PROTO2=998 EDITION_PROTO2 value * @property {number} EDITION_PROTO3=999 EDITION_PROTO3 value * @property {number} EDITION_2023=1000 EDITION_2023 value @@ -47009,6 +49354,7 @@ protobuf.Edition = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "EDITION_UNKNOWN"] = 0; + values[valuesById[900] = "EDITION_LEGACY"] = 900; values[valuesById[998] = "EDITION_PROTO2"] = 998; values[valuesById[999] = "EDITION_PROTO3"] = 999; values[valuesById[1000] = "EDITION_2023"] = 1000; @@ -47033,6 +49379,7 @@ * @property {Array.|null} [dependency] FileDescriptorProto dependency * @property {Array.|null} [publicDependency] FileDescriptorProto publicDependency * @property {Array.|null} [weakDependency] FileDescriptorProto weakDependency + * @property {Array.|null} [optionDependency] FileDescriptorProto optionDependency * @property {Array.|null} [messageType] FileDescriptorProto messageType * @property {Array.|null} [enumType] FileDescriptorProto enumType * @property {Array.|null} [service] FileDescriptorProto service @@ -47055,13 +49402,14 @@ this.dependency = []; this.publicDependency = []; this.weakDependency = []; + this.optionDependency = []; this.messageType = []; this.enumType = []; this.service = []; this.extension = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -47105,6 +49453,14 @@ */ FileDescriptorProto.prototype.weakDependency = $util.emptyArray; + /** + * FileDescriptorProto optionDependency. + * @member {Array.} optionDependency + * @memberof google.protobuf.FileDescriptorProto + * @instance + */ + FileDescriptorProto.prototype.optionDependency = $util.emptyArray; + /** * FileDescriptorProto messageType. * @member {Array.} messageType @@ -47226,6 +49582,9 @@ writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) writer.uint32(/* id 14, wireType 0 =*/112).int32(message.edition); + if (message.optionDependency != null && message.optionDependency.length) + for (var i = 0; i < message.optionDependency.length; ++i) + writer.uint32(/* id 15, wireType 2 =*/122).string(message.optionDependency[i]); return writer; }; @@ -47253,9 +49612,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FileDescriptorProto.decode = function decode(reader, length, error) { + FileDescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -47298,36 +49661,42 @@ message.weakDependency.push(reader.int32()); break; } + case 15: { + if (!(message.optionDependency && message.optionDependency.length)) + message.optionDependency = []; + message.optionDependency.push(reader.string()); + break; + } case 4: { if (!(message.messageType && message.messageType.length)) message.messageType = []; - message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 5: { if (!(message.enumType && message.enumType.length)) message.enumType = []; - message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 6: { if (!(message.service && message.service.length)) message.service = []; - message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32())); + message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 7: { if (!(message.extension && message.extension.length)) message.extension = []; - message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 8: { - message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } case 9: { - message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32()); + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } case 12: { @@ -47339,7 +49708,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -47370,9 +49739,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FileDescriptorProto.verify = function verify(message) { + FileDescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -47400,11 +49773,18 @@ if (!$util.isInteger(message.weakDependency[i])) return "weakDependency: integer[] expected"; } + if (message.optionDependency != null && message.hasOwnProperty("optionDependency")) { + if (!Array.isArray(message.optionDependency)) + return "optionDependency: array expected"; + for (var i = 0; i < message.optionDependency.length; ++i) + if (!$util.isString(message.optionDependency[i])) + return "optionDependency: string[] expected"; + } if (message.messageType != null && message.hasOwnProperty("messageType")) { if (!Array.isArray(message.messageType)) return "messageType: array expected"; for (var i = 0; i < message.messageType.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]); + var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i], long + 1); if (error) return "messageType." + error; } @@ -47413,7 +49793,7 @@ if (!Array.isArray(message.enumType)) return "enumType: array expected"; for (var i = 0; i < message.enumType.length; ++i) { - var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1); if (error) return "enumType." + error; } @@ -47422,7 +49802,7 @@ if (!Array.isArray(message.service)) return "service: array expected"; for (var i = 0; i < message.service.length; ++i) { - var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]); + var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i], long + 1); if (error) return "service." + error; } @@ -47431,18 +49811,18 @@ if (!Array.isArray(message.extension)) return "extension: array expected"; for (var i = 0; i < message.extension.length; ++i) { - var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1); if (error) return "extension." + error; } } if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.FileOptions.verify(message.options); + var error = $root.google.protobuf.FileOptions.verify(message.options, long + 1); if (error) return "options." + error; } if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) { - var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo); + var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo, long + 1); if (error) return "sourceCodeInfo." + error; } @@ -47454,6 +49834,7 @@ default: return "edition: enum value expected"; case 0: + case 900: case 998: case 999: case 1000: @@ -47477,9 +49858,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto */ - FileDescriptorProto.fromObject = function fromObject(object) { + FileDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FileDescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FileDescriptorProto(); if (object.name != null) message.name = String(object.name); @@ -47506,6 +49891,13 @@ for (var i = 0; i < object.weakDependency.length; ++i) message.weakDependency[i] = object.weakDependency[i] | 0; } + if (object.optionDependency) { + if (!Array.isArray(object.optionDependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.optionDependency: array expected"); + message.optionDependency = []; + for (var i = 0; i < object.optionDependency.length; ++i) + message.optionDependency[i] = String(object.optionDependency[i]); + } if (object.messageType) { if (!Array.isArray(object.messageType)) throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected"); @@ -47513,7 +49905,7 @@ for (var i = 0; i < object.messageType.length; ++i) { if (typeof object.messageType[i] !== "object") throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected"); - message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]); + message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i], long + 1); } } if (object.enumType) { @@ -47523,7 +49915,7 @@ for (var i = 0; i < object.enumType.length; ++i) { if (typeof object.enumType[i] !== "object") throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected"); - message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1); } } if (object.service) { @@ -47533,7 +49925,7 @@ for (var i = 0; i < object.service.length; ++i) { if (typeof object.service[i] !== "object") throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected"); - message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]); + message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i], long + 1); } } if (object.extension) { @@ -47543,18 +49935,18 @@ for (var i = 0; i < object.extension.length; ++i) { if (typeof object.extension[i] !== "object") throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected"); - message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1); } } if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.FileOptions.fromObject(object.options); + message.options = $root.google.protobuf.FileOptions.fromObject(object.options, long + 1); } if (object.sourceCodeInfo != null) { if (typeof object.sourceCodeInfo !== "object") throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected"); - message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo); + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo, long + 1); } if (object.syntax != null) message.syntax = String(object.syntax); @@ -47569,6 +49961,10 @@ case 0: message.edition = 0; break; + case "EDITION_LEGACY": + case 900: + message.edition = 900; + break; case "EDITION_PROTO2": case 998: message.edition = 998; @@ -47634,6 +50030,7 @@ object.extension = []; object.publicDependency = []; object.weakDependency = []; + object.optionDependency = []; } if (options.defaults) { object.name = ""; @@ -47690,6 +50087,11 @@ object.syntax = message.syntax; if (message.edition != null && message.hasOwnProperty("edition")) object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; + if (message.optionDependency && message.optionDependency.length) { + object.optionDependency = []; + for (var j = 0; j < message.optionDependency.length; ++j) + object.optionDependency[j] = message.optionDependency[j]; + } return object; }; @@ -47738,6 +50140,7 @@ * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options * @property {Array.|null} [reservedRange] DescriptorProto reservedRange * @property {Array.|null} [reservedName] DescriptorProto reservedName + * @property {google.protobuf.SymbolVisibility|null} [visibility] DescriptorProto visibility */ /** @@ -47759,7 +50162,7 @@ this.reservedName = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -47843,6 +50246,14 @@ */ DescriptorProto.prototype.reservedName = $util.emptyArray; + /** + * DescriptorProto visibility. + * @member {google.protobuf.SymbolVisibility} visibility + * @memberof google.protobuf.DescriptorProto + * @instance + */ + DescriptorProto.prototype.visibility = 0; + /** * Creates a new DescriptorProto instance using the specified properties. * @function create @@ -47895,6 +50306,8 @@ if (message.reservedName != null && message.reservedName.length) for (var i = 0; i < message.reservedName.length; ++i) writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]); + if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility")) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.visibility); return writer; }; @@ -47922,9 +50335,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DescriptorProto.decode = function decode(reader, length, error) { + DescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -47938,47 +50355,47 @@ case 2: { if (!(message.field && message.field.length)) message.field = []; - message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 6: { if (!(message.extension && message.extension.length)) message.extension = []; - message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { if (!(message.nestedType && message.nestedType.length)) message.nestedType = []; - message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 4: { if (!(message.enumType && message.enumType.length)) message.enumType = []; - message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 5: { if (!(message.extensionRange && message.extensionRange.length)) message.extensionRange = []; - message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32())); + message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 8: { if (!(message.oneofDecl && message.oneofDecl.length)) message.oneofDecl = []; - message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32())); + message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 7: { - message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } case 9: { if (!(message.reservedRange && message.reservedRange.length)) message.reservedRange = []; - message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32())); + message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 10: { @@ -47987,8 +50404,12 @@ message.reservedName.push(reader.string()); break; } + case 11: { + message.visibility = reader.int32(); + break; + } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -48019,9 +50440,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DescriptorProto.verify = function verify(message) { + DescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -48029,7 +50454,7 @@ if (!Array.isArray(message.field)) return "field: array expected"; for (var i = 0; i < message.field.length; ++i) { - var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]); + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i], long + 1); if (error) return "field." + error; } @@ -48038,7 +50463,7 @@ if (!Array.isArray(message.extension)) return "extension: array expected"; for (var i = 0; i < message.extension.length; ++i) { - var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1); if (error) return "extension." + error; } @@ -48047,7 +50472,7 @@ if (!Array.isArray(message.nestedType)) return "nestedType: array expected"; for (var i = 0; i < message.nestedType.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]); + var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i], long + 1); if (error) return "nestedType." + error; } @@ -48056,7 +50481,7 @@ if (!Array.isArray(message.enumType)) return "enumType: array expected"; for (var i = 0; i < message.enumType.length; ++i) { - var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1); if (error) return "enumType." + error; } @@ -48065,7 +50490,7 @@ if (!Array.isArray(message.extensionRange)) return "extensionRange: array expected"; for (var i = 0; i < message.extensionRange.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]); + var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i], long + 1); if (error) return "extensionRange." + error; } @@ -48074,13 +50499,13 @@ if (!Array.isArray(message.oneofDecl)) return "oneofDecl: array expected"; for (var i = 0; i < message.oneofDecl.length; ++i) { - var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]); + var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i], long + 1); if (error) return "oneofDecl." + error; } } if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.MessageOptions.verify(message.options); + var error = $root.google.protobuf.MessageOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -48088,7 +50513,7 @@ if (!Array.isArray(message.reservedRange)) return "reservedRange: array expected"; for (var i = 0; i < message.reservedRange.length; ++i) { - var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]); + var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i], long + 1); if (error) return "reservedRange." + error; } @@ -48100,6 +50525,15 @@ if (!$util.isString(message.reservedName[i])) return "reservedName: string[] expected"; } + if (message.visibility != null && message.hasOwnProperty("visibility")) + switch (message.visibility) { + default: + return "visibility: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; @@ -48111,9 +50545,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.DescriptorProto} DescriptorProto */ - DescriptorProto.fromObject = function fromObject(object) { + DescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.DescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.DescriptorProto(); if (object.name != null) message.name = String(object.name); @@ -48124,7 +50562,7 @@ for (var i = 0; i < object.field.length; ++i) { if (typeof object.field[i] !== "object") throw TypeError(".google.protobuf.DescriptorProto.field: object expected"); - message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]); + message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i], long + 1); } } if (object.extension) { @@ -48134,7 +50572,7 @@ for (var i = 0; i < object.extension.length; ++i) { if (typeof object.extension[i] !== "object") throw TypeError(".google.protobuf.DescriptorProto.extension: object expected"); - message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1); } } if (object.nestedType) { @@ -48144,7 +50582,7 @@ for (var i = 0; i < object.nestedType.length; ++i) { if (typeof object.nestedType[i] !== "object") throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected"); - message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]); + message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i], long + 1); } } if (object.enumType) { @@ -48154,7 +50592,7 @@ for (var i = 0; i < object.enumType.length; ++i) { if (typeof object.enumType[i] !== "object") throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected"); - message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1); } } if (object.extensionRange) { @@ -48164,7 +50602,7 @@ for (var i = 0; i < object.extensionRange.length; ++i) { if (typeof object.extensionRange[i] !== "object") throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected"); - message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]); + message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i], long + 1); } } if (object.oneofDecl) { @@ -48174,13 +50612,13 @@ for (var i = 0; i < object.oneofDecl.length; ++i) { if (typeof object.oneofDecl[i] !== "object") throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected"); - message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]); + message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i], long + 1); } } if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.DescriptorProto.options: object expected"); - message.options = $root.google.protobuf.MessageOptions.fromObject(object.options); + message.options = $root.google.protobuf.MessageOptions.fromObject(object.options, long + 1); } if (object.reservedRange) { if (!Array.isArray(object.reservedRange)) @@ -48189,7 +50627,7 @@ for (var i = 0; i < object.reservedRange.length; ++i) { if (typeof object.reservedRange[i] !== "object") throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected"); - message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]); + message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i], long + 1); } } if (object.reservedName) { @@ -48199,6 +50637,26 @@ for (var i = 0; i < object.reservedName.length; ++i) message.reservedName[i] = String(object.reservedName[i]); } + switch (object.visibility) { + default: + if (typeof object.visibility === "number") { + message.visibility = object.visibility; + break; + } + break; + case "VISIBILITY_UNSET": + case 0: + message.visibility = 0; + break; + case "VISIBILITY_LOCAL": + case 1: + message.visibility = 1; + break; + case "VISIBILITY_EXPORT": + case 2: + message.visibility = 2; + break; + } return message; }; @@ -48228,6 +50686,7 @@ if (options.defaults) { object.name = ""; object.options = null; + object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0; } if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; @@ -48273,6 +50732,8 @@ for (var j = 0; j < message.reservedName.length; ++j) object.reservedName[j] = message.reservedName[j]; } + if (message.visibility != null && message.hasOwnProperty("visibility")) + object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility; return object; }; @@ -48324,7 +50785,7 @@ function ExtensionRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -48409,9 +50870,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ExtensionRange.decode = function decode(reader, length, error) { + ExtensionRange.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); while (reader.pos < end) { var tag = reader.uint32(); @@ -48427,11 +50892,11 @@ break; } case 3: { - message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -48462,9 +50927,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ExtensionRange.verify = function verify(message) { + ExtensionRange.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.start != null && message.hasOwnProperty("start")) if (!$util.isInteger(message.start)) return "start: integer expected"; @@ -48472,7 +50941,7 @@ if (!$util.isInteger(message.end)) return "end: integer expected"; if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options); + var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -48487,9 +50956,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange */ - ExtensionRange.fromObject = function fromObject(object) { + ExtensionRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); if (object.start != null) message.start = object.start | 0; @@ -48498,7 +50971,7 @@ if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected"); - message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options); + message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options, long + 1); } return message; }; @@ -48580,7 +51053,7 @@ function ReservedRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -48655,9 +51128,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ReservedRange.decode = function decode(reader, length, error) { + ReservedRange.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange(); while (reader.pos < end) { var tag = reader.uint32(); @@ -48673,7 +51150,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -48704,9 +51181,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ReservedRange.verify = function verify(message) { + ReservedRange.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.start != null && message.hasOwnProperty("start")) if (!$util.isInteger(message.start)) return "start: integer expected"; @@ -48724,9 +51205,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange */ - ReservedRange.fromObject = function fromObject(object) { + ReservedRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.DescriptorProto.ReservedRange(); if (object.start != null) message.start = object.start | 0; @@ -48816,7 +51301,7 @@ this.declaration = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -48913,9 +51398,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ExtensionRangeOptions.decode = function decode(reader, length, error) { + ExtensionRangeOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -48925,17 +51414,17 @@ case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { if (!(message.declaration && message.declaration.length)) message.declaration = []; - message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32())); + message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 50: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { @@ -48943,7 +51432,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -48974,14 +51463,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ExtensionRangeOptions.verify = function verify(message) { + ExtensionRangeOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } @@ -48990,13 +51483,13 @@ if (!Array.isArray(message.declaration)) return "declaration: array expected"; for (var i = 0; i < message.declaration.length; ++i) { - var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]); + var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i], long + 1); if (error) return "declaration." + error; } } if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } @@ -49019,9 +51512,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions */ - ExtensionRangeOptions.fromObject = function fromObject(object) { + ExtensionRangeOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ExtensionRangeOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.ExtensionRangeOptions(); if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -49030,7 +51527,7 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object.declaration) { @@ -49040,13 +51537,13 @@ for (var i = 0; i < object.declaration.length; ++i) { if (typeof object.declaration[i] !== "object") throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected"); - message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]); + message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i], long + 1); } } if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } switch (object.verification) { case "DECLARATION": @@ -49155,7 +51652,7 @@ function Declaration(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -49260,9 +51757,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Declaration.decode = function decode(reader, length, error) { + Declaration.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration(); while (reader.pos < end) { var tag = reader.uint32(); @@ -49290,7 +51791,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -49321,9 +51822,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Declaration.verify = function verify(message) { + Declaration.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.number != null && message.hasOwnProperty("number")) if (!$util.isInteger(message.number)) return "number: integer expected"; @@ -49350,9 +51855,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration */ - Declaration.fromObject = function fromObject(object) { + Declaration.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration(); if (object.number != null) message.number = object.number | 0; @@ -49476,7 +51985,7 @@ function FieldDescriptorProto(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -49641,9 +52150,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FieldDescriptorProto.decode = function decode(reader, length, error) { + FieldDescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -49687,7 +52200,7 @@ break; } case 8: { - message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } case 17: { @@ -49695,7 +52208,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -49726,9 +52239,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FieldDescriptorProto.verify = function verify(message) { + FieldDescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -49784,7 +52301,7 @@ if (!$util.isString(message.jsonName)) return "jsonName: string expected"; if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.FieldOptions.verify(message.options); + var error = $root.google.protobuf.FieldOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -49802,9 +52319,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto */ - FieldDescriptorProto.fromObject = function fromObject(object) { + FieldDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldDescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FieldDescriptorProto(); if (object.name != null) message.name = String(object.name); @@ -49923,7 +52444,7 @@ if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.FieldOptions.fromObject(object.options); + message.options = $root.google.protobuf.FieldOptions.fromObject(object.options, long + 1); } if (object.proto3Optional != null) message.proto3Optional = Boolean(object.proto3Optional); @@ -50093,7 +52614,7 @@ function OneofDescriptorProto(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -50168,9 +52689,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - OneofDescriptorProto.decode = function decode(reader, length, error) { + OneofDescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -50182,11 +52707,11 @@ break; } case 2: { - message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -50217,14 +52742,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - OneofDescriptorProto.verify = function verify(message) { + OneofDescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.OneofOptions.verify(message.options); + var error = $root.google.protobuf.OneofOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -50239,16 +52768,20 @@ * @param {Object.} object Plain object * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto */ - OneofDescriptorProto.fromObject = function fromObject(object) { + OneofDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.OneofDescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.OneofDescriptorProto(); if (object.name != null) message.name = String(object.name); if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.OneofOptions.fromObject(object.options); + message.options = $root.google.protobuf.OneofOptions.fromObject(object.options, long + 1); } return message; }; @@ -50317,6 +52850,7 @@ * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options * @property {Array.|null} [reservedRange] EnumDescriptorProto reservedRange * @property {Array.|null} [reservedName] EnumDescriptorProto reservedName + * @property {google.protobuf.SymbolVisibility|null} [visibility] EnumDescriptorProto visibility */ /** @@ -50333,7 +52867,7 @@ this.reservedName = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -50377,6 +52911,14 @@ */ EnumDescriptorProto.prototype.reservedName = $util.emptyArray; + /** + * EnumDescriptorProto visibility. + * @member {google.protobuf.SymbolVisibility} visibility + * @memberof google.protobuf.EnumDescriptorProto + * @instance + */ + EnumDescriptorProto.prototype.visibility = 0; + /** * Creates a new EnumDescriptorProto instance using the specified properties. * @function create @@ -50414,6 +52956,8 @@ if (message.reservedName != null && message.reservedName.length) for (var i = 0; i < message.reservedName.length; ++i) writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]); + if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.visibility); return writer; }; @@ -50441,9 +52985,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumDescriptorProto.decode = function decode(reader, length, error) { + EnumDescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -50457,17 +53005,17 @@ case 2: { if (!(message.value && message.value.length)) message.value = []; - message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32())); + message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { - message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } case 4: { if (!(message.reservedRange && message.reservedRange.length)) message.reservedRange = []; - message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32())); + message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 5: { @@ -50476,8 +53024,12 @@ message.reservedName.push(reader.string()); break; } + case 6: { + message.visibility = reader.int32(); + break; + } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -50508,9 +53060,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumDescriptorProto.verify = function verify(message) { + EnumDescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -50518,13 +53074,13 @@ if (!Array.isArray(message.value)) return "value: array expected"; for (var i = 0; i < message.value.length; ++i) { - var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]); + var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i], long + 1); if (error) return "value." + error; } } if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.EnumOptions.verify(message.options); + var error = $root.google.protobuf.EnumOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -50532,7 +53088,7 @@ if (!Array.isArray(message.reservedRange)) return "reservedRange: array expected"; for (var i = 0; i < message.reservedRange.length; ++i) { - var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]); + var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i], long + 1); if (error) return "reservedRange." + error; } @@ -50544,6 +53100,15 @@ if (!$util.isString(message.reservedName[i])) return "reservedName: string[] expected"; } + if (message.visibility != null && message.hasOwnProperty("visibility")) + switch (message.visibility) { + default: + return "visibility: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; @@ -50555,9 +53120,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto */ - EnumDescriptorProto.fromObject = function fromObject(object) { + EnumDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumDescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.EnumDescriptorProto(); if (object.name != null) message.name = String(object.name); @@ -50568,13 +53137,13 @@ for (var i = 0; i < object.value.length; ++i) { if (typeof object.value[i] !== "object") throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected"); - message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]); + message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i], long + 1); } } if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.EnumOptions.fromObject(object.options); + message.options = $root.google.protobuf.EnumOptions.fromObject(object.options, long + 1); } if (object.reservedRange) { if (!Array.isArray(object.reservedRange)) @@ -50583,7 +53152,7 @@ for (var i = 0; i < object.reservedRange.length; ++i) { if (typeof object.reservedRange[i] !== "object") throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected"); - message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]); + message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i], long + 1); } } if (object.reservedName) { @@ -50593,6 +53162,26 @@ for (var i = 0; i < object.reservedName.length; ++i) message.reservedName[i] = String(object.reservedName[i]); } + switch (object.visibility) { + default: + if (typeof object.visibility === "number") { + message.visibility = object.visibility; + break; + } + break; + case "VISIBILITY_UNSET": + case 0: + message.visibility = 0; + break; + case "VISIBILITY_LOCAL": + case 1: + message.visibility = 1; + break; + case "VISIBILITY_EXPORT": + case 2: + message.visibility = 2; + break; + } return message; }; @@ -50617,6 +53206,7 @@ if (options.defaults) { object.name = ""; object.options = null; + object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0; } if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; @@ -50637,6 +53227,8 @@ for (var j = 0; j < message.reservedName.length; ++j) object.reservedName[j] = message.reservedName[j]; } + if (message.visibility != null && message.hasOwnProperty("visibility")) + object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility; return object; }; @@ -50687,7 +53279,7 @@ function EnumReservedRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -50762,9 +53354,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumReservedRange.decode = function decode(reader, length, error) { + EnumReservedRange.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); while (reader.pos < end) { var tag = reader.uint32(); @@ -50780,7 +53376,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -50811,9 +53407,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumReservedRange.verify = function verify(message) { + EnumReservedRange.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.start != null && message.hasOwnProperty("start")) if (!$util.isInteger(message.start)) return "start: integer expected"; @@ -50831,9 +53431,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange */ - EnumReservedRange.fromObject = function fromObject(object) { + EnumReservedRange.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange(); if (object.start != null) message.start = object.start | 0; @@ -50920,7 +53524,7 @@ function EnumValueDescriptorProto(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -51005,9 +53609,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumValueDescriptorProto.decode = function decode(reader, length, error) { + EnumValueDescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -51023,11 +53631,11 @@ break; } case 3: { - message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -51058,9 +53666,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumValueDescriptorProto.verify = function verify(message) { + EnumValueDescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -51068,7 +53680,7 @@ if (!$util.isInteger(message.number)) return "number: integer expected"; if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.EnumValueOptions.verify(message.options); + var error = $root.google.protobuf.EnumValueOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -51083,9 +53695,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto */ - EnumValueDescriptorProto.fromObject = function fromObject(object) { + EnumValueDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumValueDescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.EnumValueDescriptorProto(); if (object.name != null) message.name = String(object.name); @@ -51094,7 +53710,7 @@ if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options); + message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options, long + 1); } return message; }; @@ -51178,7 +53794,7 @@ this.method = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -51264,9 +53880,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ServiceDescriptorProto.decode = function decode(reader, length, error) { + ServiceDescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -51280,15 +53900,15 @@ case 2: { if (!(message.method && message.method.length)) message.method = []; - message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32())); + message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { - message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -51319,9 +53939,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ServiceDescriptorProto.verify = function verify(message) { + ServiceDescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -51329,13 +53953,13 @@ if (!Array.isArray(message.method)) return "method: array expected"; for (var i = 0; i < message.method.length; ++i) { - var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]); + var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i], long + 1); if (error) return "method." + error; } } if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.ServiceOptions.verify(message.options); + var error = $root.google.protobuf.ServiceOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -51350,9 +53974,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto */ - ServiceDescriptorProto.fromObject = function fromObject(object) { + ServiceDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ServiceDescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.ServiceDescriptorProto(); if (object.name != null) message.name = String(object.name); @@ -51363,13 +53991,13 @@ for (var i = 0; i < object.method.length; ++i) { if (typeof object.method[i] !== "object") throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected"); - message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]); + message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i], long + 1); } } if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options); + message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options, long + 1); } return message; }; @@ -51459,7 +54087,7 @@ function MethodDescriptorProto(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -51574,9 +54202,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MethodDescriptorProto.decode = function decode(reader, length, error) { + MethodDescriptorProto.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto(); while (reader.pos < end) { var tag = reader.uint32(); @@ -51596,7 +54228,7 @@ break; } case 4: { - message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32()); + message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { @@ -51608,7 +54240,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -51639,9 +54271,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MethodDescriptorProto.verify = function verify(message) { + MethodDescriptorProto.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -51652,7 +54288,7 @@ if (!$util.isString(message.outputType)) return "outputType: string expected"; if (message.options != null && message.hasOwnProperty("options")) { - var error = $root.google.protobuf.MethodOptions.verify(message.options); + var error = $root.google.protobuf.MethodOptions.verify(message.options, long + 1); if (error) return "options." + error; } @@ -51673,9 +54309,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto */ - MethodDescriptorProto.fromObject = function fromObject(object) { + MethodDescriptorProto.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.MethodDescriptorProto) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.MethodDescriptorProto(); if (object.name != null) message.name = String(object.name); @@ -51686,7 +54326,7 @@ if (object.options != null) { if (typeof object.options !== "object") throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected"); - message.options = $root.google.protobuf.MethodOptions.fromObject(object.options); + message.options = $root.google.protobuf.MethodOptions.fromObject(object.options, long + 1); } if (object.clientStreaming != null) message.clientStreaming = Boolean(object.clientStreaming); @@ -51803,7 +54443,7 @@ this[".google.api.resourceDefinition"] = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -52080,9 +54720,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FileOptions.decode = function decode(reader, length, error) { + FileOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -52166,23 +54810,23 @@ break; } case 50: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 1053: { if (!(message[".google.api.resourceDefinition"] && message[".google.api.resourceDefinition"].length)) message[".google.api.resourceDefinition"] = []; - message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32())); + message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -52213,9 +54857,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FileOptions.verify = function verify(message) { + FileOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) if (!$util.isString(message.javaPackage)) return "javaPackage: string expected"; @@ -52280,7 +54928,7 @@ if (!$util.isString(message.rubyPackage)) return "rubyPackage: string expected"; if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } @@ -52288,7 +54936,7 @@ if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } @@ -52297,7 +54945,7 @@ if (!Array.isArray(message[".google.api.resourceDefinition"])) return ".google.api.resourceDefinition: array expected"; for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) { - var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i]); + var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i], long + 1); if (error) return ".google.api.resourceDefinition." + error; } @@ -52313,9 +54961,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FileOptions} FileOptions */ - FileOptions.fromObject = function fromObject(object) { + FileOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FileOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FileOptions(); if (object.javaPackage != null) message.javaPackage = String(object.javaPackage); @@ -52376,7 +55028,7 @@ if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.FileOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -52385,7 +55037,7 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object[".google.api.resourceDefinition"]) { @@ -52395,7 +55047,7 @@ for (var i = 0; i < object[".google.api.resourceDefinition"].length; ++i) { if (typeof object[".google.api.resourceDefinition"][i] !== "object") throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: object expected"); - message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i]); + message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i], long + 1); } } return message; @@ -52566,7 +55218,7 @@ this.uninterpretedOption = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -52702,9 +55354,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MessageOptions.decode = function decode(reader, length, error) { + MessageOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -52732,21 +55388,21 @@ break; } case 12: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 1053: { - message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32()); + message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -52777,9 +55433,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MessageOptions.verify = function verify(message) { + MessageOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) if (typeof message.messageSetWireFormat !== "boolean") return "messageSetWireFormat: boolean expected"; @@ -52796,7 +55456,7 @@ if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") return "deprecatedLegacyJsonFieldConflicts: boolean expected"; if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } @@ -52804,13 +55464,13 @@ if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } } if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) { - var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"]); + var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"], long + 1); if (error) return ".google.api.resource." + error; } @@ -52825,9 +55485,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.MessageOptions} MessageOptions */ - MessageOptions.fromObject = function fromObject(object) { + MessageOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.MessageOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.MessageOptions(); if (object.messageSetWireFormat != null) message.messageSetWireFormat = Boolean(object.messageSetWireFormat); @@ -52842,7 +55506,7 @@ if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.MessageOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -52851,13 +55515,13 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object[".google.api.resource"] != null) { if (typeof object[".google.api.resource"] !== "object") throw TypeError(".google.protobuf.MessageOptions..google.api.resource: object expected"); - message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"]); + message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"], long + 1); } return message; }; @@ -52955,6 +55619,7 @@ * @property {Array.|null} [targets] FieldOptions targets * @property {Array.|null} [editionDefaults] FieldOptions editionDefaults * @property {google.protobuf.IFeatureSet|null} [features] FieldOptions features + * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] FieldOptions featureSupport * @property {Array.|null} [uninterpretedOption] FieldOptions uninterpretedOption * @property {Array.|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior * @property {google.api.IResourceReference|null} [".google.api.resourceReference"] FieldOptions .google.api.resourceReference @@ -52975,7 +55640,7 @@ this[".google.api.fieldBehavior"] = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -53075,6 +55740,14 @@ */ FieldOptions.prototype.features = null; + /** + * FieldOptions featureSupport. + * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport + * @memberof google.protobuf.FieldOptions + * @instance + */ + FieldOptions.prototype.featureSupport = null; + /** * FieldOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -53149,6 +55822,8 @@ $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); if (message.features != null && Object.hasOwnProperty.call(message, "features")) $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) + $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -53184,9 +55859,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FieldOptions.decode = function decode(reader, length, error) { + FieldOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -53243,17 +55922,21 @@ case 20: { if (!(message.editionDefaults && message.editionDefaults.length)) message.editionDefaults = []; - message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32())); + message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 21: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); + break; + } + case 22: { + message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1); break; } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 1052: { @@ -53268,11 +55951,11 @@ break; } case 1055: { - message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32()); + message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -53303,9 +55986,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FieldOptions.verify = function verify(message) { + FieldOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.ctype != null && message.hasOwnProperty("ctype")) switch (message.ctype) { default: @@ -53375,21 +56062,26 @@ if (!Array.isArray(message.editionDefaults)) return "editionDefaults: array expected"; for (var i = 0; i < message.editionDefaults.length; ++i) { - var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]); + var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i], long + 1); if (error) return "editionDefaults." + error; } } if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } + if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) { + var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1); + if (error) + return "featureSupport." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } @@ -53414,7 +56106,7 @@ } } if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) { - var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"]); + var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"], long + 1); if (error) return ".google.api.resourceReference." + error; } @@ -53429,9 +56121,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FieldOptions} FieldOptions */ - FieldOptions.fromObject = function fromObject(object) { + FieldOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FieldOptions(); switch (object.ctype) { default: @@ -53565,13 +56261,18 @@ for (var i = 0; i < object.editionDefaults.length; ++i) { if (typeof object.editionDefaults[i] !== "object") throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected"); - message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]); + message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i], long + 1); } } if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.FieldOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); + } + if (object.featureSupport != null) { + if (typeof object.featureSupport !== "object") + throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected"); + message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1); } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -53580,7 +56281,7 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object[".google.api.fieldBehavior"]) { @@ -53635,7 +56336,7 @@ if (object[".google.api.resourceReference"] != null) { if (typeof object[".google.api.resourceReference"] !== "object") throw TypeError(".google.protobuf.FieldOptions..google.api.resourceReference: object expected"); - message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"]); + message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"], long + 1); } return message; }; @@ -53670,6 +56371,7 @@ object.debugRedact = false; object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0; object.features = null; + object.featureSupport = null; object[".google.api.resourceReference"] = null; } if (message.ctype != null && message.hasOwnProperty("ctype")) @@ -53702,6 +56404,8 @@ } if (message.features != null && message.hasOwnProperty("features")) object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); + if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) + object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -53842,7 +56546,7 @@ function EditionDefault(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -53917,9 +56621,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EditionDefault.decode = function decode(reader, length, error) { + EditionDefault.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault(); while (reader.pos < end) { var tag = reader.uint32(); @@ -53935,7 +56643,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -53966,14 +56674,19 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EditionDefault.verify = function verify(message) { + EditionDefault.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.edition != null && message.hasOwnProperty("edition")) switch (message.edition) { default: return "edition: enum value expected"; case 0: + case 900: case 998: case 999: case 1000: @@ -54000,9 +56713,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault */ - EditionDefault.fromObject = function fromObject(object) { + EditionDefault.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FieldOptions.EditionDefault(); switch (object.edition) { default: @@ -54015,6 +56732,10 @@ case 0: message.edition = 0; break; + case "EDITION_LEGACY": + case 900: + message.edition = 900; + break; case "EDITION_PROTO2": case 998: message.edition = 998; @@ -54114,6 +56835,500 @@ return EditionDefault; })(); + FieldOptions.FeatureSupport = (function() { + + /** + * Properties of a FeatureSupport. + * @memberof google.protobuf.FieldOptions + * @interface IFeatureSupport + * @property {google.protobuf.Edition|null} [editionIntroduced] FeatureSupport editionIntroduced + * @property {google.protobuf.Edition|null} [editionDeprecated] FeatureSupport editionDeprecated + * @property {string|null} [deprecationWarning] FeatureSupport deprecationWarning + * @property {google.protobuf.Edition|null} [editionRemoved] FeatureSupport editionRemoved + */ + + /** + * Constructs a new FeatureSupport. + * @memberof google.protobuf.FieldOptions + * @classdesc Represents a FeatureSupport. + * @implements IFeatureSupport + * @constructor + * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set + */ + function FeatureSupport(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null && keys[i] !== "__proto__") + this[keys[i]] = properties[keys[i]]; + } + + /** + * FeatureSupport editionIntroduced. + * @member {google.protobuf.Edition} editionIntroduced + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @instance + */ + FeatureSupport.prototype.editionIntroduced = 0; + + /** + * FeatureSupport editionDeprecated. + * @member {google.protobuf.Edition} editionDeprecated + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @instance + */ + FeatureSupport.prototype.editionDeprecated = 0; + + /** + * FeatureSupport deprecationWarning. + * @member {string} deprecationWarning + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @instance + */ + FeatureSupport.prototype.deprecationWarning = ""; + + /** + * FeatureSupport editionRemoved. + * @member {google.protobuf.Edition} editionRemoved + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @instance + */ + FeatureSupport.prototype.editionRemoved = 0; + + /** + * Creates a new FeatureSupport instance using the specified properties. + * @function create + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set + * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport instance + */ + FeatureSupport.create = function create(properties) { + return new FeatureSupport(properties); + }; + + /** + * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSupport.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.editionIntroduced); + if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.editionDeprecated); + if (message.deprecationWarning != null && Object.hasOwnProperty.call(message, "deprecationWarning")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.deprecationWarning); + if (message.editionRemoved != null && Object.hasOwnProperty.call(message, "editionRemoved")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.editionRemoved); + return writer; + }; + + /** + * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FeatureSupport.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FeatureSupport message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSupport.decode = function decode(reader, length, error, long) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.FeatureSupport(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.editionIntroduced = reader.int32(); + break; + } + case 2: { + message.editionDeprecated = reader.int32(); + break; + } + case 3: { + message.deprecationWarning = reader.string(); + break; + } + case 4: { + message.editionRemoved = reader.int32(); + break; + } + default: + reader.skipType(tag & 7, long); + break; + } + } + return message; + }; + + /** + * Decodes a FeatureSupport message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FeatureSupport.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FeatureSupport message. + * @function verify + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FeatureSupport.verify = function verify(message, long) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced")) + switch (message.editionIntroduced) { + default: + return "editionIntroduced: enum value expected"; + case 0: + case 900: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } + if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated")) + switch (message.editionDeprecated) { + default: + return "editionDeprecated: enum value expected"; + case 0: + case 900: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } + if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning")) + if (!$util.isString(message.deprecationWarning)) + return "deprecationWarning: string expected"; + if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved")) + switch (message.editionRemoved) { + default: + return "editionRemoved: enum value expected"; + case 0: + case 900: + case 998: + case 999: + case 1000: + case 1001: + case 1: + case 2: + case 99997: + case 99998: + case 99999: + case 2147483647: + break; + } + return null; + }; + + /** + * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport + */ + FeatureSupport.fromObject = function fromObject(object, long) { + if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport) + return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var message = new $root.google.protobuf.FieldOptions.FeatureSupport(); + switch (object.editionIntroduced) { + default: + if (typeof object.editionIntroduced === "number") { + message.editionIntroduced = object.editionIntroduced; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.editionIntroduced = 0; + break; + case "EDITION_LEGACY": + case 900: + message.editionIntroduced = 900; + break; + case "EDITION_PROTO2": + case 998: + message.editionIntroduced = 998; + break; + case "EDITION_PROTO3": + case 999: + message.editionIntroduced = 999; + break; + case "EDITION_2023": + case 1000: + message.editionIntroduced = 1000; + break; + case "EDITION_2024": + case 1001: + message.editionIntroduced = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.editionIntroduced = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.editionIntroduced = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.editionIntroduced = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.editionIntroduced = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.editionIntroduced = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.editionIntroduced = 2147483647; + break; + } + switch (object.editionDeprecated) { + default: + if (typeof object.editionDeprecated === "number") { + message.editionDeprecated = object.editionDeprecated; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.editionDeprecated = 0; + break; + case "EDITION_LEGACY": + case 900: + message.editionDeprecated = 900; + break; + case "EDITION_PROTO2": + case 998: + message.editionDeprecated = 998; + break; + case "EDITION_PROTO3": + case 999: + message.editionDeprecated = 999; + break; + case "EDITION_2023": + case 1000: + message.editionDeprecated = 1000; + break; + case "EDITION_2024": + case 1001: + message.editionDeprecated = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.editionDeprecated = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.editionDeprecated = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.editionDeprecated = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.editionDeprecated = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.editionDeprecated = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.editionDeprecated = 2147483647; + break; + } + if (object.deprecationWarning != null) + message.deprecationWarning = String(object.deprecationWarning); + switch (object.editionRemoved) { + default: + if (typeof object.editionRemoved === "number") { + message.editionRemoved = object.editionRemoved; + break; + } + break; + case "EDITION_UNKNOWN": + case 0: + message.editionRemoved = 0; + break; + case "EDITION_LEGACY": + case 900: + message.editionRemoved = 900; + break; + case "EDITION_PROTO2": + case 998: + message.editionRemoved = 998; + break; + case "EDITION_PROTO3": + case 999: + message.editionRemoved = 999; + break; + case "EDITION_2023": + case 1000: + message.editionRemoved = 1000; + break; + case "EDITION_2024": + case 1001: + message.editionRemoved = 1001; + break; + case "EDITION_1_TEST_ONLY": + case 1: + message.editionRemoved = 1; + break; + case "EDITION_2_TEST_ONLY": + case 2: + message.editionRemoved = 2; + break; + case "EDITION_99997_TEST_ONLY": + case 99997: + message.editionRemoved = 99997; + break; + case "EDITION_99998_TEST_ONLY": + case 99998: + message.editionRemoved = 99998; + break; + case "EDITION_99999_TEST_ONLY": + case 99999: + message.editionRemoved = 99999; + break; + case "EDITION_MAX": + case 2147483647: + message.editionRemoved = 2147483647; + break; + } + return message; + }; + + /** + * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {google.protobuf.FieldOptions.FeatureSupport} message FeatureSupport + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FeatureSupport.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.editionIntroduced = options.enums === String ? "EDITION_UNKNOWN" : 0; + object.editionDeprecated = options.enums === String ? "EDITION_UNKNOWN" : 0; + object.deprecationWarning = ""; + object.editionRemoved = options.enums === String ? "EDITION_UNKNOWN" : 0; + } + if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced")) + object.editionIntroduced = options.enums === String ? $root.google.protobuf.Edition[message.editionIntroduced] === undefined ? message.editionIntroduced : $root.google.protobuf.Edition[message.editionIntroduced] : message.editionIntroduced; + if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated")) + object.editionDeprecated = options.enums === String ? $root.google.protobuf.Edition[message.editionDeprecated] === undefined ? message.editionDeprecated : $root.google.protobuf.Edition[message.editionDeprecated] : message.editionDeprecated; + if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning")) + object.deprecationWarning = message.deprecationWarning; + if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved")) + object.editionRemoved = options.enums === String ? $root.google.protobuf.Edition[message.editionRemoved] === undefined ? message.editionRemoved : $root.google.protobuf.Edition[message.editionRemoved] : message.editionRemoved; + return object; + }; + + /** + * Converts this FeatureSupport to JSON. + * @function toJSON + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @instance + * @returns {Object.} JSON object + */ + FeatureSupport.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for FeatureSupport + * @function getTypeUrl + * @memberof google.protobuf.FieldOptions.FeatureSupport + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + FeatureSupport.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FieldOptions.FeatureSupport"; + }; + + return FeatureSupport; + })(); + return FieldOptions; })(); @@ -54139,7 +57354,7 @@ this.uninterpretedOption = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -54215,9 +57430,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - OneofOptions.decode = function decode(reader, length, error) { + OneofOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -54225,17 +57444,17 @@ break; switch (tag >>> 3) { case 1: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -54266,11 +57485,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - OneofOptions.verify = function verify(message) { + OneofOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } @@ -54278,7 +57501,7 @@ if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } @@ -54294,14 +57517,18 @@ * @param {Object.} object Plain object * @returns {google.protobuf.OneofOptions} OneofOptions */ - OneofOptions.fromObject = function fromObject(object) { + OneofOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.OneofOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.OneofOptions(); if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.OneofOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -54310,7 +57537,7 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } return message; @@ -54397,7 +57624,7 @@ this.uninterpretedOption = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -54503,9 +57730,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumOptions.decode = function decode(reader, length, error) { + EnumOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -54525,17 +57756,17 @@ break; } case 7: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -54566,9 +57797,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumOptions.verify = function verify(message) { + EnumOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) if (typeof message.allowAlias !== "boolean") return "allowAlias: boolean expected"; @@ -54579,7 +57814,7 @@ if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean") return "deprecatedLegacyJsonFieldConflicts: boolean expected"; if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } @@ -54587,7 +57822,7 @@ if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } @@ -54603,9 +57838,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.EnumOptions} EnumOptions */ - EnumOptions.fromObject = function fromObject(object) { + EnumOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.EnumOptions(); if (object.allowAlias != null) message.allowAlias = Boolean(object.allowAlias); @@ -54616,7 +57855,7 @@ if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.EnumOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -54625,7 +57864,7 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } return message; @@ -54706,6 +57945,7 @@ * @property {boolean|null} [deprecated] EnumValueOptions deprecated * @property {google.protobuf.IFeatureSet|null} [features] EnumValueOptions features * @property {boolean|null} [debugRedact] EnumValueOptions debugRedact + * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] EnumValueOptions featureSupport * @property {Array.|null} [uninterpretedOption] EnumValueOptions uninterpretedOption */ @@ -54721,7 +57961,7 @@ this.uninterpretedOption = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -54749,6 +57989,14 @@ */ EnumValueOptions.prototype.debugRedact = false; + /** + * EnumValueOptions featureSupport. + * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport + * @memberof google.protobuf.EnumValueOptions + * @instance + */ + EnumValueOptions.prototype.featureSupport = null; + /** * EnumValueOptions uninterpretedOption. * @member {Array.} uninterpretedOption @@ -54787,6 +58035,8 @@ $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact")) writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact); + if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport")) + $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.uninterpretedOption != null && message.uninterpretedOption.length) for (var i = 0; i < message.uninterpretedOption.length; ++i) $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); @@ -54817,9 +58067,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - EnumValueOptions.decode = function decode(reader, length, error) { + EnumValueOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -54831,21 +58085,25 @@ break; } case 2: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { message.debugRedact = reader.bool(); break; } + case 4: { + message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1); + break; + } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -54876,25 +58134,34 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - EnumValueOptions.verify = function verify(message) { + EnumValueOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.deprecated != null && message.hasOwnProperty("deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) if (typeof message.debugRedact !== "boolean") return "debugRedact: boolean expected"; + if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) { + var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1); + if (error) + return "featureSupport." + error; + } if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } @@ -54910,19 +58177,28 @@ * @param {Object.} object Plain object * @returns {google.protobuf.EnumValueOptions} EnumValueOptions */ - EnumValueOptions.fromObject = function fromObject(object) { + EnumValueOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.EnumValueOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.EnumValueOptions(); if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.EnumValueOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.debugRedact != null) message.debugRedact = Boolean(object.debugRedact); + if (object.featureSupport != null) { + if (typeof object.featureSupport !== "object") + throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected"); + message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1); + } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected"); @@ -54930,7 +58206,7 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } return message; @@ -54955,6 +58231,7 @@ object.deprecated = false; object.features = null; object.debugRedact = false; + object.featureSupport = null; } if (message.deprecated != null && message.hasOwnProperty("deprecated")) object.deprecated = message.deprecated; @@ -54962,6 +58239,8 @@ object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.debugRedact != null && message.hasOwnProperty("debugRedact")) object.debugRedact = message.debugRedact; + if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) + object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options); if (message.uninterpretedOption && message.uninterpretedOption.length) { object.uninterpretedOption = []; for (var j = 0; j < message.uninterpretedOption.length; ++j) @@ -55025,7 +58304,7 @@ this.uninterpretedOption = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -55141,9 +58420,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ServiceOptions.decode = function decode(reader, length, error) { + ServiceOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -55151,7 +58434,7 @@ break; switch (tag >>> 3) { case 34: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 33: { @@ -55161,7 +58444,7 @@ case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 1049: { @@ -55177,7 +58460,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -55208,11 +58491,15 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ServiceOptions.verify = function verify(message) { + ServiceOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } @@ -55223,7 +58510,7 @@ if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } @@ -55248,14 +58535,18 @@ * @param {Object.} object Plain object * @returns {google.protobuf.ServiceOptions} ServiceOptions */ - ServiceOptions.fromObject = function fromObject(object) { + ServiceOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.ServiceOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.ServiceOptions(); if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.ServiceOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); @@ -55266,7 +58557,7 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object[".google.api.defaultHost"] != null) @@ -55375,7 +58666,7 @@ this[".google.api.methodSignature"] = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -55502,9 +58793,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - MethodOptions.decode = function decode(reader, length, error) { + MethodOptions.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions(); while (reader.pos < end) { var tag = reader.uint32(); @@ -55520,17 +58815,17 @@ break; } case 35: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } case 999: { if (!(message.uninterpretedOption && message.uninterpretedOption.length)) message.uninterpretedOption = []; - message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 72295728: { - message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32()); + message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1); break; } case 1051: { @@ -55540,11 +58835,11 @@ break; } case 1049: { - message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32()); + message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -55575,9 +58870,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - MethodOptions.verify = function verify(message) { + MethodOptions.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.deprecated != null && message.hasOwnProperty("deprecated")) if (typeof message.deprecated !== "boolean") return "deprecated: boolean expected"; @@ -55591,7 +58890,7 @@ break; } if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1); if (error) return "features." + error; } @@ -55599,13 +58898,13 @@ if (!Array.isArray(message.uninterpretedOption)) return "uninterpretedOption: array expected"; for (var i = 0; i < message.uninterpretedOption.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1); if (error) return "uninterpretedOption." + error; } } if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) { - var error = $root.google.api.HttpRule.verify(message[".google.api.http"]); + var error = $root.google.api.HttpRule.verify(message[".google.api.http"], long + 1); if (error) return ".google.api.http." + error; } @@ -55617,7 +58916,7 @@ return ".google.api.methodSignature: string[] expected"; } if (message[".google.longrunning.operationInfo"] != null && message.hasOwnProperty(".google.longrunning.operationInfo")) { - var error = $root.google.longrunning.OperationInfo.verify(message[".google.longrunning.operationInfo"]); + var error = $root.google.longrunning.OperationInfo.verify(message[".google.longrunning.operationInfo"], long + 1); if (error) return ".google.longrunning.operationInfo." + error; } @@ -55632,9 +58931,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.MethodOptions} MethodOptions */ - MethodOptions.fromObject = function fromObject(object) { + MethodOptions.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.MethodOptions) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.MethodOptions(); if (object.deprecated != null) message.deprecated = Boolean(object.deprecated); @@ -55661,7 +58964,7 @@ if (object.features != null) { if (typeof object.features !== "object") throw TypeError(".google.protobuf.MethodOptions.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1); } if (object.uninterpretedOption) { if (!Array.isArray(object.uninterpretedOption)) @@ -55670,13 +58973,13 @@ for (var i = 0; i < object.uninterpretedOption.length; ++i) { if (typeof object.uninterpretedOption[i] !== "object") throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected"); - message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1); } } if (object[".google.api.http"] != null) { if (typeof object[".google.api.http"] !== "object") throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected"); - message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]); + message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"], long + 1); } if (object[".google.api.methodSignature"]) { if (!Array.isArray(object[".google.api.methodSignature"])) @@ -55688,7 +58991,7 @@ if (object[".google.longrunning.operationInfo"] != null) { if (typeof object[".google.longrunning.operationInfo"] !== "object") throw TypeError(".google.protobuf.MethodOptions..google.longrunning.operationInfo: object expected"); - message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"]); + message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"], long + 1); } return message; }; @@ -55812,7 +59115,7 @@ this.name = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -55938,9 +59241,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UninterpretedOption.decode = function decode(reader, length, error) { + UninterpretedOption.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption(); while (reader.pos < end) { var tag = reader.uint32(); @@ -55950,7 +59257,7 @@ case 2: { if (!(message.name && message.name.length)) message.name = []; - message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32())); + message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 3: { @@ -55978,7 +59285,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -56009,14 +59316,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UninterpretedOption.verify = function verify(message) { + UninterpretedOption.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) { if (!Array.isArray(message.name)) return "name: array expected"; for (var i = 0; i < message.name.length; ++i) { - var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]); + var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i], long + 1); if (error) return "name." + error; } @@ -56050,9 +59361,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.UninterpretedOption} UninterpretedOption */ - UninterpretedOption.fromObject = function fromObject(object) { + UninterpretedOption.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.UninterpretedOption) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.UninterpretedOption(); if (object.name) { if (!Array.isArray(object.name)) @@ -56061,7 +59376,7 @@ for (var i = 0; i < object.name.length; ++i) { if (typeof object.name[i] !== "object") throw TypeError(".google.protobuf.UninterpretedOption.name: object expected"); - message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]); + message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i], long + 1); } } if (object.identifierValue != null) @@ -56206,7 +59521,7 @@ function NamePart(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -56279,9 +59594,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - NamePart.decode = function decode(reader, length, error) { + NamePart.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart(); while (reader.pos < end) { var tag = reader.uint32(); @@ -56297,7 +59616,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -56332,9 +59651,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - NamePart.verify = function verify(message) { + NamePart.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (!$util.isString(message.namePart)) return "namePart: string expected"; if (typeof message.isExtension !== "boolean") @@ -56350,9 +59673,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart */ - NamePart.fromObject = function fromObject(object) { + NamePart.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.UninterpretedOption.NamePart(); if (object.namePart != null) message.namePart = String(object.namePart); @@ -56429,6 +59756,8 @@ * @property {google.protobuf.FeatureSet.Utf8Validation|null} [utf8Validation] FeatureSet utf8Validation * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat + * @property {google.protobuf.FeatureSet.EnforceNamingStyle|null} [enforceNamingStyle] FeatureSet enforceNamingStyle + * @property {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null} [defaultSymbolVisibility] FeatureSet defaultSymbolVisibility */ /** @@ -56442,7 +59771,7 @@ function FeatureSet(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -56494,6 +59823,22 @@ */ FeatureSet.prototype.jsonFormat = 0; + /** + * FeatureSet enforceNamingStyle. + * @member {google.protobuf.FeatureSet.EnforceNamingStyle} enforceNamingStyle + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.enforceNamingStyle = 0; + + /** + * FeatureSet defaultSymbolVisibility. + * @member {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility} defaultSymbolVisibility + * @memberof google.protobuf.FeatureSet + * @instance + */ + FeatureSet.prototype.defaultSymbolVisibility = 0; + /** * Creates a new FeatureSet instance using the specified properties. * @function create @@ -56530,6 +59875,10 @@ writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding); if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat")) writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat); + if (message.enforceNamingStyle != null && Object.hasOwnProperty.call(message, "enforceNamingStyle")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.enforceNamingStyle); + if (message.defaultSymbolVisibility != null && Object.hasOwnProperty.call(message, "defaultSymbolVisibility")) + writer.uint32(/* id 8, wireType 0 =*/64).int32(message.defaultSymbolVisibility); return writer; }; @@ -56557,9 +59906,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FeatureSet.decode = function decode(reader, length, error) { + FeatureSet.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet(); while (reader.pos < end) { var tag = reader.uint32(); @@ -56590,8 +59943,16 @@ message.jsonFormat = reader.int32(); break; } + case 7: { + message.enforceNamingStyle = reader.int32(); + break; + } + case 8: { + message.defaultSymbolVisibility = reader.int32(); + break; + } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -56622,9 +59983,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FeatureSet.verify = function verify(message) { + FeatureSet.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence")) switch (message.fieldPresence) { default: @@ -56680,6 +60045,26 @@ case 2: break; } + if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle")) + switch (message.enforceNamingStyle) { + default: + return "enforceNamingStyle: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility")) + switch (message.defaultSymbolVisibility) { + default: + return "defaultSymbolVisibility: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } return null; }; @@ -56691,9 +60076,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FeatureSet} FeatureSet */ - FeatureSet.fromObject = function fromObject(object) { + FeatureSet.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FeatureSet) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FeatureSet(); switch (object.fieldPresence) { default: @@ -56819,6 +60208,54 @@ message.jsonFormat = 2; break; } + switch (object.enforceNamingStyle) { + default: + if (typeof object.enforceNamingStyle === "number") { + message.enforceNamingStyle = object.enforceNamingStyle; + break; + } + break; + case "ENFORCE_NAMING_STYLE_UNKNOWN": + case 0: + message.enforceNamingStyle = 0; + break; + case "STYLE2024": + case 1: + message.enforceNamingStyle = 1; + break; + case "STYLE_LEGACY": + case 2: + message.enforceNamingStyle = 2; + break; + } + switch (object.defaultSymbolVisibility) { + default: + if (typeof object.defaultSymbolVisibility === "number") { + message.defaultSymbolVisibility = object.defaultSymbolVisibility; + break; + } + break; + case "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": + case 0: + message.defaultSymbolVisibility = 0; + break; + case "EXPORT_ALL": + case 1: + message.defaultSymbolVisibility = 1; + break; + case "EXPORT_TOP_LEVEL": + case 2: + message.defaultSymbolVisibility = 2; + break; + case "LOCAL_ALL": + case 3: + message.defaultSymbolVisibility = 3; + break; + case "STRICT": + case 4: + message.defaultSymbolVisibility = 4; + break; + } return message; }; @@ -56842,6 +60279,8 @@ object.utf8Validation = options.enums === String ? "UTF8_VALIDATION_UNKNOWN" : 0; object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0; object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0; + object.enforceNamingStyle = options.enums === String ? "ENFORCE_NAMING_STYLE_UNKNOWN" : 0; + object.defaultSymbolVisibility = options.enums === String ? "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN" : 0; } if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence")) object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence; @@ -56855,6 +60294,10 @@ object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding; if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat")) object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat; + if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle")) + object.enforceNamingStyle = options.enums === String ? $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] === undefined ? message.enforceNamingStyle : $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] : message.enforceNamingStyle; + if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility")) + object.defaultSymbolVisibility = options.enums === String ? $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] === undefined ? message.defaultSymbolVisibility : $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] : message.defaultSymbolVisibility; return object; }; @@ -56982,6 +60425,231 @@ return values; })(); + /** + * EnforceNamingStyle enum. + * @name google.protobuf.FeatureSet.EnforceNamingStyle + * @enum {number} + * @property {number} ENFORCE_NAMING_STYLE_UNKNOWN=0 ENFORCE_NAMING_STYLE_UNKNOWN value + * @property {number} STYLE2024=1 STYLE2024 value + * @property {number} STYLE_LEGACY=2 STYLE_LEGACY value + */ + FeatureSet.EnforceNamingStyle = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ENFORCE_NAMING_STYLE_UNKNOWN"] = 0; + values[valuesById[1] = "STYLE2024"] = 1; + values[valuesById[2] = "STYLE_LEGACY"] = 2; + return values; + })(); + + FeatureSet.VisibilityFeature = (function() { + + /** + * Properties of a VisibilityFeature. + * @memberof google.protobuf.FeatureSet + * @interface IVisibilityFeature + */ + + /** + * Constructs a new VisibilityFeature. + * @memberof google.protobuf.FeatureSet + * @classdesc Represents a VisibilityFeature. + * @implements IVisibilityFeature + * @constructor + * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set + */ + function VisibilityFeature(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null && keys[i] !== "__proto__") + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new VisibilityFeature instance using the specified properties. + * @function create + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set + * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature instance + */ + VisibilityFeature.create = function create(properties) { + return new VisibilityFeature(properties); + }; + + /** + * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages. + * @function encode + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + VisibilityFeature.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages. + * @function encodeDelimited + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + VisibilityFeature.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a VisibilityFeature message from the specified reader or buffer. + * @function decode + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + VisibilityFeature.decode = function decode(reader, length, error, long) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet.VisibilityFeature(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + default: + reader.skipType(tag & 7, long); + break; + } + } + return message; + }; + + /** + * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + VisibilityFeature.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a VisibilityFeature message. + * @function verify + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + VisibilityFeature.verify = function verify(message, long) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; + return null; + }; + + /** + * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {Object.} object Plain object + * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature + */ + VisibilityFeature.fromObject = function fromObject(object, long) { + if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature) + return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); + return new $root.google.protobuf.FeatureSet.VisibilityFeature(); + }; + + /** + * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified. + * @function toObject + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {google.protobuf.FeatureSet.VisibilityFeature} message VisibilityFeature + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + VisibilityFeature.toObject = function toObject() { + return {}; + }; + + /** + * Converts this VisibilityFeature to JSON. + * @function toJSON + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @instance + * @returns {Object.} JSON object + */ + VisibilityFeature.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for VisibilityFeature + * @function getTypeUrl + * @memberof google.protobuf.FeatureSet.VisibilityFeature + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + VisibilityFeature.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.protobuf.FeatureSet.VisibilityFeature"; + }; + + /** + * DefaultSymbolVisibility enum. + * @name google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility + * @enum {number} + * @property {number} DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0 DEFAULT_SYMBOL_VISIBILITY_UNKNOWN value + * @property {number} EXPORT_ALL=1 EXPORT_ALL value + * @property {number} EXPORT_TOP_LEVEL=2 EXPORT_TOP_LEVEL value + * @property {number} LOCAL_ALL=3 LOCAL_ALL value + * @property {number} STRICT=4 STRICT value + */ + VisibilityFeature.DefaultSymbolVisibility = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"] = 0; + values[valuesById[1] = "EXPORT_ALL"] = 1; + values[valuesById[2] = "EXPORT_TOP_LEVEL"] = 2; + values[valuesById[3] = "LOCAL_ALL"] = 3; + values[valuesById[4] = "STRICT"] = 4; + return values; + })(); + + return VisibilityFeature; + })(); + return FeatureSet; })(); @@ -57008,7 +60676,7 @@ this.defaults = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -57094,9 +60762,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FeatureSetDefaults.decode = function decode(reader, length, error) { + FeatureSetDefaults.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults(); while (reader.pos < end) { var tag = reader.uint32(); @@ -57106,7 +60778,7 @@ case 1: { if (!(message.defaults && message.defaults.length)) message.defaults = []; - message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32())); + message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 4: { @@ -57118,7 +60790,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -57149,14 +60821,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FeatureSetDefaults.verify = function verify(message) { + FeatureSetDefaults.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.defaults != null && message.hasOwnProperty("defaults")) { if (!Array.isArray(message.defaults)) return "defaults: array expected"; for (var i = 0; i < message.defaults.length; ++i) { - var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]); + var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i], long + 1); if (error) return "defaults." + error; } @@ -57166,6 +60842,7 @@ default: return "minimumEdition: enum value expected"; case 0: + case 900: case 998: case 999: case 1000: @@ -57183,6 +60860,7 @@ default: return "maximumEdition: enum value expected"; case 0: + case 900: case 998: case 999: case 1000: @@ -57206,9 +60884,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults */ - FeatureSetDefaults.fromObject = function fromObject(object) { + FeatureSetDefaults.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FeatureSetDefaults) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FeatureSetDefaults(); if (object.defaults) { if (!Array.isArray(object.defaults)) @@ -57217,7 +60899,7 @@ for (var i = 0; i < object.defaults.length; ++i) { if (typeof object.defaults[i] !== "object") throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected"); - message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]); + message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i], long + 1); } } switch (object.minimumEdition) { @@ -57231,6 +60913,10 @@ case 0: message.minimumEdition = 0; break; + case "EDITION_LEGACY": + case 900: + message.minimumEdition = 900; + break; case "EDITION_PROTO2": case 998: message.minimumEdition = 998; @@ -57283,6 +60969,10 @@ case 0: message.maximumEdition = 0; break; + case "EDITION_LEGACY": + case 900: + message.maximumEdition = 900; + break; case "EDITION_PROTO2": case 998: message.maximumEdition = 998; @@ -57391,7 +61081,8 @@ * @memberof google.protobuf.FeatureSetDefaults * @interface IFeatureSetEditionDefault * @property {google.protobuf.Edition|null} [edition] FeatureSetEditionDefault edition - * @property {google.protobuf.IFeatureSet|null} [features] FeatureSetEditionDefault features + * @property {google.protobuf.IFeatureSet|null} [overridableFeatures] FeatureSetEditionDefault overridableFeatures + * @property {google.protobuf.IFeatureSet|null} [fixedFeatures] FeatureSetEditionDefault fixedFeatures */ /** @@ -57405,7 +61096,7 @@ function FeatureSetEditionDefault(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -57418,12 +61109,20 @@ FeatureSetEditionDefault.prototype.edition = 0; /** - * FeatureSetEditionDefault features. - * @member {google.protobuf.IFeatureSet|null|undefined} features + * FeatureSetEditionDefault overridableFeatures. + * @member {google.protobuf.IFeatureSet|null|undefined} overridableFeatures + * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + * @instance + */ + FeatureSetEditionDefault.prototype.overridableFeatures = null; + + /** + * FeatureSetEditionDefault fixedFeatures. + * @member {google.protobuf.IFeatureSet|null|undefined} fixedFeatures * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault * @instance */ - FeatureSetEditionDefault.prototype.features = null; + FeatureSetEditionDefault.prototype.fixedFeatures = null; /** * Creates a new FeatureSetEditionDefault instance using the specified properties. @@ -57449,10 +61148,12 @@ FeatureSetEditionDefault.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.features != null && Object.hasOwnProperty.call(message, "features")) - $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.edition != null && Object.hasOwnProperty.call(message, "edition")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition); + if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures")) + $root.google.protobuf.FeatureSet.encode(message.overridableFeatures, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures")) + $root.google.protobuf.FeatureSet.encode(message.fixedFeatures, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -57480,9 +61181,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FeatureSetEditionDefault.decode = function decode(reader, length, error) { + FeatureSetEditionDefault.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault(); while (reader.pos < end) { var tag = reader.uint32(); @@ -57493,12 +61198,16 @@ message.edition = reader.int32(); break; } - case 2: { - message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32()); + case 4: { + message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); + break; + } + case 5: { + message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -57529,14 +61238,19 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FeatureSetEditionDefault.verify = function verify(message) { + FeatureSetEditionDefault.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.edition != null && message.hasOwnProperty("edition")) switch (message.edition) { default: return "edition: enum value expected"; case 0: + case 900: case 998: case 999: case 1000: @@ -57549,10 +61263,15 @@ case 2147483647: break; } - if (message.features != null && message.hasOwnProperty("features")) { - var error = $root.google.protobuf.FeatureSet.verify(message.features); + if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) { + var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures, long + 1); + if (error) + return "overridableFeatures." + error; + } + if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) { + var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures, long + 1); if (error) - return "features." + error; + return "fixedFeatures." + error; } return null; }; @@ -57565,9 +61284,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault */ - FeatureSetEditionDefault.fromObject = function fromObject(object) { + FeatureSetEditionDefault.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault(); switch (object.edition) { default: @@ -57580,6 +61303,10 @@ case 0: message.edition = 0; break; + case "EDITION_LEGACY": + case 900: + message.edition = 900; + break; case "EDITION_PROTO2": case 998: message.edition = 998; @@ -57621,10 +61348,15 @@ message.edition = 2147483647; break; } - if (object.features != null) { - if (typeof object.features !== "object") - throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features: object expected"); - message.features = $root.google.protobuf.FeatureSet.fromObject(object.features); + if (object.overridableFeatures != null) { + if (typeof object.overridableFeatures !== "object") + throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected"); + message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures, long + 1); + } + if (object.fixedFeatures != null) { + if (typeof object.fixedFeatures !== "object") + throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected"); + message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures, long + 1); } return message; }; @@ -57643,13 +61375,16 @@ options = {}; var object = {}; if (options.defaults) { - object.features = null; object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0; + object.overridableFeatures = null; + object.fixedFeatures = null; } - if (message.features != null && message.hasOwnProperty("features")) - object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options); if (message.edition != null && message.hasOwnProperty("edition")) object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition; + if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) + object.overridableFeatures = $root.google.protobuf.FeatureSet.toObject(message.overridableFeatures, options); + if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) + object.fixedFeatures = $root.google.protobuf.FeatureSet.toObject(message.fixedFeatures, options); return object; }; @@ -57706,7 +61441,7 @@ this.location = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -57772,9 +61507,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - SourceCodeInfo.decode = function decode(reader, length, error) { + SourceCodeInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -57784,11 +61523,11 @@ case 1: { if (!(message.location && message.location.length)) message.location = []; - message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32())); + message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -57819,14 +61558,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - SourceCodeInfo.verify = function verify(message) { + SourceCodeInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.location != null && message.hasOwnProperty("location")) { if (!Array.isArray(message.location)) return "location: array expected"; for (var i = 0; i < message.location.length; ++i) { - var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]); + var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i], long + 1); if (error) return "location." + error; } @@ -57842,9 +61585,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo */ - SourceCodeInfo.fromObject = function fromObject(object) { + SourceCodeInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.SourceCodeInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.SourceCodeInfo(); if (object.location) { if (!Array.isArray(object.location)) @@ -57853,7 +61600,7 @@ for (var i = 0; i < object.location.length; ++i) { if (typeof object.location[i] !== "object") throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected"); - message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]); + message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i], long + 1); } } return message; @@ -57935,7 +61682,7 @@ this.leadingDetachedComments = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -58049,9 +61796,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Location.decode = function decode(reader, length, error) { + Location.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location(); while (reader.pos < end) { var tag = reader.uint32(); @@ -58095,7 +61846,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -58126,9 +61877,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Location.verify = function verify(message) { + Location.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.path != null && message.hasOwnProperty("path")) { if (!Array.isArray(message.path)) return "path: array expected"; @@ -58167,9 +61922,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.SourceCodeInfo.Location} Location */ - Location.fromObject = function fromObject(object) { + Location.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.SourceCodeInfo.Location) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.SourceCodeInfo.Location(); if (object.path) { if (!Array.isArray(object.path)) @@ -58296,7 +62055,7 @@ this.annotation = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -58362,9 +62121,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GeneratedCodeInfo.decode = function decode(reader, length, error) { + GeneratedCodeInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -58374,11 +62137,11 @@ case 1: { if (!(message.annotation && message.annotation.length)) message.annotation = []; - message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32())); + message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -58409,14 +62172,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GeneratedCodeInfo.verify = function verify(message) { + GeneratedCodeInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.annotation != null && message.hasOwnProperty("annotation")) { if (!Array.isArray(message.annotation)) return "annotation: array expected"; for (var i = 0; i < message.annotation.length; ++i) { - var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]); + var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i], long + 1); if (error) return "annotation." + error; } @@ -58432,9 +62199,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo */ - GeneratedCodeInfo.fromObject = function fromObject(object) { + GeneratedCodeInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.GeneratedCodeInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.GeneratedCodeInfo(); if (object.annotation) { if (!Array.isArray(object.annotation)) @@ -58443,7 +62214,7 @@ for (var i = 0; i < object.annotation.length; ++i) { if (typeof object.annotation[i] !== "object") throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected"); - message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]); + message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i], long + 1); } } return message; @@ -58523,7 +62294,7 @@ this.path = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -58632,9 +62403,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Annotation.decode = function decode(reader, length, error) { + Annotation.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); while (reader.pos < end) { var tag = reader.uint32(); @@ -58669,7 +62444,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -58700,9 +62475,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Annotation.verify = function verify(message) { + Annotation.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.path != null && message.hasOwnProperty("path")) { if (!Array.isArray(message.path)) return "path: array expected"; @@ -58739,9 +62518,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation */ - Annotation.fromObject = function fromObject(object) { + Annotation.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); if (object.path) { if (!Array.isArray(object.path)) @@ -58864,6 +62647,22 @@ return GeneratedCodeInfo; })(); + /** + * SymbolVisibility enum. + * @name google.protobuf.SymbolVisibility + * @enum {number} + * @property {number} VISIBILITY_UNSET=0 VISIBILITY_UNSET value + * @property {number} VISIBILITY_LOCAL=1 VISIBILITY_LOCAL value + * @property {number} VISIBILITY_EXPORT=2 VISIBILITY_EXPORT value + */ + protobuf.SymbolVisibility = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "VISIBILITY_UNSET"] = 0; + values[valuesById[1] = "VISIBILITY_LOCAL"] = 1; + values[valuesById[2] = "VISIBILITY_EXPORT"] = 2; + return values; + })(); + protobuf.Timestamp = (function() { /** @@ -58885,7 +62684,7 @@ function Timestamp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -58960,9 +62759,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Timestamp.decode = function decode(reader, length, error) { + Timestamp.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp(); while (reader.pos < end) { var tag = reader.uint32(); @@ -58978,7 +62781,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -59009,9 +62812,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Timestamp.verify = function verify(message) { + Timestamp.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.seconds != null && message.hasOwnProperty("seconds")) if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) return "seconds: integer|Long expected"; @@ -59029,9 +62836,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.Timestamp} Timestamp */ - Timestamp.fromObject = function fromObject(object) { + Timestamp.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Timestamp) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.Timestamp(); if (object.seconds != null) if ($util.Long) @@ -59127,7 +62938,7 @@ function DoubleValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -59192,9 +63003,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DoubleValue.decode = function decode(reader, length, error) { + DoubleValue.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DoubleValue(); while (reader.pos < end) { var tag = reader.uint32(); @@ -59206,7 +63021,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -59237,9 +63052,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DoubleValue.verify = function verify(message) { + DoubleValue.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (typeof message.value !== "number") return "value: number expected"; @@ -59254,9 +63073,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.DoubleValue} DoubleValue */ - DoubleValue.fromObject = function fromObject(object) { + DoubleValue.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.DoubleValue) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.DoubleValue(); if (object.value != null) message.value = Number(object.value); @@ -59332,7 +63155,7 @@ function FloatValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -59397,9 +63220,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FloatValue.decode = function decode(reader, length, error) { + FloatValue.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FloatValue(); while (reader.pos < end) { var tag = reader.uint32(); @@ -59411,7 +63238,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -59442,9 +63269,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FloatValue.verify = function verify(message) { + FloatValue.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (typeof message.value !== "number") return "value: number expected"; @@ -59459,9 +63290,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FloatValue} FloatValue */ - FloatValue.fromObject = function fromObject(object) { + FloatValue.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FloatValue) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FloatValue(); if (object.value != null) message.value = Number(object.value); @@ -59537,7 +63372,7 @@ function Int64Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -59602,9 +63437,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Int64Value.decode = function decode(reader, length, error) { + Int64Value.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int64Value(); while (reader.pos < end) { var tag = reader.uint32(); @@ -59616,7 +63455,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -59647,9 +63486,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Int64Value.verify = function verify(message) { + Int64Value.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) return "value: integer|Long expected"; @@ -59664,9 +63507,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.Int64Value} Int64Value */ - Int64Value.fromObject = function fromObject(object) { + Int64Value.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Int64Value) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.Int64Value(); if (object.value != null) if ($util.Long) @@ -59756,7 +63603,7 @@ function UInt64Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -59821,9 +63668,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UInt64Value.decode = function decode(reader, length, error) { + UInt64Value.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt64Value(); while (reader.pos < end) { var tag = reader.uint32(); @@ -59835,7 +63686,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -59866,9 +63717,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UInt64Value.verify = function verify(message) { + UInt64Value.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (!$util.isInteger(message.value) && !(message.value && $util.isInteger(message.value.low) && $util.isInteger(message.value.high))) return "value: integer|Long expected"; @@ -59883,9 +63738,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.UInt64Value} UInt64Value */ - UInt64Value.fromObject = function fromObject(object) { + UInt64Value.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.UInt64Value) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.UInt64Value(); if (object.value != null) if ($util.Long) @@ -59975,7 +63834,7 @@ function Int32Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -60040,9 +63899,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Int32Value.decode = function decode(reader, length, error) { + Int32Value.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Int32Value(); while (reader.pos < end) { var tag = reader.uint32(); @@ -60054,7 +63917,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -60085,9 +63948,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Int32Value.verify = function verify(message) { + Int32Value.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (!$util.isInteger(message.value)) return "value: integer expected"; @@ -60102,9 +63969,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.Int32Value} Int32Value */ - Int32Value.fromObject = function fromObject(object) { + Int32Value.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Int32Value) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.Int32Value(); if (object.value != null) message.value = object.value | 0; @@ -60180,7 +64051,7 @@ function UInt32Value(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -60245,9 +64116,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - UInt32Value.decode = function decode(reader, length, error) { + UInt32Value.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UInt32Value(); while (reader.pos < end) { var tag = reader.uint32(); @@ -60259,7 +64134,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -60290,9 +64165,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - UInt32Value.verify = function verify(message) { + UInt32Value.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (!$util.isInteger(message.value)) return "value: integer expected"; @@ -60307,9 +64186,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.UInt32Value} UInt32Value */ - UInt32Value.fromObject = function fromObject(object) { + UInt32Value.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.UInt32Value) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.UInt32Value(); if (object.value != null) message.value = object.value >>> 0; @@ -60385,7 +64268,7 @@ function BoolValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -60450,9 +64333,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BoolValue.decode = function decode(reader, length, error) { + BoolValue.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BoolValue(); while (reader.pos < end) { var tag = reader.uint32(); @@ -60464,7 +64351,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -60495,9 +64382,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BoolValue.verify = function verify(message) { + BoolValue.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (typeof message.value !== "boolean") return "value: boolean expected"; @@ -60512,9 +64403,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.BoolValue} BoolValue */ - BoolValue.fromObject = function fromObject(object) { + BoolValue.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.BoolValue) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.BoolValue(); if (object.value != null) message.value = Boolean(object.value); @@ -60590,7 +64485,7 @@ function StringValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -60655,9 +64550,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StringValue.decode = function decode(reader, length, error) { + StringValue.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.StringValue(); while (reader.pos < end) { var tag = reader.uint32(); @@ -60669,7 +64568,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -60700,9 +64599,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - StringValue.verify = function verify(message) { + StringValue.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (!$util.isString(message.value)) return "value: string expected"; @@ -60717,9 +64620,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.StringValue} StringValue */ - StringValue.fromObject = function fromObject(object) { + StringValue.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.StringValue) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.StringValue(); if (object.value != null) message.value = String(object.value); @@ -60795,7 +64702,7 @@ function BytesValue(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -60860,9 +64767,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - BytesValue.decode = function decode(reader, length, error) { + BytesValue.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.BytesValue(); while (reader.pos < end) { var tag = reader.uint32(); @@ -60874,7 +64785,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -60905,9 +64816,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - BytesValue.verify = function verify(message) { + BytesValue.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.value != null && message.hasOwnProperty("value")) if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) return "value: buffer expected"; @@ -60922,9 +64837,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.BytesValue} BytesValue */ - BytesValue.fromObject = function fromObject(object) { + BytesValue.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.BytesValue) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.BytesValue(); if (object.value != null) if (typeof object.value === "string") @@ -61010,7 +64929,7 @@ function Duration(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -61085,9 +65004,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Duration.decode = function decode(reader, length, error) { + Duration.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration(); while (reader.pos < end) { var tag = reader.uint32(); @@ -61103,7 +65026,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -61134,9 +65057,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Duration.verify = function verify(message) { + Duration.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.seconds != null && message.hasOwnProperty("seconds")) if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) return "seconds: integer|Long expected"; @@ -61154,9 +65081,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.Duration} Duration */ - Duration.fromObject = function fromObject(object) { + Duration.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Duration) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.Duration(); if (object.seconds != null) if ($util.Long) @@ -61251,7 +65182,7 @@ function Empty(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -61306,9 +65237,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Empty.decode = function decode(reader, length, error) { + Empty.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Empty(); while (reader.pos < end) { var tag = reader.uint32(); @@ -61316,7 +65251,7 @@ break; switch (tag >>> 3) { default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -61347,9 +65282,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Empty.verify = function verify(message) { + Empty.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; return null; }; @@ -61361,9 +65300,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.Empty} Empty */ - Empty.fromObject = function fromObject(object) { + Empty.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Empty) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); return new $root.google.protobuf.Empty(); }; @@ -61430,7 +65373,7 @@ this.paths = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -61496,9 +65439,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - FieldMask.decode = function decode(reader, length, error) { + FieldMask.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldMask(); while (reader.pos < end) { var tag = reader.uint32(); @@ -61512,7 +65459,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -61543,9 +65490,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - FieldMask.verify = function verify(message) { + FieldMask.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.paths != null && message.hasOwnProperty("paths")) { if (!Array.isArray(message.paths)) return "paths: array expected"; @@ -61564,9 +65515,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.FieldMask} FieldMask */ - FieldMask.fromObject = function fromObject(object) { + FieldMask.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.FieldMask) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.FieldMask(); if (object.paths) { if (!Array.isArray(object.paths)) @@ -61651,7 +65606,7 @@ function Any(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -61726,9 +65681,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Any.decode = function decode(reader, length, error) { + Any.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Any(); while (reader.pos < end) { var tag = reader.uint32(); @@ -61744,7 +65703,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -61775,9 +65734,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Any.verify = function verify(message) { + Any.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.type_url != null && message.hasOwnProperty("type_url")) if (!$util.isString(message.type_url)) return "type_url: string expected"; @@ -61795,9 +65758,13 @@ * @param {Object.} object Plain object * @returns {google.protobuf.Any} Any */ - Any.fromObject = function fromObject(object) { + Any.fromObject = function fromObject(object, long) { if (object instanceof $root.google.protobuf.Any) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.protobuf.Any(); if (object.type_url != null) message.type_url = String(object.type_url); @@ -61901,7 +65868,7 @@ function LatLng(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -61976,9 +65943,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - LatLng.decode = function decode(reader, length, error) { + LatLng.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.LatLng(); while (reader.pos < end) { var tag = reader.uint32(); @@ -61994,7 +65965,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -62025,9 +65996,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - LatLng.verify = function verify(message) { + LatLng.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.latitude != null && message.hasOwnProperty("latitude")) if (typeof message.latitude !== "number") return "latitude: number expected"; @@ -62045,9 +66020,13 @@ * @param {Object.} object Plain object * @returns {google.type.LatLng} LatLng */ - LatLng.fromObject = function fromObject(object) { + LatLng.fromObject = function fromObject(object, long) { if (object instanceof $root.google.type.LatLng) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.type.LatLng(); if (object.latitude != null) message.latitude = Number(object.latitude); @@ -62131,7 +66110,7 @@ function Money(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -62216,9 +66195,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Money.decode = function decode(reader, length, error) { + Money.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.Money(); while (reader.pos < end) { var tag = reader.uint32(); @@ -62238,7 +66221,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -62269,9 +66252,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Money.verify = function verify(message) { + Money.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.currencyCode != null && message.hasOwnProperty("currencyCode")) if (!$util.isString(message.currencyCode)) return "currencyCode: string expected"; @@ -62292,9 +66279,13 @@ * @param {Object.} object Plain object * @returns {google.type.Money} Money */ - Money.fromObject = function fromObject(object) { + Money.fromObject = function fromObject(object, long) { if (object instanceof $root.google.type.Money) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.type.Money(); if (object.currencyCode != null) message.currencyCode = String(object.currencyCode); @@ -62407,7 +66398,7 @@ this.recipients = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -62574,9 +66565,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - PostalAddress.decode = function decode(reader, length, error) { + PostalAddress.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.PostalAddress(); while (reader.pos < end) { var tag = reader.uint32(); @@ -62632,7 +66627,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -62663,9 +66658,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - PostalAddress.verify = function verify(message) { + PostalAddress.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.revision != null && message.hasOwnProperty("revision")) if (!$util.isInteger(message.revision)) return "revision: integer expected"; @@ -62718,9 +66717,13 @@ * @param {Object.} object Plain object * @returns {google.type.PostalAddress} PostalAddress */ - PostalAddress.fromObject = function fromObject(object) { + PostalAddress.fromObject = function fromObject(object, long) { if (object instanceof $root.google.type.PostalAddress) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.type.PostalAddress(); if (object.revision != null) message.revision = object.revision | 0; @@ -62868,7 +66871,7 @@ function TimeOfDay(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -62963,9 +66966,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TimeOfDay.decode = function decode(reader, length, error) { + TimeOfDay.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.TimeOfDay(); while (reader.pos < end) { var tag = reader.uint32(); @@ -62989,7 +66996,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -63020,9 +67027,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TimeOfDay.verify = function verify(message) { + TimeOfDay.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.hours != null && message.hasOwnProperty("hours")) if (!$util.isInteger(message.hours)) return "hours: integer expected"; @@ -63046,9 +67057,13 @@ * @param {Object.} object Plain object * @returns {google.type.TimeOfDay} TimeOfDay */ - TimeOfDay.fromObject = function fromObject(object) { + TimeOfDay.fromObject = function fromObject(object, long) { if (object instanceof $root.google.type.TimeOfDay) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.type.TimeOfDay(); if (object.hours != null) message.hours = object.hours | 0; @@ -63356,7 +67371,7 @@ function Operation(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -63475,9 +67490,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Operation.decode = function decode(reader, length, error) { + Operation.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.Operation(); while (reader.pos < end) { var tag = reader.uint32(); @@ -63489,7 +67508,7 @@ break; } case 2: { - message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32()); + message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1); break; } case 3: { @@ -63497,15 +67516,15 @@ break; } case 4: { - message.error = $root.google.rpc.Status.decode(reader, reader.uint32()); + message.error = $root.google.rpc.Status.decode(reader, reader.uint32(), undefined, long + 1); break; } case 5: { - message.response = $root.google.protobuf.Any.decode(reader, reader.uint32()); + message.response = $root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -63536,15 +67555,19 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Operation.verify = function verify(message) { + Operation.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; var properties = {}; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; if (message.metadata != null && message.hasOwnProperty("metadata")) { - var error = $root.google.protobuf.Any.verify(message.metadata); + var error = $root.google.protobuf.Any.verify(message.metadata, long + 1); if (error) return "metadata." + error; } @@ -63554,7 +67577,7 @@ if (message.error != null && message.hasOwnProperty("error")) { properties.result = 1; { - var error = $root.google.rpc.Status.verify(message.error); + var error = $root.google.rpc.Status.verify(message.error, long + 1); if (error) return "error." + error; } @@ -63564,7 +67587,7 @@ return "result: multiple values"; properties.result = 1; { - var error = $root.google.protobuf.Any.verify(message.response); + var error = $root.google.protobuf.Any.verify(message.response, long + 1); if (error) return "response." + error; } @@ -63580,28 +67603,32 @@ * @param {Object.} object Plain object * @returns {google.longrunning.Operation} Operation */ - Operation.fromObject = function fromObject(object) { + Operation.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.Operation) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.Operation(); if (object.name != null) message.name = String(object.name); if (object.metadata != null) { if (typeof object.metadata !== "object") throw TypeError(".google.longrunning.Operation.metadata: object expected"); - message.metadata = $root.google.protobuf.Any.fromObject(object.metadata); + message.metadata = $root.google.protobuf.Any.fromObject(object.metadata, long + 1); } if (object.done != null) message.done = Boolean(object.done); if (object.error != null) { if (typeof object.error !== "object") throw TypeError(".google.longrunning.Operation.error: object expected"); - message.error = $root.google.rpc.Status.fromObject(object.error); + message.error = $root.google.rpc.Status.fromObject(object.error, long + 1); } if (object.response != null) { if (typeof object.response !== "object") throw TypeError(".google.longrunning.Operation.response: object expected"); - message.response = $root.google.protobuf.Any.fromObject(object.response); + message.response = $root.google.protobuf.Any.fromObject(object.response, long + 1); } return message; }; @@ -63692,7 +67719,7 @@ function GetOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -63757,9 +67784,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GetOperationRequest.decode = function decode(reader, length, error) { + GetOperationRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.GetOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -63771,7 +67802,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -63802,9 +67833,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - GetOperationRequest.verify = function verify(message) { + GetOperationRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -63819,9 +67854,13 @@ * @param {Object.} object Plain object * @returns {google.longrunning.GetOperationRequest} GetOperationRequest */ - GetOperationRequest.fromObject = function fromObject(object) { + GetOperationRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.GetOperationRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.GetOperationRequest(); if (object.name != null) message.name = String(object.name); @@ -63900,7 +67939,7 @@ function ListOperationsRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -63995,9 +68034,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListOperationsRequest.decode = function decode(reader, length, error) { + ListOperationsRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -64021,7 +68064,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -64052,9 +68095,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListOperationsRequest.verify = function verify(message) { + ListOperationsRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -64078,9 +68125,13 @@ * @param {Object.} object Plain object * @returns {google.longrunning.ListOperationsRequest} ListOperationsRequest */ - ListOperationsRequest.fromObject = function fromObject(object) { + ListOperationsRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.ListOperationsRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.ListOperationsRequest(); if (object.name != null) message.name = String(object.name); @@ -64174,7 +68225,7 @@ this.operations = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -64250,9 +68301,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - ListOperationsResponse.decode = function decode(reader, length, error) { + ListOperationsResponse.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsResponse(); while (reader.pos < end) { var tag = reader.uint32(); @@ -64262,7 +68317,7 @@ case 1: { if (!(message.operations && message.operations.length)) message.operations = []; - message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32())); + message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32(), undefined, long + 1)); break; } case 2: { @@ -64270,7 +68325,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -64301,14 +68356,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - ListOperationsResponse.verify = function verify(message) { + ListOperationsResponse.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.operations != null && message.hasOwnProperty("operations")) { if (!Array.isArray(message.operations)) return "operations: array expected"; for (var i = 0; i < message.operations.length; ++i) { - var error = $root.google.longrunning.Operation.verify(message.operations[i]); + var error = $root.google.longrunning.Operation.verify(message.operations[i], long + 1); if (error) return "operations." + error; } @@ -64327,9 +68386,13 @@ * @param {Object.} object Plain object * @returns {google.longrunning.ListOperationsResponse} ListOperationsResponse */ - ListOperationsResponse.fromObject = function fromObject(object) { + ListOperationsResponse.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.ListOperationsResponse) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.ListOperationsResponse(); if (object.operations) { if (!Array.isArray(object.operations)) @@ -64338,7 +68401,7 @@ for (var i = 0; i < object.operations.length; ++i) { if (typeof object.operations[i] !== "object") throw TypeError(".google.longrunning.ListOperationsResponse.operations: object expected"); - message.operations[i] = $root.google.longrunning.Operation.fromObject(object.operations[i]); + message.operations[i] = $root.google.longrunning.Operation.fromObject(object.operations[i], long + 1); } } if (object.nextPageToken != null) @@ -64422,7 +68485,7 @@ function CancelOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -64487,9 +68550,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - CancelOperationRequest.decode = function decode(reader, length, error) { + CancelOperationRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.CancelOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -64501,7 +68568,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -64532,9 +68599,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - CancelOperationRequest.verify = function verify(message) { + CancelOperationRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -64549,9 +68620,13 @@ * @param {Object.} object Plain object * @returns {google.longrunning.CancelOperationRequest} CancelOperationRequest */ - CancelOperationRequest.fromObject = function fromObject(object) { + CancelOperationRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.CancelOperationRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.CancelOperationRequest(); if (object.name != null) message.name = String(object.name); @@ -64627,7 +68702,7 @@ function DeleteOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -64692,9 +68767,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - DeleteOperationRequest.decode = function decode(reader, length, error) { + DeleteOperationRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.DeleteOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -64706,7 +68785,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -64737,9 +68816,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - DeleteOperationRequest.verify = function verify(message) { + DeleteOperationRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; @@ -64754,9 +68837,13 @@ * @param {Object.} object Plain object * @returns {google.longrunning.DeleteOperationRequest} DeleteOperationRequest */ - DeleteOperationRequest.fromObject = function fromObject(object) { + DeleteOperationRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.DeleteOperationRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.DeleteOperationRequest(); if (object.name != null) message.name = String(object.name); @@ -64833,7 +68920,7 @@ function WaitOperationRequest(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -64908,9 +68995,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - WaitOperationRequest.decode = function decode(reader, length, error) { + WaitOperationRequest.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.WaitOperationRequest(); while (reader.pos < end) { var tag = reader.uint32(); @@ -64922,11 +69013,11 @@ break; } case 2: { - message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -64957,14 +69048,18 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - WaitOperationRequest.verify = function verify(message) { + WaitOperationRequest.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; if (message.timeout != null && message.hasOwnProperty("timeout")) { - var error = $root.google.protobuf.Duration.verify(message.timeout); + var error = $root.google.protobuf.Duration.verify(message.timeout, long + 1); if (error) return "timeout." + error; } @@ -64979,16 +69074,20 @@ * @param {Object.} object Plain object * @returns {google.longrunning.WaitOperationRequest} WaitOperationRequest */ - WaitOperationRequest.fromObject = function fromObject(object) { + WaitOperationRequest.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.WaitOperationRequest) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.WaitOperationRequest(); if (object.name != null) message.name = String(object.name); if (object.timeout != null) { if (typeof object.timeout !== "object") throw TypeError(".google.longrunning.WaitOperationRequest.timeout: object expected"); - message.timeout = $root.google.protobuf.Duration.fromObject(object.timeout); + message.timeout = $root.google.protobuf.Duration.fromObject(object.timeout, long + 1); } return message; }; @@ -65067,7 +69166,7 @@ function OperationInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -65142,9 +69241,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - OperationInfo.decode = function decode(reader, length, error) { + OperationInfo.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.OperationInfo(); while (reader.pos < end) { var tag = reader.uint32(); @@ -65160,7 +69263,7 @@ break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -65191,9 +69294,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - OperationInfo.verify = function verify(message) { + OperationInfo.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.responseType != null && message.hasOwnProperty("responseType")) if (!$util.isString(message.responseType)) return "responseType: string expected"; @@ -65211,9 +69318,13 @@ * @param {Object.} object Plain object * @returns {google.longrunning.OperationInfo} OperationInfo */ - OperationInfo.fromObject = function fromObject(object) { + OperationInfo.fromObject = function fromObject(object, long) { if (object instanceof $root.google.longrunning.OperationInfo) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.longrunning.OperationInfo(); if (object.responseType != null) message.responseType = String(object.responseType); @@ -65310,7 +69421,7 @@ this.details = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) + if (properties[keys[i]] != null && keys[i] !== "__proto__") this[keys[i]] = properties[keys[i]]; } @@ -65396,9 +69507,13 @@ * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Status.decode = function decode(reader, length, error) { + Status.decode = function decode(reader, length, error, long) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + if (long === undefined) + long = 0; + if (long > $Reader.recursionLimit) + throw Error("maximum nesting depth exceeded"); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.rpc.Status(); while (reader.pos < end) { var tag = reader.uint32(); @@ -65416,11 +69531,11 @@ case 3: { if (!(message.details && message.details.length)) message.details = []; - message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32())); + message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1)); break; } default: - reader.skipType(tag & 7); + reader.skipType(tag & 7, long); break; } } @@ -65451,9 +69566,13 @@ * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Status.verify = function verify(message) { + Status.verify = function verify(message, long) { if (typeof message !== "object" || message === null) return "object expected"; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + return "maximum nesting depth exceeded"; if (message.code != null && message.hasOwnProperty("code")) if (!$util.isInteger(message.code)) return "code: integer expected"; @@ -65464,7 +69583,7 @@ if (!Array.isArray(message.details)) return "details: array expected"; for (var i = 0; i < message.details.length; ++i) { - var error = $root.google.protobuf.Any.verify(message.details[i]); + var error = $root.google.protobuf.Any.verify(message.details[i], long + 1); if (error) return "details." + error; } @@ -65480,9 +69599,13 @@ * @param {Object.} object Plain object * @returns {google.rpc.Status} Status */ - Status.fromObject = function fromObject(object) { + Status.fromObject = function fromObject(object, long) { if (object instanceof $root.google.rpc.Status) return object; + if (long === undefined) + long = 0; + if (long > $util.recursionLimit) + throw Error("maximum nesting depth exceeded"); var message = new $root.google.rpc.Status(); if (object.code != null) message.code = object.code | 0; @@ -65495,7 +69618,7 @@ for (var i = 0; i < object.details.length; ++i) { if (typeof object.details[i] !== "object") throw TypeError(".google.rpc.Status.details: object expected"); - message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i]); + message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i], long + 1); } } return message; diff --git a/packages/google-cloud-talent/protos/protos.json b/packages/google-cloud-talent/protos/protos.json index 1a71aefab0df..5424bec49fae 100644 --- a/packages/google-cloud-talent/protos/protos.json +++ b/packages/google-cloud-talent/protos/protos.json @@ -4650,8 +4650,7 @@ "java_multiple_files": true, "java_outer_classname": "LaunchStageProto", "java_package": "com.google.api", - "objc_class_prefix": "GAPI", - "cc_enable_arenas": true + "objc_class_prefix": "GAPI" }, "nested": { "fieldBehavior": { @@ -4874,6 +4873,10 @@ "rule": "repeated", "type": "ClientLibraryDestination", "id": 2 + }, + "selectiveGapicGeneration": { + "type": "SelectiveGapicGeneration", + "id": 3 } } }, @@ -5014,6 +5017,28 @@ "common": { "type": "CommonLanguageSettings", "id": 1 + }, + "experimentalFeatures": { + "type": "ExperimentalFeatures", + "id": 2 + } + }, + "nested": { + "ExperimentalFeatures": { + "fields": { + "restAsyncIoEnabled": { + "type": "bool", + "id": 1 + }, + "protobufPythonicTypesEnabled": { + "type": "bool", + "id": 2 + }, + "unversionedPackageDisabled": { + "type": "bool", + "id": 3 + } + } } } }, @@ -5071,6 +5096,11 @@ "common": { "type": "CommonLanguageSettings", "id": 1 + }, + "renamedServices": { + "keyType": "string", + "type": "string", + "id": 2 } } }, @@ -5132,6 +5162,19 @@ "PACKAGE_MANAGER": 20 } }, + "SelectiveGapicGeneration": { + "fields": { + "methods": { + "rule": "repeated", + "type": "string", + "id": 1 + }, + "generateOmittedAsInternal": { + "type": "bool", + "id": 2 + } + } + }, "LaunchStage": { "values": { "LAUNCH_STAGE_UNSPECIFIED": 0, @@ -5165,12 +5208,19 @@ "type": "FileDescriptorProto", "id": 1 } - } + }, + "extensions": [ + [ + 536000000, + 536000000 + ] + ] }, "Edition": { "edition": "proto2", "values": { "EDITION_UNKNOWN": 0, + "EDITION_LEGACY": 900, "EDITION_PROTO2": 998, "EDITION_PROTO3": 999, "EDITION_2023": 1000, @@ -5209,6 +5259,11 @@ "type": "int32", "id": 11 }, + "optionDependency": { + "rule": "repeated", + "type": "string", + "id": 15 + }, "messageType": { "rule": "repeated", "type": "DescriptorProto", @@ -5297,6 +5352,10 @@ "rule": "repeated", "type": "string", "id": 10 + }, + "visibility": { + "type": "SymbolVisibility", + "id": 11 } }, "nested": { @@ -5522,6 +5581,10 @@ "rule": "repeated", "type": "string", "id": 5 + }, + "visibility": { + "type": "SymbolVisibility", + "id": 6 } }, "nested": { @@ -5572,7 +5635,14 @@ "type": "ServiceOptions", "id": 3 } - } + }, + "reserved": [ + [ + 4, + 4 + ], + "stream" + ] }, "MethodDescriptorProto": { "edition": "proto2", @@ -5736,6 +5806,7 @@ 42, 42 ], + "php_generic_services", [ 38, 38 @@ -5871,7 +5942,8 @@ "type": "bool", "id": 10, "options": { - "default": false + "default": false, + "deprecated": true } }, "debugRedact": { @@ -5899,6 +5971,10 @@ "type": "FeatureSet", "id": 21 }, + "featureSupport": { + "type": "FeatureSupport", + "id": 22 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -5968,6 +6044,26 @@ "id": 2 } } + }, + "FeatureSupport": { + "fields": { + "editionIntroduced": { + "type": "Edition", + "id": 1 + }, + "editionDeprecated": { + "type": "Edition", + "id": 2 + }, + "deprecationWarning": { + "type": "string", + "id": 3 + }, + "editionRemoved": { + "type": "Edition", + "id": 4 + } + } } } }, @@ -6056,6 +6152,10 @@ "default": false } }, + "featureSupport": { + "type": "FieldOptions.FeatureSupport", + "id": 4 + }, "uninterpretedOption": { "rule": "repeated", "type": "UninterpretedOption", @@ -6198,6 +6298,7 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", "edition_defaults.edition": "EDITION_2023", "edition_defaults.value": "EXPLICIT" } @@ -6208,6 +6309,7 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", "edition_defaults.edition": "EDITION_PROTO3", "edition_defaults.value": "OPEN" } @@ -6218,6 +6320,7 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", "edition_defaults.edition": "EDITION_PROTO3", "edition_defaults.value": "PACKED" } @@ -6228,6 +6331,7 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", "edition_defaults.edition": "EDITION_PROTO3", "edition_defaults.value": "VERIFY" } @@ -6238,7 +6342,8 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", - "edition_defaults.edition": "EDITION_PROTO2", + "feature_support.edition_introduced": "EDITION_2023", + "edition_defaults.edition": "EDITION_LEGACY", "edition_defaults.value": "LENGTH_PREFIXED" } }, @@ -6248,27 +6353,38 @@ "options": { "retention": "RETENTION_RUNTIME", "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2023", "edition_defaults.edition": "EDITION_PROTO3", "edition_defaults.value": "ALLOW" } + }, + "enforceNamingStyle": { + "type": "EnforceNamingStyle", + "id": 7, + "options": { + "retention": "RETENTION_SOURCE", + "targets": "TARGET_TYPE_METHOD", + "feature_support.edition_introduced": "EDITION_2024", + "edition_defaults.edition": "EDITION_2024", + "edition_defaults.value": "STYLE2024" + } + }, + "defaultSymbolVisibility": { + "type": "VisibilityFeature.DefaultSymbolVisibility", + "id": 8, + "options": { + "retention": "RETENTION_SOURCE", + "targets": "TARGET_TYPE_FILE", + "feature_support.edition_introduced": "EDITION_2024", + "edition_defaults.edition": "EDITION_2024", + "edition_defaults.value": "EXPORT_TOP_LEVEL" + } } }, "extensions": [ [ 1000, - 1000 - ], - [ - 1001, - 1001 - ], - [ - 1002, - 1002 - ], - [ - 9990, - 9990 + 9994 ], [ 9995, @@ -6313,7 +6429,13 @@ "UTF8_VALIDATION_UNKNOWN": 0, "VERIFY": 2, "NONE": 3 - } + }, + "reserved": [ + [ + 1, + 1 + ] + ] }, "MessageEncoding": { "values": { @@ -6328,6 +6450,33 @@ "ALLOW": 1, "LEGACY_BEST_EFFORT": 2 } + }, + "EnforceNamingStyle": { + "values": { + "ENFORCE_NAMING_STYLE_UNKNOWN": 0, + "STYLE2024": 1, + "STYLE_LEGACY": 2 + } + }, + "VisibilityFeature": { + "fields": {}, + "reserved": [ + [ + 1, + 536870911 + ] + ], + "nested": { + "DefaultSymbolVisibility": { + "values": { + "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0, + "EXPORT_ALL": 1, + "EXPORT_TOP_LEVEL": 2, + "LOCAL_ALL": 3, + "STRICT": 4 + } + } + } } } }, @@ -6355,11 +6504,26 @@ "type": "Edition", "id": 3 }, - "features": { + "overridableFeatures": { "type": "FeatureSet", - "id": 2 + "id": 4 + }, + "fixedFeatures": { + "type": "FeatureSet", + "id": 5 } - } + }, + "reserved": [ + [ + 1, + 1 + ], + [ + 2, + 2 + ], + "features" + ] } } }, @@ -6372,6 +6536,12 @@ "id": 1 } }, + "extensions": [ + [ + 536000000, + 536000000 + ] + ], "nested": { "Location": { "fields": { @@ -6457,6 +6627,14 @@ } } }, + "SymbolVisibility": { + "edition": "proto2", + "values": { + "VISIBILITY_UNSET": 0, + "VISIBILITY_LOCAL": 1, + "VISIBILITY_EXPORT": 2 + } + }, "Timestamp": { "fields": { "seconds": { @@ -6697,6 +6875,7 @@ "java_multiple_files": true, "java_outer_classname": "OperationsProto", "java_package": "com.google.longrunning", + "objc_class_prefix": "GLRUN", "php_namespace": "Google\\LongRunning" }, "nested": { diff --git a/packages/google-cloud-talent/src/v4/company_service_client.ts b/packages/google-cloud-talent/src/v4/company_service_client.ts index 3b40b61e6902..08137b6bef81 100644 --- a/packages/google-cloud-talent/src/v4/company_service_client.ts +++ b/packages/google-cloud-talent/src/v4/company_service_client.ts @@ -18,11 +18,18 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall} from 'google-gax'; -import {Transform} from 'stream'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, + PaginationCallback, + GaxCall, +} from 'google-gax'; +import { Transform } from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +51,7 @@ export class CompanyServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +64,9 @@ export class CompanyServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - companyServiceStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + companyServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of CompanyServiceClient. @@ -100,21 +107,42 @@ export class CompanyServiceClient { * const client = new CompanyServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof CompanyServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +167,7 @@ export class CompanyServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +181,7 @@ export class CompanyServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,13 +203,13 @@ export class CompanyServiceClient { // Create useful helper objects for these. this.pathTemplates = { companyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), jobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; @@ -192,14 +217,20 @@ export class CompanyServiceClient { // (e.g. 50 results at a time, with tokens to get subsequent // pages). Denote the keys used for pagination and results. this.descriptors.page = { - listCompanies: - new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'companies') + listCompanies: new this._gaxModule.PageDescriptor( + 'pageToken', + 'nextPageToken', + 'companies', + ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4.CompanyService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4.CompanyService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -230,37 +261,46 @@ export class CompanyServiceClient { // Put together the "service stub" for // google.cloud.talent.v4.CompanyService. this.companyServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4.CompanyService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4.CompanyService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4.CompanyService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const companyServiceStubMethods = - ['createCompany', 'getCompany', 'updateCompany', 'deleteCompany', 'listCompanies']; + const companyServiceStubMethods = [ + 'createCompany', + 'getCompany', + 'updateCompany', + 'deleteCompany', + 'listCompanies', + ]; for (const methodName of companyServiceStubMethods) { const callPromise = this.companyServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - this.descriptors.page[methodName] || - undefined; + const descriptor = this.descriptors.page[methodName] || undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -275,8 +315,14 @@ export class CompanyServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -287,8 +333,14 @@ export class CompanyServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -321,7 +373,7 @@ export class CompanyServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -331,8 +383,9 @@ export class CompanyServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -343,502 +396,653 @@ export class CompanyServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Creates a new company entity. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {google.cloud.talent.v4.Company} request.company - * Required. The company to be created. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Company|Company}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/company_service.create_company.js - * region_tag:jobs_v4_generated_CompanyService_CreateCompany_async - */ + /** + * Creates a new company entity. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {google.cloud.talent.v4.Company} request.company + * Required. The company to be created. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Company|Company}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/company_service.create_company.js + * region_tag:jobs_v4_generated_CompanyService_CreateCompany_async + */ createCompany( - request?: protos.google.cloud.talent.v4.ICreateCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.ICreateCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.ICreateCompanyRequest | undefined, + {} | undefined, + ] + >; createCompany( - request: protos.google.cloud.talent.v4.ICreateCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.ICreateCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; createCompany( - request: protos.google.cloud.talent.v4.ICreateCompanyRequest, - callback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateCompanyRequest, + callback: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.ICreateCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; createCompany( - request?: protos.google.cloud.talent.v4.ICreateCompanyRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.ICreateCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4.ICreateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.ICreateCompanyRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.ICreateCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createCompany request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ICompany, + | protos.google.cloud.talent.v4.ICreateCompanyRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.ICreateCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('createCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.ICreateCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('createCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Retrieves specified company. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the company to be retrieved. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for - * example, "projects/api-test-project/tenants/foo/companies/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Company|Company}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/company_service.get_company.js - * region_tag:jobs_v4_generated_CompanyService_GetCompany_async - */ + /** + * Retrieves specified company. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the company to be retrieved. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for + * example, "projects/api-test-project/tenants/foo/companies/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Company|Company}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/company_service.get_company.js + * region_tag:jobs_v4_generated_CompanyService_GetCompany_async + */ getCompany( - request?: protos.google.cloud.talent.v4.IGetCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IGetCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IGetCompanyRequest | undefined, + {} | undefined, + ] + >; getCompany( - request: protos.google.cloud.talent.v4.IGetCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IGetCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IGetCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; getCompany( - request: protos.google.cloud.talent.v4.IGetCompanyRequest, - callback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IGetCompanyRequest, + callback: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IGetCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; getCompany( - request?: protos.google.cloud.talent.v4.IGetCompanyRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.IGetCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.IGetCompanyRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IGetCompanyRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IGetCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('getCompany request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IGetCompanyRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('getCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.getCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IGetCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('getCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .getCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IGetCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('getCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Updates specified company. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.cloud.talent.v4.Company} request.company - * Required. The company resource to replace the current resource in the - * system. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. - * - * If {@link protos.google.cloud.talent.v4.UpdateCompanyRequest.update_mask|update_mask} - * is provided, only the specified fields in - * {@link protos.google.cloud.talent.v4.UpdateCompanyRequest.company|company} are updated. - * Otherwise all the fields are updated. - * - * A field mask to specify the company fields to be updated. Only - * top level fields of {@link protos.google.cloud.talent.v4.Company|Company} are - * supported. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Company|Company}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/company_service.update_company.js - * region_tag:jobs_v4_generated_CompanyService_UpdateCompany_async - */ + /** + * Updates specified company. + * + * @param {Object} request + * The request object that will be sent. + * @param {google.cloud.talent.v4.Company} request.company + * Required. The company resource to replace the current resource in the + * system. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. + * + * If {@link protos.google.cloud.talent.v4.UpdateCompanyRequest.update_mask|update_mask} + * is provided, only the specified fields in + * {@link protos.google.cloud.talent.v4.UpdateCompanyRequest.company|company} are updated. + * Otherwise all the fields are updated. + * + * A field mask to specify the company fields to be updated. Only + * top level fields of {@link protos.google.cloud.talent.v4.Company|Company} are + * supported. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Company|Company}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/company_service.update_company.js + * region_tag:jobs_v4_generated_CompanyService_UpdateCompany_async + */ updateCompany( - request?: protos.google.cloud.talent.v4.IUpdateCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IUpdateCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IUpdateCompanyRequest | undefined, + {} | undefined, + ] + >; updateCompany( - request: protos.google.cloud.talent.v4.IUpdateCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IUpdateCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IUpdateCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; updateCompany( - request: protos.google.cloud.talent.v4.IUpdateCompanyRequest, - callback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IUpdateCompanyRequest, + callback: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IUpdateCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; updateCompany( - request?: protos.google.cloud.talent.v4.IUpdateCompanyRequest, - optionsOrCallback?: CallOptions|Callback< + request?: protos.google.cloud.talent.v4.IUpdateCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4.IUpdateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IUpdateCompanyRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IUpdateCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'company.name': request.company!.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + 'company.name': request.company!.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('updateCompany request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ICompany, + | protos.google.cloud.talent.v4.IUpdateCompanyRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('updateCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.updateCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ICompany, - protos.google.cloud.talent.v4.IUpdateCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('updateCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .updateCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ICompany, + protos.google.cloud.talent.v4.IUpdateCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('updateCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Deletes specified company. - * Prerequisite: The company has no jobs associated with it. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the company to be deleted. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for - * example, "projects/foo/tenants/bar/companies/baz". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/company_service.delete_company.js - * region_tag:jobs_v4_generated_CompanyService_DeleteCompany_async - */ + /** + * Deletes specified company. + * Prerequisite: The company has no jobs associated with it. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the company to be deleted. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for + * example, "projects/foo/tenants/bar/companies/baz". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/company_service.delete_company.js + * region_tag:jobs_v4_generated_CompanyService_DeleteCompany_async + */ deleteCompany( - request?: protos.google.cloud.talent.v4.IDeleteCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IDeleteCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteCompanyRequest | undefined, + {} | undefined, + ] + >; deleteCompany( - request: protos.google.cloud.talent.v4.IDeleteCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IDeleteCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteCompany( - request: protos.google.cloud.talent.v4.IDeleteCompanyRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IDeleteCompanyRequest, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteCompany( - request?: protos.google.cloud.talent.v4.IDeleteCompanyRequest, - optionsOrCallback?: CallOptions|Callback< + request?: protos.google.cloud.talent.v4.IDeleteCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4.IDeleteCompanyRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteCompanyRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('deleteCompany request %j', request); - const wrappedCallback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4.IDeleteCompanyRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('deleteCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.deleteCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('deleteCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .deleteCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('deleteCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } - /** - * Lists all companies associated with the project. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of companies to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {boolean} request.requireOpenJobs - * Set to true if the companies requested must have open jobs. - * - * Defaults to false. - * - * If true, at most - * {@link protos.google.cloud.talent.v4.ListCompaniesRequest.page_size|page_size} of - * companies are fetched, among which only those with open jobs are returned. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.cloud.talent.v4.Company|Company}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listCompaniesAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Lists all companies associated with the project. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of companies to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {boolean} request.requireOpenJobs + * Set to true if the companies requested must have open jobs. + * + * Defaults to false. + * + * If true, at most + * {@link protos.google.cloud.talent.v4.ListCompaniesRequest.page_size|page_size} of + * companies are fetched, among which only those with open jobs are returned. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is Array of {@link protos.google.cloud.talent.v4.Company|Company}. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed and will merge results from all the pages into this array. + * Note that it can affect your quota. + * We recommend using `listCompaniesAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listCompanies( - request?: protos.google.cloud.talent.v4.IListCompaniesRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ICompany[], - protos.google.cloud.talent.v4.IListCompaniesRequest|null, - protos.google.cloud.talent.v4.IListCompaniesResponse - ]>; + request?: protos.google.cloud.talent.v4.IListCompaniesRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany[], + protos.google.cloud.talent.v4.IListCompaniesRequest | null, + protos.google.cloud.talent.v4.IListCompaniesResponse, + ] + >; listCompanies( - request: protos.google.cloud.talent.v4.IListCompaniesRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.cloud.talent.v4.IListCompaniesRequest, - protos.google.cloud.talent.v4.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4.ICompany>): void; + request: protos.google.cloud.talent.v4.IListCompaniesRequest, + options: CallOptions, + callback: PaginationCallback< + protos.google.cloud.talent.v4.IListCompaniesRequest, + protos.google.cloud.talent.v4.IListCompaniesResponse | null | undefined, + protos.google.cloud.talent.v4.ICompany + >, + ): void; listCompanies( - request: protos.google.cloud.talent.v4.IListCompaniesRequest, - callback: PaginationCallback< - protos.google.cloud.talent.v4.IListCompaniesRequest, - protos.google.cloud.talent.v4.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4.ICompany>): void; + request: protos.google.cloud.talent.v4.IListCompaniesRequest, + callback: PaginationCallback< + protos.google.cloud.talent.v4.IListCompaniesRequest, + protos.google.cloud.talent.v4.IListCompaniesResponse | null | undefined, + protos.google.cloud.talent.v4.ICompany + >, + ): void; listCompanies( - request?: protos.google.cloud.talent.v4.IListCompaniesRequest, - optionsOrCallback?: CallOptions|PaginationCallback< - protos.google.cloud.talent.v4.IListCompaniesRequest, - protos.google.cloud.talent.v4.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4.ICompany>, - callback?: PaginationCallback< + request?: protos.google.cloud.talent.v4.IListCompaniesRequest, + optionsOrCallback?: + | CallOptions + | PaginationCallback< protos.google.cloud.talent.v4.IListCompaniesRequest, - protos.google.cloud.talent.v4.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4.ICompany>): - Promise<[ - protos.google.cloud.talent.v4.ICompany[], - protos.google.cloud.talent.v4.IListCompaniesRequest|null, - protos.google.cloud.talent.v4.IListCompaniesResponse - ]>|void { + | protos.google.cloud.talent.v4.IListCompaniesResponse + | null + | undefined, + protos.google.cloud.talent.v4.ICompany + >, + callback?: PaginationCallback< + protos.google.cloud.talent.v4.IListCompaniesRequest, + protos.google.cloud.talent.v4.IListCompaniesResponse | null | undefined, + protos.google.cloud.talent.v4.ICompany + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompany[], + protos.google.cloud.talent.v4.IListCompaniesRequest | null, + protos.google.cloud.talent.v4.IListCompaniesResponse, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: PaginationCallback< - protos.google.cloud.talent.v4.IListCompaniesRequest, - protos.google.cloud.talent.v4.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4.ICompany>|undefined = callback + const wrappedCallback: + | PaginationCallback< + protos.google.cloud.talent.v4.IListCompaniesRequest, + | protos.google.cloud.talent.v4.IListCompaniesResponse + | null + | undefined, + protos.google.cloud.talent.v4.ICompany + > + | undefined = callback ? (error, values, nextPageRequest, rawResponse) => { this._log.info('listCompanies values %j', values); callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. @@ -847,130 +1051,134 @@ export class CompanyServiceClient { this._log.info('listCompanies request %j', request); return this.innerApiCalls .listCompanies(request, options, wrappedCallback) - ?.then(([response, input, output]: [ - protos.google.cloud.talent.v4.ICompany[], - protos.google.cloud.talent.v4.IListCompaniesRequest|null, - protos.google.cloud.talent.v4.IListCompaniesResponse - ]) => { - this._log.info('listCompanies values %j', response); - return [response, input, output]; - }); + ?.then( + ([response, input, output]: [ + protos.google.cloud.talent.v4.ICompany[], + protos.google.cloud.talent.v4.IListCompaniesRequest | null, + protos.google.cloud.talent.v4.IListCompaniesResponse, + ]) => { + this._log.info('listCompanies values %j', response); + return [response, input, output]; + }, + ); } -/** - * Equivalent to `listCompanies`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of companies to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {boolean} request.requireOpenJobs - * Set to true if the companies requested must have open jobs. - * - * Defaults to false. - * - * If true, at most - * {@link protos.google.cloud.talent.v4.ListCompaniesRequest.page_size|page_size} of - * companies are fetched, among which only those with open jobs are returned. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.cloud.talent.v4.Company|Company} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listCompaniesAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Equivalent to `listCompanies`, but returns a NodeJS Stream object. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of companies to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {boolean} request.requireOpenJobs + * Set to true if the companies requested must have open jobs. + * + * Defaults to false. + * + * If true, at most + * {@link protos.google.cloud.talent.v4.ListCompaniesRequest.page_size|page_size} of + * companies are fetched, among which only those with open jobs are returned. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Stream} + * An object stream which emits an object representing {@link protos.google.cloud.talent.v4.Company|Company} on 'data' event. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed. Note that it can affect your quota. + * We recommend using `listCompaniesAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listCompaniesStream( - request?: protos.google.cloud.talent.v4.IListCompaniesRequest, - options?: CallOptions): - Transform{ + request?: protos.google.cloud.talent.v4.IListCompaniesRequest, + options?: CallOptions, + ): Transform { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listCompanies']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listCompanies stream %j', request); return this.descriptors.page.listCompanies.createStream( this.innerApiCalls.listCompanies as GaxCall, request, - callSettings + callSettings, ); } -/** - * Equivalent to `listCompanies`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of companies to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {boolean} request.requireOpenJobs - * Set to true if the companies requested must have open jobs. - * - * Defaults to false. - * - * If true, at most - * {@link protos.google.cloud.talent.v4.ListCompaniesRequest.page_size|page_size} of - * companies are fetched, among which only those with open jobs are returned. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.cloud.talent.v4.Company|Company}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - * @example include:samples/generated/v4/company_service.list_companies.js - * region_tag:jobs_v4_generated_CompanyService_ListCompanies_async - */ + /** + * Equivalent to `listCompanies`, but returns an iterable object. + * + * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of companies to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {boolean} request.requireOpenJobs + * Set to true if the companies requested must have open jobs. + * + * Defaults to false. + * + * If true, at most + * {@link protos.google.cloud.talent.v4.ListCompaniesRequest.page_size|page_size} of + * companies are fetched, among which only those with open jobs are returned. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Object} + * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. + * When you iterate the returned iterable, each element will be an object representing + * {@link protos.google.cloud.talent.v4.Company|Company}. The API will be called under the hood as needed, once per the page, + * so you can stop the iteration when you don't need more results. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + * @example include:samples/generated/v4/company_service.list_companies.js + * region_tag:jobs_v4_generated_CompanyService_ListCompanies_async + */ listCompaniesAsync( - request?: protos.google.cloud.talent.v4.IListCompaniesRequest, - options?: CallOptions): - AsyncIterable{ + request?: protos.google.cloud.talent.v4.IListCompaniesRequest, + options?: CallOptions, + ): AsyncIterable { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listCompanies']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listCompanies iterate %j', request); return this.descriptors.page.listCompanies.asyncIterate( this.innerApiCalls['listCompanies'] as GaxCall, request as {}, - callSettings + callSettings, ) as AsyncIterable; } // -------------------- @@ -985,7 +1193,7 @@ export class CompanyServiceClient { * @param {string} company * @returns {string} Resource name string. */ - companyPath(project:string,tenant:string,company:string) { + companyPath(project: string, tenant: string, company: string) { return this.pathTemplates.companyPathTemplate.render({ project: project, tenant: tenant, @@ -1034,7 +1242,7 @@ export class CompanyServiceClient { * @param {string} job * @returns {string} Resource name string. */ - jobPath(project:string,tenant:string,job:string) { + jobPath(project: string, tenant: string, job: string) { return this.pathTemplates.jobPathTemplate.render({ project: project, tenant: tenant, @@ -1082,7 +1290,7 @@ export class CompanyServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -1119,7 +1327,7 @@ export class CompanyServiceClient { */ close(): Promise { if (this.companyServiceStub && !this._terminated) { - return this.companyServiceStub.then(stub => { + return this.companyServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -1127,4 +1335,4 @@ export class CompanyServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4/completion_client.ts b/packages/google-cloud-talent/src/v4/completion_client.ts index b0b1c8f05fd8..42e81f7bb2d7 100644 --- a/packages/google-cloud-talent/src/v4/completion_client.ts +++ b/packages/google-cloud-talent/src/v4/completion_client.ts @@ -18,11 +18,16 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, +} from 'google-gax'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +49,7 @@ export class CompletionClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +62,9 @@ export class CompletionClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - completionStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + completionStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of CompletionClient. @@ -100,21 +105,42 @@ export class CompletionClient { * const client = new CompletionClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof CompletionClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +165,7 @@ export class CompletionClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +179,7 @@ export class CompletionClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,20 +201,23 @@ export class CompletionClient { // Create useful helper objects for these. this.pathTemplates = { companyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), jobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4.Completion', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4.Completion', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -222,36 +248,40 @@ export class CompletionClient { // Put together the "service stub" for // google.cloud.talent.v4.Completion. this.completionStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4.Completion') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4.Completion', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4.Completion, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const completionStubMethods = - ['completeQuery']; + const completionStubMethods = ['completeQuery']; for (const methodName of completionStubMethods) { const callPromise = this.completionStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - undefined; + const descriptor = undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -266,8 +296,14 @@ export class CompletionClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -278,8 +314,14 @@ export class CompletionClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -312,7 +354,7 @@ export class CompletionClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -322,8 +364,9 @@ export class CompletionClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -334,127 +377,161 @@ export class CompletionClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Completes the specified prefix with keyword suggestions. - * Intended for use by a job search auto-complete search box. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.tenant - * Required. Resource name of tenant the completion is performed within. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {string} request.query - * Required. The query used to generate suggestions. - * - * The maximum number of allowed characters is 255. - * @param {string[]} request.languageCodes - * The list of languages of the query. This is - * the BCP-47 language code, such as "en-US" or "sr-Latn". - * For more information, see - * [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). - * - * The maximum number of allowed characters is 255. - * @param {number} request.pageSize - * Required. Completion result count. - * - * The maximum allowed page size is 10. - * @param {string} request.company - * If provided, restricts completion to specified company. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for - * example, "projects/foo/tenants/bar/companies/baz". - * @param {google.cloud.talent.v4.CompleteQueryRequest.CompletionScope} request.scope - * The scope of the completion. The defaults is - * {@link protos.google.cloud.talent.v4.CompleteQueryRequest.CompletionScope.PUBLIC|CompletionScope.PUBLIC}. - * @param {google.cloud.talent.v4.CompleteQueryRequest.CompletionType} request.type - * The completion topic. The default is - * {@link protos.google.cloud.talent.v4.CompleteQueryRequest.CompletionType.COMBINED|CompletionType.COMBINED}. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.CompleteQueryResponse|CompleteQueryResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/completion.complete_query.js - * region_tag:jobs_v4_generated_Completion_CompleteQuery_async - */ + /** + * Completes the specified prefix with keyword suggestions. + * Intended for use by a job search auto-complete search box. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.tenant + * Required. Resource name of tenant the completion is performed within. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {string} request.query + * Required. The query used to generate suggestions. + * + * The maximum number of allowed characters is 255. + * @param {string[]} request.languageCodes + * The list of languages of the query. This is + * the BCP-47 language code, such as "en-US" or "sr-Latn". + * For more information, see + * [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). + * + * The maximum number of allowed characters is 255. + * @param {number} request.pageSize + * Required. Completion result count. + * + * The maximum allowed page size is 10. + * @param {string} request.company + * If provided, restricts completion to specified company. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for + * example, "projects/foo/tenants/bar/companies/baz". + * @param {google.cloud.talent.v4.CompleteQueryRequest.CompletionScope} request.scope + * The scope of the completion. The defaults is + * {@link protos.google.cloud.talent.v4.CompleteQueryRequest.CompletionScope.PUBLIC|CompletionScope.PUBLIC}. + * @param {google.cloud.talent.v4.CompleteQueryRequest.CompletionType} request.type + * The completion topic. The default is + * {@link protos.google.cloud.talent.v4.CompleteQueryRequest.CompletionType.COMBINED|CompletionType.COMBINED}. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.CompleteQueryResponse|CompleteQueryResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/completion.complete_query.js + * region_tag:jobs_v4_generated_Completion_CompleteQuery_async + */ completeQuery( - request?: protos.google.cloud.talent.v4.ICompleteQueryRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.ICompleteQueryRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompleteQueryResponse, + protos.google.cloud.talent.v4.ICompleteQueryRequest | undefined, + {} | undefined, + ] + >; completeQuery( - request: protos.google.cloud.talent.v4.ICompleteQueryRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICompleteQueryRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ICompleteQueryResponse, + protos.google.cloud.talent.v4.ICompleteQueryRequest | null | undefined, + {} | null | undefined + >, + ): void; completeQuery( - request: protos.google.cloud.talent.v4.ICompleteQueryRequest, - callback: Callback< - protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICompleteQueryRequest, + callback: Callback< + protos.google.cloud.talent.v4.ICompleteQueryResponse, + protos.google.cloud.talent.v4.ICompleteQueryRequest | null | undefined, + {} | null | undefined + >, + ): void; completeQuery( - request?: protos.google.cloud.talent.v4.ICompleteQueryRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.ICompleteQueryRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4.ICompleteQueryRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ICompleteQueryResponse, + protos.google.cloud.talent.v4.ICompleteQueryRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ICompleteQueryResponse, + protos.google.cloud.talent.v4.ICompleteQueryRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'tenant': request.tenant ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + tenant: request.tenant ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('completeQuery request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ICompleteQueryResponse, + | protos.google.cloud.talent.v4.ICompleteQueryRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('completeQuery response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.completeQuery(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ICompleteQueryResponse, - protos.google.cloud.talent.v4.ICompleteQueryRequest|undefined, - {}|undefined - ]) => { - this._log.info('completeQuery response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .completeQuery(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ICompleteQueryResponse, + protos.google.cloud.talent.v4.ICompleteQueryRequest | undefined, + {} | undefined, + ]) => { + this._log.info('completeQuery response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); @@ -472,7 +549,7 @@ export class CompletionClient { * @param {string} company * @returns {string} Resource name string. */ - companyPath(project:string,tenant:string,company:string) { + companyPath(project: string, tenant: string, company: string) { return this.pathTemplates.companyPathTemplate.render({ project: project, tenant: tenant, @@ -521,7 +598,7 @@ export class CompletionClient { * @param {string} job * @returns {string} Resource name string. */ - jobPath(project:string,tenant:string,job:string) { + jobPath(project: string, tenant: string, job: string) { return this.pathTemplates.jobPathTemplate.render({ project: project, tenant: tenant, @@ -569,7 +646,7 @@ export class CompletionClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -606,7 +683,7 @@ export class CompletionClient { */ close(): Promise { if (this.completionStub && !this._terminated) { - return this.completionStub.then(stub => { + return this.completionStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -614,4 +691,4 @@ export class CompletionClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4/event_service_client.ts b/packages/google-cloud-talent/src/v4/event_service_client.ts index 7ec9a79387f4..3f2f29fda57a 100644 --- a/packages/google-cloud-talent/src/v4/event_service_client.ts +++ b/packages/google-cloud-talent/src/v4/event_service_client.ts @@ -18,11 +18,16 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, +} from 'google-gax'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +49,7 @@ export class EventServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +62,9 @@ export class EventServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - eventServiceStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + eventServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of EventServiceClient. @@ -100,21 +105,42 @@ export class EventServiceClient { * const client = new EventServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof EventServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +165,7 @@ export class EventServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +179,7 @@ export class EventServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,20 +201,23 @@ export class EventServiceClient { // Create useful helper objects for these. this.pathTemplates = { companyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), jobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4.EventService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4.EventService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -222,36 +248,40 @@ export class EventServiceClient { // Put together the "service stub" for // google.cloud.talent.v4.EventService. this.eventServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4.EventService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4.EventService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4.EventService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const eventServiceStubMethods = - ['createClientEvent']; + const eventServiceStubMethods = ['createClientEvent']; for (const methodName of eventServiceStubMethods) { const callPromise = this.eventServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - undefined; + const descriptor = undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -266,8 +296,14 @@ export class EventServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -278,8 +314,14 @@ export class EventServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -312,7 +354,7 @@ export class EventServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -322,8 +364,9 @@ export class EventServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -334,108 +377,148 @@ export class EventServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Report events issued when end user interacts with customer's application - * that uses Cloud Talent Solution. You may inspect the created events in - * [self service - * tools](https://console.cloud.google.com/talent-solution/overview). - * [Learn - * more](https://cloud.google.com/talent-solution/docs/management-tools) - * about self service tools. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the event is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {google.cloud.talent.v4.ClientEvent} request.clientEvent - * Required. Events issued when end user interacts with customer's application - * that uses Cloud Talent Solution. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.ClientEvent|ClientEvent}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/event_service.create_client_event.js - * region_tag:jobs_v4_generated_EventService_CreateClientEvent_async - */ + /** + * Report events issued when end user interacts with customer's application + * that uses Cloud Talent Solution. You may inspect the created events in + * [self service + * tools](https://console.cloud.google.com/talent-solution/overview). + * [Learn + * more](https://cloud.google.com/talent-solution/docs/management-tools) + * about self service tools. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the event is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {google.cloud.talent.v4.ClientEvent} request.clientEvent + * Required. Events issued when end user interacts with customer's application + * that uses Cloud Talent Solution. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.ClientEvent|ClientEvent}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/event_service.create_client_event.js + * region_tag:jobs_v4_generated_EventService_CreateClientEvent_async + */ createClientEvent( - request?: protos.google.cloud.talent.v4.ICreateClientEventRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.ICreateClientEventRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.IClientEvent, + protos.google.cloud.talent.v4.ICreateClientEventRequest | undefined, + {} | undefined, + ] + >; createClientEvent( - request: protos.google.cloud.talent.v4.ICreateClientEventRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateClientEventRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.IClientEvent, + | protos.google.cloud.talent.v4.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createClientEvent( - request: protos.google.cloud.talent.v4.ICreateClientEventRequest, - callback: Callback< - protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateClientEventRequest, + callback: Callback< + protos.google.cloud.talent.v4.IClientEvent, + | protos.google.cloud.talent.v4.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createClientEvent( - request?: protos.google.cloud.talent.v4.ICreateClientEventRequest, - optionsOrCallback?: CallOptions|Callback< + request?: protos.google.cloud.talent.v4.ICreateClientEventRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< - protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.IClientEvent, + | protos.google.cloud.talent.v4.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.IClientEvent, + protos.google.cloud.talent.v4.ICreateClientEventRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createClientEvent request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.IClientEvent, + | protos.google.cloud.talent.v4.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createClientEvent response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createClientEvent(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.IClientEvent, - protos.google.cloud.talent.v4.ICreateClientEventRequest|undefined, - {}|undefined - ]) => { - this._log.info('createClientEvent response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createClientEvent(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.IClientEvent, + protos.google.cloud.talent.v4.ICreateClientEventRequest | undefined, + {} | undefined, + ]) => { + this._log.info('createClientEvent response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); @@ -453,7 +536,7 @@ export class EventServiceClient { * @param {string} company * @returns {string} Resource name string. */ - companyPath(project:string,tenant:string,company:string) { + companyPath(project: string, tenant: string, company: string) { return this.pathTemplates.companyPathTemplate.render({ project: project, tenant: tenant, @@ -502,7 +585,7 @@ export class EventServiceClient { * @param {string} job * @returns {string} Resource name string. */ - jobPath(project:string,tenant:string,job:string) { + jobPath(project: string, tenant: string, job: string) { return this.pathTemplates.jobPathTemplate.render({ project: project, tenant: tenant, @@ -550,7 +633,7 @@ export class EventServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -587,7 +670,7 @@ export class EventServiceClient { */ close(): Promise { if (this.eventServiceStub && !this._terminated) { - return this.eventServiceStub.then(stub => { + return this.eventServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -595,4 +678,4 @@ export class EventServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4/index.ts b/packages/google-cloud-talent/src/v4/index.ts index 69bfaedb86e3..8f9887feb507 100644 --- a/packages/google-cloud-talent/src/v4/index.ts +++ b/packages/google-cloud-talent/src/v4/index.ts @@ -16,8 +16,8 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** -export {CompanyServiceClient} from './company_service_client'; -export {CompletionClient} from './completion_client'; -export {EventServiceClient} from './event_service_client'; -export {JobServiceClient} from './job_service_client'; -export {TenantServiceClient} from './tenant_service_client'; +export { CompanyServiceClient } from './company_service_client'; +export { CompletionClient } from './completion_client'; +export { EventServiceClient } from './event_service_client'; +export { JobServiceClient } from './job_service_client'; +export { TenantServiceClient } from './tenant_service_client'; diff --git a/packages/google-cloud-talent/src/v4/job_service_client.ts b/packages/google-cloud-talent/src/v4/job_service_client.ts index 770997894568..d2241f82f684 100644 --- a/packages/google-cloud-talent/src/v4/job_service_client.ts +++ b/packages/google-cloud-talent/src/v4/job_service_client.ts @@ -18,11 +18,20 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions, GrpcClientOptions, LROperation, PaginationCallback, GaxCall} from 'google-gax'; -import {Transform} from 'stream'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, + GrpcClientOptions, + LROperation, + PaginationCallback, + GaxCall, +} from 'google-gax'; +import { Transform } from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +53,7 @@ export class JobServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,10 +66,10 @@ export class JobServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; operationsClient: gax.OperationsClient; - jobServiceStub?: Promise<{[name: string]: Function}>; + jobServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of JobServiceClient. @@ -101,21 +110,42 @@ export class JobServiceClient { * const client = new JobServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof JobServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -140,7 +170,7 @@ export class JobServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -154,10 +184,7 @@ export class JobServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -179,16 +206,16 @@ export class JobServiceClient { // Create useful helper objects for these. this.pathTemplates = { companyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), jobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}' + 'projects/{project}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; @@ -196,8 +223,11 @@ export class JobServiceClient { // (e.g. 50 results at a time, with tokens to get subsequent // pages). Denote the keys used for pagination and results. this.descriptors.page = { - listJobs: - new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'jobs') + listJobs: new this._gaxModule.PageDescriptor( + 'pageToken', + 'nextPageToken', + 'jobs', + ), }; const protoFilesRoot = this._gaxModule.protobufFromJSON(jsonProtos); @@ -206,45 +236,64 @@ export class JobServiceClient { // rather than holding a request open. const lroOptions: GrpcClientOptions = { auth: this.auth, - grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined + grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, }; if (opts.fallback) { lroOptions.protoJson = protoFilesRoot; - lroOptions.httpRules = [{selector: 'google.longrunning.Operations.GetOperation',get: '/v4/{name=projects/*/operations/*}',}]; + lroOptions.httpRules = [ + { + selector: 'google.longrunning.Operations.GetOperation', + get: '/v4/{name=projects/*/operations/*}', + }, + ]; } - this.operationsClient = this._gaxModule.lro(lroOptions).operationsClient(opts); + this.operationsClient = this._gaxModule + .lro(lroOptions) + .operationsClient(opts); const batchCreateJobsResponse = protoFilesRoot.lookup( - '.google.cloud.talent.v4.BatchCreateJobsResponse') as gax.protobuf.Type; + '.google.cloud.talent.v4.BatchCreateJobsResponse', + ) as gax.protobuf.Type; const batchCreateJobsMetadata = protoFilesRoot.lookup( - '.google.cloud.talent.v4.BatchOperationMetadata') as gax.protobuf.Type; + '.google.cloud.talent.v4.BatchOperationMetadata', + ) as gax.protobuf.Type; const batchUpdateJobsResponse = protoFilesRoot.lookup( - '.google.cloud.talent.v4.BatchUpdateJobsResponse') as gax.protobuf.Type; + '.google.cloud.talent.v4.BatchUpdateJobsResponse', + ) as gax.protobuf.Type; const batchUpdateJobsMetadata = protoFilesRoot.lookup( - '.google.cloud.talent.v4.BatchOperationMetadata') as gax.protobuf.Type; + '.google.cloud.talent.v4.BatchOperationMetadata', + ) as gax.protobuf.Type; const batchDeleteJobsResponse = protoFilesRoot.lookup( - '.google.cloud.talent.v4.BatchDeleteJobsResponse') as gax.protobuf.Type; + '.google.cloud.talent.v4.BatchDeleteJobsResponse', + ) as gax.protobuf.Type; const batchDeleteJobsMetadata = protoFilesRoot.lookup( - '.google.cloud.talent.v4.BatchOperationMetadata') as gax.protobuf.Type; + '.google.cloud.talent.v4.BatchOperationMetadata', + ) as gax.protobuf.Type; this.descriptors.longrunning = { batchCreateJobs: new this._gaxModule.LongrunningDescriptor( this.operationsClient, batchCreateJobsResponse.decode.bind(batchCreateJobsResponse), - batchCreateJobsMetadata.decode.bind(batchCreateJobsMetadata)), + batchCreateJobsMetadata.decode.bind(batchCreateJobsMetadata), + ), batchUpdateJobs: new this._gaxModule.LongrunningDescriptor( this.operationsClient, batchUpdateJobsResponse.decode.bind(batchUpdateJobsResponse), - batchUpdateJobsMetadata.decode.bind(batchUpdateJobsMetadata)), + batchUpdateJobsMetadata.decode.bind(batchUpdateJobsMetadata), + ), batchDeleteJobs: new this._gaxModule.LongrunningDescriptor( this.operationsClient, batchDeleteJobsResponse.decode.bind(batchDeleteJobsResponse), - batchDeleteJobsMetadata.decode.bind(batchDeleteJobsMetadata)) + batchDeleteJobsMetadata.decode.bind(batchDeleteJobsMetadata), + ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4.JobService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4.JobService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -275,28 +324,44 @@ export class JobServiceClient { // Put together the "service stub" for // google.cloud.talent.v4.JobService. this.jobServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4.JobService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4.JobService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4.JobService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const jobServiceStubMethods = - ['createJob', 'batchCreateJobs', 'getJob', 'updateJob', 'batchUpdateJobs', 'deleteJob', 'batchDeleteJobs', 'listJobs', 'searchJobs', 'searchJobsForAlert']; + const jobServiceStubMethods = [ + 'createJob', + 'batchCreateJobs', + 'getJob', + 'updateJob', + 'batchUpdateJobs', + 'deleteJob', + 'batchDeleteJobs', + 'listJobs', + 'searchJobs', + 'searchJobsForAlert', + ]; for (const methodName of jobServiceStubMethods) { const callPromise = this.jobServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); const descriptor = this.descriptors.page[methodName] || @@ -306,7 +371,7 @@ export class JobServiceClient { callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -321,8 +386,14 @@ export class JobServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -333,8 +404,14 @@ export class JobServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -367,7 +444,7 @@ export class JobServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -377,8 +454,9 @@ export class JobServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -389,1655 +467,2036 @@ export class JobServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Creates a new job. - * - * Typically, the job becomes searchable within 10 seconds, but it may take - * up to 5 minutes. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {google.cloud.talent.v4.Job} request.job - * Required. The Job to be created. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Job|Job}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.create_job.js - * region_tag:jobs_v4_generated_JobService_CreateJob_async - */ + /** + * Creates a new job. + * + * Typically, the job becomes searchable within 10 seconds, but it may take + * up to 5 minutes. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {google.cloud.talent.v4.Job} request.job + * Required. The Job to be created. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Job|Job}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.create_job.js + * region_tag:jobs_v4_generated_JobService_CreateJob_async + */ createJob( - request?: protos.google.cloud.talent.v4.ICreateJobRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.ICreateJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.ICreateJobRequest | undefined, + {} | undefined, + ] + >; createJob( - request: protos.google.cloud.talent.v4.ICreateJobRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateJobRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.ICreateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; createJob( - request: protos.google.cloud.talent.v4.ICreateJobRequest, - callback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateJobRequest, + callback: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.ICreateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; createJob( - request?: protos.google.cloud.talent.v4.ICreateJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.ICreateJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.ICreateJobRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.ICreateJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.ICreateJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createJob request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.ICreateJobRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.ICreateJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('createJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.ICreateJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('createJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Retrieves the specified job, whose status is OPEN or recently EXPIRED - * within the last 90 days. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the job to retrieve. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For - * example, "projects/foo/tenants/bar/jobs/baz". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Job|Job}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.get_job.js - * region_tag:jobs_v4_generated_JobService_GetJob_async - */ + /** + * Retrieves the specified job, whose status is OPEN or recently EXPIRED + * within the last 90 days. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the job to retrieve. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For + * example, "projects/foo/tenants/bar/jobs/baz". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Job|Job}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.get_job.js + * region_tag:jobs_v4_generated_JobService_GetJob_async + */ getJob( - request?: protos.google.cloud.talent.v4.IGetJobRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IGetJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IGetJobRequest | undefined, + {} | undefined, + ] + >; getJob( - request: protos.google.cloud.talent.v4.IGetJobRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IGetJobRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IGetJobRequest | null | undefined, + {} | null | undefined + >, + ): void; getJob( - request: protos.google.cloud.talent.v4.IGetJobRequest, - callback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IGetJobRequest, + callback: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IGetJobRequest | null | undefined, + {} | null | undefined + >, + ): void; getJob( - request?: protos.google.cloud.talent.v4.IGetJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.IGetJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.IGetJobRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IGetJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IGetJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('getJob request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IGetJobRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('getJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.getJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IGetJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('getJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .getJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IGetJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('getJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Updates specified job. - * - * Typically, updated contents become visible in search results within 10 - * seconds, but it may take up to 5 minutes. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.cloud.talent.v4.Job} request.job - * Required. The Job to be updated. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. - * - * If {@link protos.google.cloud.talent.v4.UpdateJobRequest.update_mask|update_mask} is - * provided, only the specified fields in - * {@link protos.google.cloud.talent.v4.UpdateJobRequest.job|job} are updated. Otherwise - * all the fields are updated. - * - * A field mask to restrict the fields that are updated. Only - * top level fields of {@link protos.google.cloud.talent.v4.Job|Job} are supported. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Job|Job}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.update_job.js - * region_tag:jobs_v4_generated_JobService_UpdateJob_async - */ + /** + * Updates specified job. + * + * Typically, updated contents become visible in search results within 10 + * seconds, but it may take up to 5 minutes. + * + * @param {Object} request + * The request object that will be sent. + * @param {google.cloud.talent.v4.Job} request.job + * Required. The Job to be updated. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. + * + * If {@link protos.google.cloud.talent.v4.UpdateJobRequest.update_mask|update_mask} is + * provided, only the specified fields in + * {@link protos.google.cloud.talent.v4.UpdateJobRequest.job|job} are updated. Otherwise + * all the fields are updated. + * + * A field mask to restrict the fields that are updated. Only + * top level fields of {@link protos.google.cloud.talent.v4.Job|Job} are supported. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Job|Job}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.update_job.js + * region_tag:jobs_v4_generated_JobService_UpdateJob_async + */ updateJob( - request?: protos.google.cloud.talent.v4.IUpdateJobRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IUpdateJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IUpdateJobRequest | undefined, + {} | undefined, + ] + >; updateJob( - request: protos.google.cloud.talent.v4.IUpdateJobRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IUpdateJobRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IUpdateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; updateJob( - request: protos.google.cloud.talent.v4.IUpdateJobRequest, - callback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IUpdateJobRequest, + callback: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IUpdateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; updateJob( - request?: protos.google.cloud.talent.v4.IUpdateJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.IUpdateJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.IUpdateJobRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IUpdateJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IUpdateJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'job.name': request.job!.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + 'job.name': request.job!.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('updateJob request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IUpdateJobRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('updateJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.updateJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.IJob, - protos.google.cloud.talent.v4.IUpdateJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('updateJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .updateJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.IJob, + protos.google.cloud.talent.v4.IUpdateJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('updateJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Deletes the specified job. - * - * Typically, the job becomes unsearchable within 10 seconds, but it may take - * up to 5 minutes. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the job to be deleted. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For - * example, "projects/foo/tenants/bar/jobs/baz". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.delete_job.js - * region_tag:jobs_v4_generated_JobService_DeleteJob_async - */ + /** + * Deletes the specified job. + * + * Typically, the job becomes unsearchable within 10 seconds, but it may take + * up to 5 minutes. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the job to be deleted. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For + * example, "projects/foo/tenants/bar/jobs/baz". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.delete_job.js + * region_tag:jobs_v4_generated_JobService_DeleteJob_async + */ deleteJob( - request?: protos.google.cloud.talent.v4.IDeleteJobRequest, - options?: CallOptions): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IDeleteJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteJobRequest | undefined, + {} | undefined, + ] + >; deleteJob( - request: protos.google.cloud.talent.v4.IDeleteJobRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IDeleteJobRequest, + options: CallOptions, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteJobRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteJob( - request: protos.google.cloud.talent.v4.IDeleteJobRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IDeleteJobRequest, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteJobRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteJob( - request?: protos.google.cloud.talent.v4.IDeleteJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.IDeleteJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.IDeleteJobRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('deleteJob request %j', request); - const wrappedCallback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteJobRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('deleteJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.deleteJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('deleteJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .deleteJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('deleteJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Searches for jobs using the provided - * {@link protos.google.cloud.talent.v4.SearchJobsRequest|SearchJobsRequest}. - * - * This call constrains the - * {@link protos.google.cloud.talent.v4.Job.visibility|visibility} of jobs present in the - * database, and only returns jobs that the caller has permission to search - * against. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant to search within. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {google.cloud.talent.v4.SearchJobsRequest.SearchMode} request.searchMode - * Mode of a search. - * - * Defaults to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. - * @param {google.cloud.talent.v4.RequestMetadata} request.requestMetadata - * Required. The meta information collected about the job searcher, used to - * improve the search quality of the service. The identifiers (such as - * `user_id`) are provided by users, and must be unique and consistent. - * @param {google.cloud.talent.v4.JobQuery} request.jobQuery - * Query used to search against jobs, such as keyword, location filters, etc. - * @param {boolean} request.enableBroadening - * Controls whether to broaden the search when it produces sparse results. - * Broadened queries append results to the end of the matching results - * list. - * - * Defaults to false. - * @param {number[]} request.histogramQueries - * An expression specifies a histogram request against matching jobs. - * - * Expression syntax is an aggregation function call with histogram facets and - * other options. - * - * Available aggregation function calls are: - * * `count(string_histogram_facet)`: Count the number of matching entities, - * for each distinct attribute value. - * * `count(numeric_histogram_facet, list of buckets)`: Count the number of - * matching entities within each bucket. - * - * A maximum of 200 histogram buckets are supported. - * - * Data types: - * - * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. - * * String: string like "any string with backslash escape for quote(\")." - * * Number: whole number and floating point number like 10, -1 and -0.01. - * * List: list of elements with comma(,) separator surrounded by square - * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. - * - * Built-in constants: - * - * * MIN (minimum number similar to java Double.MIN_VALUE) - * * MAX (maximum number similar to java Double.MAX_VALUE) - * - * Built-in functions: - * - * * bucket(start, end[, label]): bucket built-in function creates a bucket - * with range of [start, end). Note that the end is exclusive, for example, - * bucket(1, MAX, "positive number") or bucket(1, 10). - * - * Job histogram facets: - * - * * company_display_name: histogram by - * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}. - * * employment_type: histogram by - * {@link protos.google.cloud.talent.v4.Job.employment_types|Job.employment_types}, for - * example, - * "FULL_TIME", "PART_TIME". - * * company_size (DEPRECATED): histogram by - * {@link protos.google.cloud.talent.v4.CompanySize|CompanySize}, for example, "SMALL", - * "MEDIUM", "BIG". - * * publish_time_in_day: histogram by the - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * in days. - * Must specify list of numeric buckets in spec. - * * publish_time_in_month: histogram by the - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * in months. - * Must specify list of numeric buckets in spec. - * * publish_time_in_year: histogram by the - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * in years. - * Must specify list of numeric buckets in spec. - * * degree_types: histogram by the - * {@link protos.google.cloud.talent.v4.Job.degree_types|Job.degree_types}, for example, - * "Bachelors", "Masters". - * * job_level: histogram by the - * {@link protos.google.cloud.talent.v4.Job.job_level|Job.job_level}, for example, "Entry - * Level". - * * country: histogram by the country code of jobs, for example, "US", "FR". - * * admin1: histogram by the admin1 code of jobs, which is a global - * placeholder referring to the state, province, or the particular term a - * country uses to define the geographic structure below the country level, - * for example, "CA", "IL". - * * city: histogram by a combination of the "city name, admin1 code". For - * example, "Mountain View, CA", "New York, NY". - * * admin1_country: histogram by a combination of the "admin1 code, country", - * for example, "CA, US", "IL, US". - * * city_coordinate: histogram by the city center's GPS coordinates (latitude - * and longitude), for example, 37.4038522,-122.0987765. Since the - * coordinates of a city center can change, customers may need to refresh - * them periodically. - * * locale: histogram by the - * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, for example, - * "en-US", - * "fr-FR". - * * language: histogram by the language subtag of the - * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, - * for example, "en", "fr". - * * category: histogram by the - * {@link protos.google.cloud.talent.v4.JobCategory|JobCategory}, for example, - * "COMPUTER_AND_IT", "HEALTHCARE". - * * base_compensation_unit: histogram by the - * {@link protos.google.cloud.talent.v4.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} - * of base salary, for example, "WEEKLY", "MONTHLY". - * * base_compensation: histogram by the base salary. Must specify list of - * numeric buckets to group results by. - * * annualized_base_compensation: histogram by the base annualized salary. - * Must specify list of numeric buckets to group results by. - * * annualized_total_compensation: histogram by the total annualized salary. - * Must specify list of numeric buckets to group results by. - * * string_custom_attribute: histogram by string - * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * string_custom_attribute["key1"]. - * * numeric_custom_attribute: histogram by numeric - * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to - * group results by. - * - * Example expressions: - * - * * `count(admin1)` - * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), - * bucket(100000, MAX)])` - * * `count(string_custom_attribute["some-string-custom-attribute"])` - * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], - * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` - * @param {google.cloud.talent.v4.JobView} request.jobView - * The desired job attributes returned for jobs in the search response. - * Defaults to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} if - * no value is specified. - * @param {number} request.offset - * An integer that specifies the current offset (that is, starting result - * location, amongst the jobs deemed by the API as relevant) in search - * results. This field is only considered if - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.page_token|page_token} is unset. - * - * The maximum allowed value is 5000. Otherwise an error is thrown. - * - * For example, 0 means to return results starting from the first matching - * job, and 10 means to return from the 11th job. This can be used for - * pagination, (for example, pageSize = 10 and offset = 10 means to return - * from the second page). - * @param {number} request.maxPageSize - * A limit on the number of jobs returned in the search results. - * Increasing this value above the default value of 10 can increase search - * response time. The value can be between 1 and 100. - * @param {string} request.pageToken - * The token specifying the current offset within - * search results. See - * {@link protos.google.cloud.talent.v4.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} - * for an explanation of how to obtain the next set of query results. - * @param {string} request.orderBy - * The criteria determining how search results are sorted. Default is - * `"relevance desc"`. - * - * Supported options are: - * - * * `"relevance desc"`: By relevance descending, as determined by the API - * algorithms. Relevance thresholding of query results is only available - * with this ordering. - * * `"posting_publish_time desc"`: By - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * descending. - * * `"posting_update_time desc"`: By - * {@link protos.google.cloud.talent.v4.Job.posting_update_time|Job.posting_update_time} - * descending. - * * `"title"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} ascending. - * * `"title desc"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} - * descending. - * * `"annualized_base_compensation"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_base_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"annualized_total_compensation"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_total_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"custom_ranking desc"`: By the relevance score adjusted to the - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} - * with weight factor assigned by - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} - * in descending order. - * * Location sorting: Use the special syntax to order jobs by distance:
- * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
- * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
- * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by - * multiple locations. See details below.
- * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by - * multiple locations. See details below.
- * The string can have a maximum of 256 characters. When multiple distance - * centers are provided, a job that is close to any of the distance centers - * would have a high rank. When a job has multiple locations, the job - * location closest to one of the distance centers will be used. Jobs that - * don't have locations will be ranked at the bottom. Distance is calculated - * with a precision of 11.3 meters (37.4 feet). Diversification strategy is - * still applied unless explicitly disabled in - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.diversification_level|diversification_level}. - * @param {google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel} request.diversificationLevel - * Controls whether highly similar jobs are returned next to each other in - * the search results. Jobs are identified as highly similar based on - * their titles, job categories, and locations. Highly similar results are - * clustered so that only one representative job of the cluster is - * displayed to the job seeker higher up in the results, with the other jobs - * being displayed lower down in the results. - * - * Defaults to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} - * if no value is specified. - * @param {google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo - * Controls over how job documents get ranked on top of existing relevance - * score (determined by API algorithm). - * @param {boolean} request.disableKeywordMatch - * This field is deprecated. Please use - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * going forward. - * - * To migrate, disable_keyword_match set to false maps to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, - * and disable_keyword_match set to true maps to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. - * If - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * is set, this field is ignored. - * - * Controls whether to disable exact keyword match on - * {@link protos.google.cloud.talent.v4.Job.title|Job.title}, - * {@link protos.google.cloud.talent.v4.Job.description|Job.description}, - * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}, - * {@link protos.google.cloud.talent.v4.Job.addresses|Job.addresses}, - * {@link protos.google.cloud.talent.v4.Job.qualifications|Job.qualifications}. When - * disable keyword match is turned off, a keyword match returns jobs that do - * not match given category filters when there are matching keywords. For - * example, for the query "program manager," a result is returned even if the - * job posting has the title "software developer," which doesn't fall into - * "program manager" ontology, but does have "program manager" appearing in - * its description. - * - * For queries like "cloud" that don't contain title or - * location specific ontology, jobs with "cloud" keyword matches are returned - * regardless of this flag's value. - * - * Use - * {@link protos.google.cloud.talent.v4.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} - * if company-specific globally matched custom field/attribute string values - * are needed. Enabling keyword match improves recall of subsequent search - * requests. - * - * Defaults to false. - * @param {google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode - * Controls what keyword match options to use. If both keyword_match_mode and - * disable_keyword_match are set, keyword_match_mode will take precedence. - * - * Defaults to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} - * if no value is specified. - * @param {google.cloud.talent.v4.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] - * Optional. The relevance threshold of the search results. - * - * Default to Google defined threshold, leveraging a balance of - * precision and recall to deliver both highly accurate results and - * comprehensive coverage of relevant information. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.SearchJobsResponse|SearchJobsResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.search_jobs.js - * region_tag:jobs_v4_generated_JobService_SearchJobs_async - */ + /** + * Searches for jobs using the provided + * {@link protos.google.cloud.talent.v4.SearchJobsRequest|SearchJobsRequest}. + * + * This call constrains the + * {@link protos.google.cloud.talent.v4.Job.visibility|visibility} of jobs present in the + * database, and only returns jobs that the caller has permission to search + * against. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant to search within. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {google.cloud.talent.v4.SearchJobsRequest.SearchMode} request.searchMode + * Mode of a search. + * + * Defaults to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. + * @param {google.cloud.talent.v4.RequestMetadata} request.requestMetadata + * Required. The meta information collected about the job searcher, used to + * improve the search quality of the service. The identifiers (such as + * `user_id`) are provided by users, and must be unique and consistent. + * @param {google.cloud.talent.v4.JobQuery} request.jobQuery + * Query used to search against jobs, such as keyword, location filters, etc. + * @param {boolean} request.enableBroadening + * Controls whether to broaden the search when it produces sparse results. + * Broadened queries append results to the end of the matching results + * list. + * + * Defaults to false. + * @param {number[]} request.histogramQueries + * An expression specifies a histogram request against matching jobs. + * + * Expression syntax is an aggregation function call with histogram facets and + * other options. + * + * Available aggregation function calls are: + * * `count(string_histogram_facet)`: Count the number of matching entities, + * for each distinct attribute value. + * * `count(numeric_histogram_facet, list of buckets)`: Count the number of + * matching entities within each bucket. + * + * A maximum of 200 histogram buckets are supported. + * + * Data types: + * + * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. + * * String: string like "any string with backslash escape for quote(\")." + * * Number: whole number and floating point number like 10, -1 and -0.01. + * * List: list of elements with comma(,) separator surrounded by square + * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. + * + * Built-in constants: + * + * * MIN (minimum number similar to java Double.MIN_VALUE) + * * MAX (maximum number similar to java Double.MAX_VALUE) + * + * Built-in functions: + * + * * bucket(start, end[, label]): bucket built-in function creates a bucket + * with range of [start, end). Note that the end is exclusive, for example, + * bucket(1, MAX, "positive number") or bucket(1, 10). + * + * Job histogram facets: + * + * * company_display_name: histogram by + * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}. + * * employment_type: histogram by + * {@link protos.google.cloud.talent.v4.Job.employment_types|Job.employment_types}, for + * example, + * "FULL_TIME", "PART_TIME". + * * company_size (DEPRECATED): histogram by + * {@link protos.google.cloud.talent.v4.CompanySize|CompanySize}, for example, "SMALL", + * "MEDIUM", "BIG". + * * publish_time_in_day: histogram by the + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * in days. + * Must specify list of numeric buckets in spec. + * * publish_time_in_month: histogram by the + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * in months. + * Must specify list of numeric buckets in spec. + * * publish_time_in_year: histogram by the + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * in years. + * Must specify list of numeric buckets in spec. + * * degree_types: histogram by the + * {@link protos.google.cloud.talent.v4.Job.degree_types|Job.degree_types}, for example, + * "Bachelors", "Masters". + * * job_level: histogram by the + * {@link protos.google.cloud.talent.v4.Job.job_level|Job.job_level}, for example, "Entry + * Level". + * * country: histogram by the country code of jobs, for example, "US", "FR". + * * admin1: histogram by the admin1 code of jobs, which is a global + * placeholder referring to the state, province, or the particular term a + * country uses to define the geographic structure below the country level, + * for example, "CA", "IL". + * * city: histogram by a combination of the "city name, admin1 code". For + * example, "Mountain View, CA", "New York, NY". + * * admin1_country: histogram by a combination of the "admin1 code, country", + * for example, "CA, US", "IL, US". + * * city_coordinate: histogram by the city center's GPS coordinates (latitude + * and longitude), for example, 37.4038522,-122.0987765. Since the + * coordinates of a city center can change, customers may need to refresh + * them periodically. + * * locale: histogram by the + * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, for example, + * "en-US", + * "fr-FR". + * * language: histogram by the language subtag of the + * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, + * for example, "en", "fr". + * * category: histogram by the + * {@link protos.google.cloud.talent.v4.JobCategory|JobCategory}, for example, + * "COMPUTER_AND_IT", "HEALTHCARE". + * * base_compensation_unit: histogram by the + * {@link protos.google.cloud.talent.v4.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} + * of base salary, for example, "WEEKLY", "MONTHLY". + * * base_compensation: histogram by the base salary. Must specify list of + * numeric buckets to group results by. + * * annualized_base_compensation: histogram by the base annualized salary. + * Must specify list of numeric buckets to group results by. + * * annualized_total_compensation: histogram by the total annualized salary. + * Must specify list of numeric buckets to group results by. + * * string_custom_attribute: histogram by string + * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * string_custom_attribute["key1"]. + * * numeric_custom_attribute: histogram by numeric + * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to + * group results by. + * + * Example expressions: + * + * * `count(admin1)` + * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), + * bucket(100000, MAX)])` + * * `count(string_custom_attribute["some-string-custom-attribute"])` + * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], + * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` + * @param {google.cloud.talent.v4.JobView} request.jobView + * The desired job attributes returned for jobs in the search response. + * Defaults to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} if + * no value is specified. + * @param {number} request.offset + * An integer that specifies the current offset (that is, starting result + * location, amongst the jobs deemed by the API as relevant) in search + * results. This field is only considered if + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.page_token|page_token} is unset. + * + * The maximum allowed value is 5000. Otherwise an error is thrown. + * + * For example, 0 means to return results starting from the first matching + * job, and 10 means to return from the 11th job. This can be used for + * pagination, (for example, pageSize = 10 and offset = 10 means to return + * from the second page). + * @param {number} request.maxPageSize + * A limit on the number of jobs returned in the search results. + * Increasing this value above the default value of 10 can increase search + * response time. The value can be between 1 and 100. + * @param {string} request.pageToken + * The token specifying the current offset within + * search results. See + * {@link protos.google.cloud.talent.v4.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} + * for an explanation of how to obtain the next set of query results. + * @param {string} request.orderBy + * The criteria determining how search results are sorted. Default is + * `"relevance desc"`. + * + * Supported options are: + * + * * `"relevance desc"`: By relevance descending, as determined by the API + * algorithms. Relevance thresholding of query results is only available + * with this ordering. + * * `"posting_publish_time desc"`: By + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * descending. + * * `"posting_update_time desc"`: By + * {@link protos.google.cloud.talent.v4.Job.posting_update_time|Job.posting_update_time} + * descending. + * * `"title"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} ascending. + * * `"title desc"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} + * descending. + * * `"annualized_base_compensation"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_base_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"annualized_total_compensation"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_total_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"custom_ranking desc"`: By the relevance score adjusted to the + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} + * with weight factor assigned by + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} + * in descending order. + * * Location sorting: Use the special syntax to order jobs by distance:
+ * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
+ * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
+ * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by + * multiple locations. See details below.
+ * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by + * multiple locations. See details below.
+ * The string can have a maximum of 256 characters. When multiple distance + * centers are provided, a job that is close to any of the distance centers + * would have a high rank. When a job has multiple locations, the job + * location closest to one of the distance centers will be used. Jobs that + * don't have locations will be ranked at the bottom. Distance is calculated + * with a precision of 11.3 meters (37.4 feet). Diversification strategy is + * still applied unless explicitly disabled in + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.diversification_level|diversification_level}. + * @param {google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel} request.diversificationLevel + * Controls whether highly similar jobs are returned next to each other in + * the search results. Jobs are identified as highly similar based on + * their titles, job categories, and locations. Highly similar results are + * clustered so that only one representative job of the cluster is + * displayed to the job seeker higher up in the results, with the other jobs + * being displayed lower down in the results. + * + * Defaults to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} + * if no value is specified. + * @param {google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo + * Controls over how job documents get ranked on top of existing relevance + * score (determined by API algorithm). + * @param {boolean} request.disableKeywordMatch + * This field is deprecated. Please use + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * going forward. + * + * To migrate, disable_keyword_match set to false maps to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, + * and disable_keyword_match set to true maps to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. + * If + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * is set, this field is ignored. + * + * Controls whether to disable exact keyword match on + * {@link protos.google.cloud.talent.v4.Job.title|Job.title}, + * {@link protos.google.cloud.talent.v4.Job.description|Job.description}, + * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}, + * {@link protos.google.cloud.talent.v4.Job.addresses|Job.addresses}, + * {@link protos.google.cloud.talent.v4.Job.qualifications|Job.qualifications}. When + * disable keyword match is turned off, a keyword match returns jobs that do + * not match given category filters when there are matching keywords. For + * example, for the query "program manager," a result is returned even if the + * job posting has the title "software developer," which doesn't fall into + * "program manager" ontology, but does have "program manager" appearing in + * its description. + * + * For queries like "cloud" that don't contain title or + * location specific ontology, jobs with "cloud" keyword matches are returned + * regardless of this flag's value. + * + * Use + * {@link protos.google.cloud.talent.v4.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} + * if company-specific globally matched custom field/attribute string values + * are needed. Enabling keyword match improves recall of subsequent search + * requests. + * + * Defaults to false. + * @param {google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode + * Controls what keyword match options to use. If both keyword_match_mode and + * disable_keyword_match are set, keyword_match_mode will take precedence. + * + * Defaults to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} + * if no value is specified. + * @param {google.cloud.talent.v4.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] + * Optional. The relevance threshold of the search results. + * + * Default to Google defined threshold, leveraging a balance of + * precision and recall to deliver both highly accurate results and + * comprehensive coverage of relevant information. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.SearchJobsResponse|SearchJobsResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.search_jobs.js + * region_tag:jobs_v4_generated_JobService_SearchJobs_async + */ searchJobs( - request?: protos.google.cloud.talent.v4.ISearchJobsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.ISearchJobsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | undefined, + {} | undefined, + ] + >; searchJobs( - request: protos.google.cloud.talent.v4.ISearchJobsRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ISearchJobsRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobs( - request: protos.google.cloud.talent.v4.ISearchJobsRequest, - callback: Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ISearchJobsRequest, + callback: Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobs( - request?: protos.google.cloud.talent.v4.ISearchJobsRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.ISearchJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('searchJobs request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('searchJobs response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.searchJobs(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|undefined, - {}|undefined - ]) => { - this._log.info('searchJobs response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .searchJobs(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | undefined, + {} | undefined, + ]) => { + this._log.info('searchJobs response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Searches for jobs using the provided - * {@link protos.google.cloud.talent.v4.SearchJobsRequest|SearchJobsRequest}. - * - * This API call is intended for the use case of targeting passive job - * seekers (for example, job seekers who have signed up to receive email - * alerts about potential job opportunities), it has different algorithmic - * adjustments that are designed to specifically target passive job seekers. - * - * This call constrains the - * {@link protos.google.cloud.talent.v4.Job.visibility|visibility} of jobs present in the - * database, and only returns jobs the caller has permission to search - * against. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant to search within. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {google.cloud.talent.v4.SearchJobsRequest.SearchMode} request.searchMode - * Mode of a search. - * - * Defaults to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. - * @param {google.cloud.talent.v4.RequestMetadata} request.requestMetadata - * Required. The meta information collected about the job searcher, used to - * improve the search quality of the service. The identifiers (such as - * `user_id`) are provided by users, and must be unique and consistent. - * @param {google.cloud.talent.v4.JobQuery} request.jobQuery - * Query used to search against jobs, such as keyword, location filters, etc. - * @param {boolean} request.enableBroadening - * Controls whether to broaden the search when it produces sparse results. - * Broadened queries append results to the end of the matching results - * list. - * - * Defaults to false. - * @param {number[]} request.histogramQueries - * An expression specifies a histogram request against matching jobs. - * - * Expression syntax is an aggregation function call with histogram facets and - * other options. - * - * Available aggregation function calls are: - * * `count(string_histogram_facet)`: Count the number of matching entities, - * for each distinct attribute value. - * * `count(numeric_histogram_facet, list of buckets)`: Count the number of - * matching entities within each bucket. - * - * A maximum of 200 histogram buckets are supported. - * - * Data types: - * - * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. - * * String: string like "any string with backslash escape for quote(\")." - * * Number: whole number and floating point number like 10, -1 and -0.01. - * * List: list of elements with comma(,) separator surrounded by square - * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. - * - * Built-in constants: - * - * * MIN (minimum number similar to java Double.MIN_VALUE) - * * MAX (maximum number similar to java Double.MAX_VALUE) - * - * Built-in functions: - * - * * bucket(start, end[, label]): bucket built-in function creates a bucket - * with range of [start, end). Note that the end is exclusive, for example, - * bucket(1, MAX, "positive number") or bucket(1, 10). - * - * Job histogram facets: - * - * * company_display_name: histogram by - * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}. - * * employment_type: histogram by - * {@link protos.google.cloud.talent.v4.Job.employment_types|Job.employment_types}, for - * example, - * "FULL_TIME", "PART_TIME". - * * company_size (DEPRECATED): histogram by - * {@link protos.google.cloud.talent.v4.CompanySize|CompanySize}, for example, "SMALL", - * "MEDIUM", "BIG". - * * publish_time_in_day: histogram by the - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * in days. - * Must specify list of numeric buckets in spec. - * * publish_time_in_month: histogram by the - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * in months. - * Must specify list of numeric buckets in spec. - * * publish_time_in_year: histogram by the - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * in years. - * Must specify list of numeric buckets in spec. - * * degree_types: histogram by the - * {@link protos.google.cloud.talent.v4.Job.degree_types|Job.degree_types}, for example, - * "Bachelors", "Masters". - * * job_level: histogram by the - * {@link protos.google.cloud.talent.v4.Job.job_level|Job.job_level}, for example, "Entry - * Level". - * * country: histogram by the country code of jobs, for example, "US", "FR". - * * admin1: histogram by the admin1 code of jobs, which is a global - * placeholder referring to the state, province, or the particular term a - * country uses to define the geographic structure below the country level, - * for example, "CA", "IL". - * * city: histogram by a combination of the "city name, admin1 code". For - * example, "Mountain View, CA", "New York, NY". - * * admin1_country: histogram by a combination of the "admin1 code, country", - * for example, "CA, US", "IL, US". - * * city_coordinate: histogram by the city center's GPS coordinates (latitude - * and longitude), for example, 37.4038522,-122.0987765. Since the - * coordinates of a city center can change, customers may need to refresh - * them periodically. - * * locale: histogram by the - * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, for example, - * "en-US", - * "fr-FR". - * * language: histogram by the language subtag of the - * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, - * for example, "en", "fr". - * * category: histogram by the - * {@link protos.google.cloud.talent.v4.JobCategory|JobCategory}, for example, - * "COMPUTER_AND_IT", "HEALTHCARE". - * * base_compensation_unit: histogram by the - * {@link protos.google.cloud.talent.v4.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} - * of base salary, for example, "WEEKLY", "MONTHLY". - * * base_compensation: histogram by the base salary. Must specify list of - * numeric buckets to group results by. - * * annualized_base_compensation: histogram by the base annualized salary. - * Must specify list of numeric buckets to group results by. - * * annualized_total_compensation: histogram by the total annualized salary. - * Must specify list of numeric buckets to group results by. - * * string_custom_attribute: histogram by string - * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * string_custom_attribute["key1"]. - * * numeric_custom_attribute: histogram by numeric - * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to - * group results by. - * - * Example expressions: - * - * * `count(admin1)` - * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), - * bucket(100000, MAX)])` - * * `count(string_custom_attribute["some-string-custom-attribute"])` - * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], - * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` - * @param {google.cloud.talent.v4.JobView} request.jobView - * The desired job attributes returned for jobs in the search response. - * Defaults to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} if - * no value is specified. - * @param {number} request.offset - * An integer that specifies the current offset (that is, starting result - * location, amongst the jobs deemed by the API as relevant) in search - * results. This field is only considered if - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.page_token|page_token} is unset. - * - * The maximum allowed value is 5000. Otherwise an error is thrown. - * - * For example, 0 means to return results starting from the first matching - * job, and 10 means to return from the 11th job. This can be used for - * pagination, (for example, pageSize = 10 and offset = 10 means to return - * from the second page). - * @param {number} request.maxPageSize - * A limit on the number of jobs returned in the search results. - * Increasing this value above the default value of 10 can increase search - * response time. The value can be between 1 and 100. - * @param {string} request.pageToken - * The token specifying the current offset within - * search results. See - * {@link protos.google.cloud.talent.v4.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} - * for an explanation of how to obtain the next set of query results. - * @param {string} request.orderBy - * The criteria determining how search results are sorted. Default is - * `"relevance desc"`. - * - * Supported options are: - * - * * `"relevance desc"`: By relevance descending, as determined by the API - * algorithms. Relevance thresholding of query results is only available - * with this ordering. - * * `"posting_publish_time desc"`: By - * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} - * descending. - * * `"posting_update_time desc"`: By - * {@link protos.google.cloud.talent.v4.Job.posting_update_time|Job.posting_update_time} - * descending. - * * `"title"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} ascending. - * * `"title desc"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} - * descending. - * * `"annualized_base_compensation"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_base_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"annualized_total_compensation"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_total_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"custom_ranking desc"`: By the relevance score adjusted to the - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} - * with weight factor assigned by - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} - * in descending order. - * * Location sorting: Use the special syntax to order jobs by distance:
- * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
- * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
- * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by - * multiple locations. See details below.
- * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by - * multiple locations. See details below.
- * The string can have a maximum of 256 characters. When multiple distance - * centers are provided, a job that is close to any of the distance centers - * would have a high rank. When a job has multiple locations, the job - * location closest to one of the distance centers will be used. Jobs that - * don't have locations will be ranked at the bottom. Distance is calculated - * with a precision of 11.3 meters (37.4 feet). Diversification strategy is - * still applied unless explicitly disabled in - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.diversification_level|diversification_level}. - * @param {google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel} request.diversificationLevel - * Controls whether highly similar jobs are returned next to each other in - * the search results. Jobs are identified as highly similar based on - * their titles, job categories, and locations. Highly similar results are - * clustered so that only one representative job of the cluster is - * displayed to the job seeker higher up in the results, with the other jobs - * being displayed lower down in the results. - * - * Defaults to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} - * if no value is specified. - * @param {google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo - * Controls over how job documents get ranked on top of existing relevance - * score (determined by API algorithm). - * @param {boolean} request.disableKeywordMatch - * This field is deprecated. Please use - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * going forward. - * - * To migrate, disable_keyword_match set to false maps to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, - * and disable_keyword_match set to true maps to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. - * If - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * is set, this field is ignored. - * - * Controls whether to disable exact keyword match on - * {@link protos.google.cloud.talent.v4.Job.title|Job.title}, - * {@link protos.google.cloud.talent.v4.Job.description|Job.description}, - * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}, - * {@link protos.google.cloud.talent.v4.Job.addresses|Job.addresses}, - * {@link protos.google.cloud.talent.v4.Job.qualifications|Job.qualifications}. When - * disable keyword match is turned off, a keyword match returns jobs that do - * not match given category filters when there are matching keywords. For - * example, for the query "program manager," a result is returned even if the - * job posting has the title "software developer," which doesn't fall into - * "program manager" ontology, but does have "program manager" appearing in - * its description. - * - * For queries like "cloud" that don't contain title or - * location specific ontology, jobs with "cloud" keyword matches are returned - * regardless of this flag's value. - * - * Use - * {@link protos.google.cloud.talent.v4.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} - * if company-specific globally matched custom field/attribute string values - * are needed. Enabling keyword match improves recall of subsequent search - * requests. - * - * Defaults to false. - * @param {google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode - * Controls what keyword match options to use. If both keyword_match_mode and - * disable_keyword_match are set, keyword_match_mode will take precedence. - * - * Defaults to - * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} - * if no value is specified. - * @param {google.cloud.talent.v4.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] - * Optional. The relevance threshold of the search results. - * - * Default to Google defined threshold, leveraging a balance of - * precision and recall to deliver both highly accurate results and - * comprehensive coverage of relevant information. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.SearchJobsResponse|SearchJobsResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.search_jobs_for_alert.js - * region_tag:jobs_v4_generated_JobService_SearchJobsForAlert_async - */ + /** + * Searches for jobs using the provided + * {@link protos.google.cloud.talent.v4.SearchJobsRequest|SearchJobsRequest}. + * + * This API call is intended for the use case of targeting passive job + * seekers (for example, job seekers who have signed up to receive email + * alerts about potential job opportunities), it has different algorithmic + * adjustments that are designed to specifically target passive job seekers. + * + * This call constrains the + * {@link protos.google.cloud.talent.v4.Job.visibility|visibility} of jobs present in the + * database, and only returns jobs the caller has permission to search + * against. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant to search within. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {google.cloud.talent.v4.SearchJobsRequest.SearchMode} request.searchMode + * Mode of a search. + * + * Defaults to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. + * @param {google.cloud.talent.v4.RequestMetadata} request.requestMetadata + * Required. The meta information collected about the job searcher, used to + * improve the search quality of the service. The identifiers (such as + * `user_id`) are provided by users, and must be unique and consistent. + * @param {google.cloud.talent.v4.JobQuery} request.jobQuery + * Query used to search against jobs, such as keyword, location filters, etc. + * @param {boolean} request.enableBroadening + * Controls whether to broaden the search when it produces sparse results. + * Broadened queries append results to the end of the matching results + * list. + * + * Defaults to false. + * @param {number[]} request.histogramQueries + * An expression specifies a histogram request against matching jobs. + * + * Expression syntax is an aggregation function call with histogram facets and + * other options. + * + * Available aggregation function calls are: + * * `count(string_histogram_facet)`: Count the number of matching entities, + * for each distinct attribute value. + * * `count(numeric_histogram_facet, list of buckets)`: Count the number of + * matching entities within each bucket. + * + * A maximum of 200 histogram buckets are supported. + * + * Data types: + * + * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. + * * String: string like "any string with backslash escape for quote(\")." + * * Number: whole number and floating point number like 10, -1 and -0.01. + * * List: list of elements with comma(,) separator surrounded by square + * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. + * + * Built-in constants: + * + * * MIN (minimum number similar to java Double.MIN_VALUE) + * * MAX (maximum number similar to java Double.MAX_VALUE) + * + * Built-in functions: + * + * * bucket(start, end[, label]): bucket built-in function creates a bucket + * with range of [start, end). Note that the end is exclusive, for example, + * bucket(1, MAX, "positive number") or bucket(1, 10). + * + * Job histogram facets: + * + * * company_display_name: histogram by + * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}. + * * employment_type: histogram by + * {@link protos.google.cloud.talent.v4.Job.employment_types|Job.employment_types}, for + * example, + * "FULL_TIME", "PART_TIME". + * * company_size (DEPRECATED): histogram by + * {@link protos.google.cloud.talent.v4.CompanySize|CompanySize}, for example, "SMALL", + * "MEDIUM", "BIG". + * * publish_time_in_day: histogram by the + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * in days. + * Must specify list of numeric buckets in spec. + * * publish_time_in_month: histogram by the + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * in months. + * Must specify list of numeric buckets in spec. + * * publish_time_in_year: histogram by the + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * in years. + * Must specify list of numeric buckets in spec. + * * degree_types: histogram by the + * {@link protos.google.cloud.talent.v4.Job.degree_types|Job.degree_types}, for example, + * "Bachelors", "Masters". + * * job_level: histogram by the + * {@link protos.google.cloud.talent.v4.Job.job_level|Job.job_level}, for example, "Entry + * Level". + * * country: histogram by the country code of jobs, for example, "US", "FR". + * * admin1: histogram by the admin1 code of jobs, which is a global + * placeholder referring to the state, province, or the particular term a + * country uses to define the geographic structure below the country level, + * for example, "CA", "IL". + * * city: histogram by a combination of the "city name, admin1 code". For + * example, "Mountain View, CA", "New York, NY". + * * admin1_country: histogram by a combination of the "admin1 code, country", + * for example, "CA, US", "IL, US". + * * city_coordinate: histogram by the city center's GPS coordinates (latitude + * and longitude), for example, 37.4038522,-122.0987765. Since the + * coordinates of a city center can change, customers may need to refresh + * them periodically. + * * locale: histogram by the + * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, for example, + * "en-US", + * "fr-FR". + * * language: histogram by the language subtag of the + * {@link protos.google.cloud.talent.v4.Job.language_code|Job.language_code}, + * for example, "en", "fr". + * * category: histogram by the + * {@link protos.google.cloud.talent.v4.JobCategory|JobCategory}, for example, + * "COMPUTER_AND_IT", "HEALTHCARE". + * * base_compensation_unit: histogram by the + * {@link protos.google.cloud.talent.v4.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} + * of base salary, for example, "WEEKLY", "MONTHLY". + * * base_compensation: histogram by the base salary. Must specify list of + * numeric buckets to group results by. + * * annualized_base_compensation: histogram by the base annualized salary. + * Must specify list of numeric buckets to group results by. + * * annualized_total_compensation: histogram by the total annualized salary. + * Must specify list of numeric buckets to group results by. + * * string_custom_attribute: histogram by string + * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * string_custom_attribute["key1"]. + * * numeric_custom_attribute: histogram by numeric + * {@link protos.google.cloud.talent.v4.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to + * group results by. + * + * Example expressions: + * + * * `count(admin1)` + * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), + * bucket(100000, MAX)])` + * * `count(string_custom_attribute["some-string-custom-attribute"])` + * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], + * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` + * @param {google.cloud.talent.v4.JobView} request.jobView + * The desired job attributes returned for jobs in the search response. + * Defaults to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} if + * no value is specified. + * @param {number} request.offset + * An integer that specifies the current offset (that is, starting result + * location, amongst the jobs deemed by the API as relevant) in search + * results. This field is only considered if + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.page_token|page_token} is unset. + * + * The maximum allowed value is 5000. Otherwise an error is thrown. + * + * For example, 0 means to return results starting from the first matching + * job, and 10 means to return from the 11th job. This can be used for + * pagination, (for example, pageSize = 10 and offset = 10 means to return + * from the second page). + * @param {number} request.maxPageSize + * A limit on the number of jobs returned in the search results. + * Increasing this value above the default value of 10 can increase search + * response time. The value can be between 1 and 100. + * @param {string} request.pageToken + * The token specifying the current offset within + * search results. See + * {@link protos.google.cloud.talent.v4.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} + * for an explanation of how to obtain the next set of query results. + * @param {string} request.orderBy + * The criteria determining how search results are sorted. Default is + * `"relevance desc"`. + * + * Supported options are: + * + * * `"relevance desc"`: By relevance descending, as determined by the API + * algorithms. Relevance thresholding of query results is only available + * with this ordering. + * * `"posting_publish_time desc"`: By + * {@link protos.google.cloud.talent.v4.Job.posting_publish_time|Job.posting_publish_time} + * descending. + * * `"posting_update_time desc"`: By + * {@link protos.google.cloud.talent.v4.Job.posting_update_time|Job.posting_update_time} + * descending. + * * `"title"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} ascending. + * * `"title desc"`: By {@link protos.google.cloud.talent.v4.Job.title|Job.title} + * descending. + * * `"annualized_base_compensation"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_base_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"annualized_total_compensation"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_total_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"custom_ranking desc"`: By the relevance score adjusted to the + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} + * with weight factor assigned by + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} + * in descending order. + * * Location sorting: Use the special syntax to order jobs by distance:
+ * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
+ * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
+ * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by + * multiple locations. See details below.
+ * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by + * multiple locations. See details below.
+ * The string can have a maximum of 256 characters. When multiple distance + * centers are provided, a job that is close to any of the distance centers + * would have a high rank. When a job has multiple locations, the job + * location closest to one of the distance centers will be used. Jobs that + * don't have locations will be ranked at the bottom. Distance is calculated + * with a precision of 11.3 meters (37.4 feet). Diversification strategy is + * still applied unless explicitly disabled in + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.diversification_level|diversification_level}. + * @param {google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel} request.diversificationLevel + * Controls whether highly similar jobs are returned next to each other in + * the search results. Jobs are identified as highly similar based on + * their titles, job categories, and locations. Highly similar results are + * clustered so that only one representative job of the cluster is + * displayed to the job seeker higher up in the results, with the other jobs + * being displayed lower down in the results. + * + * Defaults to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} + * if no value is specified. + * @param {google.cloud.talent.v4.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo + * Controls over how job documents get ranked on top of existing relevance + * score (determined by API algorithm). + * @param {boolean} request.disableKeywordMatch + * This field is deprecated. Please use + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * going forward. + * + * To migrate, disable_keyword_match set to false maps to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, + * and disable_keyword_match set to true maps to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. + * If + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * is set, this field is ignored. + * + * Controls whether to disable exact keyword match on + * {@link protos.google.cloud.talent.v4.Job.title|Job.title}, + * {@link protos.google.cloud.talent.v4.Job.description|Job.description}, + * {@link protos.google.cloud.talent.v4.Job.company_display_name|Job.company_display_name}, + * {@link protos.google.cloud.talent.v4.Job.addresses|Job.addresses}, + * {@link protos.google.cloud.talent.v4.Job.qualifications|Job.qualifications}. When + * disable keyword match is turned off, a keyword match returns jobs that do + * not match given category filters when there are matching keywords. For + * example, for the query "program manager," a result is returned even if the + * job posting has the title "software developer," which doesn't fall into + * "program manager" ontology, but does have "program manager" appearing in + * its description. + * + * For queries like "cloud" that don't contain title or + * location specific ontology, jobs with "cloud" keyword matches are returned + * regardless of this flag's value. + * + * Use + * {@link protos.google.cloud.talent.v4.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} + * if company-specific globally matched custom field/attribute string values + * are needed. Enabling keyword match improves recall of subsequent search + * requests. + * + * Defaults to false. + * @param {google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode + * Controls what keyword match options to use. If both keyword_match_mode and + * disable_keyword_match are set, keyword_match_mode will take precedence. + * + * Defaults to + * {@link protos.google.cloud.talent.v4.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} + * if no value is specified. + * @param {google.cloud.talent.v4.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] + * Optional. The relevance threshold of the search results. + * + * Default to Google defined threshold, leveraging a balance of + * precision and recall to deliver both highly accurate results and + * comprehensive coverage of relevant information. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.SearchJobsResponse|SearchJobsResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.search_jobs_for_alert.js + * region_tag:jobs_v4_generated_JobService_SearchJobsForAlert_async + */ searchJobsForAlert( - request?: protos.google.cloud.talent.v4.ISearchJobsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.ISearchJobsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | undefined, + {} | undefined, + ] + >; searchJobsForAlert( - request: protos.google.cloud.talent.v4.ISearchJobsRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ISearchJobsRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobsForAlert( - request: protos.google.cloud.talent.v4.ISearchJobsRequest, - callback: Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ISearchJobsRequest, + callback: Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobsForAlert( - request?: protos.google.cloud.talent.v4.ISearchJobsRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.ISearchJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('searchJobsForAlert request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('searchJobsForAlert response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.searchJobsForAlert(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ISearchJobsResponse, - protos.google.cloud.talent.v4.ISearchJobsRequest|undefined, - {}|undefined - ]) => { - this._log.info('searchJobsForAlert response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .searchJobsForAlert(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ISearchJobsResponse, + protos.google.cloud.talent.v4.ISearchJobsRequest | undefined, + {} | undefined, + ]) => { + this._log.info('searchJobsForAlert response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Begins executing a batch create jobs operation. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {number[]} request.jobs - * Required. The jobs to be created. - * A maximum of 200 jobs can be created in a batch. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * a long running operation. Its `promise()` method returns a promise - * you can `await` for. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.batch_create_jobs.js - * region_tag:jobs_v4_generated_JobService_BatchCreateJobs_async - */ + /** + * Begins executing a batch create jobs operation. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {number[]} request.jobs + * Required. The jobs to be created. + * A maximum of 200 jobs can be created in a batch. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.batch_create_jobs.js + * region_tag:jobs_v4_generated_JobService_BatchCreateJobs_async + */ batchCreateJobs( - request?: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, - options?: CallOptions): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, + options?: CallOptions, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + >; batchCreateJobs( - request: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, - options: CallOptions, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchCreateJobs( - request: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchCreateJobs( - request?: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, - optionsOrCallback?: CallOptions|Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>, - callback?: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>|void { + request?: protos.google.cloud.talent.v4.IBatchCreateJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, rawResponse, _) => { this._log.info('batchCreateJobs response %j', rawResponse); callback!(error, response, rawResponse, _); // We verified callback above. } : undefined; this._log.info('batchCreateJobs request %j', request); - return this.innerApiCalls.batchCreateJobs(request, options, wrappedCallback) - ?.then(([response, rawResponse, _]: [ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]) => { - this._log.info('batchCreateJobs response %j', rawResponse); - return [response, rawResponse, _]; - }); + return this.innerApiCalls + .batchCreateJobs(request, options, wrappedCallback) + ?.then( + ([response, rawResponse, _]: [ + LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ]) => { + this._log.info('batchCreateJobs response %j', rawResponse); + return [response, rawResponse, _]; + }, + ); } -/** - * Check the status of the long running operation returned by `batchCreateJobs()`. - * @param {String} name - * The operation name that will be passed. - * @returns {Promise} - The promise which resolves to an object. - * The decoded operation object has result and metadata field to get information from. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.batch_create_jobs.js - * region_tag:jobs_v4_generated_JobService_BatchCreateJobs_async - */ - async checkBatchCreateJobsProgress(name: string): Promise>{ + /** + * Check the status of the long running operation returned by `batchCreateJobs()`. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.batch_create_jobs.js + * region_tag:jobs_v4_generated_JobService_BatchCreateJobs_async + */ + async checkBatchCreateJobsProgress( + name: string, + ): Promise< + LROperation< + protos.google.cloud.talent.v4.BatchCreateJobsResponse, + protos.google.cloud.talent.v4.BatchOperationMetadata + > + > { this._log.info('batchCreateJobs long-running'); - const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name}); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + { name }, + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.batchCreateJobs, this._gaxModule.createDefaultBackoffSettings()); - return decodeOperation as LROperation; + const decodeOperation = new this._gaxModule.Operation( + operation, + this.descriptors.longrunning.batchCreateJobs, + this._gaxModule.createDefaultBackoffSettings(), + ); + return decodeOperation as LROperation< + protos.google.cloud.talent.v4.BatchCreateJobsResponse, + protos.google.cloud.talent.v4.BatchOperationMetadata + >; } -/** - * Begins executing a batch update jobs operation. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {number[]} request.jobs - * Required. The jobs to be updated. - * A maximum of 200 jobs can be updated in a batch. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. Be aware that it will - * also increase latency when checking the status of a batch operation. - * - * If {@link protos.google.cloud.talent.v4.BatchUpdateJobsRequest.update_mask|update_mask} - * is provided, only the specified fields in {@link protos.google.cloud.talent.v4.Job|Job} - * are updated. Otherwise all the fields are updated. - * - * A field mask to restrict the fields that are updated. Only - * top level fields of {@link protos.google.cloud.talent.v4.Job|Job} are supported. - * - * If {@link protos.google.cloud.talent.v4.BatchUpdateJobsRequest.update_mask|update_mask} - * is provided, The {@link protos.google.cloud.talent.v4.Job|Job} inside - * {@link protos.google.cloud.talent.v4.JobResult|JobResult} - * will only contains fields that is updated, plus the Id of the Job. - * Otherwise, {@link protos.google.cloud.talent.v4.Job|Job} will include all fields, - * which can yield a very large response. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * a long running operation. Its `promise()` method returns a promise - * you can `await` for. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.batch_update_jobs.js - * region_tag:jobs_v4_generated_JobService_BatchUpdateJobs_async - */ + /** + * Begins executing a batch update jobs operation. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {number[]} request.jobs + * Required. The jobs to be updated. + * A maximum of 200 jobs can be updated in a batch. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. Be aware that it will + * also increase latency when checking the status of a batch operation. + * + * If {@link protos.google.cloud.talent.v4.BatchUpdateJobsRequest.update_mask|update_mask} + * is provided, only the specified fields in {@link protos.google.cloud.talent.v4.Job|Job} + * are updated. Otherwise all the fields are updated. + * + * A field mask to restrict the fields that are updated. Only + * top level fields of {@link protos.google.cloud.talent.v4.Job|Job} are supported. + * + * If {@link protos.google.cloud.talent.v4.BatchUpdateJobsRequest.update_mask|update_mask} + * is provided, The {@link protos.google.cloud.talent.v4.Job|Job} inside + * {@link protos.google.cloud.talent.v4.JobResult|JobResult} + * will only contains fields that is updated, plus the Id of the Job. + * Otherwise, {@link protos.google.cloud.talent.v4.Job|Job} will include all fields, + * which can yield a very large response. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.batch_update_jobs.js + * region_tag:jobs_v4_generated_JobService_BatchUpdateJobs_async + */ batchUpdateJobs( - request?: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, - options?: CallOptions): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, + options?: CallOptions, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + >; batchUpdateJobs( - request: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, - options: CallOptions, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchUpdateJobs( - request: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchUpdateJobs( - request?: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, - optionsOrCallback?: CallOptions|Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>, - callback?: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>|void { + request?: protos.google.cloud.talent.v4.IBatchUpdateJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, rawResponse, _) => { this._log.info('batchUpdateJobs response %j', rawResponse); callback!(error, response, rawResponse, _); // We verified callback above. } : undefined; this._log.info('batchUpdateJobs request %j', request); - return this.innerApiCalls.batchUpdateJobs(request, options, wrappedCallback) - ?.then(([response, rawResponse, _]: [ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]) => { - this._log.info('batchUpdateJobs response %j', rawResponse); - return [response, rawResponse, _]; - }); + return this.innerApiCalls + .batchUpdateJobs(request, options, wrappedCallback) + ?.then( + ([response, rawResponse, _]: [ + LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ]) => { + this._log.info('batchUpdateJobs response %j', rawResponse); + return [response, rawResponse, _]; + }, + ); } -/** - * Check the status of the long running operation returned by `batchUpdateJobs()`. - * @param {String} name - * The operation name that will be passed. - * @returns {Promise} - The promise which resolves to an object. - * The decoded operation object has result and metadata field to get information from. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.batch_update_jobs.js - * region_tag:jobs_v4_generated_JobService_BatchUpdateJobs_async - */ - async checkBatchUpdateJobsProgress(name: string): Promise>{ + /** + * Check the status of the long running operation returned by `batchUpdateJobs()`. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.batch_update_jobs.js + * region_tag:jobs_v4_generated_JobService_BatchUpdateJobs_async + */ + async checkBatchUpdateJobsProgress( + name: string, + ): Promise< + LROperation< + protos.google.cloud.talent.v4.BatchUpdateJobsResponse, + protos.google.cloud.talent.v4.BatchOperationMetadata + > + > { this._log.info('batchUpdateJobs long-running'); - const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name}); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + { name }, + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.batchUpdateJobs, this._gaxModule.createDefaultBackoffSettings()); - return decodeOperation as LROperation; + const decodeOperation = new this._gaxModule.Operation( + operation, + this.descriptors.longrunning.batchUpdateJobs, + this._gaxModule.createDefaultBackoffSettings(), + ); + return decodeOperation as LROperation< + protos.google.cloud.talent.v4.BatchUpdateJobsResponse, + protos.google.cloud.talent.v4.BatchOperationMetadata + >; } -/** - * Begins executing a batch delete jobs operation. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * - * The parent of all of the jobs specified in `names` must match this field. - * @param {string[]} request.names - * The names of the jobs to delete. - * - * The format is "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". - * For example, "projects/foo/tenants/bar/jobs/baz". - * - * A maximum of 200 jobs can be deleted in a batch. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * a long running operation. Its `promise()` method returns a promise - * you can `await` for. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.batch_delete_jobs.js - * region_tag:jobs_v4_generated_JobService_BatchDeleteJobs_async - */ + /** + * Begins executing a batch delete jobs operation. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * + * The parent of all of the jobs specified in `names` must match this field. + * @param {string[]} request.names + * The names of the jobs to delete. + * + * The format is "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". + * For example, "projects/foo/tenants/bar/jobs/baz". + * + * A maximum of 200 jobs can be deleted in a batch. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.batch_delete_jobs.js + * region_tag:jobs_v4_generated_JobService_BatchDeleteJobs_async + */ batchDeleteJobs( - request?: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, - options?: CallOptions): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, + options?: CallOptions, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + >; batchDeleteJobs( - request: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, - options: CallOptions, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchDeleteJobs( - request: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchDeleteJobs( - request?: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, - optionsOrCallback?: CallOptions|Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>, - callback?: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>|void { + request?: protos.google.cloud.talent.v4.IBatchDeleteJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, rawResponse, _) => { this._log.info('batchDeleteJobs response %j', rawResponse); callback!(error, response, rawResponse, _); // We verified callback above. } : undefined; this._log.info('batchDeleteJobs request %j', request); - return this.innerApiCalls.batchDeleteJobs(request, options, wrappedCallback) - ?.then(([response, rawResponse, _]: [ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]) => { - this._log.info('batchDeleteJobs response %j', rawResponse); - return [response, rawResponse, _]; - }); + return this.innerApiCalls + .batchDeleteJobs(request, options, wrappedCallback) + ?.then( + ([response, rawResponse, _]: [ + LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ]) => { + this._log.info('batchDeleteJobs response %j', rawResponse); + return [response, rawResponse, _]; + }, + ); } -/** - * Check the status of the long running operation returned by `batchDeleteJobs()`. - * @param {String} name - * The operation name that will be passed. - * @returns {Promise} - The promise which resolves to an object. - * The decoded operation object has result and metadata field to get information from. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.batch_delete_jobs.js - * region_tag:jobs_v4_generated_JobService_BatchDeleteJobs_async - */ - async checkBatchDeleteJobsProgress(name: string): Promise>{ + /** + * Check the status of the long running operation returned by `batchDeleteJobs()`. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.batch_delete_jobs.js + * region_tag:jobs_v4_generated_JobService_BatchDeleteJobs_async + */ + async checkBatchDeleteJobsProgress( + name: string, + ): Promise< + LROperation< + protos.google.cloud.talent.v4.BatchDeleteJobsResponse, + protos.google.cloud.talent.v4.BatchOperationMetadata + > + > { this._log.info('batchDeleteJobs long-running'); - const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name}); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + { name }, + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.batchDeleteJobs, this._gaxModule.createDefaultBackoffSettings()); - return decodeOperation as LROperation; + const decodeOperation = new this._gaxModule.Operation( + operation, + this.descriptors.longrunning.batchDeleteJobs, + this._gaxModule.createDefaultBackoffSettings(), + ); + return decodeOperation as LROperation< + protos.google.cloud.talent.v4.BatchDeleteJobsResponse, + protos.google.cloud.talent.v4.BatchOperationMetadata + >; } - /** - * Lists jobs by filter. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {string} request.filter - * Required. The filter string specifies the jobs to be enumerated. - * - * Supported operator: =, AND - * - * The fields eligible for filtering are: - * - * * `companyName` - * * `requisitionId` - * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to - * OPEN if no value is specified. - * - * At least one of `companyName` and `requisitionId` must present or an - * INVALID_ARGUMENT error is thrown. - * - * Sample Query: - * - * * companyName = "projects/foo/tenants/bar/companies/baz" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * requisitionId = "req-1" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * status = "EXPIRED" - * * requisitionId = "req-1" - * * requisitionId = "req-1" AND status = "EXPIRED" - * @param {string} request.pageToken - * The starting point of a query result. - * @param {number} request.pageSize - * The maximum number of jobs to be returned per page of results. - * - * If {@link protos.google.cloud.talent.v4.ListJobsRequest.job_view|job_view} is set to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, - * the maximum allowed page size is 1000. Otherwise, the maximum allowed page - * size is 100. - * - * Default is 100 if empty or a number < 1 is specified. - * @param {google.cloud.talent.v4.JobView} request.jobView - * The desired job attributes returned for jobs in the - * search response. Defaults to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} if no - * value is specified. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.cloud.talent.v4.Job|Job}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listJobsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Lists jobs by filter. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {string} request.filter + * Required. The filter string specifies the jobs to be enumerated. + * + * Supported operator: =, AND + * + * The fields eligible for filtering are: + * + * * `companyName` + * * `requisitionId` + * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to + * OPEN if no value is specified. + * + * At least one of `companyName` and `requisitionId` must present or an + * INVALID_ARGUMENT error is thrown. + * + * Sample Query: + * + * * companyName = "projects/foo/tenants/bar/companies/baz" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * requisitionId = "req-1" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * status = "EXPIRED" + * * requisitionId = "req-1" + * * requisitionId = "req-1" AND status = "EXPIRED" + * @param {string} request.pageToken + * The starting point of a query result. + * @param {number} request.pageSize + * The maximum number of jobs to be returned per page of results. + * + * If {@link protos.google.cloud.talent.v4.ListJobsRequest.job_view|job_view} is set to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, + * the maximum allowed page size is 1000. Otherwise, the maximum allowed page + * size is 100. + * + * Default is 100 if empty or a number < 1 is specified. + * @param {google.cloud.talent.v4.JobView} request.jobView + * The desired job attributes returned for jobs in the + * search response. Defaults to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} if no + * value is specified. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is Array of {@link protos.google.cloud.talent.v4.Job|Job}. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed and will merge results from all the pages into this array. + * Note that it can affect your quota. + * We recommend using `listJobsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listJobs( - request?: protos.google.cloud.talent.v4.IListJobsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.IJob[], - protos.google.cloud.talent.v4.IListJobsRequest|null, - protos.google.cloud.talent.v4.IListJobsResponse - ]>; + request?: protos.google.cloud.talent.v4.IListJobsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob[], + protos.google.cloud.talent.v4.IListJobsRequest | null, + protos.google.cloud.talent.v4.IListJobsResponse, + ] + >; listJobs( - request: protos.google.cloud.talent.v4.IListJobsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.cloud.talent.v4.IListJobsRequest, - protos.google.cloud.talent.v4.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4.IJob>): void; + request: protos.google.cloud.talent.v4.IListJobsRequest, + options: CallOptions, + callback: PaginationCallback< + protos.google.cloud.talent.v4.IListJobsRequest, + protos.google.cloud.talent.v4.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4.IJob + >, + ): void; listJobs( - request: protos.google.cloud.talent.v4.IListJobsRequest, - callback: PaginationCallback< - protos.google.cloud.talent.v4.IListJobsRequest, - protos.google.cloud.talent.v4.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4.IJob>): void; + request: protos.google.cloud.talent.v4.IListJobsRequest, + callback: PaginationCallback< + protos.google.cloud.talent.v4.IListJobsRequest, + protos.google.cloud.talent.v4.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4.IJob + >, + ): void; listJobs( - request?: protos.google.cloud.talent.v4.IListJobsRequest, - optionsOrCallback?: CallOptions|PaginationCallback< - protos.google.cloud.talent.v4.IListJobsRequest, - protos.google.cloud.talent.v4.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4.IJob>, - callback?: PaginationCallback< + request?: protos.google.cloud.talent.v4.IListJobsRequest, + optionsOrCallback?: + | CallOptions + | PaginationCallback< protos.google.cloud.talent.v4.IListJobsRequest, - protos.google.cloud.talent.v4.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4.IJob>): - Promise<[ - protos.google.cloud.talent.v4.IJob[], - protos.google.cloud.talent.v4.IListJobsRequest|null, - protos.google.cloud.talent.v4.IListJobsResponse - ]>|void { + protos.google.cloud.talent.v4.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4.IJob + >, + callback?: PaginationCallback< + protos.google.cloud.talent.v4.IListJobsRequest, + protos.google.cloud.talent.v4.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4.IJob + >, + ): Promise< + [ + protos.google.cloud.talent.v4.IJob[], + protos.google.cloud.talent.v4.IListJobsRequest | null, + protos.google.cloud.talent.v4.IListJobsResponse, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: PaginationCallback< - protos.google.cloud.talent.v4.IListJobsRequest, - protos.google.cloud.talent.v4.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4.IJob>|undefined = callback + const wrappedCallback: + | PaginationCallback< + protos.google.cloud.talent.v4.IListJobsRequest, + protos.google.cloud.talent.v4.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4.IJob + > + | undefined = callback ? (error, values, nextPageRequest, rawResponse) => { this._log.info('listJobs values %j', values); callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. @@ -2046,187 +2505,191 @@ export class JobServiceClient { this._log.info('listJobs request %j', request); return this.innerApiCalls .listJobs(request, options, wrappedCallback) - ?.then(([response, input, output]: [ - protos.google.cloud.talent.v4.IJob[], - protos.google.cloud.talent.v4.IListJobsRequest|null, - protos.google.cloud.talent.v4.IListJobsResponse - ]) => { - this._log.info('listJobs values %j', response); - return [response, input, output]; - }); + ?.then( + ([response, input, output]: [ + protos.google.cloud.talent.v4.IJob[], + protos.google.cloud.talent.v4.IListJobsRequest | null, + protos.google.cloud.talent.v4.IListJobsResponse, + ]) => { + this._log.info('listJobs values %j', response); + return [response, input, output]; + }, + ); } -/** - * Equivalent to `listJobs`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {string} request.filter - * Required. The filter string specifies the jobs to be enumerated. - * - * Supported operator: =, AND - * - * The fields eligible for filtering are: - * - * * `companyName` - * * `requisitionId` - * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to - * OPEN if no value is specified. - * - * At least one of `companyName` and `requisitionId` must present or an - * INVALID_ARGUMENT error is thrown. - * - * Sample Query: - * - * * companyName = "projects/foo/tenants/bar/companies/baz" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * requisitionId = "req-1" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * status = "EXPIRED" - * * requisitionId = "req-1" - * * requisitionId = "req-1" AND status = "EXPIRED" - * @param {string} request.pageToken - * The starting point of a query result. - * @param {number} request.pageSize - * The maximum number of jobs to be returned per page of results. - * - * If {@link protos.google.cloud.talent.v4.ListJobsRequest.job_view|job_view} is set to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, - * the maximum allowed page size is 1000. Otherwise, the maximum allowed page - * size is 100. - * - * Default is 100 if empty or a number < 1 is specified. - * @param {google.cloud.talent.v4.JobView} request.jobView - * The desired job attributes returned for jobs in the - * search response. Defaults to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} if no - * value is specified. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.cloud.talent.v4.Job|Job} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listJobsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Equivalent to `listJobs`, but returns a NodeJS Stream object. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {string} request.filter + * Required. The filter string specifies the jobs to be enumerated. + * + * Supported operator: =, AND + * + * The fields eligible for filtering are: + * + * * `companyName` + * * `requisitionId` + * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to + * OPEN if no value is specified. + * + * At least one of `companyName` and `requisitionId` must present or an + * INVALID_ARGUMENT error is thrown. + * + * Sample Query: + * + * * companyName = "projects/foo/tenants/bar/companies/baz" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * requisitionId = "req-1" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * status = "EXPIRED" + * * requisitionId = "req-1" + * * requisitionId = "req-1" AND status = "EXPIRED" + * @param {string} request.pageToken + * The starting point of a query result. + * @param {number} request.pageSize + * The maximum number of jobs to be returned per page of results. + * + * If {@link protos.google.cloud.talent.v4.ListJobsRequest.job_view|job_view} is set to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, + * the maximum allowed page size is 1000. Otherwise, the maximum allowed page + * size is 100. + * + * Default is 100 if empty or a number < 1 is specified. + * @param {google.cloud.talent.v4.JobView} request.jobView + * The desired job attributes returned for jobs in the + * search response. Defaults to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} if no + * value is specified. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Stream} + * An object stream which emits an object representing {@link protos.google.cloud.talent.v4.Job|Job} on 'data' event. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed. Note that it can affect your quota. + * We recommend using `listJobsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listJobsStream( - request?: protos.google.cloud.talent.v4.IListJobsRequest, - options?: CallOptions): - Transform{ + request?: protos.google.cloud.talent.v4.IListJobsRequest, + options?: CallOptions, + ): Transform { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listJobs']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listJobs stream %j', request); return this.descriptors.page.listJobs.createStream( this.innerApiCalls.listJobs as GaxCall, request, - callSettings + callSettings, ); } -/** - * Equivalent to `listJobs`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenants/bar". - * @param {string} request.filter - * Required. The filter string specifies the jobs to be enumerated. - * - * Supported operator: =, AND - * - * The fields eligible for filtering are: - * - * * `companyName` - * * `requisitionId` - * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to - * OPEN if no value is specified. - * - * At least one of `companyName` and `requisitionId` must present or an - * INVALID_ARGUMENT error is thrown. - * - * Sample Query: - * - * * companyName = "projects/foo/tenants/bar/companies/baz" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * requisitionId = "req-1" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * status = "EXPIRED" - * * requisitionId = "req-1" - * * requisitionId = "req-1" AND status = "EXPIRED" - * @param {string} request.pageToken - * The starting point of a query result. - * @param {number} request.pageSize - * The maximum number of jobs to be returned per page of results. - * - * If {@link protos.google.cloud.talent.v4.ListJobsRequest.job_view|job_view} is set to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, - * the maximum allowed page size is 1000. Otherwise, the maximum allowed page - * size is 100. - * - * Default is 100 if empty or a number < 1 is specified. - * @param {google.cloud.talent.v4.JobView} request.jobView - * The desired job attributes returned for jobs in the - * search response. Defaults to - * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} if no - * value is specified. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.cloud.talent.v4.Job|Job}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - * @example include:samples/generated/v4/job_service.list_jobs.js - * region_tag:jobs_v4_generated_JobService_ListJobs_async - */ + /** + * Equivalent to `listJobs`, but returns an iterable object. + * + * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenants/bar". + * @param {string} request.filter + * Required. The filter string specifies the jobs to be enumerated. + * + * Supported operator: =, AND + * + * The fields eligible for filtering are: + * + * * `companyName` + * * `requisitionId` + * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to + * OPEN if no value is specified. + * + * At least one of `companyName` and `requisitionId` must present or an + * INVALID_ARGUMENT error is thrown. + * + * Sample Query: + * + * * companyName = "projects/foo/tenants/bar/companies/baz" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * requisitionId = "req-1" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * status = "EXPIRED" + * * requisitionId = "req-1" + * * requisitionId = "req-1" AND status = "EXPIRED" + * @param {string} request.pageToken + * The starting point of a query result. + * @param {number} request.pageSize + * The maximum number of jobs to be returned per page of results. + * + * If {@link protos.google.cloud.talent.v4.ListJobsRequest.job_view|job_view} is set to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, + * the maximum allowed page size is 1000. Otherwise, the maximum allowed page + * size is 100. + * + * Default is 100 if empty or a number < 1 is specified. + * @param {google.cloud.talent.v4.JobView} request.jobView + * The desired job attributes returned for jobs in the + * search response. Defaults to + * {@link protos.google.cloud.talent.v4.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} if no + * value is specified. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Object} + * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. + * When you iterate the returned iterable, each element will be an object representing + * {@link protos.google.cloud.talent.v4.Job|Job}. The API will be called under the hood as needed, once per the page, + * so you can stop the iteration when you don't need more results. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + * @example include:samples/generated/v4/job_service.list_jobs.js + * region_tag:jobs_v4_generated_JobService_ListJobs_async + */ listJobsAsync( - request?: protos.google.cloud.talent.v4.IListJobsRequest, - options?: CallOptions): - AsyncIterable{ + request?: protos.google.cloud.talent.v4.IListJobsRequest, + options?: CallOptions, + ): AsyncIterable { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listJobs']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listJobs iterate %j', request); return this.descriptors.page.listJobs.asyncIterate( this.innerApiCalls['listJobs'] as GaxCall, request as {}, - callSettings + callSettings, ) as AsyncIterable; } -/** + /** * Gets the latest state of a long-running operation. Clients can use this * method to poll the operation result at intervals as recommended by the API * service. @@ -2269,22 +2732,22 @@ export class JobServiceClient { protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined - > + >, ): Promise<[protos.google.longrunning.Operation]> { - let options: gax.CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as gax.CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.getOperation(request, options, callback); } /** @@ -2319,15 +2782,15 @@ export class JobServiceClient { */ listOperationsAsync( request: protos.google.longrunning.ListOperationsRequest, - options?: gax.CallOptions + options?: gax.CallOptions, ): AsyncIterable { - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.listOperationsAsync(request, options); } /** @@ -2361,7 +2824,7 @@ export class JobServiceClient { * await client.cancelOperation({name: ''}); * ``` */ - cancelOperation( + cancelOperation( request: protos.google.longrunning.CancelOperationRequest, optionsOrCallback?: | gax.CallOptions @@ -2374,25 +2837,24 @@ export class JobServiceClient { protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null - > + >, ): Promise { - let options: gax.CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as gax.CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.cancelOperation(request, options, callback); } - /** * Deletes a long-running operation. This method indicates that the client is * no longer interested in the operation result. It does not cancel the @@ -2431,22 +2893,22 @@ export class JobServiceClient { protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined - > + >, ): Promise { - let options: gax.CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as gax.CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.deleteOperation(request, options, callback); } @@ -2462,7 +2924,7 @@ export class JobServiceClient { * @param {string} company * @returns {string} Resource name string. */ - companyPath(project:string,tenant:string,company:string) { + companyPath(project: string, tenant: string, company: string) { return this.pathTemplates.companyPathTemplate.render({ project: project, tenant: tenant, @@ -2511,7 +2973,7 @@ export class JobServiceClient { * @param {string} job * @returns {string} Resource name string. */ - jobPath(project:string,tenant:string,job:string) { + jobPath(project: string, tenant: string, job: string) { return this.pathTemplates.jobPathTemplate.render({ project: project, tenant: tenant, @@ -2558,7 +3020,7 @@ export class JobServiceClient { * @param {string} project * @returns {string} Resource name string. */ - projectPath(project:string) { + projectPath(project: string) { return this.pathTemplates.projectPathTemplate.render({ project: project, }); @@ -2582,7 +3044,7 @@ export class JobServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -2619,7 +3081,7 @@ export class JobServiceClient { */ close(): Promise { if (this.jobServiceStub && !this._terminated) { - return this.jobServiceStub.then(stub => { + return this.jobServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -2628,4 +3090,4 @@ export class JobServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4/tenant_service_client.ts b/packages/google-cloud-talent/src/v4/tenant_service_client.ts index cb2eb9c7c69a..77d720271e87 100644 --- a/packages/google-cloud-talent/src/v4/tenant_service_client.ts +++ b/packages/google-cloud-talent/src/v4/tenant_service_client.ts @@ -18,11 +18,18 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall} from 'google-gax'; -import {Transform} from 'stream'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, + PaginationCallback, + GaxCall, +} from 'google-gax'; +import { Transform } from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +51,7 @@ export class TenantServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +64,9 @@ export class TenantServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - tenantServiceStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + tenantServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of TenantServiceClient. @@ -100,21 +107,42 @@ export class TenantServiceClient { * const client = new TenantServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof TenantServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +167,7 @@ export class TenantServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +181,7 @@ export class TenantServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,16 +203,16 @@ export class TenantServiceClient { // Create useful helper objects for these. this.pathTemplates = { companyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), jobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}' + 'projects/{project}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; @@ -195,14 +220,20 @@ export class TenantServiceClient { // (e.g. 50 results at a time, with tokens to get subsequent // pages). Denote the keys used for pagination and results. this.descriptors.page = { - listTenants: - new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'tenants') + listTenants: new this._gaxModule.PageDescriptor( + 'pageToken', + 'nextPageToken', + 'tenants', + ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4.TenantService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4.TenantService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -233,37 +264,46 @@ export class TenantServiceClient { // Put together the "service stub" for // google.cloud.talent.v4.TenantService. this.tenantServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4.TenantService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4.TenantService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4.TenantService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const tenantServiceStubMethods = - ['createTenant', 'getTenant', 'updateTenant', 'deleteTenant', 'listTenants']; + const tenantServiceStubMethods = [ + 'createTenant', + 'getTenant', + 'updateTenant', + 'deleteTenant', + 'listTenants', + ]; for (const methodName of tenantServiceStubMethods) { const callPromise = this.tenantServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - this.descriptors.page[methodName] || - undefined; + const descriptor = this.descriptors.page[methodName] || undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -278,8 +318,14 @@ export class TenantServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -290,8 +336,14 @@ export class TenantServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -324,7 +376,7 @@ export class TenantServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -334,8 +386,9 @@ export class TenantServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -346,490 +399,625 @@ export class TenantServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Creates a new tenant entity. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {google.cloud.talent.v4.Tenant} request.tenant - * Required. The tenant to be created. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/tenant_service.create_tenant.js - * region_tag:jobs_v4_generated_TenantService_CreateTenant_async - */ + /** + * Creates a new tenant entity. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {google.cloud.talent.v4.Tenant} request.tenant + * Required. The tenant to be created. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/tenant_service.create_tenant.js + * region_tag:jobs_v4_generated_TenantService_CreateTenant_async + */ createTenant( - request?: protos.google.cloud.talent.v4.ICreateTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.ICreateTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.ICreateTenantRequest | undefined, + {} | undefined, + ] + >; createTenant( - request: protos.google.cloud.talent.v4.ICreateTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.ICreateTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; createTenant( - request: protos.google.cloud.talent.v4.ICreateTenantRequest, - callback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.ICreateTenantRequest, + callback: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.ICreateTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; createTenant( - request?: protos.google.cloud.talent.v4.ICreateTenantRequest, - optionsOrCallback?: CallOptions|Callback< + request?: protos.google.cloud.talent.v4.ICreateTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.ICreateTenantRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.ICreateTenantRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.ICreateTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createTenant request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.ICreateTenantRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.ICreateTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('createTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.ICreateTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('createTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Retrieves specified tenant. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the tenant to be retrieved. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/tenant_service.get_tenant.js - * region_tag:jobs_v4_generated_TenantService_GetTenant_async - */ + /** + * Retrieves specified tenant. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the tenant to be retrieved. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/tenant_service.get_tenant.js + * region_tag:jobs_v4_generated_TenantService_GetTenant_async + */ getTenant( - request?: protos.google.cloud.talent.v4.IGetTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IGetTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IGetTenantRequest | undefined, + {} | undefined, + ] + >; getTenant( - request: protos.google.cloud.talent.v4.IGetTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IGetTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IGetTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; getTenant( - request: protos.google.cloud.talent.v4.IGetTenantRequest, - callback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IGetTenantRequest, + callback: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IGetTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; getTenant( - request?: protos.google.cloud.talent.v4.IGetTenantRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.IGetTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.IGetTenantRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IGetTenantRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IGetTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('getTenant request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IGetTenantRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('getTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.getTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IGetTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('getTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .getTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IGetTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('getTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Updates specified tenant. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.cloud.talent.v4.Tenant} request.tenant - * Required. The tenant resource to replace the current resource in the - * system. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. - * - * If {@link protos.google.cloud.talent.v4.UpdateTenantRequest.update_mask|update_mask} is - * provided, only the specified fields in - * {@link protos.google.cloud.talent.v4.UpdateTenantRequest.tenant|tenant} are updated. - * Otherwise all the fields are updated. - * - * A field mask to specify the tenant fields to be updated. Only - * top level fields of {@link protos.google.cloud.talent.v4.Tenant|Tenant} are supported. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/tenant_service.update_tenant.js - * region_tag:jobs_v4_generated_TenantService_UpdateTenant_async - */ + /** + * Updates specified tenant. + * + * @param {Object} request + * The request object that will be sent. + * @param {google.cloud.talent.v4.Tenant} request.tenant + * Required. The tenant resource to replace the current resource in the + * system. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. + * + * If {@link protos.google.cloud.talent.v4.UpdateTenantRequest.update_mask|update_mask} is + * provided, only the specified fields in + * {@link protos.google.cloud.talent.v4.UpdateTenantRequest.tenant|tenant} are updated. + * Otherwise all the fields are updated. + * + * A field mask to specify the tenant fields to be updated. Only + * top level fields of {@link protos.google.cloud.talent.v4.Tenant|Tenant} are supported. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/tenant_service.update_tenant.js + * region_tag:jobs_v4_generated_TenantService_UpdateTenant_async + */ updateTenant( - request?: protos.google.cloud.talent.v4.IUpdateTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IUpdateTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IUpdateTenantRequest | undefined, + {} | undefined, + ] + >; updateTenant( - request: protos.google.cloud.talent.v4.IUpdateTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IUpdateTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IUpdateTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; updateTenant( - request: protos.google.cloud.talent.v4.IUpdateTenantRequest, - callback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IUpdateTenantRequest, + callback: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IUpdateTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; updateTenant( - request?: protos.google.cloud.talent.v4.IUpdateTenantRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.IUpdateTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.IUpdateTenantRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IUpdateTenantRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IUpdateTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'tenant.name': request.tenant!.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + 'tenant.name': request.tenant!.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('updateTenant request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IUpdateTenantRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('updateTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.updateTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4.ITenant, - protos.google.cloud.talent.v4.IUpdateTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('updateTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .updateTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4.ITenant, + protos.google.cloud.talent.v4.IUpdateTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('updateTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Deletes specified tenant. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the tenant to be deleted. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4/tenant_service.delete_tenant.js - * region_tag:jobs_v4_generated_TenantService_DeleteTenant_async - */ + /** + * Deletes specified tenant. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the tenant to be deleted. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4/tenant_service.delete_tenant.js + * region_tag:jobs_v4_generated_TenantService_DeleteTenant_async + */ deleteTenant( - request?: protos.google.cloud.talent.v4.IDeleteTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4.IDeleteTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteTenantRequest | undefined, + {} | undefined, + ] + >; deleteTenant( - request: protos.google.cloud.talent.v4.IDeleteTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IDeleteTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteTenant( - request: protos.google.cloud.talent.v4.IDeleteTenantRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4.IDeleteTenantRequest, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteTenant( - request?: protos.google.cloud.talent.v4.IDeleteTenantRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4.IDeleteTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4.IDeleteTenantRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteTenantRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('deleteTenant request %j', request); - const wrappedCallback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteTenantRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('deleteTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.deleteTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4.IDeleteTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('deleteTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .deleteTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4.IDeleteTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('deleteTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } - /** - * Lists all tenants associated with the project. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of tenants to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.cloud.talent.v4.Tenant|Tenant}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listTenantsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Lists all tenants associated with the project. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of tenants to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is Array of {@link protos.google.cloud.talent.v4.Tenant|Tenant}. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed and will merge results from all the pages into this array. + * Note that it can affect your quota. + * We recommend using `listTenantsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listTenants( - request?: protos.google.cloud.talent.v4.IListTenantsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4.ITenant[], - protos.google.cloud.talent.v4.IListTenantsRequest|null, - protos.google.cloud.talent.v4.IListTenantsResponse - ]>; + request?: protos.google.cloud.talent.v4.IListTenantsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant[], + protos.google.cloud.talent.v4.IListTenantsRequest | null, + protos.google.cloud.talent.v4.IListTenantsResponse, + ] + >; listTenants( - request: protos.google.cloud.talent.v4.IListTenantsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.cloud.talent.v4.IListTenantsRequest, - protos.google.cloud.talent.v4.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4.ITenant>): void; + request: protos.google.cloud.talent.v4.IListTenantsRequest, + options: CallOptions, + callback: PaginationCallback< + protos.google.cloud.talent.v4.IListTenantsRequest, + protos.google.cloud.talent.v4.IListTenantsResponse | null | undefined, + protos.google.cloud.talent.v4.ITenant + >, + ): void; listTenants( - request: protos.google.cloud.talent.v4.IListTenantsRequest, - callback: PaginationCallback< - protos.google.cloud.talent.v4.IListTenantsRequest, - protos.google.cloud.talent.v4.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4.ITenant>): void; + request: protos.google.cloud.talent.v4.IListTenantsRequest, + callback: PaginationCallback< + protos.google.cloud.talent.v4.IListTenantsRequest, + protos.google.cloud.talent.v4.IListTenantsResponse | null | undefined, + protos.google.cloud.talent.v4.ITenant + >, + ): void; listTenants( - request?: protos.google.cloud.talent.v4.IListTenantsRequest, - optionsOrCallback?: CallOptions|PaginationCallback< + request?: protos.google.cloud.talent.v4.IListTenantsRequest, + optionsOrCallback?: + | CallOptions + | PaginationCallback< protos.google.cloud.talent.v4.IListTenantsRequest, - protos.google.cloud.talent.v4.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4.ITenant>, - callback?: PaginationCallback< - protos.google.cloud.talent.v4.IListTenantsRequest, - protos.google.cloud.talent.v4.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4.ITenant>): - Promise<[ - protos.google.cloud.talent.v4.ITenant[], - protos.google.cloud.talent.v4.IListTenantsRequest|null, - protos.google.cloud.talent.v4.IListTenantsResponse - ]>|void { + protos.google.cloud.talent.v4.IListTenantsResponse | null | undefined, + protos.google.cloud.talent.v4.ITenant + >, + callback?: PaginationCallback< + protos.google.cloud.talent.v4.IListTenantsRequest, + protos.google.cloud.talent.v4.IListTenantsResponse | null | undefined, + protos.google.cloud.talent.v4.ITenant + >, + ): Promise< + [ + protos.google.cloud.talent.v4.ITenant[], + protos.google.cloud.talent.v4.IListTenantsRequest | null, + protos.google.cloud.talent.v4.IListTenantsResponse, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: PaginationCallback< - protos.google.cloud.talent.v4.IListTenantsRequest, - protos.google.cloud.talent.v4.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4.ITenant>|undefined = callback + const wrappedCallback: + | PaginationCallback< + protos.google.cloud.talent.v4.IListTenantsRequest, + protos.google.cloud.talent.v4.IListTenantsResponse | null | undefined, + protos.google.cloud.talent.v4.ITenant + > + | undefined = callback ? (error, values, nextPageRequest, rawResponse) => { this._log.info('listTenants values %j', values); callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. @@ -838,114 +1026,118 @@ export class TenantServiceClient { this._log.info('listTenants request %j', request); return this.innerApiCalls .listTenants(request, options, wrappedCallback) - ?.then(([response, input, output]: [ - protos.google.cloud.talent.v4.ITenant[], - protos.google.cloud.talent.v4.IListTenantsRequest|null, - protos.google.cloud.talent.v4.IListTenantsResponse - ]) => { - this._log.info('listTenants values %j', response); - return [response, input, output]; - }); + ?.then( + ([response, input, output]: [ + protos.google.cloud.talent.v4.ITenant[], + protos.google.cloud.talent.v4.IListTenantsRequest | null, + protos.google.cloud.talent.v4.IListTenantsResponse, + ]) => { + this._log.info('listTenants values %j', response); + return [response, input, output]; + }, + ); } -/** - * Equivalent to `listTenants`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of tenants to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listTenantsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Equivalent to `listTenants`, but returns a NodeJS Stream object. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of tenants to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Stream} + * An object stream which emits an object representing {@link protos.google.cloud.talent.v4.Tenant|Tenant} on 'data' event. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed. Note that it can affect your quota. + * We recommend using `listTenantsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listTenantsStream( - request?: protos.google.cloud.talent.v4.IListTenantsRequest, - options?: CallOptions): - Transform{ + request?: protos.google.cloud.talent.v4.IListTenantsRequest, + options?: CallOptions, + ): Transform { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listTenants']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listTenants stream %j', request); return this.descriptors.page.listTenants.createStream( this.innerApiCalls.listTenants as GaxCall, request, - callSettings + callSettings, ); } -/** - * Equivalent to `listTenants`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of tenants to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.cloud.talent.v4.Tenant|Tenant}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - * @example include:samples/generated/v4/tenant_service.list_tenants.js - * region_tag:jobs_v4_generated_TenantService_ListTenants_async - */ + /** + * Equivalent to `listTenants`, but returns an iterable object. + * + * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of tenants to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Object} + * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. + * When you iterate the returned iterable, each element will be an object representing + * {@link protos.google.cloud.talent.v4.Tenant|Tenant}. The API will be called under the hood as needed, once per the page, + * so you can stop the iteration when you don't need more results. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + * @example include:samples/generated/v4/tenant_service.list_tenants.js + * region_tag:jobs_v4_generated_TenantService_ListTenants_async + */ listTenantsAsync( - request?: protos.google.cloud.talent.v4.IListTenantsRequest, - options?: CallOptions): - AsyncIterable{ + request?: protos.google.cloud.talent.v4.IListTenantsRequest, + options?: CallOptions, + ): AsyncIterable { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listTenants']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listTenants iterate %j', request); return this.descriptors.page.listTenants.asyncIterate( this.innerApiCalls['listTenants'] as GaxCall, request as {}, - callSettings + callSettings, ) as AsyncIterable; } // -------------------- @@ -960,7 +1152,7 @@ export class TenantServiceClient { * @param {string} company * @returns {string} Resource name string. */ - companyPath(project:string,tenant:string,company:string) { + companyPath(project: string, tenant: string, company: string) { return this.pathTemplates.companyPathTemplate.render({ project: project, tenant: tenant, @@ -1009,7 +1201,7 @@ export class TenantServiceClient { * @param {string} job * @returns {string} Resource name string. */ - jobPath(project:string,tenant:string,job:string) { + jobPath(project: string, tenant: string, job: string) { return this.pathTemplates.jobPathTemplate.render({ project: project, tenant: tenant, @@ -1056,7 +1248,7 @@ export class TenantServiceClient { * @param {string} project * @returns {string} Resource name string. */ - projectPath(project:string) { + projectPath(project: string) { return this.pathTemplates.projectPathTemplate.render({ project: project, }); @@ -1080,7 +1272,7 @@ export class TenantServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -1117,7 +1309,7 @@ export class TenantServiceClient { */ close(): Promise { if (this.tenantServiceStub && !this._terminated) { - return this.tenantServiceStub.then(stub => { + return this.tenantServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -1125,4 +1317,4 @@ export class TenantServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4beta1/company_service_client.ts b/packages/google-cloud-talent/src/v4beta1/company_service_client.ts index fcbf146331dd..ae946804e356 100644 --- a/packages/google-cloud-talent/src/v4beta1/company_service_client.ts +++ b/packages/google-cloud-talent/src/v4beta1/company_service_client.ts @@ -18,11 +18,18 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall} from 'google-gax'; -import {Transform} from 'stream'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, + PaginationCallback, + GaxCall, +} from 'google-gax'; +import { Transform } from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +51,7 @@ export class CompanyServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +64,9 @@ export class CompanyServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - companyServiceStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + companyServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of CompanyServiceClient. @@ -100,21 +107,42 @@ export class CompanyServiceClient { * const client = new CompanyServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof CompanyServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +167,7 @@ export class CompanyServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +181,7 @@ export class CompanyServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,22 +203,22 @@ export class CompanyServiceClient { // Create useful helper objects for these. this.pathTemplates = { projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}' + 'projects/{project}', ), projectCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/companies/{company}' + 'projects/{project}/companies/{company}', ), projectJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/jobs/{job}' + 'projects/{project}/jobs/{job}', ), projectTenantCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), projectTenantJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; @@ -201,14 +226,20 @@ export class CompanyServiceClient { // (e.g. 50 results at a time, with tokens to get subsequent // pages). Denote the keys used for pagination and results. this.descriptors.page = { - listCompanies: - new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'companies') + listCompanies: new this._gaxModule.PageDescriptor( + 'pageToken', + 'nextPageToken', + 'companies', + ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4beta1.CompanyService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4beta1.CompanyService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -239,37 +270,46 @@ export class CompanyServiceClient { // Put together the "service stub" for // google.cloud.talent.v4beta1.CompanyService. this.companyServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4beta1.CompanyService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4beta1.CompanyService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4beta1.CompanyService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const companyServiceStubMethods = - ['createCompany', 'getCompany', 'updateCompany', 'deleteCompany', 'listCompanies']; + const companyServiceStubMethods = [ + 'createCompany', + 'getCompany', + 'updateCompany', + 'deleteCompany', + 'listCompanies', + ]; for (const methodName of companyServiceStubMethods) { const callPromise = this.companyServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - this.descriptors.page[methodName] || - undefined; + const descriptor = this.descriptors.page[methodName] || undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -284,8 +324,14 @@ export class CompanyServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -296,8 +342,14 @@ export class CompanyServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -330,7 +382,7 @@ export class CompanyServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -340,8 +392,9 @@ export class CompanyServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -352,513 +405,692 @@ export class CompanyServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Creates a new company entity. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created, for example, "projects/foo". - * @param {google.cloud.talent.v4beta1.Company} request.company - * Required. The company to be created. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/company_service.create_company.js - * region_tag:jobs_v4beta1_generated_CompanyService_CreateCompany_async - */ + /** + * Creates a new company entity. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created, for example, "projects/foo". + * @param {google.cloud.talent.v4beta1.Company} request.company + * Required. The company to be created. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/company_service.create_company.js + * region_tag:jobs_v4beta1_generated_CompanyService_CreateCompany_async + */ createCompany( - request?: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.ICreateCompanyRequest | undefined, + {} | undefined, + ] + >; createCompany( - request: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.ICreateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createCompany( - request: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.ICreateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createCompany( - request?: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.ICreateCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.ICreateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.ICreateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.ICreateCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createCompany request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.ICreateCompanyRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.ICreateCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('createCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.ICreateCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('createCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Retrieves specified company. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the company to be retrieved. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for - * example, "projects/api-test-project/tenants/foo/companies/bar". - * - * If tenant id is unspecified, the default tenant is used, for - * example, "projects/api-test-project/companies/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/company_service.get_company.js - * region_tag:jobs_v4beta1_generated_CompanyService_GetCompany_async - */ + /** + * Retrieves specified company. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the company to be retrieved. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for + * example, "projects/api-test-project/tenants/foo/companies/bar". + * + * If tenant id is unspecified, the default tenant is used, for + * example, "projects/api-test-project/companies/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/company_service.get_company.js + * region_tag:jobs_v4beta1_generated_CompanyService_GetCompany_async + */ getCompany( - request?: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IGetCompanyRequest | undefined, + {} | undefined, + ] + >; getCompany( - request: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IGetCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; getCompany( - request: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IGetCompanyRequest | null | undefined, + {} | null | undefined + >, + ): void; getCompany( - request?: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IGetCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IGetCompanyRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IGetCompanyRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IGetCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('getCompany request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.IGetCompanyRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('getCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.getCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IGetCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('getCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .getCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IGetCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('getCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Updates specified company. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.cloud.talent.v4beta1.Company} request.company - * Required. The company resource to replace the current resource in the - * system. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. - * - * If - * {@link protos.google.cloud.talent.v4beta1.UpdateCompanyRequest.update_mask|update_mask} - * is provided, only the specified fields in - * {@link protos.google.cloud.talent.v4beta1.UpdateCompanyRequest.company|company} are - * updated. Otherwise all the fields are updated. - * - * A field mask to specify the company fields to be updated. Only - * top level fields of {@link protos.google.cloud.talent.v4beta1.Company|Company} are - * supported. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/company_service.update_company.js - * region_tag:jobs_v4beta1_generated_CompanyService_UpdateCompany_async - */ + /** + * Updates specified company. + * + * @param {Object} request + * The request object that will be sent. + * @param {google.cloud.talent.v4beta1.Company} request.company + * Required. The company resource to replace the current resource in the + * system. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. + * + * If + * {@link protos.google.cloud.talent.v4beta1.UpdateCompanyRequest.update_mask|update_mask} + * is provided, only the specified fields in + * {@link protos.google.cloud.talent.v4beta1.UpdateCompanyRequest.company|company} are + * updated. Otherwise all the fields are updated. + * + * A field mask to specify the company fields to be updated. Only + * top level fields of {@link protos.google.cloud.talent.v4beta1.Company|Company} are + * supported. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/company_service.update_company.js + * region_tag:jobs_v4beta1_generated_CompanyService_UpdateCompany_async + */ updateCompany( - request?: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest | undefined, + {} | undefined, + ] + >; updateCompany( - request: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): void; updateCompany( - request: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): void; updateCompany( - request?: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'company.name': request.company!.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + 'company.name': request.company!.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('updateCompany request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ICompany, + | protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('updateCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.updateCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ICompany, - protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('updateCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .updateCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ICompany, + protos.google.cloud.talent.v4beta1.IUpdateCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('updateCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Deletes specified company. - * Prerequisite: The company has no jobs associated with it. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the company to be deleted. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for - * example, "projects/foo/tenants/bar/companies/baz". - * - * If tenant id is unspecified, the default tenant is used, for - * example, "projects/foo/companies/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/company_service.delete_company.js - * region_tag:jobs_v4beta1_generated_CompanyService_DeleteCompany_async - */ + /** + * Deletes specified company. + * Prerequisite: The company has no jobs associated with it. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the company to be deleted. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for + * example, "projects/foo/tenants/bar/companies/baz". + * + * If tenant id is unspecified, the default tenant is used, for + * example, "projects/foo/companies/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/company_service.delete_company.js + * region_tag:jobs_v4beta1_generated_CompanyService_DeleteCompany_async + */ deleteCompany( - request?: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, - options?: CallOptions): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest | undefined, + {} | undefined, + ] + >; deleteCompany( - request: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, + options: CallOptions, + callback: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): void; deleteCompany( - request: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, + callback: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): void; deleteCompany( - request?: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('deleteCompany request %j', request); - const wrappedCallback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('deleteCompany response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.deleteCompany(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest|undefined, - {}|undefined - ]) => { - this._log.info('deleteCompany response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .deleteCompany(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteCompanyRequest | undefined, + {} | undefined, + ]) => { + this._log.info('deleteCompany response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } - /** - * Lists all companies associated with the project. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenant/bar". - * - * If tenant id is unspecified, the default tenant will be used, for - * example, "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of companies to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {boolean} request.requireOpenJobs - * Set to true if the companies requested must have open jobs. - * - * Defaults to false. - * - * If true, at most - * {@link protos.google.cloud.talent.v4beta1.ListCompaniesRequest.page_size|page_size} of - * companies are fetched, among which only those with open jobs are returned. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.cloud.talent.v4beta1.Company|Company}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listCompaniesAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Lists all companies associated with the project. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenant/bar". + * + * If tenant id is unspecified, the default tenant will be used, for + * example, "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of companies to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {boolean} request.requireOpenJobs + * Set to true if the companies requested must have open jobs. + * + * Defaults to false. + * + * If true, at most + * {@link protos.google.cloud.talent.v4beta1.ListCompaniesRequest.page_size|page_size} of + * companies are fetched, among which only those with open jobs are returned. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is Array of {@link protos.google.cloud.talent.v4beta1.Company|Company}. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed and will merge results from all the pages into this array. + * Note that it can affect your quota. + * We recommend using `listCompaniesAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listCompanies( - request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany[], - protos.google.cloud.talent.v4beta1.IListCompaniesRequest|null, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse - ]>; + request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany[], + protos.google.cloud.talent.v4beta1.IListCompaniesRequest | null, + protos.google.cloud.talent.v4beta1.IListCompaniesResponse, + ] + >; listCompanies( - request: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ICompany>): void; + request: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + options: CallOptions, + callback: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + | protos.google.cloud.talent.v4beta1.IListCompaniesResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ICompany + >, + ): void; listCompanies( - request: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - callback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ICompany>): void; + request: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + callback: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + | protos.google.cloud.talent.v4beta1.IListCompaniesResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ICompany + >, + ): void; listCompanies( - request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - optionsOrCallback?: CallOptions|PaginationCallback< + request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + optionsOrCallback?: + | CallOptions + | PaginationCallback< protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ICompany>, - callback?: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ICompany>): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompany[], - protos.google.cloud.talent.v4beta1.IListCompaniesRequest|null, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse - ]>|void { + | protos.google.cloud.talent.v4beta1.IListCompaniesResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ICompany + >, + callback?: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + | protos.google.cloud.talent.v4beta1.IListCompaniesResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ICompany + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompany[], + protos.google.cloud.talent.v4beta1.IListCompaniesRequest | null, + protos.google.cloud.talent.v4beta1.IListCompaniesResponse, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ICompany>|undefined = callback + const wrappedCallback: + | PaginationCallback< + protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + | protos.google.cloud.talent.v4beta1.IListCompaniesResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ICompany + > + | undefined = callback ? (error, values, nextPageRequest, rawResponse) => { this._log.info('listCompanies values %j', values); callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. @@ -867,136 +1099,140 @@ export class CompanyServiceClient { this._log.info('listCompanies request %j', request); return this.innerApiCalls .listCompanies(request, options, wrappedCallback) - ?.then(([response, input, output]: [ - protos.google.cloud.talent.v4beta1.ICompany[], - protos.google.cloud.talent.v4beta1.IListCompaniesRequest|null, - protos.google.cloud.talent.v4beta1.IListCompaniesResponse - ]) => { - this._log.info('listCompanies values %j', response); - return [response, input, output]; - }); + ?.then( + ([response, input, output]: [ + protos.google.cloud.talent.v4beta1.ICompany[], + protos.google.cloud.talent.v4beta1.IListCompaniesRequest | null, + protos.google.cloud.talent.v4beta1.IListCompaniesResponse, + ]) => { + this._log.info('listCompanies values %j', response); + return [response, input, output]; + }, + ); } -/** - * Equivalent to `listCompanies`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenant/bar". - * - * If tenant id is unspecified, the default tenant will be used, for - * example, "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of companies to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {boolean} request.requireOpenJobs - * Set to true if the companies requested must have open jobs. - * - * Defaults to false. - * - * If true, at most - * {@link protos.google.cloud.talent.v4beta1.ListCompaniesRequest.page_size|page_size} of - * companies are fetched, among which only those with open jobs are returned. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listCompaniesAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Equivalent to `listCompanies`, but returns a NodeJS Stream object. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenant/bar". + * + * If tenant id is unspecified, the default tenant will be used, for + * example, "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of companies to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {boolean} request.requireOpenJobs + * Set to true if the companies requested must have open jobs. + * + * Defaults to false. + * + * If true, at most + * {@link protos.google.cloud.talent.v4beta1.ListCompaniesRequest.page_size|page_size} of + * companies are fetched, among which only those with open jobs are returned. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Stream} + * An object stream which emits an object representing {@link protos.google.cloud.talent.v4beta1.Company|Company} on 'data' event. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed. Note that it can affect your quota. + * We recommend using `listCompaniesAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listCompaniesStream( - request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - options?: CallOptions): - Transform{ + request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + options?: CallOptions, + ): Transform { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listCompanies']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listCompanies stream %j', request); return this.descriptors.page.listCompanies.createStream( this.innerApiCalls.listCompanies as GaxCall, request, - callSettings + callSettings, ); } -/** - * Equivalent to `listCompanies`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the company is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenant/bar". - * - * If tenant id is unspecified, the default tenant will be used, for - * example, "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of companies to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {boolean} request.requireOpenJobs - * Set to true if the companies requested must have open jobs. - * - * Defaults to false. - * - * If true, at most - * {@link protos.google.cloud.talent.v4beta1.ListCompaniesRequest.page_size|page_size} of - * companies are fetched, among which only those with open jobs are returned. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.cloud.talent.v4beta1.Company|Company}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/company_service.list_companies.js - * region_tag:jobs_v4beta1_generated_CompanyService_ListCompanies_async - */ + /** + * Equivalent to `listCompanies`, but returns an iterable object. + * + * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the company is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenant/bar". + * + * If tenant id is unspecified, the default tenant will be used, for + * example, "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of companies to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {boolean} request.requireOpenJobs + * Set to true if the companies requested must have open jobs. + * + * Defaults to false. + * + * If true, at most + * {@link protos.google.cloud.talent.v4beta1.ListCompaniesRequest.page_size|page_size} of + * companies are fetched, among which only those with open jobs are returned. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Object} + * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. + * When you iterate the returned iterable, each element will be an object representing + * {@link protos.google.cloud.talent.v4beta1.Company|Company}. The API will be called under the hood as needed, once per the page, + * so you can stop the iteration when you don't need more results. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/company_service.list_companies.js + * region_tag:jobs_v4beta1_generated_CompanyService_ListCompanies_async + */ listCompaniesAsync( - request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, - options?: CallOptions): - AsyncIterable{ + request?: protos.google.cloud.talent.v4beta1.IListCompaniesRequest, + options?: CallOptions, + ): AsyncIterable { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listCompanies']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listCompanies iterate %j', request); return this.descriptors.page.listCompanies.asyncIterate( this.innerApiCalls['listCompanies'] as GaxCall, request as {}, - callSettings + callSettings, ) as AsyncIterable; } // -------------------- @@ -1009,7 +1245,7 @@ export class CompanyServiceClient { * @param {string} project * @returns {string} Resource name string. */ - projectPath(project:string) { + projectPath(project: string) { return this.pathTemplates.projectPathTemplate.render({ project: project, }); @@ -1033,7 +1269,7 @@ export class CompanyServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectCompanyPath(project:string,company:string) { + projectCompanyPath(project: string, company: string) { return this.pathTemplates.projectCompanyPathTemplate.render({ project: project, company: company, @@ -1048,7 +1284,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).project; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).project; } /** @@ -1059,7 +1297,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).company; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).company; } /** @@ -1069,7 +1309,7 @@ export class CompanyServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectJobPath(project:string,job:string) { + projectJobPath(project: string, job: string) { return this.pathTemplates.projectJobPathTemplate.render({ project: project, job: job, @@ -1084,7 +1324,8 @@ export class CompanyServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectJobName(projectJobName: string) { - return this.pathTemplates.projectJobPathTemplate.match(projectJobName).project; + return this.pathTemplates.projectJobPathTemplate.match(projectJobName) + .project; } /** @@ -1106,7 +1347,7 @@ export class CompanyServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectTenantCompanyPath(project:string,tenant:string,company:string) { + projectTenantCompanyPath(project: string, tenant: string, company: string) { return this.pathTemplates.projectTenantCompanyPathTemplate.render({ project: project, tenant: tenant, @@ -1122,7 +1363,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).project; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).project; } /** @@ -1133,7 +1376,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).tenant; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).tenant; } /** @@ -1144,7 +1389,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).company; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).company; } /** @@ -1155,7 +1402,7 @@ export class CompanyServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectTenantJobPath(project:string,tenant:string,job:string) { + projectTenantJobPath(project: string, tenant: string, job: string) { return this.pathTemplates.projectTenantJobPathTemplate.render({ project: project, tenant: tenant, @@ -1171,7 +1418,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).project; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).project; } /** @@ -1182,7 +1431,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).tenant; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).tenant; } /** @@ -1193,7 +1444,9 @@ export class CompanyServiceClient { * @returns {string} A string representing the job. */ matchJobFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).job; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).job; } /** @@ -1203,7 +1456,7 @@ export class CompanyServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -1240,7 +1493,7 @@ export class CompanyServiceClient { */ close(): Promise { if (this.companyServiceStub && !this._terminated) { - return this.companyServiceStub.then(stub => { + return this.companyServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -1248,4 +1501,4 @@ export class CompanyServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4beta1/completion_client.ts b/packages/google-cloud-talent/src/v4beta1/completion_client.ts index f58fed9e1a37..5bb3d9b4f6b6 100644 --- a/packages/google-cloud-talent/src/v4beta1/completion_client.ts +++ b/packages/google-cloud-talent/src/v4beta1/completion_client.ts @@ -18,11 +18,16 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, +} from 'google-gax'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +49,7 @@ export class CompletionClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +62,9 @@ export class CompletionClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - completionStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + completionStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of CompletionClient. @@ -100,21 +105,42 @@ export class CompletionClient { * const client = new CompletionClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof CompletionClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +165,7 @@ export class CompletionClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +179,7 @@ export class CompletionClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,29 +201,32 @@ export class CompletionClient { // Create useful helper objects for these. this.pathTemplates = { projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}' + 'projects/{project}', ), projectCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/companies/{company}' + 'projects/{project}/companies/{company}', ), projectJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/jobs/{job}' + 'projects/{project}/jobs/{job}', ), projectTenantCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), projectTenantJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4beta1.Completion', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4beta1.Completion', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -231,36 +257,40 @@ export class CompletionClient { // Put together the "service stub" for // google.cloud.talent.v4beta1.Completion. this.completionStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4beta1.Completion') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4beta1.Completion', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4beta1.Completion, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const completionStubMethods = - ['completeQuery']; + const completionStubMethods = ['completeQuery']; for (const methodName of completionStubMethods) { const callPromise = this.completionStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - undefined; + const descriptor = undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -275,8 +305,14 @@ export class CompletionClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -287,8 +323,14 @@ export class CompletionClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -321,7 +363,7 @@ export class CompletionClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -331,8 +373,9 @@ export class CompletionClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -343,133 +386,173 @@ export class CompletionClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Completes the specified prefix with keyword suggestions. - * Intended for use by a job search auto-complete search box. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of tenant the completion is performed within. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenant/bar". - * - * If tenant id is unspecified, the default tenant is used, for - * example, "projects/foo". - * @param {string} request.query - * Required. The query used to generate suggestions. - * - * The maximum number of allowed characters is 255. - * @param {string[]} request.languageCodes - * The list of languages of the query. This is - * the BCP-47 language code, such as "en-US" or "sr-Latn". - * For more information, see - * [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). - * - * The maximum number of allowed characters is 255. - * @param {number} request.pageSize - * Required. Completion result count. - * - * The maximum allowed page size is 10. - * @param {string} request.company - * If provided, restricts completion to specified company. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for - * example, "projects/foo/tenants/bar/companies/baz". - * - * If tenant id is unspecified, the default tenant is used, for - * example, "projects/foo". - * @param {google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionScope} request.scope - * The scope of the completion. The defaults is - * {@link protos.google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionScope.PUBLIC|CompletionScope.PUBLIC}. - * @param {google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionType} request.type - * The completion topic. The default is - * {@link protos.google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionType.COMBINED|CompletionType.COMBINED}. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.CompleteQueryResponse|CompleteQueryResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/completion.complete_query.js - * region_tag:jobs_v4beta1_generated_Completion_CompleteQuery_async - */ + /** + * Completes the specified prefix with keyword suggestions. + * Intended for use by a job search auto-complete search box. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of tenant the completion is performed within. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenant/bar". + * + * If tenant id is unspecified, the default tenant is used, for + * example, "projects/foo". + * @param {string} request.query + * Required. The query used to generate suggestions. + * + * The maximum number of allowed characters is 255. + * @param {string[]} request.languageCodes + * The list of languages of the query. This is + * the BCP-47 language code, such as "en-US" or "sr-Latn". + * For more information, see + * [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). + * + * The maximum number of allowed characters is 255. + * @param {number} request.pageSize + * Required. Completion result count. + * + * The maximum allowed page size is 10. + * @param {string} request.company + * If provided, restricts completion to specified company. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for + * example, "projects/foo/tenants/bar/companies/baz". + * + * If tenant id is unspecified, the default tenant is used, for + * example, "projects/foo". + * @param {google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionScope} request.scope + * The scope of the completion. The defaults is + * {@link protos.google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionScope.PUBLIC|CompletionScope.PUBLIC}. + * @param {google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionType} request.type + * The completion topic. The default is + * {@link protos.google.cloud.talent.v4beta1.CompleteQueryRequest.CompletionType.COMBINED|CompletionType.COMBINED}. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.CompleteQueryResponse|CompleteQueryResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/completion.complete_query.js + * region_tag:jobs_v4beta1_generated_Completion_CompleteQuery_async + */ completeQuery( - request?: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, + protos.google.cloud.talent.v4beta1.ICompleteQueryRequest | undefined, + {} | undefined, + ] + >; completeQuery( - request: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, + | protos.google.cloud.talent.v4beta1.ICompleteQueryRequest + | null + | undefined, + {} | null | undefined + >, + ): void; completeQuery( - request: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, + | protos.google.cloud.talent.v4beta1.ICompleteQueryRequest + | null + | undefined, + {} | null | undefined + >, + ): void; completeQuery( - request?: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.ICompleteQueryRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.ICompleteQueryRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, + | protos.google.cloud.talent.v4beta1.ICompleteQueryRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, + protos.google.cloud.talent.v4beta1.ICompleteQueryRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('completeQuery request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, + | protos.google.cloud.talent.v4beta1.ICompleteQueryRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('completeQuery response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.completeQuery(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, - protos.google.cloud.talent.v4beta1.ICompleteQueryRequest|undefined, - {}|undefined - ]) => { - this._log.info('completeQuery response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .completeQuery(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ICompleteQueryResponse, + protos.google.cloud.talent.v4beta1.ICompleteQueryRequest | undefined, + {} | undefined, + ]) => { + this._log.info('completeQuery response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); @@ -485,7 +568,7 @@ export class CompletionClient { * @param {string} project * @returns {string} Resource name string. */ - projectPath(project:string) { + projectPath(project: string) { return this.pathTemplates.projectPathTemplate.render({ project: project, }); @@ -509,7 +592,7 @@ export class CompletionClient { * @param {string} company * @returns {string} Resource name string. */ - projectCompanyPath(project:string,company:string) { + projectCompanyPath(project: string, company: string) { return this.pathTemplates.projectCompanyPathTemplate.render({ project: project, company: company, @@ -524,7 +607,9 @@ export class CompletionClient { * @returns {string} A string representing the project. */ matchProjectFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).project; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).project; } /** @@ -535,7 +620,9 @@ export class CompletionClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).company; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).company; } /** @@ -545,7 +632,7 @@ export class CompletionClient { * @param {string} job * @returns {string} Resource name string. */ - projectJobPath(project:string,job:string) { + projectJobPath(project: string, job: string) { return this.pathTemplates.projectJobPathTemplate.render({ project: project, job: job, @@ -560,7 +647,8 @@ export class CompletionClient { * @returns {string} A string representing the project. */ matchProjectFromProjectJobName(projectJobName: string) { - return this.pathTemplates.projectJobPathTemplate.match(projectJobName).project; + return this.pathTemplates.projectJobPathTemplate.match(projectJobName) + .project; } /** @@ -582,7 +670,7 @@ export class CompletionClient { * @param {string} company * @returns {string} Resource name string. */ - projectTenantCompanyPath(project:string,tenant:string,company:string) { + projectTenantCompanyPath(project: string, tenant: string, company: string) { return this.pathTemplates.projectTenantCompanyPathTemplate.render({ project: project, tenant: tenant, @@ -598,7 +686,9 @@ export class CompletionClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).project; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).project; } /** @@ -609,7 +699,9 @@ export class CompletionClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).tenant; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).tenant; } /** @@ -620,7 +712,9 @@ export class CompletionClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).company; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).company; } /** @@ -631,7 +725,7 @@ export class CompletionClient { * @param {string} job * @returns {string} Resource name string. */ - projectTenantJobPath(project:string,tenant:string,job:string) { + projectTenantJobPath(project: string, tenant: string, job: string) { return this.pathTemplates.projectTenantJobPathTemplate.render({ project: project, tenant: tenant, @@ -647,7 +741,9 @@ export class CompletionClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).project; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).project; } /** @@ -658,7 +754,9 @@ export class CompletionClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).tenant; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).tenant; } /** @@ -669,7 +767,9 @@ export class CompletionClient { * @returns {string} A string representing the job. */ matchJobFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).job; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).job; } /** @@ -679,7 +779,7 @@ export class CompletionClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -716,7 +816,7 @@ export class CompletionClient { */ close(): Promise { if (this.completionStub && !this._terminated) { - return this.completionStub.then(stub => { + return this.completionStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -724,4 +824,4 @@ export class CompletionClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4beta1/event_service_client.ts b/packages/google-cloud-talent/src/v4beta1/event_service_client.ts index 575cffb45f4c..5a0468852041 100644 --- a/packages/google-cloud-talent/src/v4beta1/event_service_client.ts +++ b/packages/google-cloud-talent/src/v4beta1/event_service_client.ts @@ -18,11 +18,16 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions} from 'google-gax'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, +} from 'google-gax'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +49,7 @@ export class EventServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +62,9 @@ export class EventServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - eventServiceStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + eventServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of EventServiceClient. @@ -100,21 +105,42 @@ export class EventServiceClient { * const client = new EventServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof EventServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +165,7 @@ export class EventServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +179,7 @@ export class EventServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,29 +201,32 @@ export class EventServiceClient { // Create useful helper objects for these. this.pathTemplates = { projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}' + 'projects/{project}', ), projectCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/companies/{company}' + 'projects/{project}/companies/{company}', ), projectJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/jobs/{job}' + 'projects/{project}/jobs/{job}', ), projectTenantCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), projectTenantJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4beta1.EventService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4beta1.EventService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -231,36 +257,40 @@ export class EventServiceClient { // Put together the "service stub" for // google.cloud.talent.v4beta1.EventService. this.eventServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4beta1.EventService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4beta1.EventService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4beta1.EventService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const eventServiceStubMethods = - ['createClientEvent']; + const eventServiceStubMethods = ['createClientEvent']; for (const methodName of eventServiceStubMethods) { const callPromise = this.eventServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - undefined; + const descriptor = undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -275,8 +305,14 @@ export class EventServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -287,8 +323,14 @@ export class EventServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -321,7 +363,7 @@ export class EventServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -331,8 +373,9 @@ export class EventServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -343,109 +386,152 @@ export class EventServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Report events issued when end user interacts with customer's application - * that uses Cloud Talent Solution. You may inspect the created events in - * [self service - * tools](https://console.cloud.google.com/talent-solution/overview). - * [Learn - * more](https://cloud.google.com/talent-solution/docs/management-tools) - * about self service tools. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the tenant under which the event is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created, for example, "projects/foo". - * @param {google.cloud.talent.v4beta1.ClientEvent} request.clientEvent - * Required. Events issued when end user interacts with customer's application - * that uses Cloud Talent Solution. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.ClientEvent|ClientEvent}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/event_service.create_client_event.js - * region_tag:jobs_v4beta1_generated_EventService_CreateClientEvent_async - */ + /** + * Report events issued when end user interacts with customer's application + * that uses Cloud Talent Solution. You may inspect the created events in + * [self service + * tools](https://console.cloud.google.com/talent-solution/overview). + * [Learn + * more](https://cloud.google.com/talent-solution/docs/management-tools) + * about self service tools. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the tenant under which the event is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created, for example, "projects/foo". + * @param {google.cloud.talent.v4beta1.ClientEvent} request.clientEvent + * Required. Events issued when end user interacts with customer's application + * that uses Cloud Talent Solution. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.ClientEvent|ClientEvent}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/event_service.create_client_event.js + * region_tag:jobs_v4beta1_generated_EventService_CreateClientEvent_async + */ createClientEvent( - request?: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IClientEvent, + protos.google.cloud.talent.v4beta1.ICreateClientEventRequest | undefined, + {} | undefined, + ] + >; createClientEvent( - request: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.IClientEvent, + | protos.google.cloud.talent.v4beta1.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createClientEvent( - request: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.IClientEvent, + | protos.google.cloud.talent.v4beta1.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createClientEvent( - request?: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, - optionsOrCallback?: CallOptions|Callback< + request?: protos.google.cloud.talent.v4beta1.ICreateClientEventRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< - protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.IClientEvent, + | protos.google.cloud.talent.v4beta1.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IClientEvent, + protos.google.cloud.talent.v4beta1.ICreateClientEventRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createClientEvent request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.IClientEvent, + | protos.google.cloud.talent.v4beta1.ICreateClientEventRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createClientEvent response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createClientEvent(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.IClientEvent, - protos.google.cloud.talent.v4beta1.ICreateClientEventRequest|undefined, - {}|undefined - ]) => { - this._log.info('createClientEvent response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createClientEvent(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.IClientEvent, + ( + | protos.google.cloud.talent.v4beta1.ICreateClientEventRequest + | undefined + ), + {} | undefined, + ]) => { + this._log.info('createClientEvent response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); @@ -461,7 +547,7 @@ export class EventServiceClient { * @param {string} project * @returns {string} Resource name string. */ - projectPath(project:string) { + projectPath(project: string) { return this.pathTemplates.projectPathTemplate.render({ project: project, }); @@ -485,7 +571,7 @@ export class EventServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectCompanyPath(project:string,company:string) { + projectCompanyPath(project: string, company: string) { return this.pathTemplates.projectCompanyPathTemplate.render({ project: project, company: company, @@ -500,7 +586,9 @@ export class EventServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).project; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).project; } /** @@ -511,7 +599,9 @@ export class EventServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).company; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).company; } /** @@ -521,7 +611,7 @@ export class EventServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectJobPath(project:string,job:string) { + projectJobPath(project: string, job: string) { return this.pathTemplates.projectJobPathTemplate.render({ project: project, job: job, @@ -536,7 +626,8 @@ export class EventServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectJobName(projectJobName: string) { - return this.pathTemplates.projectJobPathTemplate.match(projectJobName).project; + return this.pathTemplates.projectJobPathTemplate.match(projectJobName) + .project; } /** @@ -558,7 +649,7 @@ export class EventServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectTenantCompanyPath(project:string,tenant:string,company:string) { + projectTenantCompanyPath(project: string, tenant: string, company: string) { return this.pathTemplates.projectTenantCompanyPathTemplate.render({ project: project, tenant: tenant, @@ -574,7 +665,9 @@ export class EventServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).project; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).project; } /** @@ -585,7 +678,9 @@ export class EventServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).tenant; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).tenant; } /** @@ -596,7 +691,9 @@ export class EventServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).company; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).company; } /** @@ -607,7 +704,7 @@ export class EventServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectTenantJobPath(project:string,tenant:string,job:string) { + projectTenantJobPath(project: string, tenant: string, job: string) { return this.pathTemplates.projectTenantJobPathTemplate.render({ project: project, tenant: tenant, @@ -623,7 +720,9 @@ export class EventServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).project; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).project; } /** @@ -634,7 +733,9 @@ export class EventServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).tenant; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).tenant; } /** @@ -645,7 +746,9 @@ export class EventServiceClient { * @returns {string} A string representing the job. */ matchJobFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).job; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).job; } /** @@ -655,7 +758,7 @@ export class EventServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -692,7 +795,7 @@ export class EventServiceClient { */ close(): Promise { if (this.eventServiceStub && !this._terminated) { - return this.eventServiceStub.then(stub => { + return this.eventServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -700,4 +803,4 @@ export class EventServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4beta1/index.ts b/packages/google-cloud-talent/src/v4beta1/index.ts index 69bfaedb86e3..8f9887feb507 100644 --- a/packages/google-cloud-talent/src/v4beta1/index.ts +++ b/packages/google-cloud-talent/src/v4beta1/index.ts @@ -16,8 +16,8 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** -export {CompanyServiceClient} from './company_service_client'; -export {CompletionClient} from './completion_client'; -export {EventServiceClient} from './event_service_client'; -export {JobServiceClient} from './job_service_client'; -export {TenantServiceClient} from './tenant_service_client'; +export { CompanyServiceClient } from './company_service_client'; +export { CompletionClient } from './completion_client'; +export { EventServiceClient } from './event_service_client'; +export { JobServiceClient } from './job_service_client'; +export { TenantServiceClient } from './tenant_service_client'; diff --git a/packages/google-cloud-talent/src/v4beta1/job_service_client.ts b/packages/google-cloud-talent/src/v4beta1/job_service_client.ts index 6fae86894dc2..04a9d916008d 100644 --- a/packages/google-cloud-talent/src/v4beta1/job_service_client.ts +++ b/packages/google-cloud-talent/src/v4beta1/job_service_client.ts @@ -18,11 +18,20 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions, GrpcClientOptions, LROperation, PaginationCallback, GaxCall} from 'google-gax'; -import {Transform} from 'stream'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, + GrpcClientOptions, + LROperation, + PaginationCallback, + GaxCall, +} from 'google-gax'; +import { Transform } from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +53,7 @@ export class JobServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,10 +66,10 @@ export class JobServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; operationsClient: gax.OperationsClient; - jobServiceStub?: Promise<{[name: string]: Function}>; + jobServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of JobServiceClient. @@ -101,21 +110,42 @@ export class JobServiceClient { * const client = new JobServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof JobServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -140,7 +170,7 @@ export class JobServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -154,10 +184,7 @@ export class JobServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -179,22 +206,22 @@ export class JobServiceClient { // Create useful helper objects for these. this.pathTemplates = { projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}' + 'projects/{project}', ), projectCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/companies/{company}' + 'projects/{project}/companies/{company}', ), projectJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/jobs/{job}' + 'projects/{project}/jobs/{job}', ), projectTenantCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), projectTenantJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; @@ -202,8 +229,11 @@ export class JobServiceClient { // (e.g. 50 results at a time, with tokens to get subsequent // pages). Denote the keys used for pagination and results. this.descriptors.page = { - listJobs: - new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'jobs') + listJobs: new this._gaxModule.PageDescriptor( + 'pageToken', + 'nextPageToken', + 'jobs', + ), }; const protoFilesRoot = this._gaxModule.protobufFromJSON(jsonProtos); @@ -212,37 +242,53 @@ export class JobServiceClient { // rather than holding a request open. const lroOptions: GrpcClientOptions = { auth: this.auth, - grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined + grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined, }; if (opts.fallback) { lroOptions.protoJson = protoFilesRoot; - lroOptions.httpRules = [{selector: 'google.longrunning.Operations.GetOperation',get: '/v4beta1/{name=projects/*/operations/*}',}]; + lroOptions.httpRules = [ + { + selector: 'google.longrunning.Operations.GetOperation', + get: '/v4beta1/{name=projects/*/operations/*}', + }, + ]; } - this.operationsClient = this._gaxModule.lro(lroOptions).operationsClient(opts); + this.operationsClient = this._gaxModule + .lro(lroOptions) + .operationsClient(opts); const batchCreateJobsResponse = protoFilesRoot.lookup( - '.google.cloud.talent.v4beta1.JobOperationResult') as gax.protobuf.Type; + '.google.cloud.talent.v4beta1.JobOperationResult', + ) as gax.protobuf.Type; const batchCreateJobsMetadata = protoFilesRoot.lookup( - '.google.cloud.talent.v4beta1.BatchOperationMetadata') as gax.protobuf.Type; + '.google.cloud.talent.v4beta1.BatchOperationMetadata', + ) as gax.protobuf.Type; const batchUpdateJobsResponse = protoFilesRoot.lookup( - '.google.cloud.talent.v4beta1.JobOperationResult') as gax.protobuf.Type; + '.google.cloud.talent.v4beta1.JobOperationResult', + ) as gax.protobuf.Type; const batchUpdateJobsMetadata = protoFilesRoot.lookup( - '.google.cloud.talent.v4beta1.BatchOperationMetadata') as gax.protobuf.Type; + '.google.cloud.talent.v4beta1.BatchOperationMetadata', + ) as gax.protobuf.Type; this.descriptors.longrunning = { batchCreateJobs: new this._gaxModule.LongrunningDescriptor( this.operationsClient, batchCreateJobsResponse.decode.bind(batchCreateJobsResponse), - batchCreateJobsMetadata.decode.bind(batchCreateJobsMetadata)), + batchCreateJobsMetadata.decode.bind(batchCreateJobsMetadata), + ), batchUpdateJobs: new this._gaxModule.LongrunningDescriptor( this.operationsClient, batchUpdateJobsResponse.decode.bind(batchUpdateJobsResponse), - batchUpdateJobsMetadata.decode.bind(batchUpdateJobsMetadata)) + batchUpdateJobsMetadata.decode.bind(batchUpdateJobsMetadata), + ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4beta1.JobService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4beta1.JobService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -273,28 +319,44 @@ export class JobServiceClient { // Put together the "service stub" for // google.cloud.talent.v4beta1.JobService. this.jobServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4beta1.JobService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4beta1.JobService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4beta1.JobService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const jobServiceStubMethods = - ['createJob', 'batchCreateJobs', 'getJob', 'updateJob', 'batchUpdateJobs', 'deleteJob', 'batchDeleteJobs', 'listJobs', 'searchJobs', 'searchJobsForAlert']; + const jobServiceStubMethods = [ + 'createJob', + 'batchCreateJobs', + 'getJob', + 'updateJob', + 'batchUpdateJobs', + 'deleteJob', + 'batchDeleteJobs', + 'listJobs', + 'searchJobs', + 'searchJobsForAlert', + ]; for (const methodName of jobServiceStubMethods) { const callPromise = this.jobServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); const descriptor = this.descriptors.page[methodName] || @@ -304,7 +366,7 @@ export class JobServiceClient { callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -319,8 +381,14 @@ export class JobServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -331,8 +399,14 @@ export class JobServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -365,7 +439,7 @@ export class JobServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -375,8 +449,9 @@ export class JobServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -387,1670 +462,2056 @@ export class JobServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Creates a new job. - * - * Typically, the job becomes searchable within 10 seconds, but it may take - * up to 5 minutes. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified a default tenant - * is created. For example, "projects/foo". - * @param {google.cloud.talent.v4beta1.Job} request.job - * Required. The Job to be created. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.create_job.js - * region_tag:jobs_v4beta1_generated_JobService_CreateJob_async - */ + /** + * Creates a new job. + * + * Typically, the job becomes searchable within 10 seconds, but it may take + * up to 5 minutes. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified a default tenant + * is created. For example, "projects/foo". + * @param {google.cloud.talent.v4beta1.Job} request.job + * Required. The Job to be created. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.create_job.js + * region_tag:jobs_v4beta1_generated_JobService_CreateJob_async + */ createJob( - request?: protos.google.cloud.talent.v4beta1.ICreateJobRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.ICreateJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.ICreateJobRequest | undefined, + {} | undefined, + ] + >; createJob( - request: protos.google.cloud.talent.v4beta1.ICreateJobRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateJobRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.ICreateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; createJob( - request: protos.google.cloud.talent.v4beta1.ICreateJobRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateJobRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.ICreateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; createJob( - request?: protos.google.cloud.talent.v4beta1.ICreateJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.ICreateJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.ICreateJobRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.ICreateJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.ICreateJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createJob request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.IJob, + | protos.google.cloud.talent.v4beta1.ICreateJobRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.ICreateJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('createJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.ICreateJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('createJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Retrieves the specified job, whose status is OPEN or recently EXPIRED - * within the last 90 days. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the job to retrieve. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For - * example, "projects/foo/tenants/bar/jobs/baz". - * - * If tenant id is unspecified, the default tenant is used. For - * example, "projects/foo/jobs/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.get_job.js - * region_tag:jobs_v4beta1_generated_JobService_GetJob_async - */ + /** + * Retrieves the specified job, whose status is OPEN or recently EXPIRED + * within the last 90 days. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the job to retrieve. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For + * example, "projects/foo/tenants/bar/jobs/baz". + * + * If tenant id is unspecified, the default tenant is used. For + * example, "projects/foo/jobs/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.get_job.js + * region_tag:jobs_v4beta1_generated_JobService_GetJob_async + */ getJob( - request?: protos.google.cloud.talent.v4beta1.IGetJobRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IGetJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IGetJobRequest | undefined, + {} | undefined, + ] + >; getJob( - request: protos.google.cloud.talent.v4beta1.IGetJobRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IGetJobRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IGetJobRequest | null | undefined, + {} | null | undefined + >, + ): void; getJob( - request: protos.google.cloud.talent.v4beta1.IGetJobRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IGetJobRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IGetJobRequest | null | undefined, + {} | null | undefined + >, + ): void; getJob( - request?: protos.google.cloud.talent.v4beta1.IGetJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IGetJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|undefined, {}|undefined - ]>|void { + protos.google.cloud.talent.v4beta1.IGetJobRequest | null | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IGetJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IGetJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('getJob request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IGetJobRequest | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('getJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.getJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IGetJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('getJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .getJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IGetJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('getJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Updates specified job. - * - * Typically, updated contents become visible in search results within 10 - * seconds, but it may take up to 5 minutes. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.cloud.talent.v4beta1.Job} request.job - * Required. The Job to be updated. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. - * - * If {@link protos.google.cloud.talent.v4beta1.UpdateJobRequest.update_mask|update_mask} - * is provided, only the specified fields in - * {@link protos.google.cloud.talent.v4beta1.UpdateJobRequest.job|job} are updated. - * Otherwise all the fields are updated. - * - * A field mask to restrict the fields that are updated. Only - * top level fields of {@link protos.google.cloud.talent.v4beta1.Job|Job} are supported. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.update_job.js - * region_tag:jobs_v4beta1_generated_JobService_UpdateJob_async - */ + /** + * Updates specified job. + * + * Typically, updated contents become visible in search results within 10 + * seconds, but it may take up to 5 minutes. + * + * @param {Object} request + * The request object that will be sent. + * @param {google.cloud.talent.v4beta1.Job} request.job + * Required. The Job to be updated. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. + * + * If {@link protos.google.cloud.talent.v4beta1.UpdateJobRequest.update_mask|update_mask} + * is provided, only the specified fields in + * {@link protos.google.cloud.talent.v4beta1.UpdateJobRequest.job|job} are updated. + * Otherwise all the fields are updated. + * + * A field mask to restrict the fields that are updated. Only + * top level fields of {@link protos.google.cloud.talent.v4beta1.Job|Job} are supported. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.update_job.js + * region_tag:jobs_v4beta1_generated_JobService_UpdateJob_async + */ updateJob( - request?: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IUpdateJobRequest | undefined, + {} | undefined, + ] + >; updateJob( - request: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IUpdateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; updateJob( - request: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IUpdateJobRequest | null | undefined, + {} | null | undefined + >, + ): void; updateJob( - request?: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IUpdateJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IUpdateJobRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IUpdateJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IUpdateJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'job.name': request.job!.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + 'job.name': request.job!.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('updateJob request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.IJob, + | protos.google.cloud.talent.v4beta1.IUpdateJobRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('updateJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.updateJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.IJob, - protos.google.cloud.talent.v4beta1.IUpdateJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('updateJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .updateJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.IJob, + protos.google.cloud.talent.v4beta1.IUpdateJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('updateJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Deletes the specified job. - * - * Typically, the job becomes unsearchable within 10 seconds, but it may take - * up to 5 minutes. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the job to be deleted. - * - * The format is - * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For - * example, "projects/foo/tenants/bar/jobs/baz". - * - * If tenant id is unspecified, the default tenant is used. For - * example, "projects/foo/jobs/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.delete_job.js - * region_tag:jobs_v4beta1_generated_JobService_DeleteJob_async - */ + /** + * Deletes the specified job. + * + * Typically, the job becomes unsearchable within 10 seconds, but it may take + * up to 5 minutes. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the job to be deleted. + * + * The format is + * "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For + * example, "projects/foo/tenants/bar/jobs/baz". + * + * If tenant id is unspecified, the default tenant is used. For + * example, "projects/foo/jobs/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.delete_job.js + * region_tag:jobs_v4beta1_generated_JobService_DeleteJob_async + */ deleteJob( - request?: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, - options?: CallOptions): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteJobRequest | undefined, + {} | undefined, + ] + >; deleteJob( - request: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, + options: CallOptions, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteJobRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteJob( - request: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, + callback: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteJobRequest | null | undefined, + {} | null | undefined + >, + ): void; deleteJob( - request?: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IDeleteJobRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IDeleteJobRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteJobRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteJobRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('deleteJob request %j', request); - const wrappedCallback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteJobRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('deleteJob response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.deleteJob(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteJobRequest|undefined, - {}|undefined - ]) => { - this._log.info('deleteJob response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .deleteJob(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteJobRequest | undefined, + {} | undefined, + ]) => { + this._log.info('deleteJob response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Deletes a list of {@link protos.google.cloud.talent.v4beta1.Job|Job}s by filter. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {string} request.filter - * Required. The filter string specifies the jobs to be deleted. - * - * Supported operator: =, AND - * - * The fields eligible for filtering are: - * - * * `companyName` (Required) - * * `requisitionId` (Required) - * - * Sample Query: companyName = "projects/foo/companies/bar" AND - * requisitionId = "req-1" - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.batch_delete_jobs.js - * region_tag:jobs_v4beta1_generated_JobService_BatchDeleteJobs_async - */ + /** + * Deletes a list of {@link protos.google.cloud.talent.v4beta1.Job|Job}s by filter. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {string} request.filter + * Required. The filter string specifies the jobs to be deleted. + * + * Supported operator: =, AND + * + * The fields eligible for filtering are: + * + * * `companyName` (Required) + * * `requisitionId` (Required) + * + * Sample Query: companyName = "projects/foo/companies/bar" AND + * requisitionId = "req-1" + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.batch_delete_jobs.js + * region_tag:jobs_v4beta1_generated_JobService_BatchDeleteJobs_async + */ batchDeleteJobs( - request?: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, - options?: CallOptions): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest | undefined, + {} | undefined, + ] + >; batchDeleteJobs( - request: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, + options: CallOptions, + callback: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest + | null + | undefined, + {} | null | undefined + >, + ): void; batchDeleteJobs( - request: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, + callback: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest + | null + | undefined, + {} | null | undefined + >, + ): void; batchDeleteJobs( - request?: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('batchDeleteJobs request %j', request); - const wrappedCallback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('batchDeleteJobs response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.batchDeleteJobs(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest|undefined, - {}|undefined - ]) => { - this._log.info('batchDeleteJobs response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .batchDeleteJobs(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.protobuf.IEmpty, + ( + | protos.google.cloud.talent.v4beta1.IBatchDeleteJobsRequest + | undefined + ), + {} | undefined, + ]) => { + this._log.info('batchDeleteJobs response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Searches for jobs using the provided - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest|SearchJobsRequest}. - * - * This call constrains the - * {@link protos.google.cloud.talent.v4beta1.Job.visibility|visibility} of jobs present in - * the database, and only returns jobs that the caller has permission to - * search against. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant to search within. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode} request.searchMode - * Mode of a search. - * - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. - * @param {google.cloud.talent.v4beta1.RequestMetadata} request.requestMetadata - * Required. The meta information collected about the job searcher, used to - * improve the search quality of the service. The identifiers (such as - * `user_id`) are provided by users, and must be unique and consistent. - * @param {google.cloud.talent.v4beta1.JobQuery} request.jobQuery - * Query used to search against jobs, such as keyword, location filters, etc. - * @param {boolean} request.enableBroadening - * Controls whether to broaden the search when it produces sparse results. - * Broadened queries append results to the end of the matching results - * list. - * - * Defaults to false. - * @param {boolean} request.requirePreciseResultSize - * This field is deprecated. - * @param {number[]} request.histogramQueries - * An expression specifies a histogram request against matching jobs. - * - * Expression syntax is an aggregation function call with histogram facets and - * other options. - * - * Available aggregation function calls are: - * * `count(string_histogram_facet)`: Count the number of matching entities, - * for each distinct attribute value. - * * `count(numeric_histogram_facet, list of buckets)`: Count the number of - * matching entities within each bucket. - * - * A maximum of 200 histogram buckets are supported. - * - * Data types: - * - * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. - * * String: string like "any string with backslash escape for quote(\")." - * * Number: whole number and floating point number like 10, -1 and -0.01. - * * List: list of elements with comma(,) separator surrounded by square - * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. - * - * Built-in constants: - * - * * MIN (minimum number similar to java Double.MIN_VALUE) - * * MAX (maximum number similar to java Double.MAX_VALUE) - * - * Built-in functions: - * - * * bucket(start, end[, label]): bucket built-in function creates a bucket - * with range of [start, end). Note that the end is exclusive, for example, - * bucket(1, MAX, "positive number") or bucket(1, 10). - * - * Job histogram facets: - * - * * company_display_name: histogram by - * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}. - * * employment_type: histogram by - * {@link protos.google.cloud.talent.v4beta1.Job.employment_types|Job.employment_types}, - * for example, - * "FULL_TIME", "PART_TIME". - * * company_size (DEPRECATED): histogram by - * {@link protos.google.cloud.talent.v4beta1.CompanySize|CompanySize}, for example, - * "SMALL", "MEDIUM", "BIG". - * * publish_time_in_day: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * in days. - * Must specify list of numeric buckets in spec. - * * publish_time_in_month: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * in months. - * Must specify list of numeric buckets in spec. - * * publish_time_in_year: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * in years. - * Must specify list of numeric buckets in spec. - * * degree_types: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.degree_types|Job.degree_types}, for - * example, - * "Bachelors", "Masters". - * * job_level: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.job_level|Job.job_level}, for example, - * "Entry - * Level". - * * country: histogram by the country code of jobs, for example, "US", "FR". - * * admin1: histogram by the admin1 code of jobs, which is a global - * placeholder referring to the state, province, or the particular term a - * country uses to define the geographic structure below the country level, - * for example, "CA", "IL". - * * city: histogram by a combination of the "city name, admin1 code". For - * example, "Mountain View, CA", "New York, NY". - * * admin1_country: histogram by a combination of the "admin1 code, country", - * for example, "CA, US", "IL, US". - * * city_coordinate: histogram by the city center's GPS coordinates (latitude - * and longitude), for example, 37.4038522,-122.0987765. Since the - * coordinates of a city center can change, customers may need to refresh - * them periodically. - * * locale: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, for - * example, "en-US", - * "fr-FR". - * * language: histogram by the language subtag of the - * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, - * for example, "en", "fr". - * * category: histogram by the - * {@link protos.google.cloud.talent.v4beta1.JobCategory|JobCategory}, for example, - * "COMPUTER_AND_IT", "HEALTHCARE". - * * base_compensation_unit: histogram by the - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} - * of base salary, for example, "WEEKLY", "MONTHLY". - * * base_compensation: histogram by the base salary. Must specify list of - * numeric buckets to group results by. - * * annualized_base_compensation: histogram by the base annualized salary. - * Must specify list of numeric buckets to group results by. - * * annualized_total_compensation: histogram by the total annualized salary. - * Must specify list of numeric buckets to group results by. - * * string_custom_attribute: histogram by string - * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * string_custom_attribute["key1"]. - * * numeric_custom_attribute: histogram by numeric - * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to - * group results by. - * - * Example expressions: - * - * * `count(admin1)` - * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), - * bucket(100000, MAX)])` - * * `count(string_custom_attribute["some-string-custom-attribute"])` - * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], - * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` - * @param {google.cloud.talent.v4beta1.JobView} request.jobView - * The desired job attributes returned for jobs in the search response. - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} - * if no value is specified. - * @param {number} request.offset - * An integer that specifies the current offset (that is, starting result - * location, amongst the jobs deemed by the API as relevant) in search - * results. This field is only considered if - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.page_token|page_token} is - * unset. - * - * The maximum allowed value is 5000. Otherwise an error is thrown. - * - * For example, 0 means to return results starting from the first matching - * job, and 10 means to return from the 11th job. This can be used for - * pagination, (for example, pageSize = 10 and offset = 10 means to return - * from the second page). - * @param {number} request.pageSize - * A limit on the number of jobs returned in the search results. - * Increasing this value above the default value of 10 can increase search - * response time. The value can be between 1 and 100. - * @param {string} request.pageToken - * The token specifying the current offset within - * search results. See - * {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} - * for an explanation of how to obtain the next set of query results. - * @param {string} request.orderBy - * The criteria determining how search results are sorted. Default is - * `"relevance desc"`. - * - * Supported options are: - * - * * `"relevance desc"`: By relevance descending, as determined by the API - * algorithms. Relevance thresholding of query results is only available - * with this ordering. - * * `"posting_publish_time desc"`: By - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * descending. - * * `"posting_update_time desc"`: By - * {@link protos.google.cloud.talent.v4beta1.Job.posting_update_time|Job.posting_update_time} - * descending. - * * `"title"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} - * ascending. - * * `"title desc"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} - * descending. - * * `"annualized_base_compensation"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_base_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"annualized_total_compensation"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_total_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"custom_ranking desc"`: By the relevance score adjusted to the - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} - * with weight factor assigned by - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} - * in descending order. - * * Location sorting: Use the special syntax to order jobs by distance:
- * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
- * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
- * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by - * multiple locations. See details below.
- * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by - * multiple locations. See details below.
- * The string can have a maximum of 256 characters. When multiple distance - * centers are provided, a job that is close to any of the distance centers - * would have a high rank. When a job has multiple locations, the job - * location closest to one of the distance centers will be used. Jobs that - * don't have locations will be ranked at the bottom. Distance is calculated - * with a precision of 11.3 meters (37.4 feet). Diversification strategy is - * still applied unless explicitly disabled in - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.diversification_level|diversification_level}. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel} request.diversificationLevel - * Controls whether highly similar jobs are returned next to each other in - * the search results. Jobs are identified as highly similar based on - * their titles, job categories, and locations. Highly similar results are - * clustered so that only one representative job of the cluster is - * displayed to the job seeker higher up in the results, with the other jobs - * being displayed lower down in the results. - * - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} - * if no value is specified. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo - * Controls over how job documents get ranked on top of existing relevance - * score (determined by API algorithm). - * @param {boolean} request.disableKeywordMatch - * This field is deprecated. Please use - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * going forward. - * - * To migrate, disable_keyword_match set to false maps to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, - * and disable_keyword_match set to true maps to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. - * If - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * is set, this field is ignored. - * - * Controls whether to disable exact keyword match on - * {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title}, - * {@link protos.google.cloud.talent.v4beta1.Job.description|Job.description}, - * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}, - * {@link protos.google.cloud.talent.v4beta1.Job.addresses|Job.addresses}, - * {@link protos.google.cloud.talent.v4beta1.Job.qualifications|Job.qualifications}. When - * disable keyword match is turned off, a keyword match returns jobs that do - * not match given category filters when there are matching keywords. For - * example, for the query "program manager," a result is returned even if the - * job posting has the title "software developer," which doesn't fall into - * "program manager" ontology, but does have "program manager" appearing in - * its description. - * - * For queries like "cloud" that don't contain title or - * location specific ontology, jobs with "cloud" keyword matches are returned - * regardless of this flag's value. - * - * Use - * {@link protos.google.cloud.talent.v4beta1.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} - * if company-specific globally matched custom field/attribute string values - * are needed. Enabling keyword match improves recall of subsequent search - * requests. - * - * Defaults to false. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode - * Controls what keyword match options to use. - * - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} - * if no value is specified. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] - * Optional. The relevance threshold of the search results. - * - * Default to Google defined threshold, leveraging a balance of - * precision and recall to deliver both highly accurate results and - * comprehensive coverage of relevant information. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse|SearchJobsResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.search_jobs.js - * region_tag:jobs_v4beta1_generated_JobService_SearchJobs_async - */ + /** + * Searches for jobs using the provided + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest|SearchJobsRequest}. + * + * This call constrains the + * {@link protos.google.cloud.talent.v4beta1.Job.visibility|visibility} of jobs present in + * the database, and only returns jobs that the caller has permission to + * search against. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant to search within. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode} request.searchMode + * Mode of a search. + * + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. + * @param {google.cloud.talent.v4beta1.RequestMetadata} request.requestMetadata + * Required. The meta information collected about the job searcher, used to + * improve the search quality of the service. The identifiers (such as + * `user_id`) are provided by users, and must be unique and consistent. + * @param {google.cloud.talent.v4beta1.JobQuery} request.jobQuery + * Query used to search against jobs, such as keyword, location filters, etc. + * @param {boolean} request.enableBroadening + * Controls whether to broaden the search when it produces sparse results. + * Broadened queries append results to the end of the matching results + * list. + * + * Defaults to false. + * @param {boolean} request.requirePreciseResultSize + * This field is deprecated. + * @param {number[]} request.histogramQueries + * An expression specifies a histogram request against matching jobs. + * + * Expression syntax is an aggregation function call with histogram facets and + * other options. + * + * Available aggregation function calls are: + * * `count(string_histogram_facet)`: Count the number of matching entities, + * for each distinct attribute value. + * * `count(numeric_histogram_facet, list of buckets)`: Count the number of + * matching entities within each bucket. + * + * A maximum of 200 histogram buckets are supported. + * + * Data types: + * + * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. + * * String: string like "any string with backslash escape for quote(\")." + * * Number: whole number and floating point number like 10, -1 and -0.01. + * * List: list of elements with comma(,) separator surrounded by square + * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. + * + * Built-in constants: + * + * * MIN (minimum number similar to java Double.MIN_VALUE) + * * MAX (maximum number similar to java Double.MAX_VALUE) + * + * Built-in functions: + * + * * bucket(start, end[, label]): bucket built-in function creates a bucket + * with range of [start, end). Note that the end is exclusive, for example, + * bucket(1, MAX, "positive number") or bucket(1, 10). + * + * Job histogram facets: + * + * * company_display_name: histogram by + * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}. + * * employment_type: histogram by + * {@link protos.google.cloud.talent.v4beta1.Job.employment_types|Job.employment_types}, + * for example, + * "FULL_TIME", "PART_TIME". + * * company_size (DEPRECATED): histogram by + * {@link protos.google.cloud.talent.v4beta1.CompanySize|CompanySize}, for example, + * "SMALL", "MEDIUM", "BIG". + * * publish_time_in_day: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * in days. + * Must specify list of numeric buckets in spec. + * * publish_time_in_month: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * in months. + * Must specify list of numeric buckets in spec. + * * publish_time_in_year: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * in years. + * Must specify list of numeric buckets in spec. + * * degree_types: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.degree_types|Job.degree_types}, for + * example, + * "Bachelors", "Masters". + * * job_level: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.job_level|Job.job_level}, for example, + * "Entry + * Level". + * * country: histogram by the country code of jobs, for example, "US", "FR". + * * admin1: histogram by the admin1 code of jobs, which is a global + * placeholder referring to the state, province, or the particular term a + * country uses to define the geographic structure below the country level, + * for example, "CA", "IL". + * * city: histogram by a combination of the "city name, admin1 code". For + * example, "Mountain View, CA", "New York, NY". + * * admin1_country: histogram by a combination of the "admin1 code, country", + * for example, "CA, US", "IL, US". + * * city_coordinate: histogram by the city center's GPS coordinates (latitude + * and longitude), for example, 37.4038522,-122.0987765. Since the + * coordinates of a city center can change, customers may need to refresh + * them periodically. + * * locale: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, for + * example, "en-US", + * "fr-FR". + * * language: histogram by the language subtag of the + * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, + * for example, "en", "fr". + * * category: histogram by the + * {@link protos.google.cloud.talent.v4beta1.JobCategory|JobCategory}, for example, + * "COMPUTER_AND_IT", "HEALTHCARE". + * * base_compensation_unit: histogram by the + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} + * of base salary, for example, "WEEKLY", "MONTHLY". + * * base_compensation: histogram by the base salary. Must specify list of + * numeric buckets to group results by. + * * annualized_base_compensation: histogram by the base annualized salary. + * Must specify list of numeric buckets to group results by. + * * annualized_total_compensation: histogram by the total annualized salary. + * Must specify list of numeric buckets to group results by. + * * string_custom_attribute: histogram by string + * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * string_custom_attribute["key1"]. + * * numeric_custom_attribute: histogram by numeric + * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to + * group results by. + * + * Example expressions: + * + * * `count(admin1)` + * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), + * bucket(100000, MAX)])` + * * `count(string_custom_attribute["some-string-custom-attribute"])` + * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], + * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` + * @param {google.cloud.talent.v4beta1.JobView} request.jobView + * The desired job attributes returned for jobs in the search response. + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} + * if no value is specified. + * @param {number} request.offset + * An integer that specifies the current offset (that is, starting result + * location, amongst the jobs deemed by the API as relevant) in search + * results. This field is only considered if + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.page_token|page_token} is + * unset. + * + * The maximum allowed value is 5000. Otherwise an error is thrown. + * + * For example, 0 means to return results starting from the first matching + * job, and 10 means to return from the 11th job. This can be used for + * pagination, (for example, pageSize = 10 and offset = 10 means to return + * from the second page). + * @param {number} request.pageSize + * A limit on the number of jobs returned in the search results. + * Increasing this value above the default value of 10 can increase search + * response time. The value can be between 1 and 100. + * @param {string} request.pageToken + * The token specifying the current offset within + * search results. See + * {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} + * for an explanation of how to obtain the next set of query results. + * @param {string} request.orderBy + * The criteria determining how search results are sorted. Default is + * `"relevance desc"`. + * + * Supported options are: + * + * * `"relevance desc"`: By relevance descending, as determined by the API + * algorithms. Relevance thresholding of query results is only available + * with this ordering. + * * `"posting_publish_time desc"`: By + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * descending. + * * `"posting_update_time desc"`: By + * {@link protos.google.cloud.talent.v4beta1.Job.posting_update_time|Job.posting_update_time} + * descending. + * * `"title"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} + * ascending. + * * `"title desc"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} + * descending. + * * `"annualized_base_compensation"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_base_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"annualized_total_compensation"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_total_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"custom_ranking desc"`: By the relevance score adjusted to the + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} + * with weight factor assigned by + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} + * in descending order. + * * Location sorting: Use the special syntax to order jobs by distance:
+ * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
+ * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
+ * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by + * multiple locations. See details below.
+ * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by + * multiple locations. See details below.
+ * The string can have a maximum of 256 characters. When multiple distance + * centers are provided, a job that is close to any of the distance centers + * would have a high rank. When a job has multiple locations, the job + * location closest to one of the distance centers will be used. Jobs that + * don't have locations will be ranked at the bottom. Distance is calculated + * with a precision of 11.3 meters (37.4 feet). Diversification strategy is + * still applied unless explicitly disabled in + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.diversification_level|diversification_level}. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel} request.diversificationLevel + * Controls whether highly similar jobs are returned next to each other in + * the search results. Jobs are identified as highly similar based on + * their titles, job categories, and locations. Highly similar results are + * clustered so that only one representative job of the cluster is + * displayed to the job seeker higher up in the results, with the other jobs + * being displayed lower down in the results. + * + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} + * if no value is specified. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo + * Controls over how job documents get ranked on top of existing relevance + * score (determined by API algorithm). + * @param {boolean} request.disableKeywordMatch + * This field is deprecated. Please use + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * going forward. + * + * To migrate, disable_keyword_match set to false maps to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, + * and disable_keyword_match set to true maps to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. + * If + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * is set, this field is ignored. + * + * Controls whether to disable exact keyword match on + * {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title}, + * {@link protos.google.cloud.talent.v4beta1.Job.description|Job.description}, + * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}, + * {@link protos.google.cloud.talent.v4beta1.Job.addresses|Job.addresses}, + * {@link protos.google.cloud.talent.v4beta1.Job.qualifications|Job.qualifications}. When + * disable keyword match is turned off, a keyword match returns jobs that do + * not match given category filters when there are matching keywords. For + * example, for the query "program manager," a result is returned even if the + * job posting has the title "software developer," which doesn't fall into + * "program manager" ontology, but does have "program manager" appearing in + * its description. + * + * For queries like "cloud" that don't contain title or + * location specific ontology, jobs with "cloud" keyword matches are returned + * regardless of this flag's value. + * + * Use + * {@link protos.google.cloud.talent.v4beta1.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} + * if company-specific globally matched custom field/attribute string values + * are needed. Enabling keyword match improves recall of subsequent search + * requests. + * + * Defaults to false. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode + * Controls what keyword match options to use. + * + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} + * if no value is specified. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] + * Optional. The relevance threshold of the search results. + * + * Default to Google defined threshold, leveraging a balance of + * precision and recall to deliver both highly accurate results and + * comprehensive coverage of relevant information. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse|SearchJobsResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.search_jobs.js + * region_tag:jobs_v4beta1_generated_JobService_SearchJobs_async + */ searchJobs( - request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | undefined, + {} | undefined, + ] + >; searchJobs( - request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobs( - request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobs( - request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.ISearchJobsRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('searchJobs request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + | protos.google.cloud.talent.v4beta1.ISearchJobsRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('searchJobs response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.searchJobs(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|undefined, - {}|undefined - ]) => { - this._log.info('searchJobs response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .searchJobs(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | undefined, + {} | undefined, + ]) => { + this._log.info('searchJobs response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Searches for jobs using the provided - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest|SearchJobsRequest}. - * - * This API call is intended for the use case of targeting passive job - * seekers (for example, job seekers who have signed up to receive email - * alerts about potential job opportunities), and has different algorithmic - * adjustments that are targeted to passive job seekers. - * - * This call constrains the - * {@link protos.google.cloud.talent.v4beta1.Job.visibility|visibility} of jobs present in - * the database, and only returns jobs the caller has permission to search - * against. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant to search within. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode} request.searchMode - * Mode of a search. - * - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. - * @param {google.cloud.talent.v4beta1.RequestMetadata} request.requestMetadata - * Required. The meta information collected about the job searcher, used to - * improve the search quality of the service. The identifiers (such as - * `user_id`) are provided by users, and must be unique and consistent. - * @param {google.cloud.talent.v4beta1.JobQuery} request.jobQuery - * Query used to search against jobs, such as keyword, location filters, etc. - * @param {boolean} request.enableBroadening - * Controls whether to broaden the search when it produces sparse results. - * Broadened queries append results to the end of the matching results - * list. - * - * Defaults to false. - * @param {boolean} request.requirePreciseResultSize - * This field is deprecated. - * @param {number[]} request.histogramQueries - * An expression specifies a histogram request against matching jobs. - * - * Expression syntax is an aggregation function call with histogram facets and - * other options. - * - * Available aggregation function calls are: - * * `count(string_histogram_facet)`: Count the number of matching entities, - * for each distinct attribute value. - * * `count(numeric_histogram_facet, list of buckets)`: Count the number of - * matching entities within each bucket. - * - * A maximum of 200 histogram buckets are supported. - * - * Data types: - * - * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. - * * String: string like "any string with backslash escape for quote(\")." - * * Number: whole number and floating point number like 10, -1 and -0.01. - * * List: list of elements with comma(,) separator surrounded by square - * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. - * - * Built-in constants: - * - * * MIN (minimum number similar to java Double.MIN_VALUE) - * * MAX (maximum number similar to java Double.MAX_VALUE) - * - * Built-in functions: - * - * * bucket(start, end[, label]): bucket built-in function creates a bucket - * with range of [start, end). Note that the end is exclusive, for example, - * bucket(1, MAX, "positive number") or bucket(1, 10). - * - * Job histogram facets: - * - * * company_display_name: histogram by - * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}. - * * employment_type: histogram by - * {@link protos.google.cloud.talent.v4beta1.Job.employment_types|Job.employment_types}, - * for example, - * "FULL_TIME", "PART_TIME". - * * company_size (DEPRECATED): histogram by - * {@link protos.google.cloud.talent.v4beta1.CompanySize|CompanySize}, for example, - * "SMALL", "MEDIUM", "BIG". - * * publish_time_in_day: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * in days. - * Must specify list of numeric buckets in spec. - * * publish_time_in_month: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * in months. - * Must specify list of numeric buckets in spec. - * * publish_time_in_year: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * in years. - * Must specify list of numeric buckets in spec. - * * degree_types: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.degree_types|Job.degree_types}, for - * example, - * "Bachelors", "Masters". - * * job_level: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.job_level|Job.job_level}, for example, - * "Entry - * Level". - * * country: histogram by the country code of jobs, for example, "US", "FR". - * * admin1: histogram by the admin1 code of jobs, which is a global - * placeholder referring to the state, province, or the particular term a - * country uses to define the geographic structure below the country level, - * for example, "CA", "IL". - * * city: histogram by a combination of the "city name, admin1 code". For - * example, "Mountain View, CA", "New York, NY". - * * admin1_country: histogram by a combination of the "admin1 code, country", - * for example, "CA, US", "IL, US". - * * city_coordinate: histogram by the city center's GPS coordinates (latitude - * and longitude), for example, 37.4038522,-122.0987765. Since the - * coordinates of a city center can change, customers may need to refresh - * them periodically. - * * locale: histogram by the - * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, for - * example, "en-US", - * "fr-FR". - * * language: histogram by the language subtag of the - * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, - * for example, "en", "fr". - * * category: histogram by the - * {@link protos.google.cloud.talent.v4beta1.JobCategory|JobCategory}, for example, - * "COMPUTER_AND_IT", "HEALTHCARE". - * * base_compensation_unit: histogram by the - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} - * of base salary, for example, "WEEKLY", "MONTHLY". - * * base_compensation: histogram by the base salary. Must specify list of - * numeric buckets to group results by. - * * annualized_base_compensation: histogram by the base annualized salary. - * Must specify list of numeric buckets to group results by. - * * annualized_total_compensation: histogram by the total annualized salary. - * Must specify list of numeric buckets to group results by. - * * string_custom_attribute: histogram by string - * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * string_custom_attribute["key1"]. - * * numeric_custom_attribute: histogram by numeric - * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. - * Values can be accessed via square bracket notations like - * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to - * group results by. - * - * Example expressions: - * - * * `count(admin1)` - * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), - * bucket(100000, MAX)])` - * * `count(string_custom_attribute["some-string-custom-attribute"])` - * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], - * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` - * @param {google.cloud.talent.v4beta1.JobView} request.jobView - * The desired job attributes returned for jobs in the search response. - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} - * if no value is specified. - * @param {number} request.offset - * An integer that specifies the current offset (that is, starting result - * location, amongst the jobs deemed by the API as relevant) in search - * results. This field is only considered if - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.page_token|page_token} is - * unset. - * - * The maximum allowed value is 5000. Otherwise an error is thrown. - * - * For example, 0 means to return results starting from the first matching - * job, and 10 means to return from the 11th job. This can be used for - * pagination, (for example, pageSize = 10 and offset = 10 means to return - * from the second page). - * @param {number} request.pageSize - * A limit on the number of jobs returned in the search results. - * Increasing this value above the default value of 10 can increase search - * response time. The value can be between 1 and 100. - * @param {string} request.pageToken - * The token specifying the current offset within - * search results. See - * {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} - * for an explanation of how to obtain the next set of query results. - * @param {string} request.orderBy - * The criteria determining how search results are sorted. Default is - * `"relevance desc"`. - * - * Supported options are: - * - * * `"relevance desc"`: By relevance descending, as determined by the API - * algorithms. Relevance thresholding of query results is only available - * with this ordering. - * * `"posting_publish_time desc"`: By - * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} - * descending. - * * `"posting_update_time desc"`: By - * {@link protos.google.cloud.talent.v4beta1.Job.posting_update_time|Job.posting_update_time} - * descending. - * * `"title"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} - * ascending. - * * `"title desc"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} - * descending. - * * `"annualized_base_compensation"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_base_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"annualized_total_compensation"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * ascending. Jobs whose annualized base compensation is unspecified are put - * at the end of search results. - * * `"annualized_total_compensation desc"`: By job's - * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} - * descending. Jobs whose annualized base compensation is unspecified are - * put at the end of search results. - * * `"custom_ranking desc"`: By the relevance score adjusted to the - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} - * with weight factor assigned by - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} - * in descending order. - * * Location sorting: Use the special syntax to order jobs by distance:
- * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
- * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
- * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by - * multiple locations. See details below.
- * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by - * multiple locations. See details below.
- * The string can have a maximum of 256 characters. When multiple distance - * centers are provided, a job that is close to any of the distance centers - * would have a high rank. When a job has multiple locations, the job - * location closest to one of the distance centers will be used. Jobs that - * don't have locations will be ranked at the bottom. Distance is calculated - * with a precision of 11.3 meters (37.4 feet). Diversification strategy is - * still applied unless explicitly disabled in - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.diversification_level|diversification_level}. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel} request.diversificationLevel - * Controls whether highly similar jobs are returned next to each other in - * the search results. Jobs are identified as highly similar based on - * their titles, job categories, and locations. Highly similar results are - * clustered so that only one representative job of the cluster is - * displayed to the job seeker higher up in the results, with the other jobs - * being displayed lower down in the results. - * - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} - * if no value is specified. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo - * Controls over how job documents get ranked on top of existing relevance - * score (determined by API algorithm). - * @param {boolean} request.disableKeywordMatch - * This field is deprecated. Please use - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * going forward. - * - * To migrate, disable_keyword_match set to false maps to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, - * and disable_keyword_match set to true maps to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. - * If - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} - * is set, this field is ignored. - * - * Controls whether to disable exact keyword match on - * {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title}, - * {@link protos.google.cloud.talent.v4beta1.Job.description|Job.description}, - * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}, - * {@link protos.google.cloud.talent.v4beta1.Job.addresses|Job.addresses}, - * {@link protos.google.cloud.talent.v4beta1.Job.qualifications|Job.qualifications}. When - * disable keyword match is turned off, a keyword match returns jobs that do - * not match given category filters when there are matching keywords. For - * example, for the query "program manager," a result is returned even if the - * job posting has the title "software developer," which doesn't fall into - * "program manager" ontology, but does have "program manager" appearing in - * its description. - * - * For queries like "cloud" that don't contain title or - * location specific ontology, jobs with "cloud" keyword matches are returned - * regardless of this flag's value. - * - * Use - * {@link protos.google.cloud.talent.v4beta1.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} - * if company-specific globally matched custom field/attribute string values - * are needed. Enabling keyword match improves recall of subsequent search - * requests. - * - * Defaults to false. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode - * Controls what keyword match options to use. - * - * Defaults to - * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} - * if no value is specified. - * @param {google.cloud.talent.v4beta1.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] - * Optional. The relevance threshold of the search results. - * - * Default to Google defined threshold, leveraging a balance of - * precision and recall to deliver both highly accurate results and - * comprehensive coverage of relevant information. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse|SearchJobsResponse}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.search_jobs_for_alert.js - * region_tag:jobs_v4beta1_generated_JobService_SearchJobsForAlert_async - */ + /** + * Searches for jobs using the provided + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest|SearchJobsRequest}. + * + * This API call is intended for the use case of targeting passive job + * seekers (for example, job seekers who have signed up to receive email + * alerts about potential job opportunities), and has different algorithmic + * adjustments that are targeted to passive job seekers. + * + * This call constrains the + * {@link protos.google.cloud.talent.v4beta1.Job.visibility|visibility} of jobs present in + * the database, and only returns jobs the caller has permission to search + * against. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant to search within. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode} request.searchMode + * Mode of a search. + * + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode.JOB_SEARCH|SearchMode.JOB_SEARCH}. + * @param {google.cloud.talent.v4beta1.RequestMetadata} request.requestMetadata + * Required. The meta information collected about the job searcher, used to + * improve the search quality of the service. The identifiers (such as + * `user_id`) are provided by users, and must be unique and consistent. + * @param {google.cloud.talent.v4beta1.JobQuery} request.jobQuery + * Query used to search against jobs, such as keyword, location filters, etc. + * @param {boolean} request.enableBroadening + * Controls whether to broaden the search when it produces sparse results. + * Broadened queries append results to the end of the matching results + * list. + * + * Defaults to false. + * @param {boolean} request.requirePreciseResultSize + * This field is deprecated. + * @param {number[]} request.histogramQueries + * An expression specifies a histogram request against matching jobs. + * + * Expression syntax is an aggregation function call with histogram facets and + * other options. + * + * Available aggregation function calls are: + * * `count(string_histogram_facet)`: Count the number of matching entities, + * for each distinct attribute value. + * * `count(numeric_histogram_facet, list of buckets)`: Count the number of + * matching entities within each bucket. + * + * A maximum of 200 histogram buckets are supported. + * + * Data types: + * + * * Histogram facet: facet names with format `{@link protos.a-zA-Z0-9_|a-zA-Z}+`. + * * String: string like "any string with backslash escape for quote(\")." + * * Number: whole number and floating point number like 10, -1 and -0.01. + * * List: list of elements with comma(,) separator surrounded by square + * brackets, for example, [1, 2, 3] and ["one", "two", "three"]. + * + * Built-in constants: + * + * * MIN (minimum number similar to java Double.MIN_VALUE) + * * MAX (maximum number similar to java Double.MAX_VALUE) + * + * Built-in functions: + * + * * bucket(start, end[, label]): bucket built-in function creates a bucket + * with range of [start, end). Note that the end is exclusive, for example, + * bucket(1, MAX, "positive number") or bucket(1, 10). + * + * Job histogram facets: + * + * * company_display_name: histogram by + * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}. + * * employment_type: histogram by + * {@link protos.google.cloud.talent.v4beta1.Job.employment_types|Job.employment_types}, + * for example, + * "FULL_TIME", "PART_TIME". + * * company_size (DEPRECATED): histogram by + * {@link protos.google.cloud.talent.v4beta1.CompanySize|CompanySize}, for example, + * "SMALL", "MEDIUM", "BIG". + * * publish_time_in_day: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * in days. + * Must specify list of numeric buckets in spec. + * * publish_time_in_month: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * in months. + * Must specify list of numeric buckets in spec. + * * publish_time_in_year: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * in years. + * Must specify list of numeric buckets in spec. + * * degree_types: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.degree_types|Job.degree_types}, for + * example, + * "Bachelors", "Masters". + * * job_level: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.job_level|Job.job_level}, for example, + * "Entry + * Level". + * * country: histogram by the country code of jobs, for example, "US", "FR". + * * admin1: histogram by the admin1 code of jobs, which is a global + * placeholder referring to the state, province, or the particular term a + * country uses to define the geographic structure below the country level, + * for example, "CA", "IL". + * * city: histogram by a combination of the "city name, admin1 code". For + * example, "Mountain View, CA", "New York, NY". + * * admin1_country: histogram by a combination of the "admin1 code, country", + * for example, "CA, US", "IL, US". + * * city_coordinate: histogram by the city center's GPS coordinates (latitude + * and longitude), for example, 37.4038522,-122.0987765. Since the + * coordinates of a city center can change, customers may need to refresh + * them periodically. + * * locale: histogram by the + * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, for + * example, "en-US", + * "fr-FR". + * * language: histogram by the language subtag of the + * {@link protos.google.cloud.talent.v4beta1.Job.language_code|Job.language_code}, + * for example, "en", "fr". + * * category: histogram by the + * {@link protos.google.cloud.talent.v4beta1.JobCategory|JobCategory}, for example, + * "COMPUTER_AND_IT", "HEALTHCARE". + * * base_compensation_unit: histogram by the + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit|CompensationInfo.CompensationUnit} + * of base salary, for example, "WEEKLY", "MONTHLY". + * * base_compensation: histogram by the base salary. Must specify list of + * numeric buckets to group results by. + * * annualized_base_compensation: histogram by the base annualized salary. + * Must specify list of numeric buckets to group results by. + * * annualized_total_compensation: histogram by the total annualized salary. + * Must specify list of numeric buckets to group results by. + * * string_custom_attribute: histogram by string + * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * string_custom_attribute["key1"]. + * * numeric_custom_attribute: histogram by numeric + * {@link protos.google.cloud.talent.v4beta1.Job.custom_attributes|Job.custom_attributes}. + * Values can be accessed via square bracket notations like + * numeric_custom_attribute["key1"]. Must specify list of numeric buckets to + * group results by. + * + * Example expressions: + * + * * `count(admin1)` + * * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000), + * bucket(100000, MAX)])` + * * `count(string_custom_attribute["some-string-custom-attribute"])` + * * `count(numeric_custom_attribute["some-numeric-custom-attribute"], + * [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])` + * @param {google.cloud.talent.v4beta1.JobView} request.jobView + * The desired job attributes returned for jobs in the search response. + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_SMALL|JobView.JOB_VIEW_SMALL} + * if no value is specified. + * @param {number} request.offset + * An integer that specifies the current offset (that is, starting result + * location, amongst the jobs deemed by the API as relevant) in search + * results. This field is only considered if + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.page_token|page_token} is + * unset. + * + * The maximum allowed value is 5000. Otherwise an error is thrown. + * + * For example, 0 means to return results starting from the first matching + * job, and 10 means to return from the 11th job. This can be used for + * pagination, (for example, pageSize = 10 and offset = 10 means to return + * from the second page). + * @param {number} request.pageSize + * A limit on the number of jobs returned in the search results. + * Increasing this value above the default value of 10 can increase search + * response time. The value can be between 1 and 100. + * @param {string} request.pageToken + * The token specifying the current offset within + * search results. See + * {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse.next_page_token|SearchJobsResponse.next_page_token} + * for an explanation of how to obtain the next set of query results. + * @param {string} request.orderBy + * The criteria determining how search results are sorted. Default is + * `"relevance desc"`. + * + * Supported options are: + * + * * `"relevance desc"`: By relevance descending, as determined by the API + * algorithms. Relevance thresholding of query results is only available + * with this ordering. + * * `"posting_publish_time desc"`: By + * {@link protos.google.cloud.talent.v4beta1.Job.posting_publish_time|Job.posting_publish_time} + * descending. + * * `"posting_update_time desc"`: By + * {@link protos.google.cloud.talent.v4beta1.Job.posting_update_time|Job.posting_update_time} + * descending. + * * `"title"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} + * ascending. + * * `"title desc"`: By {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title} + * descending. + * * `"annualized_base_compensation"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_base_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range|CompensationInfo.annualized_base_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"annualized_total_compensation"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * ascending. Jobs whose annualized base compensation is unspecified are put + * at the end of search results. + * * `"annualized_total_compensation desc"`: By job's + * {@link protos.google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range|CompensationInfo.annualized_total_compensation_range} + * descending. Jobs whose annualized base compensation is unspecified are + * put at the end of search results. + * * `"custom_ranking desc"`: By the relevance score adjusted to the + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.ranking_expression|SearchJobsRequest.CustomRankingInfo.ranking_expression} + * with weight factor assigned by + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.importance_level|SearchJobsRequest.CustomRankingInfo.importance_level} + * in descending order. + * * Location sorting: Use the special syntax to order jobs by distance:
+ * `"distance_from('Hawaii')"`: Order by distance from Hawaii.
+ * `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.
+ * `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by + * multiple locations. See details below.
+ * `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by + * multiple locations. See details below.
+ * The string can have a maximum of 256 characters. When multiple distance + * centers are provided, a job that is close to any of the distance centers + * would have a high rank. When a job has multiple locations, the job + * location closest to one of the distance centers will be used. Jobs that + * don't have locations will be ranked at the bottom. Distance is calculated + * with a precision of 11.3 meters (37.4 feet). Diversification strategy is + * still applied unless explicitly disabled in + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.diversification_level|diversification_level}. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel} request.diversificationLevel + * Controls whether highly similar jobs are returned next to each other in + * the search results. Jobs are identified as highly similar based on + * their titles, job categories, and locations. Highly similar results are + * clustered so that only one representative job of the cluster is + * displayed to the job seeker higher up in the results, with the other jobs + * being displayed lower down in the results. + * + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel.SIMPLE|DiversificationLevel.SIMPLE} + * if no value is specified. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo} request.customRankingInfo + * Controls over how job documents get ranked on top of existing relevance + * score (determined by API algorithm). + * @param {boolean} request.disableKeywordMatch + * This field is deprecated. Please use + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * going forward. + * + * To migrate, disable_keyword_match set to false maps to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL}, + * and disable_keyword_match set to true maps to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_DISABLED|KeywordMatchMode.KEYWORD_MATCH_DISABLED}. + * If + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.keyword_match_mode|SearchJobsRequest.keyword_match_mode} + * is set, this field is ignored. + * + * Controls whether to disable exact keyword match on + * {@link protos.google.cloud.talent.v4beta1.Job.title|Job.title}, + * {@link protos.google.cloud.talent.v4beta1.Job.description|Job.description}, + * {@link protos.google.cloud.talent.v4beta1.Job.company_display_name|Job.company_display_name}, + * {@link protos.google.cloud.talent.v4beta1.Job.addresses|Job.addresses}, + * {@link protos.google.cloud.talent.v4beta1.Job.qualifications|Job.qualifications}. When + * disable keyword match is turned off, a keyword match returns jobs that do + * not match given category filters when there are matching keywords. For + * example, for the query "program manager," a result is returned even if the + * job posting has the title "software developer," which doesn't fall into + * "program manager" ontology, but does have "program manager" appearing in + * its description. + * + * For queries like "cloud" that don't contain title or + * location specific ontology, jobs with "cloud" keyword matches are returned + * regardless of this flag's value. + * + * Use + * {@link protos.google.cloud.talent.v4beta1.Company.keyword_searchable_job_custom_attributes|Company.keyword_searchable_job_custom_attributes} + * if company-specific globally matched custom field/attribute string values + * are needed. Enabling keyword match improves recall of subsequent search + * requests. + * + * Defaults to false. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode} request.keywordMatchMode + * Controls what keyword match options to use. + * + * Defaults to + * {@link protos.google.cloud.talent.v4beta1.SearchJobsRequest.KeywordMatchMode.KEYWORD_MATCH_ALL|KeywordMatchMode.KEYWORD_MATCH_ALL} + * if no value is specified. + * @param {google.cloud.talent.v4beta1.SearchJobsRequest.RelevanceThreshold} [request.relevanceThreshold] + * Optional. The relevance threshold of the search results. + * + * Default to Google defined threshold, leveraging a balance of + * precision and recall to deliver both highly accurate results and + * comprehensive coverage of relevant information. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.SearchJobsResponse|SearchJobsResponse}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.search_jobs_for_alert.js + * region_tag:jobs_v4beta1_generated_JobService_SearchJobsForAlert_async + */ searchJobsForAlert( - request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | undefined, + {} | undefined, + ] + >; searchJobsForAlert( - request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobsForAlert( - request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): void; searchJobsForAlert( - request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.ISearchJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.ISearchJobsRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('searchJobsForAlert request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + | protos.google.cloud.talent.v4beta1.ISearchJobsRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('searchJobsForAlert response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.searchJobsForAlert(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ISearchJobsResponse, - protos.google.cloud.talent.v4beta1.ISearchJobsRequest|undefined, - {}|undefined - ]) => { - this._log.info('searchJobsForAlert response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .searchJobsForAlert(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ISearchJobsResponse, + protos.google.cloud.talent.v4beta1.ISearchJobsRequest | undefined, + {} | undefined, + ]) => { + this._log.info('searchJobsForAlert response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Begins executing a batch create jobs operation. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {number[]} request.jobs - * Required. The jobs to be created. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * a long running operation. Its `promise()` method returns a promise - * you can `await` for. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.batch_create_jobs.js - * region_tag:jobs_v4beta1_generated_JobService_BatchCreateJobs_async - */ + /** + * Begins executing a batch create jobs operation. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {number[]} request.jobs + * Required. The jobs to be created. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.batch_create_jobs.js + * region_tag:jobs_v4beta1_generated_JobService_BatchCreateJobs_async + */ batchCreateJobs( - request?: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, - options?: CallOptions): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, + options?: CallOptions, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + >; batchCreateJobs( - request: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, - options: CallOptions, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchCreateJobs( - request: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchCreateJobs( - request?: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, - optionsOrCallback?: CallOptions|Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>, - callback?: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>|void { + request?: protos.google.cloud.talent.v4beta1.IBatchCreateJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, rawResponse, _) => { this._log.info('batchCreateJobs response %j', rawResponse); callback!(error, response, rawResponse, _); // We verified callback above. } : undefined; this._log.info('batchCreateJobs request %j', request); - return this.innerApiCalls.batchCreateJobs(request, options, wrappedCallback) - ?.then(([response, rawResponse, _]: [ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]) => { - this._log.info('batchCreateJobs response %j', rawResponse); - return [response, rawResponse, _]; - }); + return this.innerApiCalls + .batchCreateJobs(request, options, wrappedCallback) + ?.then( + ([response, rawResponse, _]: [ + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ]) => { + this._log.info('batchCreateJobs response %j', rawResponse); + return [response, rawResponse, _]; + }, + ); } -/** - * Check the status of the long running operation returned by `batchCreateJobs()`. - * @param {String} name - * The operation name that will be passed. - * @returns {Promise} - The promise which resolves to an object. - * The decoded operation object has result and metadata field to get information from. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.batch_create_jobs.js - * region_tag:jobs_v4beta1_generated_JobService_BatchCreateJobs_async - */ - async checkBatchCreateJobsProgress(name: string): Promise>{ + /** + * Check the status of the long running operation returned by `batchCreateJobs()`. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.batch_create_jobs.js + * region_tag:jobs_v4beta1_generated_JobService_BatchCreateJobs_async + */ + async checkBatchCreateJobsProgress( + name: string, + ): Promise< + LROperation< + protos.google.cloud.talent.v4beta1.JobOperationResult, + protos.google.cloud.talent.v4beta1.BatchOperationMetadata + > + > { this._log.info('batchCreateJobs long-running'); - const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name}); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + { name }, + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.batchCreateJobs, this._gaxModule.createDefaultBackoffSettings()); - return decodeOperation as LROperation; + const decodeOperation = new this._gaxModule.Operation( + operation, + this.descriptors.longrunning.batchCreateJobs, + this._gaxModule.createDefaultBackoffSettings(), + ); + return decodeOperation as LROperation< + protos.google.cloud.talent.v4beta1.JobOperationResult, + protos.google.cloud.talent.v4beta1.BatchOperationMetadata + >; } -/** - * Begins executing a batch update jobs operation. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {number[]} request.jobs - * Required. The jobs to be updated. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. Be aware that it will - * also increase latency when checking the status of a batch operation. - * - * If - * {@link protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest.update_mask|update_mask} - * is provided, only the specified fields in - * {@link protos.google.cloud.talent.v4beta1.Job|Job} are updated. Otherwise all the - * fields are updated. - * - * A field mask to restrict the fields that are updated. Only - * top level fields of {@link protos.google.cloud.talent.v4beta1.Job|Job} are supported. - * - * If - * {@link protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest.update_mask|update_mask} - * is provided, The {@link protos.google.cloud.talent.v4beta1.Job|Job} inside - * {@link protos.google.cloud.talent.v4beta1.JobOperationResult.JobResult|JobResult} - * will only contains fields that is updated, plus the Id of the Job. - * Otherwise, {@link protos.google.cloud.talent.v4beta1.Job|Job} will include all fields, - * which can yield a very large response. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing - * a long running operation. Its `promise()` method returns a promise - * you can `await` for. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.batch_update_jobs.js - * region_tag:jobs_v4beta1_generated_JobService_BatchUpdateJobs_async - */ + /** + * Begins executing a batch update jobs operation. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {number[]} request.jobs + * Required. The jobs to be updated. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. Be aware that it will + * also increase latency when checking the status of a batch operation. + * + * If + * {@link protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest.update_mask|update_mask} + * is provided, only the specified fields in + * {@link protos.google.cloud.talent.v4beta1.Job|Job} are updated. Otherwise all the + * fields are updated. + * + * A field mask to restrict the fields that are updated. Only + * top level fields of {@link protos.google.cloud.talent.v4beta1.Job|Job} are supported. + * + * If + * {@link protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest.update_mask|update_mask} + * is provided, The {@link protos.google.cloud.talent.v4beta1.Job|Job} inside + * {@link protos.google.cloud.talent.v4beta1.JobOperationResult.JobResult|JobResult} + * will only contains fields that is updated, plus the Id of the Job. + * Otherwise, {@link protos.google.cloud.talent.v4beta1.Job|Job} will include all fields, + * which can yield a very large response. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing + * a long running operation. Its `promise()` method returns a promise + * you can `await` for. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.batch_update_jobs.js + * region_tag:jobs_v4beta1_generated_JobService_BatchUpdateJobs_async + */ batchUpdateJobs( - request?: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, - options?: CallOptions): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, + options?: CallOptions, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + >; batchUpdateJobs( - request: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, - options: CallOptions, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, + options: CallOptions, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchUpdateJobs( - request: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, - callback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, + callback: Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): void; batchUpdateJobs( - request?: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, - optionsOrCallback?: CallOptions|Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>, - callback?: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>): - Promise<[ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]>|void { + request?: protos.google.cloud.talent.v4beta1.IBatchUpdateJobsRequest, + optionsOrCallback?: + | CallOptions + | Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + callback?: Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: Callback< - LROperation, - protos.google.longrunning.IOperation|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | null | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, rawResponse, _) => { this._log.info('batchUpdateJobs response %j', rawResponse); callback!(error, response, rawResponse, _); // We verified callback above. } : undefined; this._log.info('batchUpdateJobs request %j', request); - return this.innerApiCalls.batchUpdateJobs(request, options, wrappedCallback) - ?.then(([response, rawResponse, _]: [ - LROperation, - protos.google.longrunning.IOperation|undefined, {}|undefined - ]) => { - this._log.info('batchUpdateJobs response %j', rawResponse); - return [response, rawResponse, _]; - }); + return this.innerApiCalls + .batchUpdateJobs(request, options, wrappedCallback) + ?.then( + ([response, rawResponse, _]: [ + LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >, + protos.google.longrunning.IOperation | undefined, + {} | undefined, + ]) => { + this._log.info('batchUpdateJobs response %j', rawResponse); + return [response, rawResponse, _]; + }, + ); } -/** - * Check the status of the long running operation returned by `batchUpdateJobs()`. - * @param {String} name - * The operation name that will be passed. - * @returns {Promise} - The promise which resolves to an object. - * The decoded operation object has result and metadata field to get information from. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.batch_update_jobs.js - * region_tag:jobs_v4beta1_generated_JobService_BatchUpdateJobs_async - */ - async checkBatchUpdateJobsProgress(name: string): Promise>{ + /** + * Check the status of the long running operation returned by `batchUpdateJobs()`. + * @param {String} name + * The operation name that will be passed. + * @returns {Promise} - The promise which resolves to an object. + * The decoded operation object has result and metadata field to get information from. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.batch_update_jobs.js + * region_tag:jobs_v4beta1_generated_JobService_BatchUpdateJobs_async + */ + async checkBatchUpdateJobsProgress( + name: string, + ): Promise< + LROperation< + protos.google.cloud.talent.v4beta1.JobOperationResult, + protos.google.cloud.talent.v4beta1.BatchOperationMetadata + > + > { this._log.info('batchUpdateJobs long-running'); - const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name}); + const request = + new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest( + { name }, + ); const [operation] = await this.operationsClient.getOperation(request); - const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.batchUpdateJobs, this._gaxModule.createDefaultBackoffSettings()); - return decodeOperation as LROperation; + const decodeOperation = new this._gaxModule.Operation( + operation, + this.descriptors.longrunning.batchUpdateJobs, + this._gaxModule.createDefaultBackoffSettings(), + ); + return decodeOperation as LROperation< + protos.google.cloud.talent.v4beta1.JobOperationResult, + protos.google.cloud.talent.v4beta1.BatchOperationMetadata + >; } - /** - * Lists jobs by filter. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {string} request.filter - * Required. The filter string specifies the jobs to be enumerated. - * - * Supported operator: =, AND - * - * The fields eligible for filtering are: - * - * * `companyName` - * * `requisitionId` - * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to - * OPEN if no value is specified. - * - * At least one of `companyName` and `requisitionId` must present or an - * INVALID_ARGUMENT error is thrown. - * - * Sample Query: - * - * * companyName = "projects/foo/tenants/bar/companies/baz" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * requisitionId = "req-1" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * status = "EXPIRED" - * * requisitionId = "req-1" - * * requisitionId = "req-1" AND status = "EXPIRED" - * @param {string} request.pageToken - * The starting point of a query result. - * @param {number} request.pageSize - * The maximum number of jobs to be returned per page of results. - * - * If {@link protos.google.cloud.talent.v4beta1.ListJobsRequest.job_view|job_view} is set - * to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, - * the maximum allowed page size is 1000. Otherwise, the maximum allowed page - * size is 100. - * - * Default is 100 if empty or a number < 1 is specified. - * @param {google.cloud.talent.v4beta1.JobView} request.jobView - * The desired job attributes returned for jobs in the - * search response. Defaults to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} - * if no value is specified. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.cloud.talent.v4beta1.Job|Job}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listJobsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Lists jobs by filter. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {string} request.filter + * Required. The filter string specifies the jobs to be enumerated. + * + * Supported operator: =, AND + * + * The fields eligible for filtering are: + * + * * `companyName` + * * `requisitionId` + * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to + * OPEN if no value is specified. + * + * At least one of `companyName` and `requisitionId` must present or an + * INVALID_ARGUMENT error is thrown. + * + * Sample Query: + * + * * companyName = "projects/foo/tenants/bar/companies/baz" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * requisitionId = "req-1" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * status = "EXPIRED" + * * requisitionId = "req-1" + * * requisitionId = "req-1" AND status = "EXPIRED" + * @param {string} request.pageToken + * The starting point of a query result. + * @param {number} request.pageSize + * The maximum number of jobs to be returned per page of results. + * + * If {@link protos.google.cloud.talent.v4beta1.ListJobsRequest.job_view|job_view} is set + * to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, + * the maximum allowed page size is 1000. Otherwise, the maximum allowed page + * size is 100. + * + * Default is 100 if empty or a number < 1 is specified. + * @param {google.cloud.talent.v4beta1.JobView} request.jobView + * The desired job attributes returned for jobs in the + * search response. Defaults to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} + * if no value is specified. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is Array of {@link protos.google.cloud.talent.v4beta1.Job|Job}. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed and will merge results from all the pages into this array. + * Note that it can affect your quota. + * We recommend using `listJobsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listJobs( - request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob[], - protos.google.cloud.talent.v4beta1.IListJobsRequest|null, - protos.google.cloud.talent.v4beta1.IListJobsResponse - ]>; + request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob[], + protos.google.cloud.talent.v4beta1.IListJobsRequest | null, + protos.google.cloud.talent.v4beta1.IListJobsResponse, + ] + >; listJobs( - request: protos.google.cloud.talent.v4beta1.IListJobsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListJobsRequest, - protos.google.cloud.talent.v4beta1.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.IJob>): void; + request: protos.google.cloud.talent.v4beta1.IListJobsRequest, + options: CallOptions, + callback: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListJobsRequest, + protos.google.cloud.talent.v4beta1.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4beta1.IJob + >, + ): void; listJobs( - request: protos.google.cloud.talent.v4beta1.IListJobsRequest, - callback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListJobsRequest, - protos.google.cloud.talent.v4beta1.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.IJob>): void; + request: protos.google.cloud.talent.v4beta1.IListJobsRequest, + callback: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListJobsRequest, + protos.google.cloud.talent.v4beta1.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4beta1.IJob + >, + ): void; listJobs( - request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, - optionsOrCallback?: CallOptions|PaginationCallback< - protos.google.cloud.talent.v4beta1.IListJobsRequest, - protos.google.cloud.talent.v4beta1.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.IJob>, - callback?: PaginationCallback< + request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, + optionsOrCallback?: + | CallOptions + | PaginationCallback< protos.google.cloud.talent.v4beta1.IListJobsRequest, - protos.google.cloud.talent.v4beta1.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.IJob>): - Promise<[ - protos.google.cloud.talent.v4beta1.IJob[], - protos.google.cloud.talent.v4beta1.IListJobsRequest|null, - protos.google.cloud.talent.v4beta1.IListJobsResponse - ]>|void { + | protos.google.cloud.talent.v4beta1.IListJobsResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.IJob + >, + callback?: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListJobsRequest, + protos.google.cloud.talent.v4beta1.IListJobsResponse | null | undefined, + protos.google.cloud.talent.v4beta1.IJob + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.IJob[], + protos.google.cloud.talent.v4beta1.IListJobsRequest | null, + protos.google.cloud.talent.v4beta1.IListJobsResponse, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListJobsRequest, - protos.google.cloud.talent.v4beta1.IListJobsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.IJob>|undefined = callback + const wrappedCallback: + | PaginationCallback< + protos.google.cloud.talent.v4beta1.IListJobsRequest, + | protos.google.cloud.talent.v4beta1.IListJobsResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.IJob + > + | undefined = callback ? (error, values, nextPageRequest, rawResponse) => { this._log.info('listJobs values %j', values); callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. @@ -2059,191 +2520,195 @@ export class JobServiceClient { this._log.info('listJobs request %j', request); return this.innerApiCalls .listJobs(request, options, wrappedCallback) - ?.then(([response, input, output]: [ - protos.google.cloud.talent.v4beta1.IJob[], - protos.google.cloud.talent.v4beta1.IListJobsRequest|null, - protos.google.cloud.talent.v4beta1.IListJobsResponse - ]) => { - this._log.info('listJobs values %j', response); - return [response, input, output]; - }); + ?.then( + ([response, input, output]: [ + protos.google.cloud.talent.v4beta1.IJob[], + protos.google.cloud.talent.v4beta1.IListJobsRequest | null, + protos.google.cloud.talent.v4beta1.IListJobsResponse, + ]) => { + this._log.info('listJobs values %j', response); + return [response, input, output]; + }, + ); } -/** - * Equivalent to `listJobs`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {string} request.filter - * Required. The filter string specifies the jobs to be enumerated. - * - * Supported operator: =, AND - * - * The fields eligible for filtering are: - * - * * `companyName` - * * `requisitionId` - * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to - * OPEN if no value is specified. - * - * At least one of `companyName` and `requisitionId` must present or an - * INVALID_ARGUMENT error is thrown. - * - * Sample Query: - * - * * companyName = "projects/foo/tenants/bar/companies/baz" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * requisitionId = "req-1" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * status = "EXPIRED" - * * requisitionId = "req-1" - * * requisitionId = "req-1" AND status = "EXPIRED" - * @param {string} request.pageToken - * The starting point of a query result. - * @param {number} request.pageSize - * The maximum number of jobs to be returned per page of results. - * - * If {@link protos.google.cloud.talent.v4beta1.ListJobsRequest.job_view|job_view} is set - * to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, - * the maximum allowed page size is 1000. Otherwise, the maximum allowed page - * size is 100. - * - * Default is 100 if empty or a number < 1 is specified. - * @param {google.cloud.talent.v4beta1.JobView} request.jobView - * The desired job attributes returned for jobs in the - * search response. Defaults to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} - * if no value is specified. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listJobsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Equivalent to `listJobs`, but returns a NodeJS Stream object. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {string} request.filter + * Required. The filter string specifies the jobs to be enumerated. + * + * Supported operator: =, AND + * + * The fields eligible for filtering are: + * + * * `companyName` + * * `requisitionId` + * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to + * OPEN if no value is specified. + * + * At least one of `companyName` and `requisitionId` must present or an + * INVALID_ARGUMENT error is thrown. + * + * Sample Query: + * + * * companyName = "projects/foo/tenants/bar/companies/baz" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * requisitionId = "req-1" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * status = "EXPIRED" + * * requisitionId = "req-1" + * * requisitionId = "req-1" AND status = "EXPIRED" + * @param {string} request.pageToken + * The starting point of a query result. + * @param {number} request.pageSize + * The maximum number of jobs to be returned per page of results. + * + * If {@link protos.google.cloud.talent.v4beta1.ListJobsRequest.job_view|job_view} is set + * to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, + * the maximum allowed page size is 1000. Otherwise, the maximum allowed page + * size is 100. + * + * Default is 100 if empty or a number < 1 is specified. + * @param {google.cloud.talent.v4beta1.JobView} request.jobView + * The desired job attributes returned for jobs in the + * search response. Defaults to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} + * if no value is specified. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Stream} + * An object stream which emits an object representing {@link protos.google.cloud.talent.v4beta1.Job|Job} on 'data' event. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed. Note that it can affect your quota. + * We recommend using `listJobsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listJobsStream( - request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, - options?: CallOptions): - Transform{ + request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, + options?: CallOptions, + ): Transform { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listJobs']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listJobs stream %j', request); return this.descriptors.page.listJobs.createStream( this.innerApiCalls.listJobs as GaxCall, request, - callSettings + callSettings, ); } -/** - * Equivalent to `listJobs`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. The resource name of the tenant under which the job is created. - * - * The format is "projects/{project_id}/tenants/{tenant_id}". For example, - * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant - * is created. For example, "projects/foo". - * @param {string} request.filter - * Required. The filter string specifies the jobs to be enumerated. - * - * Supported operator: =, AND - * - * The fields eligible for filtering are: - * - * * `companyName` - * * `requisitionId` - * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to - * OPEN if no value is specified. - * - * At least one of `companyName` and `requisitionId` must present or an - * INVALID_ARGUMENT error is thrown. - * - * Sample Query: - * - * * companyName = "projects/foo/tenants/bar/companies/baz" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * requisitionId = "req-1" - * * companyName = "projects/foo/tenants/bar/companies/baz" AND - * status = "EXPIRED" - * * requisitionId = "req-1" - * * requisitionId = "req-1" AND status = "EXPIRED" - * @param {string} request.pageToken - * The starting point of a query result. - * @param {number} request.pageSize - * The maximum number of jobs to be returned per page of results. - * - * If {@link protos.google.cloud.talent.v4beta1.ListJobsRequest.job_view|job_view} is set - * to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, - * the maximum allowed page size is 1000. Otherwise, the maximum allowed page - * size is 100. - * - * Default is 100 if empty or a number < 1 is specified. - * @param {google.cloud.talent.v4beta1.JobView} request.jobView - * The desired job attributes returned for jobs in the - * search response. Defaults to - * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} - * if no value is specified. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.cloud.talent.v4beta1.Job|Job}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/job_service.list_jobs.js - * region_tag:jobs_v4beta1_generated_JobService_ListJobs_async - */ + /** + * Equivalent to `listJobs`, but returns an iterable object. + * + * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. The resource name of the tenant under which the job is created. + * + * The format is "projects/{project_id}/tenants/{tenant_id}". For example, + * "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant + * is created. For example, "projects/foo". + * @param {string} request.filter + * Required. The filter string specifies the jobs to be enumerated. + * + * Supported operator: =, AND + * + * The fields eligible for filtering are: + * + * * `companyName` + * * `requisitionId` + * * `status` Available values: OPEN, EXPIRED, ALL. Defaults to + * OPEN if no value is specified. + * + * At least one of `companyName` and `requisitionId` must present or an + * INVALID_ARGUMENT error is thrown. + * + * Sample Query: + * + * * companyName = "projects/foo/tenants/bar/companies/baz" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * requisitionId = "req-1" + * * companyName = "projects/foo/tenants/bar/companies/baz" AND + * status = "EXPIRED" + * * requisitionId = "req-1" + * * requisitionId = "req-1" AND status = "EXPIRED" + * @param {string} request.pageToken + * The starting point of a query result. + * @param {number} request.pageSize + * The maximum number of jobs to be returned per page of results. + * + * If {@link protos.google.cloud.talent.v4beta1.ListJobsRequest.job_view|job_view} is set + * to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_ID_ONLY|JobView.JOB_VIEW_ID_ONLY}, + * the maximum allowed page size is 1000. Otherwise, the maximum allowed page + * size is 100. + * + * Default is 100 if empty or a number < 1 is specified. + * @param {google.cloud.talent.v4beta1.JobView} request.jobView + * The desired job attributes returned for jobs in the + * search response. Defaults to + * {@link protos.google.cloud.talent.v4beta1.JobView.JOB_VIEW_FULL|JobView.JOB_VIEW_FULL} + * if no value is specified. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Object} + * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. + * When you iterate the returned iterable, each element will be an object representing + * {@link protos.google.cloud.talent.v4beta1.Job|Job}. The API will be called under the hood as needed, once per the page, + * so you can stop the iteration when you don't need more results. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/job_service.list_jobs.js + * region_tag:jobs_v4beta1_generated_JobService_ListJobs_async + */ listJobsAsync( - request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, - options?: CallOptions): - AsyncIterable{ + request?: protos.google.cloud.talent.v4beta1.IListJobsRequest, + options?: CallOptions, + ): AsyncIterable { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listJobs']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listJobs iterate %j', request); return this.descriptors.page.listJobs.asyncIterate( this.innerApiCalls['listJobs'] as GaxCall, request as {}, - callSettings + callSettings, ) as AsyncIterable; } -/** + /** * Gets the latest state of a long-running operation. Clients can use this * method to poll the operation result at intervals as recommended by the API * service. @@ -2286,22 +2751,22 @@ export class JobServiceClient { protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined - > + >, ): Promise<[protos.google.longrunning.Operation]> { - let options: gax.CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as gax.CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.getOperation(request, options, callback); } /** @@ -2336,15 +2801,15 @@ export class JobServiceClient { */ listOperationsAsync( request: protos.google.longrunning.ListOperationsRequest, - options?: gax.CallOptions + options?: gax.CallOptions, ): AsyncIterable { - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.listOperationsAsync(request, options); } /** @@ -2378,7 +2843,7 @@ export class JobServiceClient { * await client.cancelOperation({name: ''}); * ``` */ - cancelOperation( + cancelOperation( request: protos.google.longrunning.CancelOperationRequest, optionsOrCallback?: | gax.CallOptions @@ -2391,25 +2856,24 @@ export class JobServiceClient { protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null - > + >, ): Promise { - let options: gax.CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as gax.CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.cancelOperation(request, options, callback); } - /** * Deletes a long-running operation. This method indicates that the client is * no longer interested in the operation result. It does not cancel the @@ -2448,22 +2912,22 @@ export class JobServiceClient { protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined - > + >, ): Promise { - let options: gax.CallOptions; - if (typeof optionsOrCallback === 'function' && callback === undefined) { - callback = optionsOrCallback; - options = {}; - } else { - options = optionsOrCallback as gax.CallOptions; - } - options = options || {}; - options.otherArgs = options.otherArgs || {}; - options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers['x-goog-request-params'] = - this._gaxModule.routingHeader.fromParams({ - name: request.name ?? '', - }); + let options: gax.CallOptions; + if (typeof optionsOrCallback === 'function' && callback === undefined) { + callback = optionsOrCallback; + options = {}; + } else { + options = optionsOrCallback as gax.CallOptions; + } + options = options || {}; + options.otherArgs = options.otherArgs || {}; + options.otherArgs.headers = options.otherArgs.headers || {}; + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); return this.operationsClient.deleteOperation(request, options, callback); } @@ -2477,7 +2941,7 @@ export class JobServiceClient { * @param {string} project * @returns {string} Resource name string. */ - projectPath(project:string) { + projectPath(project: string) { return this.pathTemplates.projectPathTemplate.render({ project: project, }); @@ -2501,7 +2965,7 @@ export class JobServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectCompanyPath(project:string,company:string) { + projectCompanyPath(project: string, company: string) { return this.pathTemplates.projectCompanyPathTemplate.render({ project: project, company: company, @@ -2516,7 +2980,9 @@ export class JobServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).project; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).project; } /** @@ -2527,7 +2993,9 @@ export class JobServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).company; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).company; } /** @@ -2537,7 +3005,7 @@ export class JobServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectJobPath(project:string,job:string) { + projectJobPath(project: string, job: string) { return this.pathTemplates.projectJobPathTemplate.render({ project: project, job: job, @@ -2552,7 +3020,8 @@ export class JobServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectJobName(projectJobName: string) { - return this.pathTemplates.projectJobPathTemplate.match(projectJobName).project; + return this.pathTemplates.projectJobPathTemplate.match(projectJobName) + .project; } /** @@ -2574,7 +3043,7 @@ export class JobServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectTenantCompanyPath(project:string,tenant:string,company:string) { + projectTenantCompanyPath(project: string, tenant: string, company: string) { return this.pathTemplates.projectTenantCompanyPathTemplate.render({ project: project, tenant: tenant, @@ -2590,7 +3059,9 @@ export class JobServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).project; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).project; } /** @@ -2601,7 +3072,9 @@ export class JobServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).tenant; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).tenant; } /** @@ -2612,7 +3085,9 @@ export class JobServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).company; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).company; } /** @@ -2623,7 +3098,7 @@ export class JobServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectTenantJobPath(project:string,tenant:string,job:string) { + projectTenantJobPath(project: string, tenant: string, job: string) { return this.pathTemplates.projectTenantJobPathTemplate.render({ project: project, tenant: tenant, @@ -2639,7 +3114,9 @@ export class JobServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).project; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).project; } /** @@ -2650,7 +3127,9 @@ export class JobServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).tenant; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).tenant; } /** @@ -2661,7 +3140,9 @@ export class JobServiceClient { * @returns {string} A string representing the job. */ matchJobFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).job; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).job; } /** @@ -2671,7 +3152,7 @@ export class JobServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -2708,7 +3189,7 @@ export class JobServiceClient { */ close(): Promise { if (this.jobServiceStub && !this._terminated) { - return this.jobServiceStub.then(stub => { + return this.jobServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -2717,4 +3198,4 @@ export class JobServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/src/v4beta1/tenant_service_client.ts b/packages/google-cloud-talent/src/v4beta1/tenant_service_client.ts index d473d9c34975..b17c7a384e93 100644 --- a/packages/google-cloud-talent/src/v4beta1/tenant_service_client.ts +++ b/packages/google-cloud-talent/src/v4beta1/tenant_service_client.ts @@ -18,11 +18,18 @@ /* global window */ import type * as gax from 'google-gax'; -import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall} from 'google-gax'; -import {Transform} from 'stream'; +import type { + Callback, + CallOptions, + Descriptors, + ClientOptions, + PaginationCallback, + GaxCall, +} from 'google-gax'; +import { Transform } from 'stream'; import * as protos from '../../protos/protos'; import jsonProtos = require('../../protos/protos.json'); -import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax'; +import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax'; /** * Client JSON configuration object, loaded from @@ -44,7 +51,7 @@ export class TenantServiceClient { private _gaxModule: typeof gax | typeof gax.fallback; private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient; private _protos: {}; - private _defaults: {[method: string]: gax.CallSettings}; + private _defaults: { [method: string]: gax.CallSettings }; private _universeDomain: string; private _servicePath: string; private _log = logging.log('talent'); @@ -57,9 +64,9 @@ export class TenantServiceClient { batching: {}, }; warn: (code: string, message: string, warnType?: string) => void; - innerApiCalls: {[name: string]: Function}; - pathTemplates: {[name: string]: gax.PathTemplate}; - tenantServiceStub?: Promise<{[name: string]: Function}>; + innerApiCalls: { [name: string]: Function }; + pathTemplates: { [name: string]: gax.PathTemplate }; + tenantServiceStub?: Promise<{ [name: string]: Function }>; /** * Construct an instance of TenantServiceClient. @@ -100,21 +107,42 @@ export class TenantServiceClient { * const client = new TenantServiceClient({fallback: true}, gax); * ``` */ - constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) { + constructor( + opts?: ClientOptions, + gaxInstance?: typeof gax | typeof gax.fallback, + ) { // Ensure that options include all the required fields. const staticMembers = this.constructor as typeof TenantServiceClient; - if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) { - throw new Error('Please set either universe_domain or universeDomain, but not both.'); + if ( + opts?.universe_domain && + opts?.universeDomain && + opts?.universe_domain !== opts?.universeDomain + ) { + throw new Error( + 'Please set either universe_domain or universeDomain, but not both.', + ); } - const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined; - this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com'; + const universeDomainEnvVar = + typeof process === 'object' && typeof process.env === 'object' + ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] + : undefined; + this._universeDomain = + opts?.universeDomain ?? + opts?.universe_domain ?? + universeDomainEnvVar ?? + 'googleapis.com'; this._servicePath = 'jobs.' + this._universeDomain; - const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath; - this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint); + const servicePath = + opts?.servicePath || opts?.apiEndpoint || this._servicePath; + this._providedCustomServicePath = !!( + opts?.servicePath || opts?.apiEndpoint + ); const port = opts?.port || staticMembers.port; const clientConfig = opts?.clientConfig ?? {}; - const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function'); - opts = Object.assign({servicePath, port, clientConfig, fallback}, opts); + const fallback = + opts?.fallback ?? + (typeof window !== 'undefined' && typeof window?.fetch === 'function'); + opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts); // Request numeric enum values if REST transport is used. opts.numericEnums = true; @@ -139,7 +167,7 @@ export class TenantServiceClient { this._opts = opts; // Save the auth object to the client, for use by other methods. - this.auth = (this._gaxGrpc.auth as gax.GoogleAuth); + this.auth = this._gaxGrpc.auth as gax.GoogleAuth; // Set useJWTAccessWithScope on the auth object. this.auth.useJWTAccessWithScope = true; @@ -153,10 +181,7 @@ export class TenantServiceClient { } // Determine the client header string. - const clientHeader = [ - `gax/${this._gaxModule.version}`, - `gapic/${version}`, - ]; + const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`]; if (typeof process === 'object' && 'versions' in process) { clientHeader.push(`gl-node/${process.versions.node}`); } else { @@ -178,22 +203,22 @@ export class TenantServiceClient { // Create useful helper objects for these. this.pathTemplates = { projectPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}' + 'projects/{project}', ), projectCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/companies/{company}' + 'projects/{project}/companies/{company}', ), projectJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/jobs/{job}' + 'projects/{project}/jobs/{job}', ), projectTenantCompanyPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/companies/{company}' + 'projects/{project}/tenants/{tenant}/companies/{company}', ), projectTenantJobPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}/jobs/{job}' + 'projects/{project}/tenants/{tenant}/jobs/{job}', ), tenantPathTemplate: new this._gaxModule.PathTemplate( - 'projects/{project}/tenants/{tenant}' + 'projects/{project}/tenants/{tenant}', ), }; @@ -201,14 +226,20 @@ export class TenantServiceClient { // (e.g. 50 results at a time, with tokens to get subsequent // pages). Denote the keys used for pagination and results. this.descriptors.page = { - listTenants: - new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'tenants') + listTenants: new this._gaxModule.PageDescriptor( + 'pageToken', + 'nextPageToken', + 'tenants', + ), }; // Put together the default options sent with requests. this._defaults = this._gaxGrpc.constructSettings( - 'google.cloud.talent.v4beta1.TenantService', gapicConfig as gax.ClientConfig, - opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')}); + 'google.cloud.talent.v4beta1.TenantService', + gapicConfig as gax.ClientConfig, + opts.clientConfig || {}, + { 'x-goog-api-client': clientHeader.join(' ') }, + ); // Set up a dictionary of "inner API calls"; the core implementation // of calling the API is handled in `google-gax`, with this code @@ -239,37 +270,46 @@ export class TenantServiceClient { // Put together the "service stub" for // google.cloud.talent.v4beta1.TenantService. this.tenantServiceStub = this._gaxGrpc.createStub( - this._opts.fallback ? - (this._protos as protobuf.Root).lookupService('google.cloud.talent.v4beta1.TenantService') : - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this._opts.fallback + ? (this._protos as protobuf.Root).lookupService( + 'google.cloud.talent.v4beta1.TenantService', + ) + : // eslint-disable-next-line @typescript-eslint/no-explicit-any (this._protos as any).google.cloud.talent.v4beta1.TenantService, - this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>; + this._opts, + this._providedCustomServicePath, + ) as Promise<{ [method: string]: Function }>; // Iterate over each of the methods that the service provides // and create an API call method for each. - const tenantServiceStubMethods = - ['createTenant', 'getTenant', 'updateTenant', 'deleteTenant', 'listTenants']; + const tenantServiceStubMethods = [ + 'createTenant', + 'getTenant', + 'updateTenant', + 'deleteTenant', + 'listTenants', + ]; for (const methodName of tenantServiceStubMethods) { const callPromise = this.tenantServiceStub.then( - stub => (...args: Array<{}>) => { - if (this._terminated) { - return Promise.reject('The client has already been closed.'); - } - const func = stub[methodName]; - return func.apply(stub, args); - }, - (err: Error|null|undefined) => () => { + (stub) => + (...args: Array<{}>) => { + if (this._terminated) { + return Promise.reject('The client has already been closed.'); + } + const func = stub[methodName]; + return func.apply(stub, args); + }, + (err: Error | null | undefined) => () => { throw err; - }); + }, + ); - const descriptor = - this.descriptors.page[methodName] || - undefined; + const descriptor = this.descriptors.page[methodName] || undefined; const apiCall = this._gaxModule.createApiCall( callPromise, this._defaults[methodName], descriptor, - this._opts.fallback + this._opts.fallback, ); this.innerApiCalls[methodName] = apiCall; @@ -284,8 +324,14 @@ export class TenantServiceClient { * @returns {string} The DNS address for this service. */ static get servicePath() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static servicePath is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -296,8 +342,14 @@ export class TenantServiceClient { * @returns {string} The DNS address for this service. */ static get apiEndpoint() { - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning'); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + process.emitWarning( + 'Static apiEndpoint is deprecated, please use the instance method instead.', + 'DeprecationWarning', + ); } return 'jobs.googleapis.com'; } @@ -330,7 +382,7 @@ export class TenantServiceClient { static get scopes() { return [ 'https://www.googleapis.com/auth/cloud-platform', - 'https://www.googleapis.com/auth/jobs' + 'https://www.googleapis.com/auth/jobs', ]; } @@ -340,8 +392,9 @@ export class TenantServiceClient { * Return the project ID used by this class. * @returns {Promise} A promise that resolves to string containing the project ID. */ - getProjectId(callback?: Callback): - Promise|void { + getProjectId( + callback?: Callback, + ): Promise | void { if (callback) { this.auth.getProjectId(callback); return; @@ -352,492 +405,671 @@ export class TenantServiceClient { // ------------------- // -- Service calls -- // ------------------- -/** - * Creates a new tenant entity. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {google.cloud.talent.v4beta1.Tenant} request.tenant - * Required. The tenant to be created. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/tenant_service.create_tenant.js - * region_tag:jobs_v4beta1_generated_TenantService_CreateTenant_async - */ + /** + * Creates a new tenant entity. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {google.cloud.talent.v4beta1.Tenant} request.tenant + * Required. The tenant to be created. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/tenant_service.create_tenant.js + * region_tag:jobs_v4beta1_generated_TenantService_CreateTenant_async + */ createTenant( - request?: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.ICreateTenantRequest | undefined, + {} | undefined, + ] + >; createTenant( - request: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.ICreateTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createTenant( - request: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.ICreateTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): void; createTenant( - request?: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, - optionsOrCallback?: CallOptions|Callback< + request?: protos.google.cloud.talent.v4beta1.ICreateTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.ICreateTenantRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.ICreateTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.ICreateTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('createTenant request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.ICreateTenantRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('createTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.createTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.ICreateTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('createTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .createTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.ICreateTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('createTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Retrieves specified tenant. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the tenant to be retrieved. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/tenant_service.get_tenant.js - * region_tag:jobs_v4beta1_generated_TenantService_GetTenant_async - */ + /** + * Retrieves specified tenant. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the tenant to be retrieved. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/tenant_service.get_tenant.js + * region_tag:jobs_v4beta1_generated_TenantService_GetTenant_async + */ getTenant( - request?: protos.google.cloud.talent.v4beta1.IGetTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IGetTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IGetTenantRequest | undefined, + {} | undefined, + ] + >; getTenant( - request: protos.google.cloud.talent.v4beta1.IGetTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IGetTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IGetTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; getTenant( - request: protos.google.cloud.talent.v4beta1.IGetTenantRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IGetTenantRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IGetTenantRequest | null | undefined, + {} | null | undefined + >, + ): void; getTenant( - request?: protos.google.cloud.talent.v4beta1.IGetTenantRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IGetTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IGetTenantRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IGetTenantRequest | null | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IGetTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('getTenant request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.IGetTenantRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('getTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.getTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IGetTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('getTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .getTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IGetTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('getTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Updates specified tenant. - * - * @param {Object} request - * The request object that will be sent. - * @param {google.cloud.talent.v4beta1.Tenant} request.tenant - * Required. The tenant resource to replace the current resource in the - * system. - * @param {google.protobuf.FieldMask} request.updateMask - * Strongly recommended for the best service experience. - * - * If - * {@link protos.google.cloud.talent.v4beta1.UpdateTenantRequest.update_mask|update_mask} - * is provided, only the specified fields in - * {@link protos.google.cloud.talent.v4beta1.UpdateTenantRequest.tenant|tenant} are - * updated. Otherwise all the fields are updated. - * - * A field mask to specify the tenant fields to be updated. Only - * top level fields of {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant} are - * supported. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/tenant_service.update_tenant.js - * region_tag:jobs_v4beta1_generated_TenantService_UpdateTenant_async - */ + /** + * Updates specified tenant. + * + * @param {Object} request + * The request object that will be sent. + * @param {google.cloud.talent.v4beta1.Tenant} request.tenant + * Required. The tenant resource to replace the current resource in the + * system. + * @param {google.protobuf.FieldMask} request.updateMask + * Strongly recommended for the best service experience. + * + * If + * {@link protos.google.cloud.talent.v4beta1.UpdateTenantRequest.update_mask|update_mask} + * is provided, only the specified fields in + * {@link protos.google.cloud.talent.v4beta1.UpdateTenantRequest.tenant|tenant} are + * updated. Otherwise all the fields are updated. + * + * A field mask to specify the tenant fields to be updated. Only + * top level fields of {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant} are + * supported. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/tenant_service.update_tenant.js + * region_tag:jobs_v4beta1_generated_TenantService_UpdateTenant_async + */ updateTenant( - request?: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IUpdateTenantRequest | undefined, + {} | undefined, + ] + >; updateTenant( - request: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.IUpdateTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): void; updateTenant( - request: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, - callback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, + callback: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.IUpdateTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): void; updateTenant( - request?: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IUpdateTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IUpdateTenantRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.IUpdateTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IUpdateTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'tenant.name': request.tenant!.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + 'tenant.name': request.tenant!.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('updateTenant request %j', request); - const wrappedCallback: Callback< - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.cloud.talent.v4beta1.ITenant, + | protos.google.cloud.talent.v4beta1.IUpdateTenantRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('updateTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.updateTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.cloud.talent.v4beta1.ITenant, - protos.google.cloud.talent.v4beta1.IUpdateTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('updateTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .updateTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.cloud.talent.v4beta1.ITenant, + protos.google.cloud.talent.v4beta1.IUpdateTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('updateTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } -/** - * Deletes specified tenant. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.name - * Required. The resource name of the tenant to be deleted. - * - * The format is "projects/{project_id}/tenants/{tenant_id}", for example, - * "projects/foo/tenants/bar". - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/tenant_service.delete_tenant.js - * region_tag:jobs_v4beta1_generated_TenantService_DeleteTenant_async - */ + /** + * Deletes specified tenant. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.name + * Required. The resource name of the tenant to be deleted. + * + * The format is "projects/{project_id}/tenants/{tenant_id}", for example, + * "projects/foo/tenants/bar". + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/tenant_service.delete_tenant.js + * region_tag:jobs_v4beta1_generated_TenantService_DeleteTenant_async + */ deleteTenant( - request?: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, - options?: CallOptions): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|undefined, {}|undefined - ]>; + request?: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteTenantRequest | undefined, + {} | undefined, + ] + >; deleteTenant( - request: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, - options: CallOptions, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, + options: CallOptions, + callback: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): void; deleteTenant( - request: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, - callback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|null|undefined, - {}|null|undefined>): void; + request: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, + callback: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): void; deleteTenant( - request?: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, - optionsOrCallback?: CallOptions|Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|null|undefined, - {}|null|undefined>, - callback?: Callback< + request?: protos.google.cloud.talent.v4beta1.IDeleteTenantRequest, + optionsOrCallback?: + | CallOptions + | Callback< protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|null|undefined, - {}|null|undefined>): - Promise<[ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|undefined, {}|undefined - ]>|void { + | protos.google.cloud.talent.v4beta1.IDeleteTenantRequest + | null + | undefined, + {} | null | undefined + >, + callback?: Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteTenantRequest + | null + | undefined, + {} | null | undefined + >, + ): Promise< + [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteTenantRequest | undefined, + {} | undefined, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'name': request.name ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + name: request.name ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); this._log.info('deleteTenant request %j', request); - const wrappedCallback: Callback< - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|null|undefined, - {}|null|undefined>|undefined = callback + const wrappedCallback: + | Callback< + protos.google.protobuf.IEmpty, + | protos.google.cloud.talent.v4beta1.IDeleteTenantRequest + | null + | undefined, + {} | null | undefined + > + | undefined = callback ? (error, response, options, rawResponse) => { this._log.info('deleteTenant response %j', response); callback!(error, response, options, rawResponse); // We verified callback above. } : undefined; - return this.innerApiCalls.deleteTenant(request, options, wrappedCallback) - ?.then(([response, options, rawResponse]: [ - protos.google.protobuf.IEmpty, - protos.google.cloud.talent.v4beta1.IDeleteTenantRequest|undefined, - {}|undefined - ]) => { - this._log.info('deleteTenant response %j', response); - return [response, options, rawResponse]; - }).catch((error: any) => { - if (error && 'statusDetails' in error && error.statusDetails instanceof Array) { - const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type; - error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos); + return this.innerApiCalls + .deleteTenant(request, options, wrappedCallback) + ?.then( + ([response, options, rawResponse]: [ + protos.google.protobuf.IEmpty, + protos.google.cloud.talent.v4beta1.IDeleteTenantRequest | undefined, + {} | undefined, + ]) => { + this._log.info('deleteTenant response %j', response); + return [response, options, rawResponse]; + }, + ) + .catch((error: any) => { + if ( + error && + 'statusDetails' in error && + error.statusDetails instanceof Array + ) { + const protos = this._gaxModule.protobuf.Root.fromJSON( + jsonProtos, + ) as unknown as gax.protobuf.Type; + error.statusDetails = decodeAnyProtosInArray( + error.statusDetails, + protos, + ); } throw error; }); } - /** - * Lists all tenants associated with the project. - * - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of tenants to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Promise} - The promise which resolves to an array. - * The first element of the array is Array of {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed and will merge results from all the pages into this array. - * Note that it can affect your quota. - * We recommend using `listTenantsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Lists all tenants associated with the project. + * + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of tenants to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Promise} - The promise which resolves to an array. + * The first element of the array is Array of {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed and will merge results from all the pages into this array. + * Note that it can affect your quota. + * We recommend using `listTenantsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listTenants( - request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, - options?: CallOptions): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant[], - protos.google.cloud.talent.v4beta1.IListTenantsRequest|null, - protos.google.cloud.talent.v4beta1.IListTenantsResponse - ]>; + request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, + options?: CallOptions, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant[], + protos.google.cloud.talent.v4beta1.IListTenantsRequest | null, + protos.google.cloud.talent.v4beta1.IListTenantsResponse, + ] + >; listTenants( - request: protos.google.cloud.talent.v4beta1.IListTenantsRequest, - options: CallOptions, - callback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListTenantsRequest, - protos.google.cloud.talent.v4beta1.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ITenant>): void; + request: protos.google.cloud.talent.v4beta1.IListTenantsRequest, + options: CallOptions, + callback: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListTenantsRequest, + | protos.google.cloud.talent.v4beta1.IListTenantsResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ITenant + >, + ): void; listTenants( - request: protos.google.cloud.talent.v4beta1.IListTenantsRequest, - callback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListTenantsRequest, - protos.google.cloud.talent.v4beta1.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ITenant>): void; + request: protos.google.cloud.talent.v4beta1.IListTenantsRequest, + callback: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListTenantsRequest, + | protos.google.cloud.talent.v4beta1.IListTenantsResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ITenant + >, + ): void; listTenants( - request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, - optionsOrCallback?: CallOptions|PaginationCallback< + request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, + optionsOrCallback?: + | CallOptions + | PaginationCallback< protos.google.cloud.talent.v4beta1.IListTenantsRequest, - protos.google.cloud.talent.v4beta1.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ITenant>, - callback?: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListTenantsRequest, - protos.google.cloud.talent.v4beta1.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ITenant>): - Promise<[ - protos.google.cloud.talent.v4beta1.ITenant[], - protos.google.cloud.talent.v4beta1.IListTenantsRequest|null, - protos.google.cloud.talent.v4beta1.IListTenantsResponse - ]>|void { + | protos.google.cloud.talent.v4beta1.IListTenantsResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ITenant + >, + callback?: PaginationCallback< + protos.google.cloud.talent.v4beta1.IListTenantsRequest, + | protos.google.cloud.talent.v4beta1.IListTenantsResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ITenant + >, + ): Promise< + [ + protos.google.cloud.talent.v4beta1.ITenant[], + protos.google.cloud.talent.v4beta1.IListTenantsRequest | null, + protos.google.cloud.talent.v4beta1.IListTenantsResponse, + ] + > | void { request = request || {}; let options: CallOptions; if (typeof optionsOrCallback === 'function' && callback === undefined) { callback = optionsOrCallback; options = {}; - } - else { + } else { options = optionsOrCallback as CallOptions; } options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); + this.initialize().catch((err) => { + throw err; }); - this.initialize().catch(err => {throw err}); - const wrappedCallback: PaginationCallback< - protos.google.cloud.talent.v4beta1.IListTenantsRequest, - protos.google.cloud.talent.v4beta1.IListTenantsResponse|null|undefined, - protos.google.cloud.talent.v4beta1.ITenant>|undefined = callback + const wrappedCallback: + | PaginationCallback< + protos.google.cloud.talent.v4beta1.IListTenantsRequest, + | protos.google.cloud.talent.v4beta1.IListTenantsResponse + | null + | undefined, + protos.google.cloud.talent.v4beta1.ITenant + > + | undefined = callback ? (error, values, nextPageRequest, rawResponse) => { this._log.info('listTenants values %j', values); callback!(error, values, nextPageRequest, rawResponse); // We verified callback above. @@ -846,114 +1078,118 @@ export class TenantServiceClient { this._log.info('listTenants request %j', request); return this.innerApiCalls .listTenants(request, options, wrappedCallback) - ?.then(([response, input, output]: [ - protos.google.cloud.talent.v4beta1.ITenant[], - protos.google.cloud.talent.v4beta1.IListTenantsRequest|null, - protos.google.cloud.talent.v4beta1.IListTenantsResponse - ]) => { - this._log.info('listTenants values %j', response); - return [response, input, output]; - }); + ?.then( + ([response, input, output]: [ + protos.google.cloud.talent.v4beta1.ITenant[], + protos.google.cloud.talent.v4beta1.IListTenantsRequest | null, + protos.google.cloud.talent.v4beta1.IListTenantsResponse, + ]) => { + this._log.info('listTenants values %j', response); + return [response, input, output]; + }, + ); } -/** - * Equivalent to `listTenants`, but returns a NodeJS Stream object. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of tenants to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Stream} - * An object stream which emits an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant} on 'data' event. - * The client library will perform auto-pagination by default: it will call the API as many - * times as needed. Note that it can affect your quota. - * We recommend using `listTenantsAsync()` - * method described below for async iteration which you can stop as needed. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - */ + /** + * Equivalent to `listTenants`, but returns a NodeJS Stream object. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of tenants to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Stream} + * An object stream which emits an object representing {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant} on 'data' event. + * The client library will perform auto-pagination by default: it will call the API as many + * times as needed. Note that it can affect your quota. + * We recommend using `listTenantsAsync()` + * method described below for async iteration which you can stop as needed. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + */ listTenantsStream( - request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, - options?: CallOptions): - Transform{ + request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, + options?: CallOptions, + ): Transform { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listTenants']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listTenants stream %j', request); return this.descriptors.page.listTenants.createStream( this.innerApiCalls.listTenants as GaxCall, request, - callSettings + callSettings, ); } -/** - * Equivalent to `listTenants`, but returns an iterable object. - * - * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. - * @param {Object} request - * The request object that will be sent. - * @param {string} request.parent - * Required. Resource name of the project under which the tenant is created. - * - * The format is "projects/{project_id}", for example, - * "projects/foo". - * @param {string} request.pageToken - * The starting indicator from which to return results. - * @param {number} request.pageSize - * The maximum number of tenants to be returned, at most 100. - * Default is 100 if a non-positive number is provided. - * @param {object} [options] - * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. - * @returns {Object} - * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. - * When you iterate the returned iterable, each element will be an object representing - * {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. The API will be called under the hood as needed, once per the page, - * so you can stop the iteration when you don't need more results. - * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } - * for more details and examples. - * @example include:samples/generated/v4beta1/tenant_service.list_tenants.js - * region_tag:jobs_v4beta1_generated_TenantService_ListTenants_async - */ + /** + * Equivalent to `listTenants`, but returns an iterable object. + * + * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand. + * @param {Object} request + * The request object that will be sent. + * @param {string} request.parent + * Required. Resource name of the project under which the tenant is created. + * + * The format is "projects/{project_id}", for example, + * "projects/foo". + * @param {string} request.pageToken + * The starting indicator from which to return results. + * @param {number} request.pageSize + * The maximum number of tenants to be returned, at most 100. + * Default is 100 if a non-positive number is provided. + * @param {object} [options] + * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. + * @returns {Object} + * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }. + * When you iterate the returned iterable, each element will be an object representing + * {@link protos.google.cloud.talent.v4beta1.Tenant|Tenant}. The API will be called under the hood as needed, once per the page, + * so you can stop the iteration when you don't need more results. + * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation } + * for more details and examples. + * @example include:samples/generated/v4beta1/tenant_service.list_tenants.js + * region_tag:jobs_v4beta1_generated_TenantService_ListTenants_async + */ listTenantsAsync( - request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, - options?: CallOptions): - AsyncIterable{ + request?: protos.google.cloud.talent.v4beta1.IListTenantsRequest, + options?: CallOptions, + ): AsyncIterable { request = request || {}; options = options || {}; options.otherArgs = options.otherArgs || {}; options.otherArgs.headers = options.otherArgs.headers || {}; - options.otherArgs.headers[ - 'x-goog-request-params' - ] = this._gaxModule.routingHeader.fromParams({ - 'parent': request.parent ?? '', - }); + options.otherArgs.headers['x-goog-request-params'] = + this._gaxModule.routingHeader.fromParams({ + parent: request.parent ?? '', + }); const defaultCallSettings = this._defaults['listTenants']; const callSettings = defaultCallSettings.merge(options); - this.initialize().catch(err => {throw err}); + this.initialize().catch((err) => { + throw err; + }); this._log.info('listTenants iterate %j', request); return this.descriptors.page.listTenants.asyncIterate( this.innerApiCalls['listTenants'] as GaxCall, request as {}, - callSettings + callSettings, ) as AsyncIterable; } // -------------------- @@ -966,7 +1202,7 @@ export class TenantServiceClient { * @param {string} project * @returns {string} Resource name string. */ - projectPath(project:string) { + projectPath(project: string) { return this.pathTemplates.projectPathTemplate.render({ project: project, }); @@ -990,7 +1226,7 @@ export class TenantServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectCompanyPath(project:string,company:string) { + projectCompanyPath(project: string, company: string) { return this.pathTemplates.projectCompanyPathTemplate.render({ project: project, company: company, @@ -1005,7 +1241,9 @@ export class TenantServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).project; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).project; } /** @@ -1016,7 +1254,9 @@ export class TenantServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectCompanyName(projectCompanyName: string) { - return this.pathTemplates.projectCompanyPathTemplate.match(projectCompanyName).company; + return this.pathTemplates.projectCompanyPathTemplate.match( + projectCompanyName, + ).company; } /** @@ -1026,7 +1266,7 @@ export class TenantServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectJobPath(project:string,job:string) { + projectJobPath(project: string, job: string) { return this.pathTemplates.projectJobPathTemplate.render({ project: project, job: job, @@ -1041,7 +1281,8 @@ export class TenantServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectJobName(projectJobName: string) { - return this.pathTemplates.projectJobPathTemplate.match(projectJobName).project; + return this.pathTemplates.projectJobPathTemplate.match(projectJobName) + .project; } /** @@ -1063,7 +1304,7 @@ export class TenantServiceClient { * @param {string} company * @returns {string} Resource name string. */ - projectTenantCompanyPath(project:string,tenant:string,company:string) { + projectTenantCompanyPath(project: string, tenant: string, company: string) { return this.pathTemplates.projectTenantCompanyPathTemplate.render({ project: project, tenant: tenant, @@ -1079,7 +1320,9 @@ export class TenantServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).project; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).project; } /** @@ -1090,7 +1333,9 @@ export class TenantServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).tenant; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).tenant; } /** @@ -1101,7 +1346,9 @@ export class TenantServiceClient { * @returns {string} A string representing the company. */ matchCompanyFromProjectTenantCompanyName(projectTenantCompanyName: string) { - return this.pathTemplates.projectTenantCompanyPathTemplate.match(projectTenantCompanyName).company; + return this.pathTemplates.projectTenantCompanyPathTemplate.match( + projectTenantCompanyName, + ).company; } /** @@ -1112,7 +1359,7 @@ export class TenantServiceClient { * @param {string} job * @returns {string} Resource name string. */ - projectTenantJobPath(project:string,tenant:string,job:string) { + projectTenantJobPath(project: string, tenant: string, job: string) { return this.pathTemplates.projectTenantJobPathTemplate.render({ project: project, tenant: tenant, @@ -1128,7 +1375,9 @@ export class TenantServiceClient { * @returns {string} A string representing the project. */ matchProjectFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).project; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).project; } /** @@ -1139,7 +1388,9 @@ export class TenantServiceClient { * @returns {string} A string representing the tenant. */ matchTenantFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).tenant; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).tenant; } /** @@ -1150,7 +1401,9 @@ export class TenantServiceClient { * @returns {string} A string representing the job. */ matchJobFromProjectTenantJobName(projectTenantJobName: string) { - return this.pathTemplates.projectTenantJobPathTemplate.match(projectTenantJobName).job; + return this.pathTemplates.projectTenantJobPathTemplate.match( + projectTenantJobName, + ).job; } /** @@ -1160,7 +1413,7 @@ export class TenantServiceClient { * @param {string} tenant * @returns {string} Resource name string. */ - tenantPath(project:string,tenant:string) { + tenantPath(project: string, tenant: string) { return this.pathTemplates.tenantPathTemplate.render({ project: project, tenant: tenant, @@ -1197,7 +1450,7 @@ export class TenantServiceClient { */ close(): Promise { if (this.tenantServiceStub && !this._terminated) { - return this.tenantServiceStub.then(stub => { + return this.tenantServiceStub.then((stub) => { this._log.info('ending gRPC channel'); this._terminated = true; stub.close(); @@ -1205,4 +1458,4 @@ export class TenantServiceClient { } return Promise.resolve(); } -} \ No newline at end of file +} diff --git a/packages/google-cloud-talent/system-test/fixtures/sample/src/index.ts b/packages/google-cloud-talent/system-test/fixtures/sample/src/index.ts index 87900fee2133..82ad6e825423 100644 --- a/packages/google-cloud-talent/system-test/fixtures/sample/src/index.ts +++ b/packages/google-cloud-talent/system-test/fixtures/sample/src/index.ts @@ -16,7 +16,13 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** -import {CompanyServiceClient, CompletionClient, EventServiceClient, JobServiceClient, TenantServiceClient} from '@google-cloud/talent'; +import { + CompanyServiceClient, + CompletionClient, + EventServiceClient, + JobServiceClient, + TenantServiceClient, +} from '@google-cloud/talent'; // check that the client class type name can be used function doStuffWithCompanyServiceClient(client: CompanyServiceClient) { diff --git a/packages/google-cloud-talent/system-test/install.ts b/packages/google-cloud-talent/system-test/install.ts index f66069aa3940..ccf167042d2e 100644 --- a/packages/google-cloud-talent/system-test/install.ts +++ b/packages/google-cloud-talent/system-test/install.ts @@ -16,34 +16,36 @@ // ** https://github.com/googleapis/gapic-generator-typescript ** // ** All changes to this file may be overwritten. ** -import {packNTest} from 'pack-n-play'; -import {readFileSync} from 'fs'; -import {describe, it} from 'mocha'; +import { packNTest } from 'pack-n-play'; +import { readFileSync } from 'fs'; +import { describe, it } from 'mocha'; describe('📦 pack-n-play test', () => { - - it('TypeScript code', async function() { + it('TypeScript code', async function () { this.timeout(300000); const options = { packageDir: process.cwd(), sample: { description: 'TypeScript user can use the type definitions', - ts: readFileSync('./system-test/fixtures/sample/src/index.ts').toString() - } + ts: readFileSync( + './system-test/fixtures/sample/src/index.ts', + ).toString(), + }, }; await packNTest(options); }); - it('JavaScript code', async function() { + it('JavaScript code', async function () { this.timeout(300000); const options = { packageDir: process.cwd(), sample: { description: 'JavaScript user can use the library', - cjs: readFileSync('./system-test/fixtures/sample/src/index.js').toString() - } + cjs: readFileSync( + './system-test/fixtures/sample/src/index.js', + ).toString(), + }, }; await packNTest(options); }); - }); diff --git a/packages/google-cloud-talent/test/gapic_company_service_v4.ts b/packages/google-cloud-talent/test/gapic_company_service_v4.ts index 168f940f703b..aea54f27de00 100644 --- a/packages/google-cloud-talent/test/gapic_company_service_v4.ts +++ b/packages/google-cloud-talent/test/gapic_company_service_v4.ts @@ -19,1057 +19,1307 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as companyserviceModule from '../src'; -import {PassThrough} from 'stream'; +import { PassThrough } from 'stream'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } -function stubPageStreamingCall(responses?: ResponseType[], error?: Error) { - const pagingStub = sinon.stub(); - if (responses) { - for (let i = 0; i < responses.length; ++i) { - pagingStub.onCall(i).callsArgWith(2, null, responses[i]); - } +function stubPageStreamingCall( + responses?: ResponseType[], + error?: Error, +) { + const pagingStub = sinon.stub(); + if (responses) { + for (let i = 0; i < responses.length; ++i) { + pagingStub.onCall(i).callsArgWith(2, null, responses[i]); } - const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub; - const mockStream = new PassThrough({ - objectMode: true, - transform: transformStub, - }); - // trigger as many responses as needed - if (responses) { - for (let i = 0; i < responses.length; ++i) { - setImmediate(() => { mockStream.write({}); }); - } - setImmediate(() => { mockStream.end(); }); - } else { - setImmediate(() => { mockStream.write({}); }); - setImmediate(() => { mockStream.end(); }); + } + const transformStub = error + ? sinon.stub().callsArgWith(2, error) + : pagingStub; + const mockStream = new PassThrough({ + objectMode: true, + transform: transformStub, + }); + // trigger as many responses as needed + if (responses) { + for (let i = 0; i < responses.length; ++i) { + setImmediate(() => { + mockStream.write({}); + }); } - return sinon.stub().returns(mockStream); + setImmediate(() => { + mockStream.end(); + }); + } else { + setImmediate(() => { + mockStream.write({}); + }); + setImmediate(() => { + mockStream.end(); + }); + } + return sinon.stub().returns(mockStream); } -function stubAsyncIterationCall(responses?: ResponseType[], error?: Error) { - let counter = 0; - const asyncIterable = { - [Symbol.asyncIterator]() { - return { - async next() { - if (error) { - return Promise.reject(error); - } - if (counter >= responses!.length) { - return Promise.resolve({done: true, value: undefined}); - } - return Promise.resolve({done: false, value: responses![counter++]}); - } - }; - } - }; - return sinon.stub().returns(asyncIterable); +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error, +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({ done: true, value: undefined }); + } + return Promise.resolve({ done: false, value: responses![counter++] }); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); } describe('v4.CompanyServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new companyserviceModule.v4.CompanyServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new companyserviceModule.v4.CompanyServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has universeDomain', () => { - const client = new companyserviceModule.v4.CompanyServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); + it('has universeDomain', () => { + const client = new companyserviceModule.v4.CompanyServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = companyserviceModule.v4.CompanyServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + companyserviceModule.v4.CompanyServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = companyserviceModule.v4.CompanyServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new companyserviceModule.v4.CompanyServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + companyserviceModule.v4.CompanyServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); + + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); + + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new companyserviceModule.v4.CompanyServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new companyserviceModule.v4.CompanyServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new companyserviceModule.v4.CompanyServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new companyserviceModule.v4.CompanyServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new companyserviceModule.v4.CompanyServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); + it('has port', () => { + const port = companyserviceModule.v4.CompanyServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new companyserviceModule.v4.CompanyServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new companyserviceModule.v4.CompanyServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); - }); + it('should create a client with no option', () => { + const client = new companyserviceModule.v4.CompanyServiceClient(); + assert(client); + }); - it('has port', () => { - const port = companyserviceModule.v4.CompanyServiceClient.port; - assert(port); - assert(typeof port === 'number'); - }); + it('should create a client with gRPC fallback', () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + fallback: true, + }); + assert(client); + }); - it('should create a client with no option', () => { - const client = new companyserviceModule.v4.CompanyServiceClient(); - assert(client); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.companyServiceStub, undefined); + await client.initialize(); + assert(client.companyServiceStub); + }); - it('should create a client with gRPC fallback', () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - fallback: true, - }); - assert(client); + it('has close method for the initialized client', (done) => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.companyServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('has initialize method and supports deferred initialization', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.companyServiceStub, undefined); - await client.initialize(); - assert(client.companyServiceStub); + it('has close method for the non-initialized client', (done) => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.companyServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('has close method for the initialized client', done => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.companyServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('has close method for the non-initialized client', done => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.companyServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); - }); + describe('createCompany', () => { + it('invokes createCompany without error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Company(), + ); + client.innerApiCalls.createCompany = stubSimpleCall(expectedResponse); + const [response] = await client.createCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); - }); + it('invokes createCompany without error using callback', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Company(), + ); + client.innerApiCalls.createCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createCompany( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ICompany | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('createCompany', () => { - it('invokes createCompany without error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Company() - ); - client.innerApiCalls.createCompany = stubSimpleCall(expectedResponse); - const [response] = await client.createCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createCompany with error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.createCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createCompany without error using callback', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Company() - ); - client.innerApiCalls.createCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createCompany( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ICompany|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createCompany with closed client', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createCompany(request), expectedError); + }); + }); - it('invokes createCompany with error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + describe('getCompany', () => { + it('invokes getCompany without error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Company(), + ); + client.innerApiCalls.getCompany = stubSimpleCall(expectedResponse); + const [response] = await client.getCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createCompany with closed client', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createCompany(request), expectedError); - }); + it('invokes getCompany without error using callback', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Company(), + ); + client.innerApiCalls.getCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.getCompany( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ICompany | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('getCompany', () => { - it('invokes getCompany without error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Company() - ); - client.innerApiCalls.getCompany = stubSimpleCall(expectedResponse); - const [response] = await client.getCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getCompany with error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.getCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.getCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getCompany without error using callback', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Company() - ); - client.innerApiCalls.getCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.getCompany( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ICompany|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getCompany with closed client', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.getCompany(request), expectedError); + }); + }); - it('invokes getCompany with error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.getCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.getCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + describe('updateCompany', () => { + it('invokes updateCompany without error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Company(), + ); + client.innerApiCalls.updateCompany = stubSimpleCall(expectedResponse); + const [response] = await client.updateCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getCompany with closed client', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.getCompany(request), expectedError); - }); + it('invokes updateCompany without error using callback', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Company(), + ); + client.innerApiCalls.updateCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.updateCompany( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ICompany | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('updateCompany', () => { - it('invokes updateCompany without error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Company() - ); - client.innerApiCalls.updateCompany = stubSimpleCall(expectedResponse); - const [response] = await client.updateCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateCompany with error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.updateCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.updateCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateCompany without error using callback', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Company() - ); - client.innerApiCalls.updateCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.updateCompany( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ICompany|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateCompany with closed client', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.updateCompany(request), expectedError); + }); + }); - it('invokes updateCompany with error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.updateCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.updateCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + describe('deleteCompany', () => { + it('invokes deleteCompany without error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteCompany = stubSimpleCall(expectedResponse); + const [response] = await client.deleteCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateCompany with closed client', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.updateCompany(request), expectedError); - }); + it('invokes deleteCompany without error using callback', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.deleteCompany( + request, + ( + err?: Error | null, + result?: protos.google.protobuf.IEmpty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('deleteCompany', () => { - it('invokes deleteCompany without error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteCompany = stubSimpleCall(expectedResponse); - const [response] = await client.deleteCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteCompany with error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.deleteCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteCompany without error using callback', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.deleteCompany( - request, - (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteCompany with closed client', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.deleteCompany(request), expectedError); + }); + }); - it('invokes deleteCompany with error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.deleteCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.deleteCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + describe('listCompanies', () => { + it('invokes listCompanies without error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + ]; + client.innerApiCalls.listCompanies = stubSimpleCall(expectedResponse); + const [response] = await client.listCompanies(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteCompany with closed client', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.deleteCompany(request), expectedError); - }); + it('invokes listCompanies without error using callback', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + ]; + client.innerApiCalls.listCompanies = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.listCompanies( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ICompany[] | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('listCompanies', () => { - it('invokes listCompanies without error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - ]; - client.innerApiCalls.listCompanies = stubSimpleCall(expectedResponse); - const [response] = await client.listCompanies(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listCompanies with error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.listCompanies = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.listCompanies(request), expectedError); + const actualRequest = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listCompanies without error using callback', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - ]; - client.innerApiCalls.listCompanies = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.listCompanies( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ICompany[]|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('invokes listCompaniesStream without error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + ]; + client.descriptors.page.listCompanies.createStream = + stubPageStreamingCall(expectedResponse); + const stream = client.listCompaniesStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4.Company[] = []; + stream.on('data', (response: protos.google.cloud.talent.v4.Company) => { + responses.push(response); }); - - it('invokes listCompanies with error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.listCompanies = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.listCompanies(request), expectedError); - const actualRequest = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + stream.on('end', () => { + resolve(responses); }); - - it('invokes listCompaniesStream without error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - ]; - client.descriptors.page.listCompanies.createStream = stubPageStreamingCall(expectedResponse); - const stream = client.listCompaniesStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4.Company[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4.Company) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - const responses = await promise; - assert.deepStrictEqual(responses, expectedResponse); - assert((client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listCompanies, request)); - assert( - (client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('error', (err: Error) => { + reject(err); }); + }); + const responses = await promise; + assert.deepStrictEqual(responses, expectedResponse); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listCompanies, request), + ); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('invokes listCompaniesStream with error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listCompanies.createStream = stubPageStreamingCall(undefined, expectedError); - const stream = client.listCompaniesStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4.Company[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4.Company) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - await assert.rejects(promise, expectedError); - assert((client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listCompanies, request)); - assert( - (client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + it('invokes listCompaniesStream with error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listCompanies.createStream = + stubPageStreamingCall(undefined, expectedError); + const stream = client.listCompaniesStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4.Company[] = []; + stream.on('data', (response: protos.google.cloud.talent.v4.Company) => { + responses.push(response); }); - - it('uses async iteration with listCompanies without error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4.Company()), - ]; - client.descriptors.page.listCompanies.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: protos.google.cloud.talent.v4.ICompany[] = []; - const iterable = client.listCompaniesAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('end', () => { + resolve(responses); }); - - it('uses async iteration with listCompanies with error', async () => { - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listCompanies.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.listCompaniesAsync(request); - await assert.rejects(async () => { - const responses: protos.google.cloud.talent.v4.ICompany[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('error', (err: Error) => { + reject(err); }); + }); + await assert.rejects(promise, expectedError); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listCompanies, request), + ); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); }); - describe('Path templates', () => { + it('uses async iteration with listCompanies without error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4.Company()), + ]; + client.descriptors.page.listCompanies.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: protos.google.cloud.talent.v4.ICompany[] = []; + const iterable = client.listCompaniesAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + ( + client.descriptors.page.listCompanies.asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + assert( + (client.descriptors.page.listCompanies.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - describe('company', async () => { - const fakePath = "/rendered/path/company"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.companyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.companyPathTemplate.match = - sinon.stub().returns(expectedParameters); + it('uses async iteration with listCompanies with error', async () => { + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listCompanies.asyncIterate = + stubAsyncIterationCall(undefined, expectedError); + const iterable = client.listCompaniesAsync(request); + await assert.rejects(async () => { + const responses: protos.google.cloud.talent.v4.ICompany[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + ( + client.descriptors.page.listCompanies.asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + assert( + (client.descriptors.page.listCompanies.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); + }); - it('companyPath', () => { - const result = client.companyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.companyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); + describe('Path templates', () => { + describe('company', async () => { + const fakePath = '/rendered/path/company'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.companyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.companyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); - it('matchProjectFromCompanyName', () => { - const result = client.matchProjectFromCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); + it('companyPath', () => { + const result = client.companyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.companyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); - it('matchTenantFromCompanyName', () => { - const result = client.matchTenantFromCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); + it('matchProjectFromCompanyName', () => { + const result = client.matchProjectFromCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); - it('matchCompanyFromCompanyName', () => { - const result = client.matchCompanyFromCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('matchTenantFromCompanyName', () => { + const result = client.matchTenantFromCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); - describe('job', async () => { - const fakePath = "/rendered/path/job"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.jobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.jobPathTemplate.match = - sinon.stub().returns(expectedParameters); + it('matchCompanyFromCompanyName', () => { + const result = client.matchCompanyFromCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - it('jobPath', () => { - const result = client.jobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.jobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); + describe('job', async () => { + const fakePath = '/rendered/path/job'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.jobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.jobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); - it('matchProjectFromJobName', () => { - const result = client.matchProjectFromJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); + it('jobPath', () => { + const result = client.jobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.jobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); - it('matchTenantFromJobName', () => { - const result = client.matchTenantFromJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); + it('matchProjectFromJobName', () => { + const result = client.matchProjectFromJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); - it('matchJobFromJobName', () => { - const result = client.matchJobFromJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('matchTenantFromJobName', () => { + const result = client.matchTenantFromJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new companyserviceModule.v4.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); + it('matchJobFromJobName', () => { + const result = client.matchJobFromJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new companyserviceModule.v4.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_company_service_v4beta1.ts b/packages/google-cloud-talent/test/gapic_company_service_v4beta1.ts index 76ade0049031..dcab7e9c3677 100644 --- a/packages/google-cloud-talent/test/gapic_company_service_v4beta1.ts +++ b/packages/google-cloud-talent/test/gapic_company_service_v4beta1.ts @@ -19,1163 +19,1470 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as companyserviceModule from '../src'; -import {PassThrough} from 'stream'; +import { PassThrough } from 'stream'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } -function stubPageStreamingCall(responses?: ResponseType[], error?: Error) { - const pagingStub = sinon.stub(); - if (responses) { - for (let i = 0; i < responses.length; ++i) { - pagingStub.onCall(i).callsArgWith(2, null, responses[i]); - } +function stubPageStreamingCall( + responses?: ResponseType[], + error?: Error, +) { + const pagingStub = sinon.stub(); + if (responses) { + for (let i = 0; i < responses.length; ++i) { + pagingStub.onCall(i).callsArgWith(2, null, responses[i]); } - const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub; - const mockStream = new PassThrough({ - objectMode: true, - transform: transformStub, - }); - // trigger as many responses as needed - if (responses) { - for (let i = 0; i < responses.length; ++i) { - setImmediate(() => { mockStream.write({}); }); - } - setImmediate(() => { mockStream.end(); }); - } else { - setImmediate(() => { mockStream.write({}); }); - setImmediate(() => { mockStream.end(); }); + } + const transformStub = error + ? sinon.stub().callsArgWith(2, error) + : pagingStub; + const mockStream = new PassThrough({ + objectMode: true, + transform: transformStub, + }); + // trigger as many responses as needed + if (responses) { + for (let i = 0; i < responses.length; ++i) { + setImmediate(() => { + mockStream.write({}); + }); } - return sinon.stub().returns(mockStream); + setImmediate(() => { + mockStream.end(); + }); + } else { + setImmediate(() => { + mockStream.write({}); + }); + setImmediate(() => { + mockStream.end(); + }); + } + return sinon.stub().returns(mockStream); } -function stubAsyncIterationCall(responses?: ResponseType[], error?: Error) { - let counter = 0; - const asyncIterable = { - [Symbol.asyncIterator]() { - return { - async next() { - if (error) { - return Promise.reject(error); - } - if (counter >= responses!.length) { - return Promise.resolve({done: true, value: undefined}); - } - return Promise.resolve({done: false, value: responses![counter++]}); - } - }; - } - }; - return sinon.stub().returns(asyncIterable); +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error, +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({ done: true, value: undefined }); + } + return Promise.resolve({ done: false, value: responses![counter++] }); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); } describe('v4beta1.CompanyServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); - - it('has universeDomain', () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); - - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = companyserviceModule.v4beta1.CompanyServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = companyserviceModule.v4beta1.CompanyServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + it('has universeDomain', () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new companyserviceModule.v4beta1.CompanyServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new companyserviceModule.v4beta1.CompanyServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + companyserviceModule.v4beta1.CompanyServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + companyserviceModule.v4beta1.CompanyServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('has port', () => { - const port = companyserviceModule.v4beta1.CompanyServiceClient.port; - assert(port); - assert(typeof port === 'number'); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('should create a client with no option', () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient(); - assert(client); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = + new companyserviceModule.v4beta1.CompanyServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('should create a client with gRPC fallback', () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - fallback: true, - }); - assert(client); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - - it('has initialize method and supports deferred initialization', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.companyServiceStub, undefined); - await client.initialize(); - assert(client.companyServiceStub); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new companyserviceModule.v4beta1.CompanyServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('has close method for the initialized client', done => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.companyServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has port', () => { + const port = companyserviceModule.v4beta1.CompanyServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('has close method for the non-initialized client', done => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.companyServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('should create a client with no option', () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient(); + assert(client); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); - }); + it('should create a client with gRPC fallback', () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + fallback: true, + }); + assert(client); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.companyServiceStub, undefined); + await client.initialize(); + assert(client.companyServiceStub); }); - describe('createCompany', () => { - it('invokes createCompany without error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Company() - ); - client.innerApiCalls.createCompany = stubSimpleCall(expectedResponse); - const [response] = await client.createCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has close method for the initialized client', (done) => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.companyServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('invokes createCompany without error using callback', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Company() - ); - client.innerApiCalls.createCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createCompany( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ICompany|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has close method for the non-initialized client', (done) => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.companyServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('invokes createCompany with error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes createCompany with closed client', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateCompanyRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createCompany(request), expectedError); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('createCompany', () => { + it('invokes createCompany without error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Company(), + ); + client.innerApiCalls.createCompany = stubSimpleCall(expectedResponse); + const [response] = await client.createCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('getCompany', () => { - it('invokes getCompany without error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Company() - ); - client.innerApiCalls.getCompany = stubSimpleCall(expectedResponse); - const [response] = await client.getCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createCompany without error using callback', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Company(), + ); + client.innerApiCalls.createCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createCompany( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ICompany | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getCompany without error using callback', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Company() - ); - client.innerApiCalls.getCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.getCompany( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ICompany|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createCompany with error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.createCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getCompany with error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.getCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.getCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createCompany with closed client', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateCompanyRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createCompany(request), expectedError); + }); + }); + + describe('getCompany', () => { + it('invokes getCompany without error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Company(), + ); + client.innerApiCalls.getCompany = stubSimpleCall(expectedResponse); + const [response] = await client.getCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getCompany with closed client', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.getCompany(request), expectedError); - }); + it('invokes getCompany without error using callback', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Company(), + ); + client.innerApiCalls.getCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.getCompany( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ICompany | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('updateCompany', () => { - it('invokes updateCompany without error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Company() - ); - client.innerApiCalls.updateCompany = stubSimpleCall(expectedResponse); - const [response] = await client.updateCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getCompany with error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.getCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.getCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateCompany without error using callback', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Company() - ); - client.innerApiCalls.updateCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.updateCompany( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ICompany|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getCompany with closed client', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.getCompany(request), expectedError); + }); + }); + + describe('updateCompany', () => { + it('invokes updateCompany without error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Company(), + ); + client.innerApiCalls.updateCompany = stubSimpleCall(expectedResponse); + const [response] = await client.updateCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateCompany with error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.updateCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.updateCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateCompany without error using callback', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Company(), + ); + client.innerApiCalls.updateCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.updateCompany( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ICompany | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateCompany with closed client', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest() - ); - request.company ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateCompanyRequest', ['company', 'name']); - request.company.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.updateCompany(request), expectedError); - }); + it('invokes updateCompany with error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedHeaderRequestParams = `company.name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.updateCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.updateCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('deleteCompany', () => { - it('invokes deleteCompany without error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteCompany = stubSimpleCall(expectedResponse); - const [response] = await client.deleteCompany(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateCompany with closed client', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateCompanyRequest(), + ); + request.company ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateCompanyRequest', + ['company', 'name'], + ); + request.company.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.updateCompany(request), expectedError); + }); + }); + + describe('deleteCompany', () => { + it('invokes deleteCompany without error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteCompany = stubSimpleCall(expectedResponse); + const [response] = await client.deleteCompany(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteCompany without error using callback', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteCompany = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.deleteCompany( - request, - (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteCompany without error using callback', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteCompany = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.deleteCompany( + request, + ( + err?: Error | null, + result?: protos.google.protobuf.IEmpty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteCompany with error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.deleteCompany = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.deleteCompany(request), expectedError); - const actualRequest = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteCompany as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteCompany with error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteCompany = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.deleteCompany(request), expectedError); + const actualRequest = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteCompany as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteCompany with closed client', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteCompanyRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.deleteCompany(request), expectedError); - }); + it('invokes deleteCompany with closed client', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteCompanyRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteCompanyRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.deleteCompany(request), expectedError); + }); + }); + + describe('listCompanies', () => { + it('invokes listCompanies without error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + ]; + client.innerApiCalls.listCompanies = stubSimpleCall(expectedResponse); + const [response] = await client.listCompanies(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('listCompanies', () => { - it('invokes listCompanies without error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - ]; - client.innerApiCalls.listCompanies = stubSimpleCall(expectedResponse); - const [response] = await client.listCompanies(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listCompanies without error using callback', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + ]; + client.innerApiCalls.listCompanies = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.listCompanies( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ICompany[] | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listCompanies without error using callback', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - ]; - client.innerApiCalls.listCompanies = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.listCompanies( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ICompany[]|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listCompanies with error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.listCompanies = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.listCompanies(request), expectedError); + const actualRequest = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listCompanies as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listCompanies with error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.listCompanies = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.listCompanies(request), expectedError); - const actualRequest = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listCompanies as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('invokes listCompaniesStream without error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + ]; + client.descriptors.page.listCompanies.createStream = + stubPageStreamingCall(expectedResponse); + const stream = client.listCompaniesStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4beta1.Company[] = []; + stream.on( + 'data', + (response: protos.google.cloud.talent.v4beta1.Company) => { + responses.push(response); + }, + ); + stream.on('end', () => { + resolve(responses); }); - - it('invokes listCompaniesStream without error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - ]; - client.descriptors.page.listCompanies.createStream = stubPageStreamingCall(expectedResponse); - const stream = client.listCompaniesStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4beta1.Company[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4beta1.Company) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - const responses = await promise; - assert.deepStrictEqual(responses, expectedResponse); - assert((client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listCompanies, request)); - assert( - (client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('error', (err: Error) => { + reject(err); }); + }); + const responses = await promise; + assert.deepStrictEqual(responses, expectedResponse); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listCompanies, request), + ); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('invokes listCompaniesStream with error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listCompanies.createStream = stubPageStreamingCall(undefined, expectedError); - const stream = client.listCompaniesStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4beta1.Company[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4beta1.Company) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - await assert.rejects(promise, expectedError); - assert((client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listCompanies, request)); - assert( - (client.descriptors.page.listCompanies.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + it('invokes listCompaniesStream with error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listCompanies.createStream = + stubPageStreamingCall(undefined, expectedError); + const stream = client.listCompaniesStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4beta1.Company[] = []; + stream.on( + 'data', + (response: protos.google.cloud.talent.v4beta1.Company) => { + responses.push(response); + }, + ); + stream.on('end', () => { + resolve(responses); }); - - it('uses async iteration with listCompanies without error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), - ]; - client.descriptors.page.listCompanies.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: protos.google.cloud.talent.v4beta1.ICompany[] = []; - const iterable = client.listCompaniesAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('error', (err: Error) => { + reject(err); }); + }); + await assert.rejects(promise, expectedError); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listCompanies, request), + ); + assert( + (client.descriptors.page.listCompanies.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('uses async iteration with listCompanies with error', async () => { - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListCompaniesRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListCompaniesRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listCompanies.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.listCompaniesAsync(request); - await assert.rejects(async () => { - const responses: protos.google.cloud.talent.v4beta1.ICompany[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listCompanies.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('uses async iteration with listCompanies without error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Company()), + ]; + client.descriptors.page.listCompanies.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: protos.google.cloud.talent.v4beta1.ICompany[] = []; + const iterable = client.listCompaniesAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + ( + client.descriptors.page.listCompanies.asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + assert( + (client.descriptors.page.listCompanies.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); }); - describe('Path templates', () => { - - describe('project', async () => { - const fakePath = "/rendered/path/project"; - const expectedParameters = { - project: "projectValue", - }; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectPath', () => { - const result = client.projectPath("projectValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectName', () => { - const result = client.matchProjectFromProjectName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('uses async iteration with listCompanies with error', async () => { + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListCompaniesRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListCompaniesRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listCompanies.asyncIterate = + stubAsyncIterationCall(undefined, expectedError); + const iterable = client.listCompaniesAsync(request); + await assert.rejects(async () => { + const responses: protos.google.cloud.talent.v4beta1.ICompany[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + ( + client.descriptors.page.listCompanies.asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + assert( + (client.descriptors.page.listCompanies.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); + }); + + describe('Path templates', () => { + describe('project', async () => { + const fakePath = '/rendered/path/project'; + const expectedParameters = { + project: 'projectValue', + }; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectPath', () => { + const result = client.projectPath('projectValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectName', () => { + const result = client.matchProjectFromProjectName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectCompany', async () => { - const fakePath = "/rendered/path/projectCompany"; - const expectedParameters = { - project: "projectValue", - company: "companyValue", - }; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectCompanyPath', () => { - const result = client.projectCompanyPath("projectValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectCompanyName', () => { - const result = client.matchProjectFromProjectCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectCompanyName', () => { - const result = client.matchCompanyFromProjectCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectCompany', async () => { + const fakePath = '/rendered/path/projectCompany'; + const expectedParameters = { + project: 'projectValue', + company: 'companyValue', + }; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectCompanyPath', () => { + const result = client.projectCompanyPath( + 'projectValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectCompanyName', () => { + const result = client.matchProjectFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectCompanyName', () => { + const result = client.matchCompanyFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectJob', async () => { - const fakePath = "/rendered/path/projectJob"; - const expectedParameters = { - project: "projectValue", - job: "jobValue", - }; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectJobPath', () => { - const result = client.projectJobPath("projectValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectJobName', () => { - const result = client.matchProjectFromProjectJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectJobName', () => { - const result = client.matchJobFromProjectJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectJob', async () => { + const fakePath = '/rendered/path/projectJob'; + const expectedParameters = { + project: 'projectValue', + job: 'jobValue', + }; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectJobPath', () => { + const result = client.projectJobPath('projectValue', 'jobValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectJobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectJobName', () => { + const result = client.matchProjectFromProjectJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectJobName', () => { + const result = client.matchJobFromProjectJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantCompany', async () => { - const fakePath = "/rendered/path/projectTenantCompany"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantCompanyPath', () => { - const result = client.projectTenantCompanyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantCompanyName', () => { - const result = client.matchProjectFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantCompanyName', () => { - const result = client.matchTenantFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectTenantCompanyName', () => { - const result = client.matchCompanyFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantCompany', async () => { + const fakePath = '/rendered/path/projectTenantCompany'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantCompanyPath', () => { + const result = client.projectTenantCompanyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantCompanyName', () => { + const result = + client.matchProjectFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantCompanyName', () => { + const result = client.matchTenantFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectTenantCompanyName', () => { + const result = + client.matchCompanyFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantJob', async () => { - const fakePath = "/rendered/path/projectTenantJob"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantJobPath', () => { - const result = client.projectTenantJobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantJobName', () => { - const result = client.matchProjectFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantJobName', () => { - const result = client.matchTenantFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectTenantJobName', () => { - const result = client.matchJobFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantJob', async () => { + const fakePath = '/rendered/path/projectTenantJob'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantJobPath', () => { + const result = client.projectTenantJobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantJobPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantJobName', () => { + const result = client.matchProjectFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantJobName', () => { + const result = client.matchTenantFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectTenantJobName', () => { + const result = client.matchJobFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new companyserviceModule.v4beta1.CompanyServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new companyserviceModule.v4beta1.CompanyServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_completion_v4.ts b/packages/google-cloud-talent/test/gapic_completion_v4.ts index 400dc7c25301..cf2bc4d49fe6 100644 --- a/packages/google-cloud-talent/test/gapic_completion_v4.ts +++ b/packages/google-cloud-talent/test/gapic_completion_v4.ts @@ -19,437 +19,547 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as completionModule from '../src'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } describe('v4.CompletionClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new completionModule.v4.CompletionClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new completionModule.v4.CompletionClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has universeDomain', () => { - const client = new completionModule.v4.CompletionClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); + it('has universeDomain', () => { + const client = new completionModule.v4.CompletionClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = completionModule.v4.CompletionClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = completionModule.v4.CompletionClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new completionModule.v4.CompletionClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = completionModule.v4.CompletionClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = completionModule.v4.CompletionClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new completionModule.v4.CompletionClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new completionModule.v4.CompletionClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new completionModule.v4.CompletionClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new completionModule.v4.CompletionClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new completionModule.v4.CompletionClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new completionModule.v4.CompletionClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new completionModule.v4.CompletionClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('has port', () => { - const port = completionModule.v4.CompletionClient.port; - assert(port); - assert(typeof port === 'number'); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new completionModule.v4.CompletionClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - - it('should create a client with no option', () => { - const client = new completionModule.v4.CompletionClient(); - assert(client); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new completionModule.v4.CompletionClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('should create a client with gRPC fallback', () => { - const client = new completionModule.v4.CompletionClient({ - fallback: true, - }); - assert(client); - }); + it('has port', () => { + const port = completionModule.v4.CompletionClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('has initialize method and supports deferred initialization', async () => { - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.completionStub, undefined); - await client.initialize(); - assert(client.completionStub); - }); + it('should create a client with no option', () => { + const client = new completionModule.v4.CompletionClient(); + assert(client); + }); - it('has close method for the initialized client', done => { - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.completionStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('should create a client with gRPC fallback', () => { + const client = new completionModule.v4.CompletionClient({ + fallback: true, + }); + assert(client); + }); - it('has close method for the non-initialized client', done => { - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.completionStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.completionStub, undefined); + await client.initialize(); + assert(client.completionStub); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + it('has close method for the initialized client', (done) => { + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.completionStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); + it('has close method for the non-initialized client', (done) => { + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.completionStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); }); - describe('completeQuery', () => { - it('invokes completeQuery without error', async () => { - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CompleteQueryRequest', ['tenant']); - request.tenant = defaultValue1; - const expectedHeaderRequestParams = `tenant=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.CompleteQueryResponse() - ); - client.innerApiCalls.completeQuery = stubSimpleCall(expectedResponse); - const [response] = await client.completeQuery(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes completeQuery without error using callback', async () => { - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CompleteQueryRequest', ['tenant']); - request.tenant = defaultValue1; - const expectedHeaderRequestParams = `tenant=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.CompleteQueryResponse() - ); - client.innerApiCalls.completeQuery = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.completeQuery( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ICompleteQueryResponse|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('completeQuery', () => { + it('invokes completeQuery without error', async () => { + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CompleteQueryRequest', + ['tenant'], + ); + request.tenant = defaultValue1; + const expectedHeaderRequestParams = `tenant=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.CompleteQueryResponse(), + ); + client.innerApiCalls.completeQuery = stubSimpleCall(expectedResponse); + const [response] = await client.completeQuery(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes completeQuery with error', async () => { - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CompleteQueryRequest', ['tenant']); - request.tenant = defaultValue1; - const expectedHeaderRequestParams = `tenant=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.completeQuery = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.completeQuery(request), expectedError); - const actualRequest = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes completeQuery without error using callback', async () => { + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CompleteQueryRequest', + ['tenant'], + ); + request.tenant = defaultValue1; + const expectedHeaderRequestParams = `tenant=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.CompleteQueryResponse(), + ); + client.innerApiCalls.completeQuery = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.completeQuery( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ICompleteQueryResponse | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes completeQuery with closed client', async () => { - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CompleteQueryRequest', ['tenant']); - request.tenant = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.completeQuery(request), expectedError); - }); + it('invokes completeQuery with error', async () => { + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CompleteQueryRequest', + ['tenant'], + ); + request.tenant = defaultValue1; + const expectedHeaderRequestParams = `tenant=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.completeQuery = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.completeQuery(request), expectedError); + const actualRequest = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('Path templates', () => { - - describe('company', async () => { - const fakePath = "/rendered/path/company"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.companyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.companyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('companyPath', () => { - const result = client.companyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.companyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromCompanyName', () => { - const result = client.matchProjectFromCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromCompanyName', () => { - const result = client.matchTenantFromCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromCompanyName', () => { - const result = client.matchCompanyFromCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('invokes completeQuery with closed client', async () => { + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CompleteQueryRequest', + ['tenant'], + ); + request.tenant = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.completeQuery(request), expectedError); + }); + }); + + describe('Path templates', () => { + describe('company', async () => { + const fakePath = '/rendered/path/company'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.companyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.companyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('companyPath', () => { + const result = client.companyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.companyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromCompanyName', () => { + const result = client.matchProjectFromCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromCompanyName', () => { + const result = client.matchTenantFromCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromCompanyName', () => { + const result = client.matchCompanyFromCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('job', async () => { - const fakePath = "/rendered/path/job"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.jobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.jobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('jobPath', () => { - const result = client.jobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.jobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromJobName', () => { - const result = client.matchProjectFromJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromJobName', () => { - const result = client.matchTenantFromJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromJobName', () => { - const result = client.matchJobFromJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('job', async () => { + const fakePath = '/rendered/path/job'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.jobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.jobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('jobPath', () => { + const result = client.jobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.jobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromJobName', () => { + const result = client.matchProjectFromJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromJobName', () => { + const result = client.matchTenantFromJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromJobName', () => { + const result = client.matchJobFromJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new completionModule.v4.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new completionModule.v4.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_completion_v4beta1.ts b/packages/google-cloud-talent/test/gapic_completion_v4beta1.ts index 2602edd4f0a1..34897e4fc7ae 100644 --- a/packages/google-cloud-talent/test/gapic_completion_v4beta1.ts +++ b/packages/google-cloud-talent/test/gapic_completion_v4beta1.ts @@ -19,543 +19,705 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as completionModule from '../src'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } describe('v4beta1.CompletionClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new completionModule.v4beta1.CompletionClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new completionModule.v4beta1.CompletionClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has universeDomain', () => { - const client = new completionModule.v4beta1.CompletionClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); + it('has universeDomain', () => { + const client = new completionModule.v4beta1.CompletionClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = completionModule.v4beta1.CompletionClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = completionModule.v4beta1.CompletionClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new completionModule.v4beta1.CompletionClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + completionModule.v4beta1.CompletionClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + completionModule.v4beta1.CompletionClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new completionModule.v4beta1.CompletionClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new completionModule.v4beta1.CompletionClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new completionModule.v4beta1.CompletionClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new completionModule.v4beta1.CompletionClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new completionModule.v4beta1.CompletionClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new completionModule.v4beta1.CompletionClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new completionModule.v4beta1.CompletionClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('has port', () => { - const port = completionModule.v4beta1.CompletionClient.port; - assert(port); - assert(typeof port === 'number'); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new completionModule.v4beta1.CompletionClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - - it('should create a client with no option', () => { - const client = new completionModule.v4beta1.CompletionClient(); - assert(client); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new completionModule.v4beta1.CompletionClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('should create a client with gRPC fallback', () => { - const client = new completionModule.v4beta1.CompletionClient({ - fallback: true, - }); - assert(client); - }); + it('has port', () => { + const port = completionModule.v4beta1.CompletionClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('has initialize method and supports deferred initialization', async () => { - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.completionStub, undefined); - await client.initialize(); - assert(client.completionStub); - }); + it('should create a client with no option', () => { + const client = new completionModule.v4beta1.CompletionClient(); + assert(client); + }); - it('has close method for the initialized client', done => { - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.completionStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('should create a client with gRPC fallback', () => { + const client = new completionModule.v4beta1.CompletionClient({ + fallback: true, + }); + assert(client); + }); - it('has close method for the non-initialized client', done => { - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.completionStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.completionStub, undefined); + await client.initialize(); + assert(client.completionStub); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + it('has close method for the initialized client', (done) => { + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.completionStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); + it('has close method for the non-initialized client', (done) => { + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.completionStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); }); - describe('completeQuery', () => { - it('invokes completeQuery without error', async () => { - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CompleteQueryRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CompleteQueryResponse() - ); - client.innerApiCalls.completeQuery = stubSimpleCall(expectedResponse); - const [response] = await client.completeQuery(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes completeQuery without error using callback', async () => { - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CompleteQueryRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CompleteQueryResponse() - ); - client.innerApiCalls.completeQuery = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.completeQuery( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ICompleteQueryResponse|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('completeQuery', () => { + it('invokes completeQuery without error', async () => { + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CompleteQueryRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CompleteQueryResponse(), + ); + client.innerApiCalls.completeQuery = stubSimpleCall(expectedResponse); + const [response] = await client.completeQuery(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes completeQuery with error', async () => { - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CompleteQueryRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.completeQuery = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.completeQuery(request), expectedError); - const actualRequest = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.completeQuery as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes completeQuery without error using callback', async () => { + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CompleteQueryRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CompleteQueryResponse(), + ); + client.innerApiCalls.completeQuery = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.completeQuery( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ICompleteQueryResponse | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes completeQuery with closed client', async () => { - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CompleteQueryRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CompleteQueryRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.completeQuery(request), expectedError); - }); + it('invokes completeQuery with error', async () => { + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CompleteQueryRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.completeQuery = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.completeQuery(request), expectedError); + const actualRequest = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.completeQuery as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('Path templates', () => { - - describe('project', async () => { - const fakePath = "/rendered/path/project"; - const expectedParameters = { - project: "projectValue", - }; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectPath', () => { - const result = client.projectPath("projectValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectName', () => { - const result = client.matchProjectFromProjectName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('invokes completeQuery with closed client', async () => { + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CompleteQueryRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CompleteQueryRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.completeQuery(request), expectedError); + }); + }); + + describe('Path templates', () => { + describe('project', async () => { + const fakePath = '/rendered/path/project'; + const expectedParameters = { + project: 'projectValue', + }; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectPath', () => { + const result = client.projectPath('projectValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectName', () => { + const result = client.matchProjectFromProjectName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectCompany', async () => { - const fakePath = "/rendered/path/projectCompany"; - const expectedParameters = { - project: "projectValue", - company: "companyValue", - }; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectCompanyPath', () => { - const result = client.projectCompanyPath("projectValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectCompanyName', () => { - const result = client.matchProjectFromProjectCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectCompanyName', () => { - const result = client.matchCompanyFromProjectCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectCompany', async () => { + const fakePath = '/rendered/path/projectCompany'; + const expectedParameters = { + project: 'projectValue', + company: 'companyValue', + }; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectCompanyPath', () => { + const result = client.projectCompanyPath( + 'projectValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectCompanyName', () => { + const result = client.matchProjectFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectCompanyName', () => { + const result = client.matchCompanyFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectJob', async () => { - const fakePath = "/rendered/path/projectJob"; - const expectedParameters = { - project: "projectValue", - job: "jobValue", - }; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectJobPath', () => { - const result = client.projectJobPath("projectValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectJobName', () => { - const result = client.matchProjectFromProjectJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectJobName', () => { - const result = client.matchJobFromProjectJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectJob', async () => { + const fakePath = '/rendered/path/projectJob'; + const expectedParameters = { + project: 'projectValue', + job: 'jobValue', + }; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectJobPath', () => { + const result = client.projectJobPath('projectValue', 'jobValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectJobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectJobName', () => { + const result = client.matchProjectFromProjectJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectJobName', () => { + const result = client.matchJobFromProjectJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantCompany', async () => { - const fakePath = "/rendered/path/projectTenantCompany"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantCompanyPath', () => { - const result = client.projectTenantCompanyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantCompanyName', () => { - const result = client.matchProjectFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantCompanyName', () => { - const result = client.matchTenantFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectTenantCompanyName', () => { - const result = client.matchCompanyFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantCompany', async () => { + const fakePath = '/rendered/path/projectTenantCompany'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantCompanyPath', () => { + const result = client.projectTenantCompanyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantCompanyName', () => { + const result = + client.matchProjectFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantCompanyName', () => { + const result = client.matchTenantFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectTenantCompanyName', () => { + const result = + client.matchCompanyFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantJob', async () => { - const fakePath = "/rendered/path/projectTenantJob"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantJobPath', () => { - const result = client.projectTenantJobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantJobName', () => { - const result = client.matchProjectFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantJobName', () => { - const result = client.matchTenantFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectTenantJobName', () => { - const result = client.matchJobFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantJob', async () => { + const fakePath = '/rendered/path/projectTenantJob'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantJobPath', () => { + const result = client.projectTenantJobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantJobPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantJobName', () => { + const result = client.matchProjectFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantJobName', () => { + const result = client.matchTenantFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectTenantJobName', () => { + const result = client.matchJobFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new completionModule.v4beta1.CompletionClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new completionModule.v4beta1.CompletionClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_event_service_v4.ts b/packages/google-cloud-talent/test/gapic_event_service_v4.ts index 588cd87eaaf3..147f20ef00bc 100644 --- a/packages/google-cloud-talent/test/gapic_event_service_v4.ts +++ b/packages/google-cloud-talent/test/gapic_event_service_v4.ts @@ -19,437 +19,549 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as eventserviceModule from '../src'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } describe('v4.EventServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new eventserviceModule.v4.EventServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new eventserviceModule.v4.EventServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has universeDomain', () => { - const client = new eventserviceModule.v4.EventServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); + it('has universeDomain', () => { + const client = new eventserviceModule.v4.EventServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = eventserviceModule.v4.EventServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = eventserviceModule.v4.EventServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new eventserviceModule.v4.EventServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + eventserviceModule.v4.EventServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + eventserviceModule.v4.EventServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new eventserviceModule.v4.EventServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new eventserviceModule.v4.EventServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new eventserviceModule.v4.EventServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new eventserviceModule.v4.EventServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new eventserviceModule.v4.EventServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new eventserviceModule.v4.EventServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new eventserviceModule.v4.EventServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('has port', () => { - const port = eventserviceModule.v4.EventServiceClient.port; - assert(port); - assert(typeof port === 'number'); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new eventserviceModule.v4.EventServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - - it('should create a client with no option', () => { - const client = new eventserviceModule.v4.EventServiceClient(); - assert(client); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new eventserviceModule.v4.EventServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('should create a client with gRPC fallback', () => { - const client = new eventserviceModule.v4.EventServiceClient({ - fallback: true, - }); - assert(client); - }); + it('has port', () => { + const port = eventserviceModule.v4.EventServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('has initialize method and supports deferred initialization', async () => { - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.eventServiceStub, undefined); - await client.initialize(); - assert(client.eventServiceStub); - }); + it('should create a client with no option', () => { + const client = new eventserviceModule.v4.EventServiceClient(); + assert(client); + }); - it('has close method for the initialized client', done => { - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.eventServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('should create a client with gRPC fallback', () => { + const client = new eventserviceModule.v4.EventServiceClient({ + fallback: true, + }); + assert(client); + }); - it('has close method for the non-initialized client', done => { - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.eventServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.eventServiceStub, undefined); + await client.initialize(); + assert(client.eventServiceStub); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + it('has close method for the initialized client', (done) => { + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.eventServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); + it('has close method for the non-initialized client', (done) => { + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.eventServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); }); - describe('createClientEvent', () => { - it('invokes createClientEvent without error', async () => { - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.ClientEvent() - ); - client.innerApiCalls.createClientEvent = stubSimpleCall(expectedResponse); - const [response] = await client.createClientEvent(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes createClientEvent without error using callback', async () => { - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.ClientEvent() - ); - client.innerApiCalls.createClientEvent = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createClientEvent( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.IClientEvent|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('createClientEvent', () => { + it('invokes createClientEvent without error', async () => { + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.ClientEvent(), + ); + client.innerApiCalls.createClientEvent = stubSimpleCall(expectedResponse); + const [response] = await client.createClientEvent(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createClientEvent with error', async () => { - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createClientEvent = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createClientEvent(request), expectedError); - const actualRequest = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createClientEvent without error using callback', async () => { + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.ClientEvent(), + ); + client.innerApiCalls.createClientEvent = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createClientEvent( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.IClientEvent | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createClientEvent with closed client', async () => { - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createClientEvent(request), expectedError); - }); + it('invokes createClientEvent with error', async () => { + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createClientEvent = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.createClientEvent(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('Path templates', () => { - - describe('company', async () => { - const fakePath = "/rendered/path/company"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.companyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.companyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('companyPath', () => { - const result = client.companyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.companyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromCompanyName', () => { - const result = client.matchProjectFromCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromCompanyName', () => { - const result = client.matchTenantFromCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromCompanyName', () => { - const result = client.matchCompanyFromCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('invokes createClientEvent with closed client', async () => { + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createClientEvent(request), expectedError); + }); + }); + + describe('Path templates', () => { + describe('company', async () => { + const fakePath = '/rendered/path/company'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.companyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.companyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('companyPath', () => { + const result = client.companyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.companyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromCompanyName', () => { + const result = client.matchProjectFromCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromCompanyName', () => { + const result = client.matchTenantFromCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromCompanyName', () => { + const result = client.matchCompanyFromCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('job', async () => { - const fakePath = "/rendered/path/job"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.jobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.jobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('jobPath', () => { - const result = client.jobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.jobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromJobName', () => { - const result = client.matchProjectFromJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromJobName', () => { - const result = client.matchTenantFromJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromJobName', () => { - const result = client.matchJobFromJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('job', async () => { + const fakePath = '/rendered/path/job'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.jobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.jobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('jobPath', () => { + const result = client.jobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.jobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromJobName', () => { + const result = client.matchProjectFromJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromJobName', () => { + const result = client.matchTenantFromJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromJobName', () => { + const result = client.matchJobFromJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new eventserviceModule.v4.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new eventserviceModule.v4.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_event_service_v4beta1.ts b/packages/google-cloud-talent/test/gapic_event_service_v4beta1.ts index 3998731cd24e..544ccac25573 100644 --- a/packages/google-cloud-talent/test/gapic_event_service_v4beta1.ts +++ b/packages/google-cloud-talent/test/gapic_event_service_v4beta1.ts @@ -19,543 +19,705 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as eventserviceModule from '../src'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } describe('v4beta1.EventServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new eventserviceModule.v4beta1.EventServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new eventserviceModule.v4beta1.EventServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has universeDomain', () => { - const client = new eventserviceModule.v4beta1.EventServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); + it('has universeDomain', () => { + const client = new eventserviceModule.v4beta1.EventServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = eventserviceModule.v4beta1.EventServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = eventserviceModule.v4beta1.EventServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + eventserviceModule.v4beta1.EventServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + eventserviceModule.v4beta1.EventServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new eventserviceModule.v4beta1.EventServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new eventserviceModule.v4beta1.EventServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new eventserviceModule.v4beta1.EventServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new eventserviceModule.v4beta1.EventServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('has port', () => { - const port = eventserviceModule.v4beta1.EventServiceClient.port; - assert(port); - assert(typeof port === 'number'); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - - it('should create a client with no option', () => { - const client = new eventserviceModule.v4beta1.EventServiceClient(); - assert(client); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new eventserviceModule.v4beta1.EventServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('should create a client with gRPC fallback', () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - fallback: true, - }); - assert(client); - }); + it('has port', () => { + const port = eventserviceModule.v4beta1.EventServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('has initialize method and supports deferred initialization', async () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.eventServiceStub, undefined); - await client.initialize(); - assert(client.eventServiceStub); - }); + it('should create a client with no option', () => { + const client = new eventserviceModule.v4beta1.EventServiceClient(); + assert(client); + }); - it('has close method for the initialized client', done => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.eventServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('should create a client with gRPC fallback', () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + fallback: true, + }); + assert(client); + }); - it('has close method for the non-initialized client', done => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.eventServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.eventServiceStub, undefined); + await client.initialize(); + assert(client.eventServiceStub); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + it('has close method for the initialized client', (done) => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.eventServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); + it('has close method for the non-initialized client', (done) => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.eventServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); }); - describe('createClientEvent', () => { - it('invokes createClientEvent without error', async () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ClientEvent() - ); - client.innerApiCalls.createClientEvent = stubSimpleCall(expectedResponse); - const [response] = await client.createClientEvent(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes createClientEvent without error using callback', async () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ClientEvent() - ); - client.innerApiCalls.createClientEvent = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createClientEvent( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.IClientEvent|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('createClientEvent', () => { + it('invokes createClientEvent without error', async () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ClientEvent(), + ); + client.innerApiCalls.createClientEvent = stubSimpleCall(expectedResponse); + const [response] = await client.createClientEvent(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createClientEvent with error', async () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createClientEvent = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createClientEvent(request), expectedError); - const actualRequest = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createClientEvent as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createClientEvent without error using callback', async () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ClientEvent(), + ); + client.innerApiCalls.createClientEvent = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createClientEvent( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.IClientEvent | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createClientEvent with closed client', async () => { - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateClientEventRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateClientEventRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createClientEvent(request), expectedError); - }); + it('invokes createClientEvent with error', async () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createClientEvent = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.createClientEvent(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createClientEvent as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('Path templates', () => { - - describe('project', async () => { - const fakePath = "/rendered/path/project"; - const expectedParameters = { - project: "projectValue", - }; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectPath', () => { - const result = client.projectPath("projectValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectName', () => { - const result = client.matchProjectFromProjectName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('invokes createClientEvent with closed client', async () => { + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateClientEventRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateClientEventRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createClientEvent(request), expectedError); + }); + }); + + describe('Path templates', () => { + describe('project', async () => { + const fakePath = '/rendered/path/project'; + const expectedParameters = { + project: 'projectValue', + }; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectPath', () => { + const result = client.projectPath('projectValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectName', () => { + const result = client.matchProjectFromProjectName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectCompany', async () => { - const fakePath = "/rendered/path/projectCompany"; - const expectedParameters = { - project: "projectValue", - company: "companyValue", - }; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectCompanyPath', () => { - const result = client.projectCompanyPath("projectValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectCompanyName', () => { - const result = client.matchProjectFromProjectCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectCompanyName', () => { - const result = client.matchCompanyFromProjectCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectCompany', async () => { + const fakePath = '/rendered/path/projectCompany'; + const expectedParameters = { + project: 'projectValue', + company: 'companyValue', + }; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectCompanyPath', () => { + const result = client.projectCompanyPath( + 'projectValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectCompanyName', () => { + const result = client.matchProjectFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectCompanyName', () => { + const result = client.matchCompanyFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectJob', async () => { - const fakePath = "/rendered/path/projectJob"; - const expectedParameters = { - project: "projectValue", - job: "jobValue", - }; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectJobPath', () => { - const result = client.projectJobPath("projectValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectJobName', () => { - const result = client.matchProjectFromProjectJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectJobName', () => { - const result = client.matchJobFromProjectJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectJob', async () => { + const fakePath = '/rendered/path/projectJob'; + const expectedParameters = { + project: 'projectValue', + job: 'jobValue', + }; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectJobPath', () => { + const result = client.projectJobPath('projectValue', 'jobValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectJobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectJobName', () => { + const result = client.matchProjectFromProjectJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectJobName', () => { + const result = client.matchJobFromProjectJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantCompany', async () => { - const fakePath = "/rendered/path/projectTenantCompany"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantCompanyPath', () => { - const result = client.projectTenantCompanyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantCompanyName', () => { - const result = client.matchProjectFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantCompanyName', () => { - const result = client.matchTenantFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectTenantCompanyName', () => { - const result = client.matchCompanyFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantCompany', async () => { + const fakePath = '/rendered/path/projectTenantCompany'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantCompanyPath', () => { + const result = client.projectTenantCompanyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantCompanyName', () => { + const result = + client.matchProjectFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantCompanyName', () => { + const result = client.matchTenantFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectTenantCompanyName', () => { + const result = + client.matchCompanyFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantJob', async () => { - const fakePath = "/rendered/path/projectTenantJob"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantJobPath', () => { - const result = client.projectTenantJobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantJobName', () => { - const result = client.matchProjectFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantJobName', () => { - const result = client.matchTenantFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectTenantJobName', () => { - const result = client.matchJobFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantJob', async () => { + const fakePath = '/rendered/path/projectTenantJob'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantJobPath', () => { + const result = client.projectTenantJobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantJobPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantJobName', () => { + const result = client.matchProjectFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantJobName', () => { + const result = client.matchTenantFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectTenantJobName', () => { + const result = client.matchJobFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new eventserviceModule.v4beta1.EventServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new eventserviceModule.v4beta1.EventServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_job_service_v4.ts b/packages/google-cloud-talent/test/gapic_job_service_v4.ts index d5bb1f575a19..e9bbf2dc1f54 100644 --- a/packages/google-cloud-talent/test/gapic_job_service_v4.ts +++ b/packages/google-cloud-talent/test/gapic_job_service_v4.ts @@ -19,2036 +19,2524 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as jobserviceModule from '../src'; -import {PassThrough} from 'stream'; +import { PassThrough } from 'stream'; -import {protobuf, LROperation, operationsProtos} from 'google-gax'; +import { protobuf, LROperation, operationsProtos } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } -function stubLongRunningCall(response?: ResponseType, callError?: Error, lroError?: Error) { - const innerStub = lroError ? sinon.stub().rejects(lroError) : sinon.stub().resolves([response]); - const mockOperation = { - promise: innerStub, - }; - return callError ? sinon.stub().rejects(callError) : sinon.stub().resolves([mockOperation]); +function stubLongRunningCall( + response?: ResponseType, + callError?: Error, + lroError?: Error, +) { + const innerStub = lroError + ? sinon.stub().rejects(lroError) + : sinon.stub().resolves([response]); + const mockOperation = { + promise: innerStub, + }; + return callError + ? sinon.stub().rejects(callError) + : sinon.stub().resolves([mockOperation]); } -function stubLongRunningCallWithCallback(response?: ResponseType, callError?: Error, lroError?: Error) { - const innerStub = lroError ? sinon.stub().rejects(lroError) : sinon.stub().resolves([response]); - const mockOperation = { - promise: innerStub, - }; - return callError ? sinon.stub().callsArgWith(2, callError) : sinon.stub().callsArgWith(2, null, mockOperation); +function stubLongRunningCallWithCallback( + response?: ResponseType, + callError?: Error, + lroError?: Error, +) { + const innerStub = lroError + ? sinon.stub().rejects(lroError) + : sinon.stub().resolves([response]); + const mockOperation = { + promise: innerStub, + }; + return callError + ? sinon.stub().callsArgWith(2, callError) + : sinon.stub().callsArgWith(2, null, mockOperation); } -function stubPageStreamingCall(responses?: ResponseType[], error?: Error) { - const pagingStub = sinon.stub(); - if (responses) { - for (let i = 0; i < responses.length; ++i) { - pagingStub.onCall(i).callsArgWith(2, null, responses[i]); - } +function stubPageStreamingCall( + responses?: ResponseType[], + error?: Error, +) { + const pagingStub = sinon.stub(); + if (responses) { + for (let i = 0; i < responses.length; ++i) { + pagingStub.onCall(i).callsArgWith(2, null, responses[i]); } - const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub; - const mockStream = new PassThrough({ - objectMode: true, - transform: transformStub, - }); - // trigger as many responses as needed - if (responses) { - for (let i = 0; i < responses.length; ++i) { - setImmediate(() => { mockStream.write({}); }); - } - setImmediate(() => { mockStream.end(); }); - } else { - setImmediate(() => { mockStream.write({}); }); - setImmediate(() => { mockStream.end(); }); + } + const transformStub = error + ? sinon.stub().callsArgWith(2, error) + : pagingStub; + const mockStream = new PassThrough({ + objectMode: true, + transform: transformStub, + }); + // trigger as many responses as needed + if (responses) { + for (let i = 0; i < responses.length; ++i) { + setImmediate(() => { + mockStream.write({}); + }); } - return sinon.stub().returns(mockStream); + setImmediate(() => { + mockStream.end(); + }); + } else { + setImmediate(() => { + mockStream.write({}); + }); + setImmediate(() => { + mockStream.end(); + }); + } + return sinon.stub().returns(mockStream); } -function stubAsyncIterationCall(responses?: ResponseType[], error?: Error) { - let counter = 0; - const asyncIterable = { - [Symbol.asyncIterator]() { - return { - async next() { - if (error) { - return Promise.reject(error); - } - if (counter >= responses!.length) { - return Promise.resolve({done: true, value: undefined}); - } - return Promise.resolve({done: false, value: responses![counter++]}); - } - }; - } - }; - return sinon.stub().returns(asyncIterable); +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error, +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({ done: true, value: undefined }); + } + return Promise.resolve({ done: false, value: responses![counter++] }); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); } describe('v4.JobServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new jobserviceModule.v4.JobServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); - - it('has universeDomain', () => { - const client = new jobserviceModule.v4.JobServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); - - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = jobserviceModule.v4.JobServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = jobserviceModule.v4.JobServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new jobserviceModule.v4.JobServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); - - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new jobserviceModule.v4.JobServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); - - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new jobserviceModule.v4.JobServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new jobserviceModule.v4.JobServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new jobserviceModule.v4.JobServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); - }); - - it('has port', () => { - const port = jobserviceModule.v4.JobServiceClient.port; - assert(port); - assert(typeof port === 'number'); - }); - - it('should create a client with no option', () => { - const client = new jobserviceModule.v4.JobServiceClient(); - assert(client); - }); - - it('should create a client with gRPC fallback', () => { - const client = new jobserviceModule.v4.JobServiceClient({ - fallback: true, - }); - assert(client); - }); - - it('has initialize method and supports deferred initialization', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.jobServiceStub, undefined); - await client.initialize(); - assert(client.jobServiceStub); - }); - - it('has close method for the initialized client', done => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.jobServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); - - it('has close method for the non-initialized client', done => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.jobServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new jobserviceModule.v4.JobServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); - }); + it('has universeDomain', () => { + const client = new jobserviceModule.v4.JobServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = jobserviceModule.v4.JobServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = jobserviceModule.v4.JobServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new jobserviceModule.v4.JobServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); }); - describe('createJob', () => { - it('invokes createJob without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Job() - ); - client.innerApiCalls.createJob = stubSimpleCall(expectedResponse); - const [response] = await client.createJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new jobserviceModule.v4.JobServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('invokes createJob without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Job() - ); - client.innerApiCalls.createJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createJob( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.IJob|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new jobserviceModule.v4.JobServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new jobserviceModule.v4.JobServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new jobserviceModule.v4.JobServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('invokes createJob with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createJob(request), expectedError); - const actualRequest = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has port', () => { + const port = jobserviceModule.v4.JobServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('invokes createJob with closed client', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createJob(request), expectedError); - }); + it('should create a client with no option', () => { + const client = new jobserviceModule.v4.JobServiceClient(); + assert(client); }); - describe('getJob', () => { - it('invokes getJob without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Job() - ); - client.innerApiCalls.getJob = stubSimpleCall(expectedResponse); - const [response] = await client.getJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('should create a client with gRPC fallback', () => { + const client = new jobserviceModule.v4.JobServiceClient({ + fallback: true, + }); + assert(client); + }); - it('invokes getJob without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Job() - ); - client.innerApiCalls.getJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.getJob( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.IJob|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.jobServiceStub, undefined); + await client.initialize(); + assert(client.jobServiceStub); + }); - it('invokes getJob with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.getJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.getJob(request), expectedError); - const actualRequest = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has close method for the initialized client', (done) => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.jobServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('invokes getJob with closed client', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.getJob(request), expectedError); + it('has close method for the non-initialized client', (done) => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.jobServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); }); - describe('updateJob', () => { - it('invokes updateJob without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Job() - ); - client.innerApiCalls.updateJob = stubSimpleCall(expectedResponse); - const [response] = await client.updateJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes updateJob without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Job() - ); - client.innerApiCalls.updateJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.updateJob( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.IJob|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } + }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('createJob', () => { + it('invokes createJob without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Job(), + ); + client.innerApiCalls.createJob = stubSimpleCall(expectedResponse); + const [response] = await client.createJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateJob with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.updateJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.updateJob(request), expectedError); - const actualRequest = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createJob without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Job(), + ); + client.innerApiCalls.createJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createJob( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.IJob | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateJob with closed client', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.updateJob(request), expectedError); - }); + it('invokes createJob with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.createJob(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('deleteJob', () => { - it('invokes deleteJob without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteJob = stubSimpleCall(expectedResponse); - const [response] = await client.deleteJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createJob with closed client', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createJob(request), expectedError); + }); + }); + + describe('getJob', () => { + it('invokes getJob without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Job(), + ); + client.innerApiCalls.getJob = stubSimpleCall(expectedResponse); + const [response] = await client.getJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = (client.innerApiCalls.getJob as SinonStub).getCall( + 0, + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteJob without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.deleteJob( - request, - (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getJob without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Job(), + ); + client.innerApiCalls.getJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.getJob( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.IJob | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = (client.innerApiCalls.getJob as SinonStub).getCall( + 0, + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteJob with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.deleteJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.deleteJob(request), expectedError); - const actualRequest = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getJob with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.getJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.getJob(request), expectedError); + const actualRequest = (client.innerApiCalls.getJob as SinonStub).getCall( + 0, + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteJob with closed client', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.deleteJob(request), expectedError); - }); + it('invokes getJob with closed client', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.getJob(request), expectedError); + }); + }); + + describe('updateJob', () => { + it('invokes updateJob without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Job(), + ); + client.innerApiCalls.updateJob = stubSimpleCall(expectedResponse); + const [response] = await client.updateJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('searchJobs', () => { - it('invokes searchJobs without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsResponse() - ); - client.innerApiCalls.searchJobs = stubSimpleCall(expectedResponse); - const [response] = await client.searchJobs(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateJob without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Job(), + ); + client.innerApiCalls.updateJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.updateJob( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.IJob | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobs without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsResponse() - ); - client.innerApiCalls.searchJobs = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.searchJobs( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ISearchJobsResponse|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateJob with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.updateJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.updateJob(request), expectedError); + const actualRequest = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobs with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.searchJobs = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.searchJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateJob with closed client', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.updateJob(request), expectedError); + }); + }); + + describe('deleteJob', () => { + it('invokes deleteJob without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteJob = stubSimpleCall(expectedResponse); + const [response] = await client.deleteJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobs with closed client', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.searchJobs(request), expectedError); - }); + it('invokes deleteJob without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.deleteJob( + request, + ( + err?: Error | null, + result?: protos.google.protobuf.IEmpty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('searchJobsForAlert', () => { - it('invokes searchJobsForAlert without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsResponse() - ); - client.innerApiCalls.searchJobsForAlert = stubSimpleCall(expectedResponse); - const [response] = await client.searchJobsForAlert(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteJob with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.deleteJob(request), expectedError); + const actualRequest = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobsForAlert without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsResponse() - ); - client.innerApiCalls.searchJobsForAlert = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.searchJobsForAlert( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ISearchJobsResponse|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteJob with closed client', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.deleteJob(request), expectedError); + }); + }); + + describe('searchJobs', () => { + it('invokes searchJobs without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobs = stubSimpleCall(expectedResponse); + const [response] = await client.searchJobs(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobsForAlert with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.searchJobsForAlert = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.searchJobsForAlert(request), expectedError); - const actualRequest = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobs without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobs = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.searchJobs( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ISearchJobsResponse | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobsForAlert with closed client', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.searchJobsForAlert(request), expectedError); - }); + it('invokes searchJobs with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.searchJobs = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.searchJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('batchCreateJobs', () => { - it('invokes batchCreateJobs without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchCreateJobs = stubLongRunningCall(expectedResponse); - const [operation] = await client.batchCreateJobs(request); - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobs with closed client', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.searchJobs(request), expectedError); + }); + }); + + describe('searchJobsForAlert', () => { + it('invokes searchJobsForAlert without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobsForAlert = + stubSimpleCall(expectedResponse); + const [response] = await client.searchJobsForAlert(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchCreateJobs without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchCreateJobs = stubLongRunningCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.batchCreateJobs( - request, - (err?: Error|null, - result?: LROperation|null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const operation = await promise as LROperation; - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobsForAlert without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobsForAlert = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.searchJobsForAlert( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ISearchJobsResponse | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchCreateJobs with call error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchCreateJobs = stubLongRunningCall(undefined, expectedError); - await assert.rejects(client.batchCreateJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobsForAlert with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.searchJobsForAlert = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.searchJobsForAlert(request), expectedError); + const actualRequest = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchCreateJobs with LRO error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchCreateJobs = stubLongRunningCall(undefined, undefined, expectedError); - const [operation] = await client.batchCreateJobs(request); - await assert.rejects(operation.promise(), expectedError); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobsForAlert with closed client', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.searchJobsForAlert(request), expectedError); + }); + }); + + describe('batchCreateJobs', () => { + it('invokes batchCreateJobs without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchCreateJobs = + stubLongRunningCall(expectedResponse); + const [operation] = await client.batchCreateJobs(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchCreateJobsProgress without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - expectedResponse.name = 'test'; - expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; - expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')} - - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const decodedOperation = await client.checkBatchCreateJobsProgress(expectedResponse.name); - assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); - assert(decodedOperation.metadata); - assert((client.operationsClient.getOperation as SinonStub).getCall(0)); - }); + it('invokes batchCreateJobs without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchCreateJobs = + stubLongRunningCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.batchCreateJobs( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + > | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const operation = (await promise) as LROperation< + protos.google.cloud.talent.v4.IBatchCreateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchCreateJobsProgress with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedError = new Error('expected'); - - client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.checkBatchCreateJobsProgress(''), expectedError); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0)); - }); + it('invokes batchCreateJobs with call error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchCreateJobs = stubLongRunningCall( + undefined, + expectedError, + ); + await assert.rejects(client.batchCreateJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('batchUpdateJobs', () => { - it('invokes batchUpdateJobs without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCall(expectedResponse); - const [operation] = await client.batchUpdateJobs(request); - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchCreateJobs with LRO error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchCreateJobs = stubLongRunningCall( + undefined, + undefined, + expectedError, + ); + const [operation] = await client.batchCreateJobs(request); + await assert.rejects(operation.promise(), expectedError); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchUpdateJobs without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.batchUpdateJobs( - request, - (err?: Error|null, - result?: LROperation|null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const operation = await promise as LROperation; - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchCreateJobsProgress without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + expectedResponse.name = 'test'; + expectedResponse.response = { type_url: 'url', value: Buffer.from('') }; + expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') }; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkBatchCreateJobsProgress( + expectedResponse.name, + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); - it('invokes batchUpdateJobs with call error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCall(undefined, expectedError); - await assert.rejects(client.batchUpdateJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchCreateJobsProgress with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects( + client.checkBatchCreateJobsProgress(''), + expectedError, + ); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('batchUpdateJobs', () => { + it('invokes batchUpdateJobs without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchUpdateJobs = + stubLongRunningCall(expectedResponse); + const [operation] = await client.batchUpdateJobs(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchUpdateJobs with LRO error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCall(undefined, undefined, expectedError); - const [operation] = await client.batchUpdateJobs(request); - await assert.rejects(operation.promise(), expectedError); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchUpdateJobs without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchUpdateJobs = + stubLongRunningCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.batchUpdateJobs( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + > | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const operation = (await promise) as LROperation< + protos.google.cloud.talent.v4.IBatchUpdateJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchUpdateJobsProgress without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - expectedResponse.name = 'test'; - expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; - expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')} - - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const decodedOperation = await client.checkBatchUpdateJobsProgress(expectedResponse.name); - assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); - assert(decodedOperation.metadata); - assert((client.operationsClient.getOperation as SinonStub).getCall(0)); - }); + it('invokes batchUpdateJobs with call error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchUpdateJobs = stubLongRunningCall( + undefined, + expectedError, + ); + await assert.rejects(client.batchUpdateJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchUpdateJobsProgress with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedError = new Error('expected'); - - client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.checkBatchUpdateJobsProgress(''), expectedError); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0)); - }); + it('invokes batchUpdateJobs with LRO error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchUpdateJobs = stubLongRunningCall( + undefined, + undefined, + expectedError, + ); + const [operation] = await client.batchUpdateJobs(request); + await assert.rejects(operation.promise(), expectedError); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('batchDeleteJobs', () => { - it('invokes batchDeleteJobs without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchDeleteJobs = stubLongRunningCall(expectedResponse); - const [operation] = await client.batchDeleteJobs(request); - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchUpdateJobsProgress without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + expectedResponse.name = 'test'; + expectedResponse.response = { type_url: 'url', value: Buffer.from('') }; + expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') }; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkBatchUpdateJobsProgress( + expectedResponse.name, + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); - it('invokes batchDeleteJobs without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchDeleteJobs = stubLongRunningCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.batchDeleteJobs( - request, - (err?: Error|null, - result?: LROperation|null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const operation = await promise as LROperation; - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchUpdateJobsProgress with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects( + client.checkBatchUpdateJobsProgress(''), + expectedError, + ); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('batchDeleteJobs', () => { + it('invokes batchDeleteJobs without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchDeleteJobs = + stubLongRunningCall(expectedResponse); + const [operation] = await client.batchDeleteJobs(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchDeleteJobs with call error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchDeleteJobs = stubLongRunningCall(undefined, expectedError); - await assert.rejects(client.batchDeleteJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchDeleteJobs without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchDeleteJobs = + stubLongRunningCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.batchDeleteJobs( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + > | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const operation = (await promise) as LROperation< + protos.google.cloud.talent.v4.IBatchDeleteJobsResponse, + protos.google.cloud.talent.v4.IBatchOperationMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchDeleteJobs with LRO error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchDeleteJobs = stubLongRunningCall(undefined, undefined, expectedError); - const [operation] = await client.batchDeleteJobs(request); - await assert.rejects(operation.promise(), expectedError); - const actualRequest = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchDeleteJobs with call error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchDeleteJobs = stubLongRunningCall( + undefined, + expectedError, + ); + await assert.rejects(client.batchDeleteJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchDeleteJobsProgress without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - expectedResponse.name = 'test'; - expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; - expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')} - - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const decodedOperation = await client.checkBatchDeleteJobsProgress(expectedResponse.name); - assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); - assert(decodedOperation.metadata); - assert((client.operationsClient.getOperation as SinonStub).getCall(0)); - }); + it('invokes batchDeleteJobs with LRO error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchDeleteJobs = stubLongRunningCall( + undefined, + undefined, + expectedError, + ); + const [operation] = await client.batchDeleteJobs(request); + await assert.rejects(operation.promise(), expectedError); + const actualRequest = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchDeleteJobsProgress with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedError = new Error('expected'); - - client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.checkBatchDeleteJobsProgress(''), expectedError); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0)); - }); + it('invokes checkBatchDeleteJobsProgress without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + expectedResponse.name = 'test'; + expectedResponse.response = { type_url: 'url', value: Buffer.from('') }; + expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') }; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkBatchDeleteJobsProgress( + expectedResponse.name, + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); }); - describe('listJobs', () => { - it('invokes listJobs without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - ]; - client.innerApiCalls.listJobs = stubSimpleCall(expectedResponse); - const [response] = await client.listJobs(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchDeleteJobsProgress with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects( + client.checkBatchDeleteJobsProgress(''), + expectedError, + ); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('listJobs', () => { + it('invokes listJobs without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + ]; + client.innerApiCalls.listJobs = stubSimpleCall(expectedResponse); + const [response] = await client.listJobs(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listJobs without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - ]; - client.innerApiCalls.listJobs = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.listJobs( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.IJob[]|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listJobs without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + ]; + client.innerApiCalls.listJobs = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.listJobs( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.IJob[] | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listJobs with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.listJobs = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.listJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listJobs with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.listJobs = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.listJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listJobsStream without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - ]; - client.descriptors.page.listJobs.createStream = stubPageStreamingCall(expectedResponse); - const stream = client.listJobsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4.Job[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4.Job) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - const responses = await promise; - assert.deepStrictEqual(responses, expectedResponse); - assert((client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listJobs, request)); - assert( - (client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('invokes listJobsStream without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + ]; + client.descriptors.page.listJobs.createStream = + stubPageStreamingCall(expectedResponse); + const stream = client.listJobsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4.Job[] = []; + stream.on('data', (response: protos.google.cloud.talent.v4.Job) => { + responses.push(response); + }); + stream.on('end', () => { + resolve(responses); + }); + stream.on('error', (err: Error) => { + reject(err); + }); + }); + const responses = await promise; + assert.deepStrictEqual(responses, expectedResponse); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listJobs, request), + ); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('invokes listJobsStream with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listJobs.createStream = stubPageStreamingCall(undefined, expectedError); - const stream = client.listJobsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4.Job[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4.Job) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - await assert.rejects(promise, expectedError); - assert((client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listJobs, request)); - assert( - (client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('invokes listJobsStream with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listJobs.createStream = stubPageStreamingCall( + undefined, + expectedError, + ); + const stream = client.listJobsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4.Job[] = []; + stream.on('data', (response: protos.google.cloud.talent.v4.Job) => { + responses.push(response); + }); + stream.on('end', () => { + resolve(responses); + }); + stream.on('error', (err: Error) => { + reject(err); + }); + }); + await assert.rejects(promise, expectedError); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listJobs, request), + ); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('uses async iteration with listJobs without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4.Job()), - ]; - client.descriptors.page.listJobs.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: protos.google.cloud.talent.v4.IJob[] = []; - const iterable = client.listJobsAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('uses async iteration with listJobs without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4.Job()), + ]; + client.descriptors.page.listJobs.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: protos.google.cloud.talent.v4.IJob[] = []; + const iterable = client.listJobsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + (client.descriptors.page.listJobs.asyncIterate as SinonStub).getCall(0) + .args[1], + request, + ); + assert( + (client.descriptors.page.listJobs.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('uses async iteration with listJobs with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listJobs.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.listJobsAsync(request); - await assert.rejects(async () => { - const responses: protos.google.cloud.talent.v4.IJob[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('uses async iteration with listJobs with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listJobs.asyncIterate = stubAsyncIterationCall( + undefined, + expectedError, + ); + const iterable = client.listJobsAsync(request); + await assert.rejects(async () => { + const responses: protos.google.cloud.talent.v4.IJob[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + (client.descriptors.page.listJobs.asyncIterate as SinonStub).getCall(0) + .args[1], + request, + ); + assert( + (client.descriptors.page.listJobs.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); }); - describe('getOperation', () => { - it('invokes getOperation without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const response = await client.getOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0).calledWith(request) - ); - }); - it('invokes getOperation without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - client.operationsClient.getOperation = sinon.stub().callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.getOperation( - request, - undefined, - ( - err?: Error | null, - result?: operationsProtos.google.longrunning.Operation | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }).catch(err => {throw err}); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0)); - }); - it('invokes getOperation with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => {await client.getOperation(request)}, expectedError); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0).calledWith(request)); - }); + }); + describe('getOperation', () => { + it('invokes getOperation without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const response = await client.getOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); }); - describe('cancelOperation', () => { - it('invokes cancelOperation without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.cancelOperation = stubSimpleCall(expectedResponse); - const response = await client.cancelOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert((client.operationsClient.cancelOperation as SinonStub) - .getCall(0).calledWith(request) - ); - }); - it('invokes cancelOperation without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.cancelOperation = sinon.stub().callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.cancelOperation( - request, - undefined, - ( - err?: Error | null, - result?: protos.google.protobuf.Empty | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }).catch(err => {throw err}); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.cancelOperation as SinonStub) - .getCall(0)); - }); - it('invokes cancelOperation with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.cancelOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => {await client.cancelOperation(request)}, expectedError); - assert((client.operationsClient.cancelOperation as SinonStub) - .getCall(0).calledWith(request)); - }); + it('invokes getOperation without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + client.operationsClient.getOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient + .getOperation( + request, + undefined, + ( + err?: Error | null, + result?: operationsProtos.google.longrunning.Operation | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ) + .catch((err) => { + throw err; + }); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); }); - describe('deleteOperation', () => { - it('invokes deleteOperation without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.deleteOperation = stubSimpleCall(expectedResponse); - const response = await client.deleteOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert((client.operationsClient.deleteOperation as SinonStub) - .getCall(0).calledWith(request) - ); - }); - it('invokes deleteOperation without error using callback', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.deleteOperation = sinon.stub().callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.deleteOperation( - request, - undefined, - ( - err?: Error | null, - result?: protos.google.protobuf.Empty | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }).catch(err => {throw err}); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.deleteOperation as SinonStub) - .getCall(0)); - }); - it('invokes deleteOperation with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.deleteOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => {await client.deleteOperation(request)}, expectedError); - assert((client.operationsClient.deleteOperation as SinonStub) - .getCall(0).calledWith(request)); - }); + it('invokes getOperation with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(async () => { + await client.getOperation(request); + }, expectedError); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); }); - describe('listOperationsAsync', () => { - it('uses async iteration with listOperations without error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsRequest() - ); - const expectedResponse = [ - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - ]; - client.operationsClient.descriptor.listOperations.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: operationsProtos.google.longrunning.IOperation[] = []; - const iterable = client.operationsClient.listOperationsAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.operationsClient.descriptor.listOperations.asyncIterate as SinonStub) - .getCall(0).args[1], request); - }); - it('uses async iteration with listOperations with error', async () => { - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.descriptor.listOperations.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.operationsClient.listOperationsAsync(request); - await assert.rejects(async () => { - const responses: operationsProtos.google.longrunning.IOperation[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.operationsClient.descriptor.listOperations.asyncIterate as SinonStub) - .getCall(0).args[1], request); - }); + }); + describe('cancelOperation', () => { + it('invokes cancelOperation without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.cancelOperation = + stubSimpleCall(expectedResponse); + const response = await client.cancelOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + it('invokes cancelOperation without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.cancelOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient + .cancelOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ) + .catch((err) => { + throw err; + }); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.cancelOperation as SinonStub).getCall(0)); + }); + it('invokes cancelOperation with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.cancelOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(async () => { + await client.cancelOperation(request); + }, expectedError); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + }); + describe('deleteOperation', () => { + it('invokes deleteOperation without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.deleteOperation = + stubSimpleCall(expectedResponse); + const response = await client.deleteOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + it('invokes deleteOperation without error using callback', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.deleteOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient + .deleteOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ) + .catch((err) => { + throw err; + }); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.deleteOperation as SinonStub).getCall(0)); + }); + it('invokes deleteOperation with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.deleteOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(async () => { + await client.deleteOperation(request); + }, expectedError); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + }); + describe('listOperationsAsync', () => { + it('uses async iteration with listOperations without error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest(), + ); + const expectedResponse = [ + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse(), + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse(), + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse(), + ), + ]; + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: operationsProtos.google.longrunning.IOperation[] = []; + const iterable = client.operationsClient.listOperationsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + }); + it('uses async iteration with listOperations with error', async () => { + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(undefined, expectedError); + const iterable = client.operationsClient.listOperationsAsync(request); + await assert.rejects(async () => { + const responses: operationsProtos.google.longrunning.IOperation[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + }); + }); + + describe('Path templates', () => { + describe('company', async () => { + const fakePath = '/rendered/path/company'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.companyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.companyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('companyPath', () => { + const result = client.companyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.companyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromCompanyName', () => { + const result = client.matchProjectFromCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromCompanyName', () => { + const result = client.matchTenantFromCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromCompanyName', () => { + const result = client.matchCompanyFromCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); - describe('Path templates', () => { - - describe('company', async () => { - const fakePath = "/rendered/path/company"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.companyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.companyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('companyPath', () => { - const result = client.companyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.companyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromCompanyName', () => { - const result = client.matchProjectFromCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromCompanyName', () => { - const result = client.matchTenantFromCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromCompanyName', () => { - const result = client.matchCompanyFromCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); - - describe('job', async () => { - const fakePath = "/rendered/path/job"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.jobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.jobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('jobPath', () => { - const result = client.jobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.jobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromJobName', () => { - const result = client.matchProjectFromJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromJobName', () => { - const result = client.matchTenantFromJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromJobName', () => { - const result = client.matchJobFromJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('job', async () => { + const fakePath = '/rendered/path/job'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.jobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.jobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('jobPath', () => { + const result = client.jobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.jobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromJobName', () => { + const result = client.matchProjectFromJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromJobName', () => { + const result = client.matchTenantFromJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromJobName', () => { + const result = client.matchJobFromJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('project', async () => { - const fakePath = "/rendered/path/project"; - const expectedParameters = { - project: "projectValue", - }; - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectPath', () => { - const result = client.projectPath("projectValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectName', () => { - const result = client.matchProjectFromProjectName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('project', async () => { + const fakePath = '/rendered/path/project'; + const expectedParameters = { + project: 'projectValue', + }; + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectPath', () => { + const result = client.projectPath('projectValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectName', () => { + const result = client.matchProjectFromProjectName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new jobserviceModule.v4.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new jobserviceModule.v4.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_job_service_v4beta1.ts b/packages/google-cloud-talent/test/gapic_job_service_v4beta1.ts index e4218f7ef719..f418bc6b9b0f 100644 --- a/packages/google-cloud-talent/test/gapic_job_service_v4beta1.ts +++ b/packages/google-cloud-talent/test/gapic_job_service_v4beta1.ts @@ -19,2066 +19,2588 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as jobserviceModule from '../src'; -import {PassThrough} from 'stream'; +import { PassThrough } from 'stream'; -import {protobuf, LROperation, operationsProtos} from 'google-gax'; +import { protobuf, LROperation, operationsProtos } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } -function stubLongRunningCall(response?: ResponseType, callError?: Error, lroError?: Error) { - const innerStub = lroError ? sinon.stub().rejects(lroError) : sinon.stub().resolves([response]); - const mockOperation = { - promise: innerStub, - }; - return callError ? sinon.stub().rejects(callError) : sinon.stub().resolves([mockOperation]); +function stubLongRunningCall( + response?: ResponseType, + callError?: Error, + lroError?: Error, +) { + const innerStub = lroError + ? sinon.stub().rejects(lroError) + : sinon.stub().resolves([response]); + const mockOperation = { + promise: innerStub, + }; + return callError + ? sinon.stub().rejects(callError) + : sinon.stub().resolves([mockOperation]); } -function stubLongRunningCallWithCallback(response?: ResponseType, callError?: Error, lroError?: Error) { - const innerStub = lroError ? sinon.stub().rejects(lroError) : sinon.stub().resolves([response]); - const mockOperation = { - promise: innerStub, - }; - return callError ? sinon.stub().callsArgWith(2, callError) : sinon.stub().callsArgWith(2, null, mockOperation); +function stubLongRunningCallWithCallback( + response?: ResponseType, + callError?: Error, + lroError?: Error, +) { + const innerStub = lroError + ? sinon.stub().rejects(lroError) + : sinon.stub().resolves([response]); + const mockOperation = { + promise: innerStub, + }; + return callError + ? sinon.stub().callsArgWith(2, callError) + : sinon.stub().callsArgWith(2, null, mockOperation); } -function stubPageStreamingCall(responses?: ResponseType[], error?: Error) { - const pagingStub = sinon.stub(); - if (responses) { - for (let i = 0; i < responses.length; ++i) { - pagingStub.onCall(i).callsArgWith(2, null, responses[i]); - } +function stubPageStreamingCall( + responses?: ResponseType[], + error?: Error, +) { + const pagingStub = sinon.stub(); + if (responses) { + for (let i = 0; i < responses.length; ++i) { + pagingStub.onCall(i).callsArgWith(2, null, responses[i]); } - const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub; - const mockStream = new PassThrough({ - objectMode: true, - transform: transformStub, - }); - // trigger as many responses as needed - if (responses) { - for (let i = 0; i < responses.length; ++i) { - setImmediate(() => { mockStream.write({}); }); - } - setImmediate(() => { mockStream.end(); }); - } else { - setImmediate(() => { mockStream.write({}); }); - setImmediate(() => { mockStream.end(); }); + } + const transformStub = error + ? sinon.stub().callsArgWith(2, error) + : pagingStub; + const mockStream = new PassThrough({ + objectMode: true, + transform: transformStub, + }); + // trigger as many responses as needed + if (responses) { + for (let i = 0; i < responses.length; ++i) { + setImmediate(() => { + mockStream.write({}); + }); } - return sinon.stub().returns(mockStream); + setImmediate(() => { + mockStream.end(); + }); + } else { + setImmediate(() => { + mockStream.write({}); + }); + setImmediate(() => { + mockStream.end(); + }); + } + return sinon.stub().returns(mockStream); } -function stubAsyncIterationCall(responses?: ResponseType[], error?: Error) { - let counter = 0; - const asyncIterable = { - [Symbol.asyncIterator]() { - return { - async next() { - if (error) { - return Promise.reject(error); - } - if (counter >= responses!.length) { - return Promise.resolve({done: true, value: undefined}); - } - return Promise.resolve({done: false, value: responses![counter++]}); - } - }; - } - }; - return sinon.stub().returns(asyncIterable); +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error, +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({ done: true, value: undefined }); + } + return Promise.resolve({ done: false, value: responses![counter++] }); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); } describe('v4beta1.JobServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new jobserviceModule.v4beta1.JobServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); - - it('has universeDomain', () => { - const client = new jobserviceModule.v4beta1.JobServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); - - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = jobserviceModule.v4beta1.JobServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = jobserviceModule.v4beta1.JobServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); - - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); - - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new jobserviceModule.v4beta1.JobServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new jobserviceModule.v4beta1.JobServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new jobserviceModule.v4beta1.JobServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); - }); - - it('has port', () => { - const port = jobserviceModule.v4beta1.JobServiceClient.port; - assert(port); - assert(typeof port === 'number'); - }); - - it('should create a client with no option', () => { - const client = new jobserviceModule.v4beta1.JobServiceClient(); - assert(client); - }); - - it('should create a client with gRPC fallback', () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - fallback: true, - }); - assert(client); - }); - - it('has initialize method and supports deferred initialization', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.jobServiceStub, undefined); - await client.initialize(); - assert(client.jobServiceStub); - }); - - it('has close method for the initialized client', done => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.jobServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); - - it('has close method for the non-initialized client', done => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.jobServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new jobserviceModule.v4beta1.JobServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); - }); + it('has universeDomain', () => { + const client = new jobserviceModule.v4beta1.JobServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + jobserviceModule.v4beta1.JobServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + jobserviceModule.v4beta1.JobServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); }); - describe('createJob', () => { - it('invokes createJob without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Job() - ); - client.innerApiCalls.createJob = stubSimpleCall(expectedResponse); - const [response] = await client.createJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('invokes createJob without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Job() - ); - client.innerApiCalls.createJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createJob( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.IJob|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new jobserviceModule.v4beta1.JobServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } + }); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new jobserviceModule.v4beta1.JobServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('invokes createJob with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createJob(request), expectedError); - const actualRequest = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has port', () => { + const port = jobserviceModule.v4beta1.JobServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('invokes createJob with closed client', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateJobRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createJob(request), expectedError); - }); + it('should create a client with no option', () => { + const client = new jobserviceModule.v4beta1.JobServiceClient(); + assert(client); }); - describe('getJob', () => { - it('invokes getJob without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Job() - ); - client.innerApiCalls.getJob = stubSimpleCall(expectedResponse); - const [response] = await client.getJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('should create a client with gRPC fallback', () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + fallback: true, + }); + assert(client); + }); - it('invokes getJob without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Job() - ); - client.innerApiCalls.getJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.getJob( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.IJob|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.jobServiceStub, undefined); + await client.initialize(); + assert(client.jobServiceStub); + }); - it('invokes getJob with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.getJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.getJob(request), expectedError); - const actualRequest = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has close method for the initialized client', (done) => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.jobServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('invokes getJob with closed client', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetJobRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.getJob(request), expectedError); + it('has close method for the non-initialized client', (done) => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.jobServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); }); - describe('updateJob', () => { - it('invokes updateJob without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Job() - ); - client.innerApiCalls.updateJob = stubSimpleCall(expectedResponse); - const [response] = await client.updateJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes updateJob without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Job() - ); - client.innerApiCalls.updateJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.updateJob( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.IJob|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } + }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('createJob', () => { + it('invokes createJob without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Job(), + ); + client.innerApiCalls.createJob = stubSimpleCall(expectedResponse); + const [response] = await client.createJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateJob with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.updateJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.updateJob(request), expectedError); - const actualRequest = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createJob without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Job(), + ); + client.innerApiCalls.createJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createJob( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.IJob | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateJob with closed client', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateJobRequest() - ); - request.job ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateJobRequest', ['job', 'name']); - request.job.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.updateJob(request), expectedError); - }); + it('invokes createJob with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.createJob(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('deleteJob', () => { - it('invokes deleteJob without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteJob = stubSimpleCall(expectedResponse); - const [response] = await client.deleteJob(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createJob with closed client', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateJobRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createJob(request), expectedError); + }); + }); + + describe('getJob', () => { + it('invokes getJob without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Job(), + ); + client.innerApiCalls.getJob = stubSimpleCall(expectedResponse); + const [response] = await client.getJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = (client.innerApiCalls.getJob as SinonStub).getCall( + 0, + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteJob without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteJob = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.deleteJob( - request, - (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getJob without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Job(), + ); + client.innerApiCalls.getJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.getJob( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.IJob | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = (client.innerApiCalls.getJob as SinonStub).getCall( + 0, + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteJob with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.deleteJob = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.deleteJob(request), expectedError); - const actualRequest = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteJob as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getJob with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.getJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.getJob(request), expectedError); + const actualRequest = (client.innerApiCalls.getJob as SinonStub).getCall( + 0, + ).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteJob with closed client', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteJobRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteJobRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.deleteJob(request), expectedError); - }); + it('invokes getJob with closed client', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.getJob(request), expectedError); + }); + }); + + describe('updateJob', () => { + it('invokes updateJob without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Job(), + ); + client.innerApiCalls.updateJob = stubSimpleCall(expectedResponse); + const [response] = await client.updateJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('batchDeleteJobs', () => { - it('invokes batchDeleteJobs without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.batchDeleteJobs = stubSimpleCall(expectedResponse); - const [response] = await client.batchDeleteJobs(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateJob without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Job(), + ); + client.innerApiCalls.updateJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.updateJob( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.IJob | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchDeleteJobs without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.batchDeleteJobs = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.batchDeleteJobs( - request, - (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateJob with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedHeaderRequestParams = `job.name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.updateJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.updateJob(request), expectedError); + const actualRequest = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchDeleteJobs with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchDeleteJobs = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.batchDeleteJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchDeleteJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateJob with closed client', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateJobRequest(), + ); + request.job ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateJobRequest', + ['job', 'name'], + ); + request.job.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.updateJob(request), expectedError); + }); + }); + + describe('deleteJob', () => { + it('invokes deleteJob without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteJob = stubSimpleCall(expectedResponse); + const [response] = await client.deleteJob(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchDeleteJobs with closed client', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.batchDeleteJobs(request), expectedError); - }); + it('invokes deleteJob without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteJob = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.deleteJob( + request, + ( + err?: Error | null, + result?: protos.google.protobuf.IEmpty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('searchJobs', () => { - it('invokes searchJobs without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsResponse() - ); - client.innerApiCalls.searchJobs = stubSimpleCall(expectedResponse); - const [response] = await client.searchJobs(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteJob with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteJob = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.deleteJob(request), expectedError); + const actualRequest = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteJob as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobs without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsResponse() - ); - client.innerApiCalls.searchJobs = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.searchJobs( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ISearchJobsResponse|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteJob with closed client', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteJobRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteJobRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.deleteJob(request), expectedError); + }); + }); + + describe('batchDeleteJobs', () => { + it('invokes batchDeleteJobs without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.batchDeleteJobs = stubSimpleCall(expectedResponse); + const [response] = await client.batchDeleteJobs(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobs with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.searchJobs = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.searchJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchDeleteJobs without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.batchDeleteJobs = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.batchDeleteJobs( + request, + ( + err?: Error | null, + result?: protos.google.protobuf.IEmpty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobs with closed client', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.searchJobs(request), expectedError); - }); + it('invokes batchDeleteJobs with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchDeleteJobs = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.batchDeleteJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchDeleteJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('searchJobsForAlert', () => { - it('invokes searchJobsForAlert without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsResponse() - ); - client.innerApiCalls.searchJobsForAlert = stubSimpleCall(expectedResponse); - const [response] = await client.searchJobsForAlert(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchDeleteJobs with closed client', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchDeleteJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchDeleteJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.batchDeleteJobs(request), expectedError); + }); + }); + + describe('searchJobs', () => { + it('invokes searchJobs without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobs = stubSimpleCall(expectedResponse); + const [response] = await client.searchJobs(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobsForAlert without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsResponse() - ); - client.innerApiCalls.searchJobsForAlert = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.searchJobsForAlert( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ISearchJobsResponse|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobs without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobs = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.searchJobs( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ISearchJobsResponse | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobsForAlert with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.searchJobsForAlert = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.searchJobsForAlert(request), expectedError); - const actualRequest = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.searchJobsForAlert as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobs with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.searchJobs = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.searchJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes searchJobsForAlert with closed client', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.SearchJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.SearchJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.searchJobsForAlert(request), expectedError); - }); + it('invokes searchJobs with closed client', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.searchJobs(request), expectedError); + }); + }); + + describe('searchJobsForAlert', () => { + it('invokes searchJobsForAlert without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobsForAlert = + stubSimpleCall(expectedResponse); + const [response] = await client.searchJobsForAlert(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('batchCreateJobs', () => { - it('invokes batchCreateJobs without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchCreateJobs = stubLongRunningCall(expectedResponse); - const [operation] = await client.batchCreateJobs(request); - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobsForAlert without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsResponse(), + ); + client.innerApiCalls.searchJobsForAlert = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.searchJobsForAlert( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ISearchJobsResponse | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchCreateJobs without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchCreateJobs = stubLongRunningCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.batchCreateJobs( - request, - (err?: Error|null, - result?: LROperation|null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const operation = await promise as LROperation; - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobsForAlert with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.searchJobsForAlert = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.searchJobsForAlert(request), expectedError); + const actualRequest = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.searchJobsForAlert as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchCreateJobs with call error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchCreateJobs = stubLongRunningCall(undefined, expectedError); - await assert.rejects(client.batchCreateJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes searchJobsForAlert with closed client', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.SearchJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.SearchJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.searchJobsForAlert(request), expectedError); + }); + }); + + describe('batchCreateJobs', () => { + it('invokes batchCreateJobs without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchCreateJobs = + stubLongRunningCall(expectedResponse); + const [operation] = await client.batchCreateJobs(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchCreateJobs with LRO error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchCreateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchCreateJobs = stubLongRunningCall(undefined, undefined, expectedError); - const [operation] = await client.batchCreateJobs(request); - await assert.rejects(operation.promise(), expectedError); - const actualRequest = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchCreateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchCreateJobs without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchCreateJobs = + stubLongRunningCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.batchCreateJobs( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + > | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const operation = (await promise) as LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchCreateJobsProgress without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - expectedResponse.name = 'test'; - expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; - expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')} - - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const decodedOperation = await client.checkBatchCreateJobsProgress(expectedResponse.name); - assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); - assert(decodedOperation.metadata); - assert((client.operationsClient.getOperation as SinonStub).getCall(0)); - }); + it('invokes batchCreateJobs with call error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchCreateJobs = stubLongRunningCall( + undefined, + expectedError, + ); + await assert.rejects(client.batchCreateJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchCreateJobsProgress with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedError = new Error('expected'); - - client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.checkBatchCreateJobsProgress(''), expectedError); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0)); - }); + it('invokes batchCreateJobs with LRO error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchCreateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchCreateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchCreateJobs = stubLongRunningCall( + undefined, + undefined, + expectedError, + ); + const [operation] = await client.batchCreateJobs(request); + await assert.rejects(operation.promise(), expectedError); + const actualRequest = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchCreateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('batchUpdateJobs', () => { - it('invokes batchUpdateJobs without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCall(expectedResponse); - const [operation] = await client.batchUpdateJobs(request); - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchCreateJobsProgress without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + expectedResponse.name = 'test'; + expectedResponse.response = { type_url: 'url', value: Buffer.from('') }; + expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') }; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkBatchCreateJobsProgress( + expectedResponse.name, + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); - it('invokes batchUpdateJobs without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.longrunning.Operation() - ); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.batchUpdateJobs( - request, - (err?: Error|null, - result?: LROperation|null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const operation = await promise as LROperation; - const [response] = await operation.promise(); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchCreateJobsProgress with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects( + client.checkBatchCreateJobsProgress(''), + expectedError, + ); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('batchUpdateJobs', () => { + it('invokes batchUpdateJobs without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchUpdateJobs = + stubLongRunningCall(expectedResponse); + const [operation] = await client.batchUpdateJobs(request); + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchUpdateJobs with call error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCall(undefined, expectedError); - await assert.rejects(client.batchUpdateJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchUpdateJobs without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.longrunning.Operation(), + ); + client.innerApiCalls.batchUpdateJobs = + stubLongRunningCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.batchUpdateJobs( + request, + ( + err?: Error | null, + result?: LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + > | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const operation = (await promise) as LROperation< + protos.google.cloud.talent.v4beta1.IJobOperationResult, + protos.google.cloud.talent.v4beta1.IBatchOperationMetadata + >; + const [response] = await operation.promise(); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes batchUpdateJobs with LRO error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.batchUpdateJobs = stubLongRunningCall(undefined, undefined, expectedError); - const [operation] = await client.batchUpdateJobs(request); - await assert.rejects(operation.promise(), expectedError); - const actualRequest = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.batchUpdateJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes batchUpdateJobs with call error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchUpdateJobs = stubLongRunningCall( + undefined, + expectedError, + ); + await assert.rejects(client.batchUpdateJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchUpdateJobsProgress without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - expectedResponse.name = 'test'; - expectedResponse.response = {type_url: 'url', value: Buffer.from('')}; - expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')} - - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const decodedOperation = await client.checkBatchUpdateJobsProgress(expectedResponse.name); - assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); - assert(decodedOperation.metadata); - assert((client.operationsClient.getOperation as SinonStub).getCall(0)); - }); + it('invokes batchUpdateJobs with LRO error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.BatchUpdateJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.BatchUpdateJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.batchUpdateJobs = stubLongRunningCall( + undefined, + undefined, + expectedError, + ); + const [operation] = await client.batchUpdateJobs(request); + await assert.rejects(operation.promise(), expectedError); + const actualRequest = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.batchUpdateJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes checkBatchUpdateJobsProgress with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const expectedError = new Error('expected'); - - client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.checkBatchUpdateJobsProgress(''), expectedError); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0)); - }); + it('invokes checkBatchUpdateJobsProgress without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + expectedResponse.name = 'test'; + expectedResponse.response = { type_url: 'url', value: Buffer.from('') }; + expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') }; + + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const decodedOperation = await client.checkBatchUpdateJobsProgress( + expectedResponse.name, + ); + assert.deepStrictEqual(decodedOperation.name, expectedResponse.name); + assert(decodedOperation.metadata); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); }); - describe('listJobs', () => { - it('invokes listJobs without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - ]; - client.innerApiCalls.listJobs = stubSimpleCall(expectedResponse); - const [response] = await client.listJobs(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes checkBatchUpdateJobsProgress with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const expectedError = new Error('expected'); + + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects( + client.checkBatchUpdateJobsProgress(''), + expectedError, + ); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); + }); + }); + + describe('listJobs', () => { + it('invokes listJobs without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + ]; + client.innerApiCalls.listJobs = stubSimpleCall(expectedResponse); + const [response] = await client.listJobs(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listJobs without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - ]; - client.innerApiCalls.listJobs = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.listJobs( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.IJob[]|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listJobs without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + ]; + client.innerApiCalls.listJobs = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.listJobs( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.IJob[] | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listJobs with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.listJobs = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.listJobs(request), expectedError); - const actualRequest = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listJobs as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listJobs with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.listJobs = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.listJobs(request), expectedError); + const actualRequest = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listJobs as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listJobsStream without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - ]; - client.descriptors.page.listJobs.createStream = stubPageStreamingCall(expectedResponse); - const stream = client.listJobsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4beta1.Job[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4beta1.Job) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - const responses = await promise; - assert.deepStrictEqual(responses, expectedResponse); - assert((client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listJobs, request)); - assert( - (client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('invokes listJobsStream without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + ]; + client.descriptors.page.listJobs.createStream = + stubPageStreamingCall(expectedResponse); + const stream = client.listJobsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4beta1.Job[] = []; + stream.on( + 'data', + (response: protos.google.cloud.talent.v4beta1.Job) => { + responses.push(response); + }, + ); + stream.on('end', () => { + resolve(responses); + }); + stream.on('error', (err: Error) => { + reject(err); + }); + }); + const responses = await promise; + assert.deepStrictEqual(responses, expectedResponse); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listJobs, request), + ); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('invokes listJobsStream with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listJobs.createStream = stubPageStreamingCall(undefined, expectedError); - const stream = client.listJobsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4beta1.Job[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4beta1.Job) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - await assert.rejects(promise, expectedError); - assert((client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listJobs, request)); - assert( - (client.descriptors.page.listJobs.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('invokes listJobsStream with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listJobs.createStream = stubPageStreamingCall( + undefined, + expectedError, + ); + const stream = client.listJobsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4beta1.Job[] = []; + stream.on( + 'data', + (response: protos.google.cloud.talent.v4beta1.Job) => { + responses.push(response); + }, + ); + stream.on('end', () => { + resolve(responses); + }); + stream.on('error', (err: Error) => { + reject(err); + }); + }); + await assert.rejects(promise, expectedError); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listJobs, request), + ); + assert( + (client.descriptors.page.listJobs.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('uses async iteration with listJobs without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), - ]; - client.descriptors.page.listJobs.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: protos.google.cloud.talent.v4beta1.IJob[] = []; - const iterable = client.listJobsAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('uses async iteration with listJobs without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Job()), + ]; + client.descriptors.page.listJobs.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: protos.google.cloud.talent.v4beta1.IJob[] = []; + const iterable = client.listJobsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + (client.descriptors.page.listJobs.asyncIterate as SinonStub).getCall(0) + .args[1], + request, + ); + assert( + (client.descriptors.page.listJobs.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('uses async iteration with listJobs with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListJobsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListJobsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listJobs.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.listJobsAsync(request); - await assert.rejects(async () => { - const responses: protos.google.cloud.talent.v4beta1.IJob[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listJobs.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('uses async iteration with listJobs with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListJobsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListJobsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listJobs.asyncIterate = stubAsyncIterationCall( + undefined, + expectedError, + ); + const iterable = client.listJobsAsync(request); + await assert.rejects(async () => { + const responses: protos.google.cloud.talent.v4beta1.IJob[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + (client.descriptors.page.listJobs.asyncIterate as SinonStub).getCall(0) + .args[1], + request, + ); + assert( + (client.descriptors.page.listJobs.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); }); - describe('getOperation', () => { - it('invokes getOperation without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - client.operationsClient.getOperation = stubSimpleCall(expectedResponse); - const response = await client.getOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0).calledWith(request) - ); - }); - it('invokes getOperation without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new operationsProtos.google.longrunning.Operation() - ); - client.operationsClient.getOperation = sinon.stub().callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.getOperation( - request, - undefined, - ( - err?: Error | null, - result?: operationsProtos.google.longrunning.Operation | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }).catch(err => {throw err}); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0)); - }); - it('invokes getOperation with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.GetOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => {await client.getOperation(request)}, expectedError); - assert((client.operationsClient.getOperation as SinonStub) - .getCall(0).calledWith(request)); - }); + }); + describe('getOperation', () => { + it('invokes getOperation without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + client.operationsClient.getOperation = stubSimpleCall(expectedResponse); + const response = await client.getOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); }); - describe('cancelOperation', () => { - it('invokes cancelOperation without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.cancelOperation = stubSimpleCall(expectedResponse); - const response = await client.cancelOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert((client.operationsClient.cancelOperation as SinonStub) - .getCall(0).calledWith(request) - ); - }); - it('invokes cancelOperation without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.cancelOperation = sinon.stub().callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.cancelOperation( - request, - undefined, - ( - err?: Error | null, - result?: protos.google.protobuf.Empty | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }).catch(err => {throw err}); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.cancelOperation as SinonStub) - .getCall(0)); - }); - it('invokes cancelOperation with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.CancelOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.cancelOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => {await client.cancelOperation(request)}, expectedError); - assert((client.operationsClient.cancelOperation as SinonStub) - .getCall(0).calledWith(request)); - }); + it('invokes getOperation without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new operationsProtos.google.longrunning.Operation(), + ); + client.operationsClient.getOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient + .getOperation( + request, + undefined, + ( + err?: Error | null, + result?: operationsProtos.google.longrunning.Operation | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ) + .catch((err) => { + throw err; + }); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.getOperation as SinonStub).getCall(0)); }); - describe('deleteOperation', () => { - it('invokes deleteOperation without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.deleteOperation = stubSimpleCall(expectedResponse); - const response = await client.deleteOperation(request); - assert.deepStrictEqual(response, [expectedResponse]); - assert((client.operationsClient.deleteOperation as SinonStub) - .getCall(0).calledWith(request) - ); - }); - it('invokes deleteOperation without error using callback', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.operationsClient.deleteOperation = sinon.stub().callsArgWith(2, null, expectedResponse); - const promise = new Promise((resolve, reject) => { - client.operationsClient.deleteOperation( - request, - undefined, - ( - err?: Error | null, - result?: protos.google.protobuf.Empty | null - ) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }).catch(err => {throw err}); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - assert((client.operationsClient.deleteOperation as SinonStub) - .getCall(0)); - }); - it('invokes deleteOperation with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.DeleteOperationRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.deleteOperation = stubSimpleCall(undefined, expectedError); - await assert.rejects(async () => {await client.deleteOperation(request)}, expectedError); - assert((client.operationsClient.deleteOperation as SinonStub) - .getCall(0).calledWith(request)); - }); + it('invokes getOperation with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.GetOperationRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.getOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(async () => { + await client.getOperation(request); + }, expectedError); + assert( + (client.operationsClient.getOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); }); - describe('listOperationsAsync', () => { - it('uses async iteration with listOperations without error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsRequest() - ); - const expectedResponse = [ - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsResponse() - ), - ]; - client.operationsClient.descriptor.listOperations.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: operationsProtos.google.longrunning.IOperation[] = []; - const iterable = client.operationsClient.listOperationsAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.operationsClient.descriptor.listOperations.asyncIterate as SinonStub) - .getCall(0).args[1], request); - }); - it('uses async iteration with listOperations with error', async () => { - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new operationsProtos.google.longrunning.ListOperationsRequest() - ); - const expectedError = new Error('expected'); - client.operationsClient.descriptor.listOperations.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.operationsClient.listOperationsAsync(request); - await assert.rejects(async () => { - const responses: operationsProtos.google.longrunning.IOperation[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.operationsClient.descriptor.listOperations.asyncIterate as SinonStub) - .getCall(0).args[1], request); - }); + }); + describe('cancelOperation', () => { + it('invokes cancelOperation without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.cancelOperation = + stubSimpleCall(expectedResponse); + const response = await client.cancelOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + it('invokes cancelOperation without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.cancelOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient + .cancelOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ) + .catch((err) => { + throw err; + }); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.cancelOperation as SinonStub).getCall(0)); + }); + it('invokes cancelOperation with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.CancelOperationRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.cancelOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(async () => { + await client.cancelOperation(request); + }, expectedError); + assert( + (client.operationsClient.cancelOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + }); + describe('deleteOperation', () => { + it('invokes deleteOperation without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.deleteOperation = + stubSimpleCall(expectedResponse); + const response = await client.deleteOperation(request); + assert.deepStrictEqual(response, [expectedResponse]); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + it('invokes deleteOperation without error using callback', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest(), + ); + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.operationsClient.deleteOperation = sinon + .stub() + .callsArgWith(2, null, expectedResponse); + const promise = new Promise((resolve, reject) => { + client.operationsClient + .deleteOperation( + request, + undefined, + ( + err?: Error | null, + result?: protos.google.protobuf.Empty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ) + .catch((err) => { + throw err; + }); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + assert((client.operationsClient.deleteOperation as SinonStub).getCall(0)); + }); + it('invokes deleteOperation with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.DeleteOperationRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.deleteOperation = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(async () => { + await client.deleteOperation(request); + }, expectedError); + assert( + (client.operationsClient.deleteOperation as SinonStub) + .getCall(0) + .calledWith(request), + ); + }); + }); + describe('listOperationsAsync', () => { + it('uses async iteration with listOperations without error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest(), + ); + const expectedResponse = [ + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse(), + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse(), + ), + generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsResponse(), + ), + ]; + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: operationsProtos.google.longrunning.IOperation[] = []; + const iterable = client.operationsClient.listOperationsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + }); + it('uses async iteration with listOperations with error', async () => { + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new operationsProtos.google.longrunning.ListOperationsRequest(), + ); + const expectedError = new Error('expected'); + client.operationsClient.descriptor.listOperations.asyncIterate = + stubAsyncIterationCall(undefined, expectedError); + const iterable = client.operationsClient.listOperationsAsync(request); + await assert.rejects(async () => { + const responses: operationsProtos.google.longrunning.IOperation[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + ( + client.operationsClient.descriptor.listOperations + .asyncIterate as SinonStub + ).getCall(0).args[1], + request, + ); + }); + }); + + describe('Path templates', () => { + describe('project', async () => { + const fakePath = '/rendered/path/project'; + const expectedParameters = { + project: 'projectValue', + }; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectPath', () => { + const result = client.projectPath('projectValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectName', () => { + const result = client.matchProjectFromProjectName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); - describe('Path templates', () => { - - describe('project', async () => { - const fakePath = "/rendered/path/project"; - const expectedParameters = { - project: "projectValue", - }; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectPath', () => { - const result = client.projectPath("projectValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectName', () => { - const result = client.matchProjectFromProjectName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); - - describe('projectCompany', async () => { - const fakePath = "/rendered/path/projectCompany"; - const expectedParameters = { - project: "projectValue", - company: "companyValue", - }; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectCompanyPath', () => { - const result = client.projectCompanyPath("projectValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectCompanyName', () => { - const result = client.matchProjectFromProjectCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectCompanyName', () => { - const result = client.matchCompanyFromProjectCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectCompany', async () => { + const fakePath = '/rendered/path/projectCompany'; + const expectedParameters = { + project: 'projectValue', + company: 'companyValue', + }; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectCompanyPath', () => { + const result = client.projectCompanyPath( + 'projectValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectCompanyName', () => { + const result = client.matchProjectFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectCompanyName', () => { + const result = client.matchCompanyFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectJob', async () => { - const fakePath = "/rendered/path/projectJob"; - const expectedParameters = { - project: "projectValue", - job: "jobValue", - }; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectJobPath', () => { - const result = client.projectJobPath("projectValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectJobName', () => { - const result = client.matchProjectFromProjectJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectJobName', () => { - const result = client.matchJobFromProjectJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectJob', async () => { + const fakePath = '/rendered/path/projectJob'; + const expectedParameters = { + project: 'projectValue', + job: 'jobValue', + }; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectJobPath', () => { + const result = client.projectJobPath('projectValue', 'jobValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectJobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectJobName', () => { + const result = client.matchProjectFromProjectJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectJobName', () => { + const result = client.matchJobFromProjectJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantCompany', async () => { - const fakePath = "/rendered/path/projectTenantCompany"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantCompanyPath', () => { - const result = client.projectTenantCompanyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantCompanyName', () => { - const result = client.matchProjectFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantCompanyName', () => { - const result = client.matchTenantFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectTenantCompanyName', () => { - const result = client.matchCompanyFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantCompany', async () => { + const fakePath = '/rendered/path/projectTenantCompany'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantCompanyPath', () => { + const result = client.projectTenantCompanyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantCompanyName', () => { + const result = + client.matchProjectFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantCompanyName', () => { + const result = client.matchTenantFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectTenantCompanyName', () => { + const result = + client.matchCompanyFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantJob', async () => { - const fakePath = "/rendered/path/projectTenantJob"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantJobPath', () => { - const result = client.projectTenantJobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantJobName', () => { - const result = client.matchProjectFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantJobName', () => { - const result = client.matchTenantFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectTenantJobName', () => { - const result = client.matchJobFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantJob', async () => { + const fakePath = '/rendered/path/projectTenantJob'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantJobPath', () => { + const result = client.projectTenantJobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantJobPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantJobName', () => { + const result = client.matchProjectFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantJobName', () => { + const result = client.matchTenantFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectTenantJobName', () => { + const result = client.matchJobFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new jobserviceModule.v4beta1.JobServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new jobserviceModule.v4beta1.JobServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_tenant_service_v4.ts b/packages/google-cloud-talent/test/gapic_tenant_service_v4.ts index 20b542abc30e..647453db41f7 100644 --- a/packages/google-cloud-talent/test/gapic_tenant_service_v4.ts +++ b/packages/google-cloud-talent/test/gapic_tenant_service_v4.ts @@ -19,1087 +19,1346 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as tenantserviceModule from '../src'; -import {PassThrough} from 'stream'; +import { PassThrough } from 'stream'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } -function stubPageStreamingCall(responses?: ResponseType[], error?: Error) { - const pagingStub = sinon.stub(); - if (responses) { - for (let i = 0; i < responses.length; ++i) { - pagingStub.onCall(i).callsArgWith(2, null, responses[i]); - } +function stubPageStreamingCall( + responses?: ResponseType[], + error?: Error, +) { + const pagingStub = sinon.stub(); + if (responses) { + for (let i = 0; i < responses.length; ++i) { + pagingStub.onCall(i).callsArgWith(2, null, responses[i]); } - const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub; - const mockStream = new PassThrough({ - objectMode: true, - transform: transformStub, - }); - // trigger as many responses as needed - if (responses) { - for (let i = 0; i < responses.length; ++i) { - setImmediate(() => { mockStream.write({}); }); - } - setImmediate(() => { mockStream.end(); }); - } else { - setImmediate(() => { mockStream.write({}); }); - setImmediate(() => { mockStream.end(); }); + } + const transformStub = error + ? sinon.stub().callsArgWith(2, error) + : pagingStub; + const mockStream = new PassThrough({ + objectMode: true, + transform: transformStub, + }); + // trigger as many responses as needed + if (responses) { + for (let i = 0; i < responses.length; ++i) { + setImmediate(() => { + mockStream.write({}); + }); } - return sinon.stub().returns(mockStream); + setImmediate(() => { + mockStream.end(); + }); + } else { + setImmediate(() => { + mockStream.write({}); + }); + setImmediate(() => { + mockStream.end(); + }); + } + return sinon.stub().returns(mockStream); } -function stubAsyncIterationCall(responses?: ResponseType[], error?: Error) { - let counter = 0; - const asyncIterable = { - [Symbol.asyncIterator]() { - return { - async next() { - if (error) { - return Promise.reject(error); - } - if (counter >= responses!.length) { - return Promise.resolve({done: true, value: undefined}); - } - return Promise.resolve({done: false, value: responses![counter++]}); - } - }; - } - }; - return sinon.stub().returns(asyncIterable); +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error, +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({ done: true, value: undefined }); + } + return Promise.resolve({ done: false, value: responses![counter++] }); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); } describe('v4.TenantServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new tenantserviceModule.v4.TenantServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new tenantserviceModule.v4.TenantServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('has universeDomain', () => { - const client = new tenantserviceModule.v4.TenantServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); + it('has universeDomain', () => { + const client = new tenantserviceModule.v4.TenantServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = tenantserviceModule.v4.TenantServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = tenantserviceModule.v4.TenantServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new tenantserviceModule.v4.TenantServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + tenantserviceModule.v4.TenantServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + tenantserviceModule.v4.TenantServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new tenantserviceModule.v4.TenantServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new tenantserviceModule.v4.TenantServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new tenantserviceModule.v4.TenantServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new tenantserviceModule.v4.TenantServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new tenantserviceModule.v4.TenantServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('has port', () => { - const port = tenantserviceModule.v4.TenantServiceClient.port; - assert(port); - assert(typeof port === 'number'); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new tenantserviceModule.v4.TenantServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - - it('should create a client with no option', () => { - const client = new tenantserviceModule.v4.TenantServiceClient(); - assert(client); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new tenantserviceModule.v4.TenantServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('should create a client with gRPC fallback', () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - fallback: true, - }); - assert(client); - }); + it('has port', () => { + const port = tenantserviceModule.v4.TenantServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('has initialize method and supports deferred initialization', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.tenantServiceStub, undefined); - await client.initialize(); - assert(client.tenantServiceStub); - }); + it('should create a client with no option', () => { + const client = new tenantserviceModule.v4.TenantServiceClient(); + assert(client); + }); - it('has close method for the initialized client', done => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.tenantServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('should create a client with gRPC fallback', () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + fallback: true, + }); + assert(client); + }); - it('has close method for the non-initialized client', done => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.tenantServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.tenantServiceStub, undefined); + await client.initialize(); + assert(client.tenantServiceStub); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + it('has close method for the initialized client', (done) => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.tenantServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); + it('has close method for the non-initialized client', (done) => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.tenantServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); }); - describe('createTenant', () => { - it('invokes createTenant without error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Tenant() - ); - client.innerApiCalls.createTenant = stubSimpleCall(expectedResponse); - const [response] = await client.createTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes createTenant without error using callback', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Tenant() - ); - client.innerApiCalls.createTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createTenant( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ITenant|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('createTenant', () => { + it('invokes createTenant without error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Tenant(), + ); + client.innerApiCalls.createTenant = stubSimpleCall(expectedResponse); + const [response] = await client.createTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createTenant with error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createTenant without error using callback', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Tenant(), + ); + client.innerApiCalls.createTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createTenant( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ITenant | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes createTenant with closed client', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createTenant(request), expectedError); - }); + it('invokes createTenant with error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createTenant = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.createTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('getTenant', () => { - it('invokes getTenant without error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Tenant() - ); - client.innerApiCalls.getTenant = stubSimpleCall(expectedResponse); - const [response] = await client.getTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createTenant with closed client', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createTenant(request), expectedError); + }); + }); + + describe('getTenant', () => { + it('invokes getTenant without error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Tenant(), + ); + client.innerApiCalls.getTenant = stubSimpleCall(expectedResponse); + const [response] = await client.getTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getTenant without error using callback', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Tenant() - ); - client.innerApiCalls.getTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.getTenant( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ITenant|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getTenant without error using callback', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Tenant(), + ); + client.innerApiCalls.getTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.getTenant( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ITenant | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getTenant with error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.getTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.getTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getTenant with error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.getTenant = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.getTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getTenant with closed client', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.getTenant(request), expectedError); - }); + it('invokes getTenant with closed client', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.getTenant(request), expectedError); + }); + }); + + describe('updateTenant', () => { + it('invokes updateTenant without error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Tenant(), + ); + client.innerApiCalls.updateTenant = stubSimpleCall(expectedResponse); + const [response] = await client.updateTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('updateTenant', () => { - it('invokes updateTenant without error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Tenant() - ); - client.innerApiCalls.updateTenant = stubSimpleCall(expectedResponse); - const [response] = await client.updateTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateTenant without error using callback', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4.Tenant(), + ); + client.innerApiCalls.updateTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.updateTenant( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ITenant | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateTenant without error using callback', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4.Tenant() - ); - client.innerApiCalls.updateTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.updateTenant( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ITenant|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateTenant with error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.updateTenant = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.updateTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateTenant with error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.updateTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.updateTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateTenant with closed client', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.updateTenant(request), expectedError); + }); + }); + + describe('deleteTenant', () => { + it('invokes deleteTenant without error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteTenant = stubSimpleCall(expectedResponse); + const [response] = await client.deleteTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateTenant with closed client', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.updateTenant(request), expectedError); - }); + it('invokes deleteTenant without error using callback', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.deleteTenant( + request, + ( + err?: Error | null, + result?: protos.google.protobuf.IEmpty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('deleteTenant', () => { - it('invokes deleteTenant without error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteTenant = stubSimpleCall(expectedResponse); - const [response] = await client.deleteTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteTenant with error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteTenant = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.deleteTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteTenant without error using callback', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.deleteTenant( - request, - (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteTenant with closed client', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.deleteTenant(request), expectedError); + }); + }); + + describe('listTenants', () => { + it('invokes listTenants without error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + ]; + client.innerApiCalls.listTenants = stubSimpleCall(expectedResponse); + const [response] = await client.listTenants(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteTenant with error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.deleteTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.deleteTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listTenants without error using callback', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + ]; + client.innerApiCalls.listTenants = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.listTenants( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4.ITenant[] | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteTenant with closed client', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.deleteTenant(request), expectedError); - }); + it('invokes listTenants with error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.listTenants = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.listTenants(request), expectedError); + const actualRequest = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('listTenants', () => { - it('invokes listTenants without error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - ]; - client.innerApiCalls.listTenants = stubSimpleCall(expectedResponse); - const [response] = await client.listTenants(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('invokes listTenantsStream without error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + ]; + client.descriptors.page.listTenants.createStream = + stubPageStreamingCall(expectedResponse); + const stream = client.listTenantsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4.Tenant[] = []; + stream.on('data', (response: protos.google.cloud.talent.v4.Tenant) => { + responses.push(response); }); - - it('invokes listTenants without error using callback', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - ]; - client.innerApiCalls.listTenants = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.listTenants( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4.ITenant[]|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + stream.on('end', () => { + resolve(responses); }); - - it('invokes listTenants with error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.listTenants = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.listTenants(request), expectedError); - const actualRequest = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + stream.on('error', (err: Error) => { + reject(err); }); + }); + const responses = await promise; + assert.deepStrictEqual(responses, expectedResponse); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listTenants, request), + ); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('invokes listTenantsStream without error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - ]; - client.descriptors.page.listTenants.createStream = stubPageStreamingCall(expectedResponse); - const stream = client.listTenantsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4.Tenant[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4.Tenant) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - const responses = await promise; - assert.deepStrictEqual(responses, expectedResponse); - assert((client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listTenants, request)); - assert( - (client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + it('invokes listTenantsStream with error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listTenants.createStream = stubPageStreamingCall( + undefined, + expectedError, + ); + const stream = client.listTenantsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4.Tenant[] = []; + stream.on('data', (response: protos.google.cloud.talent.v4.Tenant) => { + responses.push(response); }); - - it('invokes listTenantsStream with error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listTenants.createStream = stubPageStreamingCall(undefined, expectedError); - const stream = client.listTenantsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4.Tenant[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4.Tenant) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - await assert.rejects(promise, expectedError); - assert((client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listTenants, request)); - assert( - (client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('end', () => { + resolve(responses); }); - - it('uses async iteration with listTenants without error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), - ]; - client.descriptors.page.listTenants.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: protos.google.cloud.talent.v4.ITenant[] = []; - const iterable = client.listTenantsAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('error', (err: Error) => { + reject(err); }); + }); + await assert.rejects(promise, expectedError); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listTenants, request), + ); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('uses async iteration with listTenants with error', async () => { - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listTenants.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.listTenantsAsync(request); - await assert.rejects(async () => { - const responses: protos.google.cloud.talent.v4.ITenant[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('uses async iteration with listTenants without error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4.Tenant()), + ]; + client.descriptors.page.listTenants.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: protos.google.cloud.talent.v4.ITenant[] = []; + const iterable = client.listTenantsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + (client.descriptors.page.listTenants.asyncIterate as SinonStub).getCall( + 0, + ).args[1], + request, + ); + assert( + (client.descriptors.page.listTenants.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); }); - describe('Path templates', () => { - - describe('company', async () => { - const fakePath = "/rendered/path/company"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.companyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.companyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('companyPath', () => { - const result = client.companyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.companyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromCompanyName', () => { - const result = client.matchProjectFromCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromCompanyName', () => { - const result = client.matchTenantFromCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromCompanyName', () => { - const result = client.matchCompanyFromCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.companyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('uses async iteration with listTenants with error', async () => { + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listTenants.asyncIterate = stubAsyncIterationCall( + undefined, + expectedError, + ); + const iterable = client.listTenantsAsync(request); + await assert.rejects(async () => { + const responses: protos.google.cloud.talent.v4.ITenant[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + (client.descriptors.page.listTenants.asyncIterate as SinonStub).getCall( + 0, + ).args[1], + request, + ); + assert( + (client.descriptors.page.listTenants.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); + }); + + describe('Path templates', () => { + describe('company', async () => { + const fakePath = '/rendered/path/company'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.companyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.companyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('companyPath', () => { + const result = client.companyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.companyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromCompanyName', () => { + const result = client.matchProjectFromCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromCompanyName', () => { + const result = client.matchTenantFromCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromCompanyName', () => { + const result = client.matchCompanyFromCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.companyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('job', async () => { - const fakePath = "/rendered/path/job"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.jobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.jobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('jobPath', () => { - const result = client.jobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.jobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromJobName', () => { - const result = client.matchProjectFromJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromJobName', () => { - const result = client.matchTenantFromJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromJobName', () => { - const result = client.matchJobFromJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.jobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('job', async () => { + const fakePath = '/rendered/path/job'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.jobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.jobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('jobPath', () => { + const result = client.jobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.jobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromJobName', () => { + const result = client.matchProjectFromJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromJobName', () => { + const result = client.matchTenantFromJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromJobName', () => { + const result = client.matchJobFromJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.jobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('project', async () => { - const fakePath = "/rendered/path/project"; - const expectedParameters = { - project: "projectValue", - }; - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectPath', () => { - const result = client.projectPath("projectValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectName', () => { - const result = client.matchProjectFromProjectName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('project', async () => { + const fakePath = '/rendered/path/project'; + const expectedParameters = { + project: 'projectValue', + }; + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectPath', () => { + const result = client.projectPath('projectValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectName', () => { + const result = client.matchProjectFromProjectName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new tenantserviceModule.v4.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new tenantserviceModule.v4.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/test/gapic_tenant_service_v4beta1.ts b/packages/google-cloud-talent/test/gapic_tenant_service_v4beta1.ts index 5ce89ed67553..f49b083b1eda 100644 --- a/packages/google-cloud-talent/test/gapic_tenant_service_v4beta1.ts +++ b/packages/google-cloud-talent/test/gapic_tenant_service_v4beta1.ts @@ -19,1163 +19,1470 @@ import * as protos from '../protos/protos'; import * as assert from 'assert'; import * as sinon from 'sinon'; -import {SinonStub} from 'sinon'; -import {describe, it} from 'mocha'; +import { SinonStub } from 'sinon'; +import { describe, it } from 'mocha'; import * as tenantserviceModule from '../src'; -import {PassThrough} from 'stream'; +import { PassThrough } from 'stream'; -import {protobuf} from 'google-gax'; +import { protobuf } from 'google-gax'; // Dynamically loaded proto JSON is needed to get the type information // to fill in default values for request objects -const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll(); +const root = protobuf.Root.fromJSON( + require('../protos/protos.json'), +).resolveAll(); // eslint-disable-next-line @typescript-eslint/no-unused-vars function getTypeDefaultValue(typeName: string, fields: string[]) { - let type = root.lookupType(typeName) as protobuf.Type; - for (const field of fields.slice(0, -1)) { - type = type.fields[field]?.resolvedType as protobuf.Type; - } - return type.fields[fields[fields.length - 1]]?.defaultValue; + let type = root.lookupType(typeName) as protobuf.Type; + for (const field of fields.slice(0, -1)) { + type = type.fields[field]?.resolvedType as protobuf.Type; + } + return type.fields[fields[fields.length - 1]]?.defaultValue; } function generateSampleMessage(instance: T) { - const filledObject = (instance.constructor as typeof protobuf.Message) - .toObject(instance as protobuf.Message, {defaults: true}); - return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T; + const filledObject = ( + instance.constructor as typeof protobuf.Message + ).toObject(instance as protobuf.Message, { defaults: true }); + return (instance.constructor as typeof protobuf.Message).fromObject( + filledObject, + ) as T; } function stubSimpleCall(response?: ResponseType, error?: Error) { - return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]); + return error + ? sinon.stub().rejects(error) + : sinon.stub().resolves([response]); } -function stubSimpleCallWithCallback(response?: ResponseType, error?: Error) { - return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response); +function stubSimpleCallWithCallback( + response?: ResponseType, + error?: Error, +) { + return error + ? sinon.stub().callsArgWith(2, error) + : sinon.stub().callsArgWith(2, null, response); } -function stubPageStreamingCall(responses?: ResponseType[], error?: Error) { - const pagingStub = sinon.stub(); - if (responses) { - for (let i = 0; i < responses.length; ++i) { - pagingStub.onCall(i).callsArgWith(2, null, responses[i]); - } +function stubPageStreamingCall( + responses?: ResponseType[], + error?: Error, +) { + const pagingStub = sinon.stub(); + if (responses) { + for (let i = 0; i < responses.length; ++i) { + pagingStub.onCall(i).callsArgWith(2, null, responses[i]); } - const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub; - const mockStream = new PassThrough({ - objectMode: true, - transform: transformStub, - }); - // trigger as many responses as needed - if (responses) { - for (let i = 0; i < responses.length; ++i) { - setImmediate(() => { mockStream.write({}); }); - } - setImmediate(() => { mockStream.end(); }); - } else { - setImmediate(() => { mockStream.write({}); }); - setImmediate(() => { mockStream.end(); }); + } + const transformStub = error + ? sinon.stub().callsArgWith(2, error) + : pagingStub; + const mockStream = new PassThrough({ + objectMode: true, + transform: transformStub, + }); + // trigger as many responses as needed + if (responses) { + for (let i = 0; i < responses.length; ++i) { + setImmediate(() => { + mockStream.write({}); + }); } - return sinon.stub().returns(mockStream); + setImmediate(() => { + mockStream.end(); + }); + } else { + setImmediate(() => { + mockStream.write({}); + }); + setImmediate(() => { + mockStream.end(); + }); + } + return sinon.stub().returns(mockStream); } -function stubAsyncIterationCall(responses?: ResponseType[], error?: Error) { - let counter = 0; - const asyncIterable = { - [Symbol.asyncIterator]() { - return { - async next() { - if (error) { - return Promise.reject(error); - } - if (counter >= responses!.length) { - return Promise.resolve({done: true, value: undefined}); - } - return Promise.resolve({done: false, value: responses![counter++]}); - } - }; - } - }; - return sinon.stub().returns(asyncIterable); +function stubAsyncIterationCall( + responses?: ResponseType[], + error?: Error, +) { + let counter = 0; + const asyncIterable = { + [Symbol.asyncIterator]() { + return { + async next() { + if (error) { + return Promise.reject(error); + } + if (counter >= responses!.length) { + return Promise.resolve({ done: true, value: undefined }); + } + return Promise.resolve({ done: false, value: responses![counter++] }); + }, + }; + }, + }; + return sinon.stub().returns(asyncIterable); } describe('v4beta1.TenantServiceClient', () => { - describe('Common methods', () => { - it('has apiEndpoint', () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient(); - const apiEndpoint = client.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - }); - - it('has universeDomain', () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient(); - const universeDomain = client.universeDomain; - assert.strictEqual(universeDomain, "googleapis.com"); - }); - - if (typeof process === 'object' && typeof process.emitWarning === 'function') { - it('throws DeprecationWarning if static servicePath is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const servicePath = tenantserviceModule.v4beta1.TenantServiceClient.servicePath; - assert.strictEqual(servicePath, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - - it('throws DeprecationWarning if static apiEndpoint is used', () => { - const stub = sinon.stub(process, 'emitWarning'); - const apiEndpoint = tenantserviceModule.v4beta1.TenantServiceClient.apiEndpoint; - assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); - assert(stub.called); - stub.restore(); - }); - } - it('sets apiEndpoint according to universe domain camelCase', () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({universeDomain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + describe('Common methods', () => { + it('has apiEndpoint', () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient(); + const apiEndpoint = client.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + }); - it('sets apiEndpoint according to universe domain snakeCase', () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({universe_domain: 'example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - }); + it('has universeDomain', () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient(); + const universeDomain = client.universeDomain; + assert.strictEqual(universeDomain, 'googleapis.com'); + }); - if (typeof process === 'object' && 'env' in process) { - describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { - it('sets apiEndpoint from environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new tenantserviceModule.v4beta1.TenantServiceClient(); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - - it('value configured in code has priority over environment variable', () => { - const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({universeDomain: 'configured.example.com'}); - const servicePath = client.apiEndpoint; - assert.strictEqual(servicePath, 'jobs.configured.example.com'); - if (saved) { - process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; - } else { - delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; - } - }); - }); - } - it('does not allow setting both universeDomain and universe_domain', () => { - assert.throws(() => { new tenantserviceModule.v4beta1.TenantServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); }); - }); + if ( + typeof process === 'object' && + typeof process.emitWarning === 'function' + ) { + it('throws DeprecationWarning if static servicePath is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const servicePath = + tenantserviceModule.v4beta1.TenantServiceClient.servicePath; + assert.strictEqual(servicePath, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + + it('throws DeprecationWarning if static apiEndpoint is used', () => { + const stub = sinon.stub(process, 'emitWarning'); + const apiEndpoint = + tenantserviceModule.v4beta1.TenantServiceClient.apiEndpoint; + assert.strictEqual(apiEndpoint, 'jobs.googleapis.com'); + assert(stub.called); + stub.restore(); + }); + } + it('sets apiEndpoint according to universe domain camelCase', () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + universeDomain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('has port', () => { - const port = tenantserviceModule.v4beta1.TenantServiceClient.port; - assert(port); - assert(typeof port === 'number'); - }); + it('sets apiEndpoint according to universe domain snakeCase', () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + universe_domain: 'example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + }); - it('should create a client with no option', () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient(); - assert(client); + if (typeof process === 'object' && 'env' in process) { + describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => { + it('sets apiEndpoint from environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new tenantserviceModule.v4beta1.TenantServiceClient(); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - it('should create a client with gRPC fallback', () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - fallback: true, - }); - assert(client); + it('value configured in code has priority over environment variable', () => { + const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com'; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + universeDomain: 'configured.example.com', + }); + const servicePath = client.apiEndpoint; + assert.strictEqual(servicePath, 'jobs.configured.example.com'); + if (saved) { + process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved; + } else { + delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']; + } }); - - it('has initialize method and supports deferred initialization', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.tenantServiceStub, undefined); - await client.initialize(); - assert(client.tenantServiceStub); + }); + } + it('does not allow setting both universeDomain and universe_domain', () => { + assert.throws(() => { + new tenantserviceModule.v4beta1.TenantServiceClient({ + universe_domain: 'example.com', + universeDomain: 'example.net', }); + }); + }); - it('has close method for the initialized client', done => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.initialize().catch(err => {throw err}); - assert(client.tenantServiceStub); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('has port', () => { + const port = tenantserviceModule.v4beta1.TenantServiceClient.port; + assert(port); + assert(typeof port === 'number'); + }); - it('has close method for the non-initialized client', done => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - assert.strictEqual(client.tenantServiceStub, undefined); - client.close().then(() => { - done(); - }).catch(err => {throw err}); - }); + it('should create a client with no option', () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient(); + assert(client); + }); - it('has getProjectId method', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); - const result = await client.getProjectId(); - assert.strictEqual(result, fakeProjectId); - assert((client.auth.getProjectId as SinonStub).calledWithExactly()); - }); + it('should create a client with gRPC fallback', () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + fallback: true, + }); + assert(client); + }); - it('has getProjectId method with callback', async () => { - const fakeProjectId = 'fake-project-id'; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId); - const promise = new Promise((resolve, reject) => { - client.getProjectId((err?: Error|null, projectId?: string|null) => { - if (err) { - reject(err); - } else { - resolve(projectId); - } - }); - }); - const result = await promise; - assert.strictEqual(result, fakeProjectId); - }); + it('has initialize method and supports deferred initialization', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.tenantServiceStub, undefined); + await client.initialize(); + assert(client.tenantServiceStub); }); - describe('createTenant', () => { - it('invokes createTenant without error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Tenant() - ); - client.innerApiCalls.createTenant = stubSimpleCall(expectedResponse); - const [response] = await client.createTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has close method for the initialized client', (done) => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.initialize().catch((err) => { + throw err; + }); + assert(client.tenantServiceStub); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('invokes createTenant without error using callback', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Tenant() - ); - client.innerApiCalls.createTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.createTenant( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ITenant|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('has close method for the non-initialized client', (done) => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + assert.strictEqual(client.tenantServiceStub, undefined); + client + .close() + .then(() => { + done(); + }) + .catch((err) => { + throw err; }); + }); - it('invokes createTenant with error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.createTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.createTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.createTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('has getProjectId method', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon.stub().resolves(fakeProjectId); + const result = await client.getProjectId(); + assert.strictEqual(result, fakeProjectId); + assert((client.auth.getProjectId as SinonStub).calledWithExactly()); + }); - it('invokes createTenant with closed client', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.CreateTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.CreateTenantRequest', ['parent']); - request.parent = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.createTenant(request), expectedError); + it('has getProjectId method with callback', async () => { + const fakeProjectId = 'fake-project-id'; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + client.auth.getProjectId = sinon + .stub() + .callsArgWith(0, null, fakeProjectId); + const promise = new Promise((resolve, reject) => { + client.getProjectId((err?: Error | null, projectId?: string | null) => { + if (err) { + reject(err); + } else { + resolve(projectId); + } }); + }); + const result = await promise; + assert.strictEqual(result, fakeProjectId); + }); + }); + + describe('createTenant', () => { + it('invokes createTenant without error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Tenant(), + ); + client.innerApiCalls.createTenant = stubSimpleCall(expectedResponse); + const [response] = await client.createTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('getTenant', () => { - it('invokes getTenant without error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Tenant() - ); - client.innerApiCalls.getTenant = stubSimpleCall(expectedResponse); - const [response] = await client.getTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createTenant without error using callback', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Tenant(), + ); + client.innerApiCalls.createTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.createTenant( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ITenant | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getTenant without error using callback', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Tenant() - ); - client.innerApiCalls.getTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.getTenant( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ITenant|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createTenant with error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.createTenant = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.createTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.createTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getTenant with error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.getTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.getTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.getTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes createTenant with closed client', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.CreateTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.CreateTenantRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.createTenant(request), expectedError); + }); + }); + + describe('getTenant', () => { + it('invokes getTenant without error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Tenant(), + ); + client.innerApiCalls.getTenant = stubSimpleCall(expectedResponse); + const [response] = await client.getTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes getTenant with closed client', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.GetTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.GetTenantRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.getTenant(request), expectedError); - }); + it('invokes getTenant without error using callback', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Tenant(), + ); + client.innerApiCalls.getTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.getTenant( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ITenant | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('updateTenant', () => { - it('invokes updateTenant without error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Tenant() - ); - client.innerApiCalls.updateTenant = stubSimpleCall(expectedResponse); - const [response] = await client.updateTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getTenant with error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.getTenant = stubSimpleCall(undefined, expectedError); + await assert.rejects(client.getTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.getTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateTenant without error using callback', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.Tenant() - ); - client.innerApiCalls.updateTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.updateTenant( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ITenant|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes getTenant with closed client', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.GetTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.GetTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.getTenant(request), expectedError); + }); + }); + + describe('updateTenant', () => { + it('invokes updateTenant without error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Tenant(), + ); + client.innerApiCalls.updateTenant = stubSimpleCall(expectedResponse); + const [response] = await client.updateTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateTenant with error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.updateTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.updateTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.updateTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateTenant without error using callback', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.Tenant(), + ); + client.innerApiCalls.updateTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.updateTenant( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ITenant | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes updateTenant with closed client', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.UpdateTenantRequest() - ); - request.tenant ??= {}; - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.UpdateTenantRequest', ['tenant', 'name']); - request.tenant.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.updateTenant(request), expectedError); - }); + it('invokes updateTenant with error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedHeaderRequestParams = `tenant.name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.updateTenant = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.updateTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.updateTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('deleteTenant', () => { - it('invokes deleteTenant without error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteTenant = stubSimpleCall(expectedResponse); - const [response] = await client.deleteTenant(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes updateTenant with closed client', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.UpdateTenantRequest(), + ); + request.tenant ??= {}; + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.UpdateTenantRequest', + ['tenant', 'name'], + ); + request.tenant.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.updateTenant(request), expectedError); + }); + }); + + describe('deleteTenant', () => { + it('invokes deleteTenant without error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteTenant = stubSimpleCall(expectedResponse); + const [response] = await client.deleteTenant(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteTenant without error using callback', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedResponse = generateSampleMessage( - new protos.google.protobuf.Empty() - ); - client.innerApiCalls.deleteTenant = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.deleteTenant( - request, - (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteTenant without error using callback', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedResponse = generateSampleMessage( + new protos.google.protobuf.Empty(), + ); + client.innerApiCalls.deleteTenant = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.deleteTenant( + request, + ( + err?: Error | null, + result?: protos.google.protobuf.IEmpty | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteTenant with error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.deleteTenant = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.deleteTenant(request), expectedError); - const actualRequest = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.deleteTenant as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes deleteTenant with error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.deleteTenant = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.deleteTenant(request), expectedError); + const actualRequest = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.deleteTenant as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes deleteTenant with closed client', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.DeleteTenantRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.DeleteTenantRequest', ['name']); - request.name = defaultValue1; - const expectedError = new Error('The client has already been closed.'); - client.close().catch(err => {throw err}); - await assert.rejects(client.deleteTenant(request), expectedError); - }); + it('invokes deleteTenant with closed client', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.DeleteTenantRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.DeleteTenantRequest', + ['name'], + ); + request.name = defaultValue1; + const expectedError = new Error('The client has already been closed.'); + client.close().catch((err) => { + throw err; + }); + await assert.rejects(client.deleteTenant(request), expectedError); + }); + }); + + describe('listTenants', () => { + it('invokes listTenants without error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + ]; + client.innerApiCalls.listTenants = stubSimpleCall(expectedResponse); + const [response] = await client.listTenants(request); + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); }); - describe('listTenants', () => { - it('invokes listTenants without error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - ]; - client.innerApiCalls.listTenants = stubSimpleCall(expectedResponse); - const [response] = await client.listTenants(request); - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listTenants without error using callback', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + ]; + client.innerApiCalls.listTenants = + stubSimpleCallWithCallback(expectedResponse); + const promise = new Promise((resolve, reject) => { + client.listTenants( + request, + ( + err?: Error | null, + result?: protos.google.cloud.talent.v4beta1.ITenant[] | null, + ) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }, + ); + }); + const response = await promise; + assert.deepStrictEqual(response, expectedResponse); + const actualRequest = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listTenants without error using callback', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - ]; - client.innerApiCalls.listTenants = stubSimpleCallWithCallback(expectedResponse); - const promise = new Promise((resolve, reject) => { - client.listTenants( - request, - (err?: Error|null, result?: protos.google.cloud.talent.v4beta1.ITenant[]|null) => { - if (err) { - reject(err); - } else { - resolve(result); - } - }); - }); - const response = await promise; - assert.deepStrictEqual(response, expectedResponse); - const actualRequest = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); - }); + it('invokes listTenants with error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.innerApiCalls.listTenants = stubSimpleCall( + undefined, + expectedError, + ); + await assert.rejects(client.listTenants(request), expectedError); + const actualRequest = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[0]; + assert.deepStrictEqual(actualRequest, request); + const actualHeaderRequestParams = ( + client.innerApiCalls.listTenants as SinonStub + ).getCall(0).args[1].otherArgs.headers['x-goog-request-params']; + assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + }); - it('invokes listTenants with error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.innerApiCalls.listTenants = stubSimpleCall(undefined, expectedError); - await assert.rejects(client.listTenants(request), expectedError); - const actualRequest = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[0]; - assert.deepStrictEqual(actualRequest, request); - const actualHeaderRequestParams = (client.innerApiCalls.listTenants as SinonStub) - .getCall(0).args[1].otherArgs.headers['x-goog-request-params']; - assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams)); + it('invokes listTenantsStream without error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + ]; + client.descriptors.page.listTenants.createStream = + stubPageStreamingCall(expectedResponse); + const stream = client.listTenantsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4beta1.Tenant[] = []; + stream.on( + 'data', + (response: protos.google.cloud.talent.v4beta1.Tenant) => { + responses.push(response); + }, + ); + stream.on('end', () => { + resolve(responses); }); - - it('invokes listTenantsStream without error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - ]; - client.descriptors.page.listTenants.createStream = stubPageStreamingCall(expectedResponse); - const stream = client.listTenantsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4beta1.Tenant[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4beta1.Tenant) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - const responses = await promise; - assert.deepStrictEqual(responses, expectedResponse); - assert((client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listTenants, request)); - assert( - (client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('error', (err: Error) => { + reject(err); }); + }); + const responses = await promise; + assert.deepStrictEqual(responses, expectedResponse); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listTenants, request), + ); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('invokes listTenantsStream with error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listTenants.createStream = stubPageStreamingCall(undefined, expectedError); - const stream = client.listTenantsStream(request); - const promise = new Promise((resolve, reject) => { - const responses: protos.google.cloud.talent.v4beta1.Tenant[] = []; - stream.on('data', (response: protos.google.cloud.talent.v4beta1.Tenant) => { - responses.push(response); - }); - stream.on('end', () => { - resolve(responses); - }); - stream.on('error', (err: Error) => { - reject(err); - }); - }); - await assert.rejects(promise, expectedError); - assert((client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).calledWith(client.innerApiCalls.listTenants, request)); - assert( - (client.descriptors.page.listTenants.createStream as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + it('invokes listTenantsStream with error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listTenants.createStream = stubPageStreamingCall( + undefined, + expectedError, + ); + const stream = client.listTenantsStream(request); + const promise = new Promise((resolve, reject) => { + const responses: protos.google.cloud.talent.v4beta1.Tenant[] = []; + stream.on( + 'data', + (response: protos.google.cloud.talent.v4beta1.Tenant) => { + responses.push(response); + }, + ); + stream.on('end', () => { + resolve(responses); }); - - it('uses async iteration with listTenants without error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedResponse = [ - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), - ]; - client.descriptors.page.listTenants.asyncIterate = stubAsyncIterationCall(expectedResponse); - const responses: protos.google.cloud.talent.v4beta1.ITenant[] = []; - const iterable = client.listTenantsAsync(request); - for await (const resource of iterable) { - responses.push(resource!); - } - assert.deepStrictEqual(responses, expectedResponse); - assert.deepStrictEqual( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); + stream.on('error', (err: Error) => { + reject(err); }); + }); + await assert.rejects(promise, expectedError); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .calledWith(client.innerApiCalls.listTenants, request), + ); + assert( + (client.descriptors.page.listTenants.createStream as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); - it('uses async iteration with listTenants with error', async () => { - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - const request = generateSampleMessage( - new protos.google.cloud.talent.v4beta1.ListTenantsRequest() - ); - const defaultValue1 = - getTypeDefaultValue('.google.cloud.talent.v4beta1.ListTenantsRequest', ['parent']); - request.parent = defaultValue1; - const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`; - const expectedError = new Error('expected'); - client.descriptors.page.listTenants.asyncIterate = stubAsyncIterationCall(undefined, expectedError); - const iterable = client.listTenantsAsync(request); - await assert.rejects(async () => { - const responses: protos.google.cloud.talent.v4beta1.ITenant[] = []; - for await (const resource of iterable) { - responses.push(resource!); - } - }); - assert.deepStrictEqual( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[1], request); - assert( - (client.descriptors.page.listTenants.asyncIterate as SinonStub) - .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes( - expectedHeaderRequestParams - ) - ); - }); + it('uses async iteration with listTenants without error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedResponse = [ + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + generateSampleMessage(new protos.google.cloud.talent.v4beta1.Tenant()), + ]; + client.descriptors.page.listTenants.asyncIterate = + stubAsyncIterationCall(expectedResponse); + const responses: protos.google.cloud.talent.v4beta1.ITenant[] = []; + const iterable = client.listTenantsAsync(request); + for await (const resource of iterable) { + responses.push(resource!); + } + assert.deepStrictEqual(responses, expectedResponse); + assert.deepStrictEqual( + (client.descriptors.page.listTenants.asyncIterate as SinonStub).getCall( + 0, + ).args[1], + request, + ); + assert( + (client.descriptors.page.listTenants.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); }); - describe('Path templates', () => { - - describe('project', async () => { - const fakePath = "/rendered/path/project"; - const expectedParameters = { - project: "projectValue", - }; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectPath', () => { - const result = client.projectPath("projectValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectName', () => { - const result = client.matchProjectFromProjectName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + it('uses async iteration with listTenants with error', async () => { + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + const request = generateSampleMessage( + new protos.google.cloud.talent.v4beta1.ListTenantsRequest(), + ); + const defaultValue1 = getTypeDefaultValue( + '.google.cloud.talent.v4beta1.ListTenantsRequest', + ['parent'], + ); + request.parent = defaultValue1; + const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`; + const expectedError = new Error('expected'); + client.descriptors.page.listTenants.asyncIterate = stubAsyncIterationCall( + undefined, + expectedError, + ); + const iterable = client.listTenantsAsync(request); + await assert.rejects(async () => { + const responses: protos.google.cloud.talent.v4beta1.ITenant[] = []; + for await (const resource of iterable) { + responses.push(resource!); + } + }); + assert.deepStrictEqual( + (client.descriptors.page.listTenants.asyncIterate as SinonStub).getCall( + 0, + ).args[1], + request, + ); + assert( + (client.descriptors.page.listTenants.asyncIterate as SinonStub) + .getCall(0) + .args[2].otherArgs.headers[ + 'x-goog-request-params' + ].includes(expectedHeaderRequestParams), + ); + }); + }); + + describe('Path templates', () => { + describe('project', async () => { + const fakePath = '/rendered/path/project'; + const expectedParameters = { + project: 'projectValue', + }; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectPath', () => { + const result = client.projectPath('projectValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectName', () => { + const result = client.matchProjectFromProjectName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectCompany', async () => { - const fakePath = "/rendered/path/projectCompany"; - const expectedParameters = { - project: "projectValue", - company: "companyValue", - }; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectCompanyPath', () => { - const result = client.projectCompanyPath("projectValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectCompanyName', () => { - const result = client.matchProjectFromProjectCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectCompanyName', () => { - const result = client.matchCompanyFromProjectCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectCompany', async () => { + const fakePath = '/rendered/path/projectCompany'; + const expectedParameters = { + project: 'projectValue', + company: 'companyValue', + }; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectCompanyPath', () => { + const result = client.projectCompanyPath( + 'projectValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectCompanyPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectCompanyName', () => { + const result = client.matchProjectFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectCompanyName', () => { + const result = client.matchCompanyFromProjectCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + (client.pathTemplates.projectCompanyPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectJob', async () => { - const fakePath = "/rendered/path/projectJob"; - const expectedParameters = { - project: "projectValue", - job: "jobValue", - }; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectJobPath', () => { - const result = client.projectJobPath("projectValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectJobName', () => { - const result = client.matchProjectFromProjectJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectJobName', () => { - const result = client.matchJobFromProjectJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectJob', async () => { + const fakePath = '/rendered/path/projectJob'; + const expectedParameters = { + project: 'projectValue', + job: 'jobValue', + }; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectJobPath', () => { + const result = client.projectJobPath('projectValue', 'jobValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.projectJobPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectJobName', () => { + const result = client.matchProjectFromProjectJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectJobName', () => { + const result = client.matchJobFromProjectJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantCompany', async () => { - const fakePath = "/rendered/path/projectTenantCompany"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - company: "companyValue", - }; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantCompanyPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantCompanyPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantCompanyPath', () => { - const result = client.projectTenantCompanyPath("projectValue", "tenantValue", "companyValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantCompanyName', () => { - const result = client.matchProjectFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantCompanyName', () => { - const result = client.matchTenantFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchCompanyFromProjectTenantCompanyName', () => { - const result = client.matchCompanyFromProjectTenantCompanyName(fakePath); - assert.strictEqual(result, "companyValue"); - assert((client.pathTemplates.projectTenantCompanyPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantCompany', async () => { + const fakePath = '/rendered/path/projectTenantCompany'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + company: 'companyValue', + }; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantCompanyPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantCompanyPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantCompanyPath', () => { + const result = client.projectTenantCompanyPath( + 'projectValue', + 'tenantValue', + 'companyValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantCompanyName', () => { + const result = + client.matchProjectFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantCompanyName', () => { + const result = client.matchTenantFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchCompanyFromProjectTenantCompanyName', () => { + const result = + client.matchCompanyFromProjectTenantCompanyName(fakePath); + assert.strictEqual(result, 'companyValue'); + assert( + ( + client.pathTemplates.projectTenantCompanyPathTemplate + .match as SinonStub + ) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('projectTenantJob', async () => { - const fakePath = "/rendered/path/projectTenantJob"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - job: "jobValue", - }; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.projectTenantJobPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.projectTenantJobPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('projectTenantJobPath', () => { - const result = client.projectTenantJobPath("projectValue", "tenantValue", "jobValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.projectTenantJobPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromProjectTenantJobName', () => { - const result = client.matchProjectFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromProjectTenantJobName', () => { - const result = client.matchTenantFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchJobFromProjectTenantJobName', () => { - const result = client.matchJobFromProjectTenantJobName(fakePath); - assert.strictEqual(result, "jobValue"); - assert((client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('projectTenantJob', async () => { + const fakePath = '/rendered/path/projectTenantJob'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + job: 'jobValue', + }; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.projectTenantJobPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.projectTenantJobPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('projectTenantJobPath', () => { + const result = client.projectTenantJobPath( + 'projectValue', + 'tenantValue', + 'jobValue', + ); + assert.strictEqual(result, fakePath); + assert( + ( + client.pathTemplates.projectTenantJobPathTemplate + .render as SinonStub + ) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromProjectTenantJobName', () => { + const result = client.matchProjectFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromProjectTenantJobName', () => { + const result = client.matchTenantFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchJobFromProjectTenantJobName', () => { + const result = client.matchJobFromProjectTenantJobName(fakePath); + assert.strictEqual(result, 'jobValue'); + assert( + (client.pathTemplates.projectTenantJobPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + }); - describe('tenant', async () => { - const fakePath = "/rendered/path/tenant"; - const expectedParameters = { - project: "projectValue", - tenant: "tenantValue", - }; - const client = new tenantserviceModule.v4beta1.TenantServiceClient({ - credentials: {client_email: 'bogus', private_key: 'bogus'}, - projectId: 'bogus', - }); - await client.initialize(); - client.pathTemplates.tenantPathTemplate.render = - sinon.stub().returns(fakePath); - client.pathTemplates.tenantPathTemplate.match = - sinon.stub().returns(expectedParameters); - - it('tenantPath', () => { - const result = client.tenantPath("projectValue", "tenantValue"); - assert.strictEqual(result, fakePath); - assert((client.pathTemplates.tenantPathTemplate.render as SinonStub) - .getCall(-1).calledWith(expectedParameters)); - }); - - it('matchProjectFromTenantName', () => { - const result = client.matchProjectFromTenantName(fakePath); - assert.strictEqual(result, "projectValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - - it('matchTenantFromTenantName', () => { - const result = client.matchTenantFromTenantName(fakePath); - assert.strictEqual(result, "tenantValue"); - assert((client.pathTemplates.tenantPathTemplate.match as SinonStub) - .getCall(-1).calledWith(fakePath)); - }); - }); + describe('tenant', async () => { + const fakePath = '/rendered/path/tenant'; + const expectedParameters = { + project: 'projectValue', + tenant: 'tenantValue', + }; + const client = new tenantserviceModule.v4beta1.TenantServiceClient({ + credentials: { client_email: 'bogus', private_key: 'bogus' }, + projectId: 'bogus', + }); + await client.initialize(); + client.pathTemplates.tenantPathTemplate.render = sinon + .stub() + .returns(fakePath); + client.pathTemplates.tenantPathTemplate.match = sinon + .stub() + .returns(expectedParameters); + + it('tenantPath', () => { + const result = client.tenantPath('projectValue', 'tenantValue'); + assert.strictEqual(result, fakePath); + assert( + (client.pathTemplates.tenantPathTemplate.render as SinonStub) + .getCall(-1) + .calledWith(expectedParameters), + ); + }); + + it('matchProjectFromTenantName', () => { + const result = client.matchProjectFromTenantName(fakePath); + assert.strictEqual(result, 'projectValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); + + it('matchTenantFromTenantName', () => { + const result = client.matchTenantFromTenantName(fakePath); + assert.strictEqual(result, 'tenantValue'); + assert( + (client.pathTemplates.tenantPathTemplate.match as SinonStub) + .getCall(-1) + .calledWith(fakePath), + ); + }); }); + }); }); diff --git a/packages/google-cloud-talent/webpack.config.js b/packages/google-cloud-talent/webpack.config.js index bc29021737b8..f38000fc18f1 100644 --- a/packages/google-cloud-talent/webpack.config.js +++ b/packages/google-cloud-talent/webpack.config.js @@ -1,4 +1,4 @@ -// Copyright 2026 Google LLC +// Copyright 2021 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License.