2 Object.defineProperty(exports, "__esModule", { value: true });
3 const metadata_1 = require("./metadata");
5 * A class that represents a generic method of adding authentication-related
6 * metadata on a per-request basis.
8 class CallCredentials {
10 * Creates a new CallCredentials object from a given function that generates
12 * @param metadataGenerator A function that accepts a set of options, and
13 * generates a Metadata object based on these options, which is passed back
14 * to the caller via a supplied (err, metadata) callback.
16 static createFromMetadataGenerator(metadataGenerator) {
17 return new SingleCallCredentials(metadataGenerator);
19 static createEmpty() {
20 return new EmptyCallCredentials();
23 exports.CallCredentials = CallCredentials;
24 class ComposedCallCredentials extends CallCredentials {
29 async generateMetadata(options) {
30 const base = new metadata_1.Metadata();
31 const generated = await Promise.all(this.creds.map((cred) => cred.generateMetadata(options)));
32 for (const gen of generated) {
38 return new ComposedCallCredentials(this.creds.concat([other]));
41 class SingleCallCredentials extends CallCredentials {
42 constructor(metadataGenerator) {
44 this.metadataGenerator = metadataGenerator;
46 generateMetadata(options) {
47 return new Promise((resolve, reject) => {
48 this.metadataGenerator(options, (err, metadata) => {
49 if (metadata !== undefined) {
59 return new ComposedCallCredentials([this, other]);
62 class EmptyCallCredentials extends CallCredentials {
63 generateMetadata(options) {
64 return Promise.resolve(new metadata_1.Metadata());
70 //# sourceMappingURL=call-credentials.js.map