@sebspark/gcp-iam 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +35 -10
- package/dist/index.mjs +35 -10
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -8,10 +8,9 @@ import { Logger } from 'winston';
|
|
|
8
8
|
* @param logger An optional logger to use for logging.
|
|
9
9
|
* @returns A JWT.
|
|
10
10
|
*/
|
|
11
|
-
declare const getApiGatewayTokenByUrl: ({ apiURL, key,
|
|
11
|
+
declare const getApiGatewayTokenByUrl: ({ apiURL, key, logger, }: {
|
|
12
12
|
apiURL: string;
|
|
13
13
|
key?: string;
|
|
14
|
-
ttl?: number;
|
|
15
14
|
logger?: Logger;
|
|
16
15
|
}) => Promise<string>;
|
|
17
16
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -8,10 +8,9 @@ import { Logger } from 'winston';
|
|
|
8
8
|
* @param logger An optional logger to use for logging.
|
|
9
9
|
* @returns A JWT.
|
|
10
10
|
*/
|
|
11
|
-
declare const getApiGatewayTokenByUrl: ({ apiURL, key,
|
|
11
|
+
declare const getApiGatewayTokenByUrl: ({ apiURL, key, logger, }: {
|
|
12
12
|
apiURL: string;
|
|
13
13
|
key?: string;
|
|
14
|
-
ttl?: number;
|
|
15
14
|
logger?: Logger;
|
|
16
15
|
}) => Promise<string>;
|
|
17
16
|
/**
|
package/dist/index.js
CHANGED
|
@@ -72,17 +72,11 @@ var LruCache = class {
|
|
|
72
72
|
// src/apiGatewayToken.ts
|
|
73
73
|
var expInSeconds = 60 * 60;
|
|
74
74
|
var apiGatewayJwtCache = new LruCache();
|
|
75
|
-
var
|
|
75
|
+
var generateTokenByUrl = async ({
|
|
76
76
|
apiURL,
|
|
77
77
|
key,
|
|
78
|
-
ttl,
|
|
79
78
|
logger
|
|
80
79
|
}) => {
|
|
81
|
-
const cachedJwt = apiGatewayJwtCache.get(key || apiURL);
|
|
82
|
-
if (cachedJwt) {
|
|
83
|
-
logger?.debug(`JWT for ${key || apiURL} found in cache.`);
|
|
84
|
-
return cachedJwt;
|
|
85
|
-
}
|
|
86
80
|
try {
|
|
87
81
|
const iamClient = new import_iam_credentials.IAMCredentialsClient();
|
|
88
82
|
const auth = new import_google_auth_library.GoogleAuth();
|
|
@@ -91,7 +85,7 @@ var getApiGatewayTokenByUrl = async ({
|
|
|
91
85
|
if (!serviceAccountEmail) {
|
|
92
86
|
throw new Error("No service account e-mail could be found.");
|
|
93
87
|
}
|
|
94
|
-
logger?.info(`
|
|
88
|
+
logger?.info(`Service account e-mail being used: ${serviceAccountEmail}`);
|
|
95
89
|
const header = {
|
|
96
90
|
alg: "RS256",
|
|
97
91
|
typ: "JWT"
|
|
@@ -124,7 +118,6 @@ var getApiGatewayTokenByUrl = async ({
|
|
|
124
118
|
);
|
|
125
119
|
const signature = Buffer.from(response.signedBlob).toString("base64");
|
|
126
120
|
const signedJWT = `${unsignedJWT}.${signature}`;
|
|
127
|
-
apiGatewayJwtCache.put(key || apiURL, signedJWT, ttl);
|
|
128
121
|
return signedJWT;
|
|
129
122
|
} catch (error) {
|
|
130
123
|
if (process.env.GCP_IAM_SOFT_FAIL === "true") {
|
|
@@ -135,10 +128,35 @@ var getApiGatewayTokenByUrl = async ({
|
|
|
135
128
|
throw new Error(`Error generating system JWT: ${JSON.stringify(error)}`);
|
|
136
129
|
}
|
|
137
130
|
};
|
|
131
|
+
var getApiGatewayTokenByUrl = async ({
|
|
132
|
+
apiURL,
|
|
133
|
+
key,
|
|
134
|
+
logger
|
|
135
|
+
}) => {
|
|
136
|
+
return checkCache({
|
|
137
|
+
cacheKey: key || apiURL,
|
|
138
|
+
generate: () => generateTokenByUrl({ apiURL, key, logger }),
|
|
139
|
+
logger
|
|
140
|
+
});
|
|
141
|
+
};
|
|
138
142
|
var clearCache = async (key) => {
|
|
139
143
|
apiGatewayJwtCache.clear(key);
|
|
140
144
|
};
|
|
141
|
-
var
|
|
145
|
+
var checkCache = ({
|
|
146
|
+
cacheKey,
|
|
147
|
+
generate,
|
|
148
|
+
logger
|
|
149
|
+
}) => {
|
|
150
|
+
const cachedJwt = apiGatewayJwtCache.get(cacheKey);
|
|
151
|
+
if (cachedJwt) {
|
|
152
|
+
logger?.debug(`JWT for ${cacheKey} found in cache.`);
|
|
153
|
+
return cachedJwt;
|
|
154
|
+
}
|
|
155
|
+
const jwtPromise = generate();
|
|
156
|
+
apiGatewayJwtCache.put(cacheKey, jwtPromise, expInSeconds / 2);
|
|
157
|
+
return jwtPromise;
|
|
158
|
+
};
|
|
159
|
+
var generateTokenByClientId = async (clientId, logger) => {
|
|
142
160
|
try {
|
|
143
161
|
const auth = new import_google_auth_library.GoogleAuth({
|
|
144
162
|
scopes: "https://www.googleapis.com/auth/cloud-platform"
|
|
@@ -155,6 +173,13 @@ var getApiGatewayTokenByClientId = async (clientId, logger) => {
|
|
|
155
173
|
throw new Error(`Error generating system JWT: ${JSON.stringify(error)}`);
|
|
156
174
|
}
|
|
157
175
|
};
|
|
176
|
+
var getApiGatewayTokenByClientId = async (clientId, logger) => {
|
|
177
|
+
return checkCache({
|
|
178
|
+
cacheKey: clientId,
|
|
179
|
+
generate: () => generateTokenByClientId(clientId),
|
|
180
|
+
logger
|
|
181
|
+
});
|
|
182
|
+
};
|
|
158
183
|
// Annotate the CommonJS export names for ESM import in node:
|
|
159
184
|
0 && (module.exports = {
|
|
160
185
|
clearCache,
|
package/dist/index.mjs
CHANGED
|
@@ -44,17 +44,11 @@ var LruCache = class {
|
|
|
44
44
|
// src/apiGatewayToken.ts
|
|
45
45
|
var expInSeconds = 60 * 60;
|
|
46
46
|
var apiGatewayJwtCache = new LruCache();
|
|
47
|
-
var
|
|
47
|
+
var generateTokenByUrl = async ({
|
|
48
48
|
apiURL,
|
|
49
49
|
key,
|
|
50
|
-
ttl,
|
|
51
50
|
logger
|
|
52
51
|
}) => {
|
|
53
|
-
const cachedJwt = apiGatewayJwtCache.get(key || apiURL);
|
|
54
|
-
if (cachedJwt) {
|
|
55
|
-
logger?.debug(`JWT for ${key || apiURL} found in cache.`);
|
|
56
|
-
return cachedJwt;
|
|
57
|
-
}
|
|
58
52
|
try {
|
|
59
53
|
const iamClient = new IAMCredentialsClient();
|
|
60
54
|
const auth = new GoogleAuth();
|
|
@@ -63,7 +57,7 @@ var getApiGatewayTokenByUrl = async ({
|
|
|
63
57
|
if (!serviceAccountEmail) {
|
|
64
58
|
throw new Error("No service account e-mail could be found.");
|
|
65
59
|
}
|
|
66
|
-
logger?.info(`
|
|
60
|
+
logger?.info(`Service account e-mail being used: ${serviceAccountEmail}`);
|
|
67
61
|
const header = {
|
|
68
62
|
alg: "RS256",
|
|
69
63
|
typ: "JWT"
|
|
@@ -96,7 +90,6 @@ var getApiGatewayTokenByUrl = async ({
|
|
|
96
90
|
);
|
|
97
91
|
const signature = Buffer.from(response.signedBlob).toString("base64");
|
|
98
92
|
const signedJWT = `${unsignedJWT}.${signature}`;
|
|
99
|
-
apiGatewayJwtCache.put(key || apiURL, signedJWT, ttl);
|
|
100
93
|
return signedJWT;
|
|
101
94
|
} catch (error) {
|
|
102
95
|
if (process.env.GCP_IAM_SOFT_FAIL === "true") {
|
|
@@ -107,10 +100,35 @@ var getApiGatewayTokenByUrl = async ({
|
|
|
107
100
|
throw new Error(`Error generating system JWT: ${JSON.stringify(error)}`);
|
|
108
101
|
}
|
|
109
102
|
};
|
|
103
|
+
var getApiGatewayTokenByUrl = async ({
|
|
104
|
+
apiURL,
|
|
105
|
+
key,
|
|
106
|
+
logger
|
|
107
|
+
}) => {
|
|
108
|
+
return checkCache({
|
|
109
|
+
cacheKey: key || apiURL,
|
|
110
|
+
generate: () => generateTokenByUrl({ apiURL, key, logger }),
|
|
111
|
+
logger
|
|
112
|
+
});
|
|
113
|
+
};
|
|
110
114
|
var clearCache = async (key) => {
|
|
111
115
|
apiGatewayJwtCache.clear(key);
|
|
112
116
|
};
|
|
113
|
-
var
|
|
117
|
+
var checkCache = ({
|
|
118
|
+
cacheKey,
|
|
119
|
+
generate,
|
|
120
|
+
logger
|
|
121
|
+
}) => {
|
|
122
|
+
const cachedJwt = apiGatewayJwtCache.get(cacheKey);
|
|
123
|
+
if (cachedJwt) {
|
|
124
|
+
logger?.debug(`JWT for ${cacheKey} found in cache.`);
|
|
125
|
+
return cachedJwt;
|
|
126
|
+
}
|
|
127
|
+
const jwtPromise = generate();
|
|
128
|
+
apiGatewayJwtCache.put(cacheKey, jwtPromise, expInSeconds / 2);
|
|
129
|
+
return jwtPromise;
|
|
130
|
+
};
|
|
131
|
+
var generateTokenByClientId = async (clientId, logger) => {
|
|
114
132
|
try {
|
|
115
133
|
const auth = new GoogleAuth({
|
|
116
134
|
scopes: "https://www.googleapis.com/auth/cloud-platform"
|
|
@@ -127,6 +145,13 @@ var getApiGatewayTokenByClientId = async (clientId, logger) => {
|
|
|
127
145
|
throw new Error(`Error generating system JWT: ${JSON.stringify(error)}`);
|
|
128
146
|
}
|
|
129
147
|
};
|
|
148
|
+
var getApiGatewayTokenByClientId = async (clientId, logger) => {
|
|
149
|
+
return checkCache({
|
|
150
|
+
cacheKey: clientId,
|
|
151
|
+
generate: () => generateTokenByClientId(clientId),
|
|
152
|
+
logger
|
|
153
|
+
});
|
|
154
|
+
};
|
|
130
155
|
export {
|
|
131
156
|
clearCache,
|
|
132
157
|
getApiGatewayTokenByClientId,
|