zephyr-agent 0.0.46 → 0.0.48
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/lib/auth/login.d.ts +1 -7
- package/dist/lib/auth/login.js +63 -50
- package/dist/lib/auth/login.js.map +1 -1
- package/dist/lib/build-context/ze-util-get-git-info.js +2 -2
- package/dist/lib/build-context/ze-util-get-git-info.js.map +1 -1
- package/dist/lib/edge-actions/ze-enable-snapshot-on-pages.js +2 -2
- package/dist/lib/edge-actions/ze-enable-snapshot-on-pages.js.map +1 -1
- package/dist/lib/edge-actions/ze-upload-build-stats.js +2 -2
- package/dist/lib/edge-actions/ze-upload-build-stats.js.map +1 -1
- package/dist/lib/edge-requests/get-application-configuration.d.ts +2 -0
- package/dist/lib/edge-requests/get-application-configuration.js +41 -38
- package/dist/lib/edge-requests/get-application-configuration.js.map +1 -1
- package/dist/lib/edge-requests/get-application-hash-list.js +2 -2
- package/dist/lib/edge-requests/get-application-hash-list.js.map +1 -1
- package/dist/lib/edge-requests/get-build-id.js +2 -2
- package/dist/lib/edge-requests/get-build-id.js.map +1 -1
- package/dist/lib/http/http-request.d.ts +15 -0
- package/dist/lib/http/http-request.js +113 -0
- package/dist/lib/http/http-request.js.map +1 -0
- package/dist/lib/http/upload-envs.js +4 -6
- package/dist/lib/http/upload-envs.js.map +1 -1
- package/dist/lib/http/upload-file.js +2 -2
- package/dist/lib/http/upload-file.js.map +1 -1
- package/dist/lib/http/upload-snapshot.js +5 -9
- package/dist/lib/http/upload-snapshot.js.map +1 -1
- package/dist/lib/logging/ze-log-event.js +3 -3
- package/dist/lib/logging/ze-log-event.js.map +1 -1
- package/dist/lib/node-persist/app-deploy-result-cache.js +4 -8
- package/dist/lib/node-persist/app-deploy-result-cache.js.map +1 -1
- package/dist/lib/node-persist/application-configuration.js +4 -8
- package/dist/lib/node-persist/application-configuration.js.map +1 -1
- package/dist/lib/node-persist/fs-cache.js +5 -9
- package/dist/lib/node-persist/fs-cache.js.map +1 -1
- package/dist/lib/node-persist/hash-cache.js +6 -10
- package/dist/lib/node-persist/hash-cache.js.map +1 -1
- package/dist/lib/node-persist/partial-assets-map.js +4 -8
- package/dist/lib/node-persist/partial-assets-map.js.map +1 -1
- package/dist/lib/node-persist/session-lock.d.ts +17 -0
- package/dist/lib/node-persist/session-lock.js +97 -0
- package/dist/lib/node-persist/session-lock.js.map +1 -0
- package/dist/lib/node-persist/storage-keys.d.ts +3 -2
- package/dist/lib/node-persist/storage-keys.js +14 -2
- package/dist/lib/node-persist/storage-keys.js.map +1 -1
- package/dist/lib/node-persist/storage.d.ts +1 -0
- package/dist/lib/node-persist/storage.js +13 -0
- package/dist/lib/node-persist/storage.js.map +1 -0
- package/dist/lib/node-persist/token.js +6 -10
- package/dist/lib/node-persist/token.js.map +1 -1
- package/dist/lib/transformers/ze-build-dash-data.js +2 -1
- package/dist/lib/transformers/ze-build-dash-data.js.map +1 -1
- package/dist/package.json +3 -1
- package/dist/zephyr-engine/index.js +5 -2
- package/dist/zephyr-engine/index.js.map +1 -1
- package/package.json +4 -2
- package/dist/lib/http/ze-http-request.d.ts +0 -16
- package/dist/lib/http/ze-http-request.js +0 -131
- package/dist/lib/http/ze-http-request.js.map +0 -1
package/dist/lib/auth/login.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @returns The token as a string.
|
|
6
6
|
*/
|
|
7
|
-
export declare function checkAuth(): Promise<
|
|
7
|
+
export declare function checkAuth(): Promise<void>;
|
|
8
8
|
/**
|
|
9
9
|
* Decides whether the token is still valid based on its expiration time.
|
|
10
10
|
*
|
|
@@ -13,9 +13,3 @@ export declare function checkAuth(): Promise<string>;
|
|
|
13
13
|
* @returns Boolean indicating if the token is still valid.
|
|
14
14
|
*/
|
|
15
15
|
export declare function isTokenStillValid(token: string, gap?: number): boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Initiates user authentication and handles token storage.
|
|
18
|
-
*
|
|
19
|
-
* @returns The new token as a string.
|
|
20
|
-
*/
|
|
21
|
-
export declare function authenticateUser(): Promise<string>;
|
package/dist/lib/auth/login.js
CHANGED
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.checkAuth = checkAuth;
|
|
4
4
|
exports.isTokenStillValid = isTokenStillValid;
|
|
5
|
-
exports.authenticateUser = authenticateUser;
|
|
6
5
|
const tslib_1 = require("tslib");
|
|
7
6
|
const jose = tslib_1.__importStar(require("jose"));
|
|
8
7
|
const readline = tslib_1.__importStar(require("node:readline"));
|
|
9
8
|
const zephyr_edge_contract_1 = require("zephyr-edge-contract");
|
|
10
9
|
const errors_1 = require("../errors");
|
|
11
|
-
const
|
|
10
|
+
const http_request_1 = require("../http/http-request");
|
|
12
11
|
const logging_1 = require("../logging");
|
|
13
12
|
const picocolor_1 = require("../logging/picocolor");
|
|
14
13
|
const ze_log_event_1 = require("../logging/ze-log-event");
|
|
@@ -17,6 +16,7 @@ const storage_keys_1 = require("../node-persist/storage-keys");
|
|
|
17
16
|
const token_1 = require("../node-persist/token");
|
|
18
17
|
const auth_flags_1 = require("./auth-flags");
|
|
19
18
|
const websocket_1 = require("./websocket");
|
|
19
|
+
const session_lock_1 = require("../node-persist/session-lock");
|
|
20
20
|
/**
|
|
21
21
|
* Check if the user is already authenticated. If not, ask if they want to open a browser
|
|
22
22
|
* to authenticate. Display a message to the console.
|
|
@@ -24,39 +24,69 @@ const websocket_1 = require("./websocket");
|
|
|
24
24
|
* @returns The token as a string.
|
|
25
25
|
*/
|
|
26
26
|
async function checkAuth() {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
(0,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
28
|
+
try {
|
|
29
|
+
const secret_token = (0, secret_token_1.getSecretToken)();
|
|
30
|
+
if (secret_token) {
|
|
31
|
+
(0, ze_log_event_1.logFn)('debug', 'Token found in environment. Using secret token for authentication.');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const existingToken = await (0, token_1.getToken)();
|
|
35
|
+
if (existingToken) {
|
|
36
|
+
// Check if the token has a valid expiration date.
|
|
37
|
+
if (isTokenStillValid(existingToken, auth_flags_1.TOKEN_EXPIRY.SHORT_VALIDITY_CHECK_SEC)) {
|
|
38
|
+
(0, logging_1.ze_log)('You are already logged in');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
await (0, token_1.removeToken)();
|
|
42
|
+
}
|
|
43
|
+
// In non-TTY environments it's expected that a ZE_SECRET_TOKEN is present
|
|
44
|
+
// since user cannot interact with it.
|
|
45
|
+
if (!picocolor_1.isTTY) {
|
|
46
|
+
(0, ze_log_event_1.logFn)('warn', `Could not load ${storage_keys_1.StorageKeys.ze_secret_token}.`);
|
|
38
47
|
}
|
|
39
|
-
|
|
48
|
+
// No valid token found; initiate authentication.
|
|
49
|
+
(0, ze_log_event_1.logFn)('', `${(0, picocolor_1.yellow)('Authentication required')} - You need to log in to Zephyr Cloud`);
|
|
50
|
+
// Get authentication URL first
|
|
51
|
+
const sessionKey = tslib_1.__addDisposableResource(env_1, (0, session_lock_1.getSessionKey)(), false);
|
|
52
|
+
const authUrl = await getAuthenticationURL(sessionKey.session);
|
|
53
|
+
if (!sessionKey.owner) {
|
|
54
|
+
(0, ze_log_event_1.logFn)('', (0, picocolor_1.gray)('Waiting for session unlock...'));
|
|
55
|
+
}
|
|
56
|
+
const browserController = new AbortController();
|
|
57
|
+
// Tries to open the browser to authenticate the user
|
|
58
|
+
void promptForAuthAction(authUrl, browserController.signal)
|
|
59
|
+
.then(() => openUrl(authUrl))
|
|
60
|
+
.catch(() => fallbackManualLogin(authUrl));
|
|
61
|
+
// We are the owner of the session request, join websocket room
|
|
62
|
+
// and wait for the access token
|
|
63
|
+
if (sessionKey.owner) {
|
|
64
|
+
const newToken = await waitForAccessToken(sessionKey.session).finally(() => browserController.abort());
|
|
65
|
+
await (0, token_1.saveToken)(newToken);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// node-persist is not concurrent safe, so we need to wait for the unlock
|
|
69
|
+
// before next readToken() calls can happen
|
|
70
|
+
// https://github.com/simonlast/node-persist/issues/108#issuecomment-1442305246
|
|
71
|
+
await (0, session_lock_1.waitForUnlock)(browserController.signal);
|
|
72
|
+
const token = await (0, token_1.getToken)();
|
|
73
|
+
// Unlock also happens on timeout, so we need to check if the token was
|
|
74
|
+
// actually saved or not
|
|
75
|
+
if (!token) {
|
|
76
|
+
throw new errors_1.ZephyrError(errors_1.ZeErrors.ERR_AUTH_ERROR, {
|
|
77
|
+
message: 'No token found after authentication finished, did it timeout?',
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
(0, ze_log_event_1.logFn)('', `${(0, picocolor_1.green)('✓')} You are now logged in to Zephyr Cloud\n`);
|
|
82
|
+
}
|
|
83
|
+
catch (e_1) {
|
|
84
|
+
env_1.error = e_1;
|
|
85
|
+
env_1.hasError = true;
|
|
40
86
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (!picocolor_1.isTTY) {
|
|
44
|
-
(0, ze_log_event_1.logFn)('warn', `Could not load ${storage_keys_1.StorageKeys.ze_secret_token}.`);
|
|
87
|
+
finally {
|
|
88
|
+
tslib_1.__disposeResources(env_1);
|
|
45
89
|
}
|
|
46
|
-
// No valid token found; initiate authentication.
|
|
47
|
-
(0, ze_log_event_1.logFn)('', `${(0, picocolor_1.yellow)('Authentication required')} - You need to log in to Zephyr Cloud`);
|
|
48
|
-
// Get authentication URL first
|
|
49
|
-
const sessionKey = generateSessionKey();
|
|
50
|
-
const authUrl = await getAuthenticationURL(sessionKey);
|
|
51
|
-
const browserController = new AbortController();
|
|
52
|
-
// Tries to open the browser to authenticate the user
|
|
53
|
-
void promptForAuthAction(authUrl, browserController.signal)
|
|
54
|
-
.then(() => openUrl(authUrl))
|
|
55
|
-
.catch(() => fallbackManualLogin(authUrl));
|
|
56
|
-
const newToken = await waitForAccessToken(sessionKey).finally(() => browserController.abort());
|
|
57
|
-
await (0, token_1.saveToken)(newToken);
|
|
58
|
-
(0, ze_log_event_1.logFn)('', `${(0, picocolor_1.green)('✓')} You are now logged in to Zephyr Cloud\n`);
|
|
59
|
-
return newToken;
|
|
60
90
|
}
|
|
61
91
|
/**
|
|
62
92
|
* Decides whether the token is still valid based on its expiration time.
|
|
@@ -110,14 +140,9 @@ async function openUrl(url) {
|
|
|
110
140
|
const openModule = (await eval(`import('open')`));
|
|
111
141
|
await openModule.default(url);
|
|
112
142
|
}
|
|
113
|
-
/** Generates a URL-safe random string to use as a session key. */
|
|
114
|
-
function generateSessionKey() {
|
|
115
|
-
return encodeURIComponent(Math.random().toString(36).substring(2, 15) +
|
|
116
|
-
Math.random().toString(36).substring(2, 15));
|
|
117
|
-
}
|
|
118
143
|
/** Generates the URL to authenticate the user. */
|
|
119
144
|
async function getAuthenticationURL(state) {
|
|
120
|
-
const [ok, cause, data] = await
|
|
145
|
+
const [ok, cause, data] = await (0, http_request_1.makeRequest)({
|
|
121
146
|
path: zephyr_edge_contract_1.ze_api_gateway.auth_link,
|
|
122
147
|
base: (0, zephyr_edge_contract_1.ZE_API_ENDPOINT)(),
|
|
123
148
|
query: { state },
|
|
@@ -130,14 +155,6 @@ async function getAuthenticationURL(state) {
|
|
|
130
155
|
}
|
|
131
156
|
return data;
|
|
132
157
|
}
|
|
133
|
-
/**
|
|
134
|
-
* Initiates user authentication and handles token storage.
|
|
135
|
-
*
|
|
136
|
-
* @returns The new token as a string.
|
|
137
|
-
*/
|
|
138
|
-
async function authenticateUser() {
|
|
139
|
-
return await checkAuth();
|
|
140
|
-
}
|
|
141
158
|
/** Waits for the access token to be received from the websocket. */
|
|
142
159
|
async function waitForAccessToken(sessionKey) {
|
|
143
160
|
const { promise, resolve, reject } = (0, zephyr_edge_contract_1.PromiseWithResolvers)();
|
|
@@ -184,10 +201,6 @@ async function waitForAccessToken(sessionKey) {
|
|
|
184
201
|
}, auth_flags_1.DEFAULT_AUTH_COMPLETION_TIMEOUT_MS);
|
|
185
202
|
return await promise;
|
|
186
203
|
}
|
|
187
|
-
catch (error) {
|
|
188
|
-
cleanupSocket();
|
|
189
|
-
throw error;
|
|
190
|
-
}
|
|
191
204
|
finally {
|
|
192
205
|
cleanupSocket();
|
|
193
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/auth/login.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/lib/auth/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getGitInfo = getGitInfo;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const is_ci_1 = tslib_1.__importDefault(require("is-ci"));
|
|
6
|
-
const node_child_process_1 =
|
|
6
|
+
const node_child_process_1 = require("node:child_process");
|
|
7
7
|
const node_crypto_1 = require("node:crypto");
|
|
8
8
|
const node_util_1 = require("node:util");
|
|
9
9
|
const errors_1 = require("../errors");
|
|
10
10
|
const logging_1 = require("../logging");
|
|
11
11
|
const secret_token_1 = require("../node-persist/secret-token");
|
|
12
12
|
const git_provider_utils_1 = require("./git-provider-utils");
|
|
13
|
-
const exec = (0, node_util_1.promisify)(node_child_process_1.
|
|
13
|
+
const exec = (0, node_util_1.promisify)(node_child_process_1.exec);
|
|
14
14
|
/** Loads the git information from the current repository. */
|
|
15
15
|
async function getGitInfo() {
|
|
16
16
|
const hasToken = (0, secret_token_1.hasSecretToken)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ze-util-get-git-info.js","sourceRoot":"","sources":["../../../src/lib/build-context/ze-util-get-git-info.ts"],"names":[],"mappings":";;AAkBA,
|
|
1
|
+
{"version":3,"file":"ze-util-get-git-info.js","sourceRoot":"","sources":["../../../src/lib/build-context/ze-util-get-git-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.zeEnableSnapshotOnPages = zeEnableSnapshotOnPages;
|
|
4
4
|
const get_application_configuration_1 = require("../edge-requests/get-application-configuration");
|
|
5
5
|
const logging_1 = require("../logging");
|
|
6
|
-
const
|
|
6
|
+
const http_request_1 = require("../http/http-request");
|
|
7
7
|
const errors_1 = require("../errors");
|
|
8
8
|
async function zeEnableSnapshotOnPages({ pluginOptions: { application_uid }, envs_jwt, pages_url, }) {
|
|
9
9
|
(0, logging_1.ze_log)('Enabling snapshot on cloudflare pages');
|
|
@@ -13,7 +13,7 @@ async function zeEnableSnapshotOnPages({ pluginOptions: { application_uid }, env
|
|
|
13
13
|
const { EDGE_URL, jwt } = await (0, get_application_configuration_1.getApplicationConfiguration)({
|
|
14
14
|
application_uid,
|
|
15
15
|
});
|
|
16
|
-
const [ok, cause] = await
|
|
16
|
+
const [ok, cause] = await (0, http_request_1.makeRequest)({
|
|
17
17
|
path: '/upload',
|
|
18
18
|
base: EDGE_URL,
|
|
19
19
|
query: { type },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ze-enable-snapshot-on-pages.js","sourceRoot":"","sources":["../../../src/lib/edge-actions/ze-enable-snapshot-on-pages.ts"],"names":[],"mappings":";;AAYA,0DA2CC;AAtDD,kGAA6F;AAC7F,wCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"ze-enable-snapshot-on-pages.js","sourceRoot":"","sources":["../../../src/lib/edge-actions/ze-enable-snapshot-on-pages.ts"],"names":[],"mappings":";;AAYA,0DA2CC;AAtDD,kGAA6F;AAC7F,wCAAoC;AACpC,uDAAmD;AACnD,sCAAkD;AAQ3C,KAAK,UAAU,uBAAuB,CAAC,EAC5C,aAAa,EAAE,EAAE,eAAe,EAAE,EAClC,QAAQ,EACR,SAAS,GACmB;IAC5B,IAAA,gBAAM,EAAC,uCAAuC,CAAC,CAAC;IAChD,IAAA,gBAAM,EAAC,iCAAiC,eAAe,EAAE,CAAC,CAAC;IAE3D,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,iCACtB,QAAQ,KACX,SAAS,IACT,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,IAAA,2DAA2B,EAAC;QAC1D,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,IAAA,0BAAW,EACnC;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,EAAE,IAAI,EAAE;KAChB,EACD;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACpD,cAAc,EAAE,iCAAiC;YACjD,aAAa,EAAE,GAAG;SACnB;KACF,EACD,IAAI,CACL,CAAC;IAEF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,oBAAW,CAAC,iBAAQ,CAAC,sBAAsB,EAAE;YACrD,KAAK;YACL,OAAO,EAAE,iCAAiC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,IAAA,gBAAM,EAAC,8BAA8B,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -5,7 +5,7 @@ const zephyr_edge_contract_1 = require("zephyr-edge-contract");
|
|
|
5
5
|
const logging_1 = require("../logging");
|
|
6
6
|
const debug_1 = require("../logging/debug");
|
|
7
7
|
const token_1 = require("../node-persist/token");
|
|
8
|
-
const
|
|
8
|
+
const http_request_1 = require("../http/http-request");
|
|
9
9
|
const errors_1 = require("../errors");
|
|
10
10
|
/** Returns true if build stats are uploaded successfully, false otherwise. */
|
|
11
11
|
async function zeUploadBuildStats(dashData) {
|
|
@@ -13,7 +13,7 @@ async function zeUploadBuildStats(dashData) {
|
|
|
13
13
|
(0, logging_1.ze_log)(`${debug_1.dimmedName} Uploading build stats to Zephyr...`);
|
|
14
14
|
const token = await (0, token_1.getToken)();
|
|
15
15
|
const url = new URL(zephyr_edge_contract_1.ze_api_gateway.build_stats, (0, zephyr_edge_contract_1.ZE_API_ENDPOINT)());
|
|
16
|
-
const [ok, cause, res] = await
|
|
16
|
+
const [ok, cause, res] = await (0, http_request_1.makeRequest)(url, {
|
|
17
17
|
method: 'POST',
|
|
18
18
|
headers: {
|
|
19
19
|
'Content-Type': 'application/json',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ze-upload-build-stats.js","sourceRoot":"","sources":["../../../src/lib/edge-actions/ze-upload-build-stats.ts"],"names":[],"mappings":";;AAYA,gDAkCC;AA9CD,+DAI8B;AAC9B,wCAAoC;AACpC,4CAA8C;AAC9C,iDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"ze-upload-build-stats.js","sourceRoot":"","sources":["../../../src/lib/edge-actions/ze-upload-build-stats.ts"],"names":[],"mappings":";;AAYA,gDAkCC;AA9CD,+DAI8B;AAC9B,wCAAoC;AACpC,4CAA8C;AAC9C,iDAAiD;AACjD,uDAAmD;AACnD,sCAAkD;AAElD,8EAA8E;AACvE,KAAK,UAAU,kBAAkB,CAAC,QAA0B;IACjE,uDAAuD;IACvD,IAAA,gBAAM,EAAC,GAAG,kBAAU,qCAAqC,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAQ,GAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qCAAc,CAAC,WAAW,EAAE,IAAA,sCAAe,GAAE,CAAC,CAAC;IAEnE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,IAAA,0BAAW,EACxC,GAAG,EACH;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,MAAM,EAAE,kBAAkB;SAC3B;KACF,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;IAEF,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,oBAAW,CAAC,iBAAQ,CAAC,iBAAiB,EAAE;YAChD,IAAI,EAAE,aAAa;YACnB,KAAK;YACL,IAAI,EAAE;gBACJ,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;aACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAA,gBAAM,EAAC,mCAAmC,CAAC,CAAC;IAE5C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -12,4 +12,6 @@ interface GetApplicationConfigurationProps {
|
|
|
12
12
|
* execution
|
|
13
13
|
*/
|
|
14
14
|
export declare function getApplicationConfiguration({ application_uid, }: GetApplicationConfigurationProps): Promise<ZeApplicationConfig>;
|
|
15
|
+
/** Invalidate the cached application configuration */
|
|
16
|
+
export declare function invalidateApplicationConfigCache(): void;
|
|
15
17
|
export {};
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getApplicationConfiguration = getApplicationConfiguration;
|
|
4
|
+
exports.invalidateApplicationConfigCache = invalidateApplicationConfigCache;
|
|
4
5
|
const zephyr_edge_contract_1 = require("zephyr-edge-contract");
|
|
5
6
|
const login_1 = require("../auth/login");
|
|
6
7
|
const errors_1 = require("../errors");
|
|
7
|
-
const
|
|
8
|
-
const ze_http_request_1 = require("../http/ze-http-request");
|
|
8
|
+
const http_request_1 = require("../http/http-request");
|
|
9
9
|
const logging_1 = require("../logging");
|
|
10
10
|
const application_configuration_1 = require("../node-persist/application-configuration");
|
|
11
|
+
const token_1 = require("../node-persist/token");
|
|
11
12
|
async function loadApplicationConfiguration({ application_uid, }) {
|
|
12
13
|
if (!application_uid) {
|
|
13
14
|
throw new errors_1.ZephyrError(errors_1.ZeErrors.ERR_MISSING_APPLICATION_UID);
|
|
14
15
|
}
|
|
15
16
|
const token = await (0, token_1.getToken)();
|
|
16
17
|
const application_config_url = new URL(`${zephyr_edge_contract_1.ze_api_gateway.application_config}/${application_uid}`, (0, zephyr_edge_contract_1.ZE_API_ENDPOINT)());
|
|
17
|
-
const [ok, cause, data] = await
|
|
18
|
+
const [ok, cause, data] = await (0, http_request_1.makeRequest)(application_config_url, {
|
|
18
19
|
headers: { Authorization: `Bearer ${token}` },
|
|
19
20
|
});
|
|
20
21
|
if (!ok || !(data === null || data === void 0 ? void 0 : data.value)) {
|
|
@@ -28,6 +29,11 @@ async function loadApplicationConfiguration({ application_uid, }) {
|
|
|
28
29
|
}
|
|
29
30
|
return Object.assign(Object.assign({}, data.value), { fetched_at: Date.now() });
|
|
30
31
|
}
|
|
32
|
+
// --- 1. Module-level cache --------------------------------------------------
|
|
33
|
+
/** The single shared promise (null when no request is in flight). */
|
|
34
|
+
let inFlight = null;
|
|
35
|
+
/** The last successful result (null until we have fetched at least once). */
|
|
36
|
+
let cachedConfig = null;
|
|
31
37
|
/**
|
|
32
38
|
* Gather all calls until the first returns result:
|
|
33
39
|
*
|
|
@@ -38,9 +44,23 @@ async function loadApplicationConfiguration({ application_uid, }) {
|
|
|
38
44
|
* execution
|
|
39
45
|
*/
|
|
40
46
|
async function getApplicationConfiguration({ application_uid, }) {
|
|
47
|
+
// Fast path: we already have a valid cached config
|
|
48
|
+
if (cachedConfig && cachedConfig.application_uid === application_uid) {
|
|
49
|
+
if ((0, login_1.isTokenStillValid)(cachedConfig.jwt) &&
|
|
50
|
+
cachedConfig.fetched_at &&
|
|
51
|
+
Date.now() - cachedConfig.fetched_at <= 60 * 1000) {
|
|
52
|
+
(0, logging_1.ze_log)('Using cached application configuration');
|
|
53
|
+
return cachedConfig;
|
|
54
|
+
}
|
|
55
|
+
// If the cached config is invalid, clear it
|
|
56
|
+
cachedConfig = null;
|
|
57
|
+
}
|
|
58
|
+
// Another request already in flight → piggy-back on it
|
|
59
|
+
if (inFlight)
|
|
60
|
+
return inFlight;
|
|
61
|
+
// We're the first caller → actually start the fetch
|
|
41
62
|
(0, logging_1.ze_log)('Getting application configuration from node-persist');
|
|
42
|
-
|
|
43
|
-
if (callsQueue.length === 1) {
|
|
63
|
+
inFlight = (async () => {
|
|
44
64
|
const storedAppConfig = await (0, application_configuration_1.getAppConfig)(application_uid);
|
|
45
65
|
if (!storedAppConfig ||
|
|
46
66
|
(storedAppConfig &&
|
|
@@ -48,43 +68,26 @@ async function getApplicationConfiguration({ application_uid, }) {
|
|
|
48
68
|
!(storedAppConfig === null || storedAppConfig === void 0 ? void 0 : storedAppConfig.fetched_at) ||
|
|
49
69
|
Date.now() - storedAppConfig.fetched_at > 60 * 1000))) {
|
|
50
70
|
(0, logging_1.ze_log)('Loading Application Configuration from API...');
|
|
51
|
-
await loadApplicationConfiguration({ application_uid })
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return loadedAppConfig;
|
|
56
|
-
})
|
|
57
|
-
.then((result) => handleQueue(result))
|
|
58
|
-
.catch((error) => handleQueue(undefined, error));
|
|
71
|
+
const loadedAppConfig = await loadApplicationConfiguration({ application_uid });
|
|
72
|
+
(0, logging_1.ze_log)('Saving Application Configuration to node-persist...');
|
|
73
|
+
await (0, application_configuration_1.saveAppConfig)(application_uid, loadedAppConfig);
|
|
74
|
+
return loadedAppConfig;
|
|
59
75
|
}
|
|
60
76
|
else {
|
|
61
|
-
|
|
77
|
+
return storedAppConfig;
|
|
62
78
|
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const callback = (value, error) => {
|
|
71
|
-
if (value) {
|
|
72
|
-
resolve(value);
|
|
73
|
-
}
|
|
74
|
-
reject(error);
|
|
75
|
-
};
|
|
76
|
-
callsQueue.push(callback);
|
|
77
|
-
return new Promise((_resolve, _reject) => {
|
|
78
|
-
resolve = _resolve;
|
|
79
|
-
reject = _reject;
|
|
79
|
+
})()
|
|
80
|
+
.then((config) => {
|
|
81
|
+
cachedConfig = config; // cache the good result
|
|
82
|
+
return config;
|
|
83
|
+
})
|
|
84
|
+
.finally(() => {
|
|
85
|
+
inFlight = null; // allow future refreshes
|
|
80
86
|
});
|
|
87
|
+
return inFlight;
|
|
81
88
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (callback) {
|
|
86
|
-
callback(result, error);
|
|
87
|
-
}
|
|
88
|
-
} while (callsQueue.length);
|
|
89
|
+
/** Invalidate the cached application configuration */
|
|
90
|
+
function invalidateApplicationConfigCache() {
|
|
91
|
+
cachedConfig = null;
|
|
89
92
|
}
|
|
90
93
|
//# sourceMappingURL=get-application-configuration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-application-configuration.js","sourceRoot":"","sources":["../../../src/lib/edge-requests/get-application-configuration.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"get-application-configuration.js","sourceRoot":"","sources":["../../../src/lib/edge-requests/get-application-configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getApplicationHashList = getApplicationHashList;
|
|
4
4
|
const get_application_configuration_1 = require("./get-application-configuration");
|
|
5
|
-
const
|
|
5
|
+
const http_request_1 = require("../http/http-request");
|
|
6
6
|
const errors_1 = require("../errors");
|
|
7
7
|
async function getApplicationHashList({ application_uid, }) {
|
|
8
8
|
const { EDGE_URL } = await (0, get_application_configuration_1.getApplicationConfiguration)({
|
|
@@ -10,7 +10,7 @@ async function getApplicationHashList({ application_uid, }) {
|
|
|
10
10
|
});
|
|
11
11
|
const url = new URL('/__get_application_hash_list__', EDGE_URL);
|
|
12
12
|
url.searchParams.append('application_uid', application_uid);
|
|
13
|
-
const [ok, cause, data] = await
|
|
13
|
+
const [ok, cause, data] = await (0, http_request_1.makeRequest)(url, { method: 'GET' });
|
|
14
14
|
// No point into returning an empty array since if this request fails
|
|
15
15
|
// means the edge is not working properly and we won't be able to upload
|
|
16
16
|
// things anyway
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-application-hash-list.js","sourceRoot":"","sources":["../../../src/lib/edge-requests/get-application-hash-list.ts"],"names":[],"mappings":";;AAQA,wDA8BC;AAtCD,mFAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"get-application-hash-list.js","sourceRoot":"","sources":["../../../src/lib/edge-requests/get-application-hash-list.ts"],"names":[],"mappings":";;AAQA,wDA8BC;AAtCD,mFAA8E;AAC9E,uDAAmD;AACnD,sCAAkD;AAM3C,KAAK,UAAU,sBAAsB,CAAC,EAC3C,eAAe,GACa;IAG5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,2DAA2B,EAAC;QACrD,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;IAChE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAE5D,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,IAAA,0BAAW,EAExC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3B,qEAAqE;IACrE,wEAAwE;IACxE,gBAAgB;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,EAAE,CAAC;QACzB,MAAM,IAAI,oBAAW,CAAC,iBAAQ,CAAC,6BAA6B,EAAE;YAC5D,KAAK;YACL,IAAI,kCACC,IAAI,KACP,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,GACpB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getBuildId = getBuildId;
|
|
4
4
|
const get_application_configuration_1 = require("./get-application-configuration");
|
|
5
5
|
const token_1 = require("../node-persist/token");
|
|
6
|
-
const
|
|
6
|
+
const http_request_1 = require("../http/http-request");
|
|
7
7
|
const errors_1 = require("../errors");
|
|
8
8
|
const logging_1 = require("../logging");
|
|
9
9
|
async function getBuildId(application_uid) {
|
|
@@ -17,7 +17,7 @@ async function getBuildId(application_uid) {
|
|
|
17
17
|
Authorization: 'Bearer ' + token,
|
|
18
18
|
},
|
|
19
19
|
};
|
|
20
|
-
const [ok, cause, data] = await
|
|
20
|
+
const [ok, cause, data] = await (0, http_request_1.makeRequest)(BUILD_ID_ENDPOINT, options);
|
|
21
21
|
if (!ok || !data[user_uuid]) {
|
|
22
22
|
throw new errors_1.ZephyrError(errors_1.ZeErrors.ERR_GET_BUILD_ID, {
|
|
23
23
|
application_uid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-build-id.js","sourceRoot":"","sources":["../../../src/lib/edge-requests/get-build-id.ts"],"names":[],"mappings":";;AAMA,gCA+BC;AArCD,mFAA8E;AAC9E,iDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"get-build-id.js","sourceRoot":"","sources":["../../../src/lib/edge-requests/get-build-id.ts"],"names":[],"mappings":";;AAMA,gCA+BC;AArCD,mFAA8E;AAC9E,iDAAiD;AACjD,uDAAmD;AACnD,sCAAkD;AAClD,wCAAoC;AAE7B,KAAK,UAAU,UAAU,CAAC,eAAuB;IACtD,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,GACnD,MAAM,IAAA,2DAA2B,EAAC;QAChC,eAAe;KAChB,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAQ,GAAE,CAAC;IAE/B,MAAM,OAAO,GAAG;QACd,OAAO,EAAE;YACP,aAAa,EAAE,GAAG;YAClB,aAAa,EAAE,SAAS,GAAG,KAAK;SACjC;KACF,CAAC;IAEF,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,IAAA,0BAAW,EACzC,iBAAiB,EACjB,OAAO,CACR,CAAC;IAEF,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,oBAAW,CAAC,iBAAQ,CAAC,gBAAgB,EAAE;YAC/C,eAAe;YACf,QAAQ;YACR,KAAK;YACL,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAA,gBAAM,EAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Http request wrapper that returns a tuple with the response data or an error. */
|
|
2
|
+
export type HttpResponse<T> = [ok: true, error: null, data: T] | [ok: false, error: Error];
|
|
3
|
+
export type UrlString = string | URL | {
|
|
4
|
+
path: string;
|
|
5
|
+
base?: string;
|
|
6
|
+
query: Record<string, string | number | boolean>;
|
|
7
|
+
};
|
|
8
|
+
/** Parses the URL string into a URL object */
|
|
9
|
+
export declare function parseUrl(urlStr: UrlString): URL;
|
|
10
|
+
/** Main HTTP request function that handles the request and response */
|
|
11
|
+
export declare function makeHttpRequest<T = void>(url: URL, options?: RequestInit, data?: string | Buffer): Promise<HttpResponse<T>>;
|
|
12
|
+
/** Creates a request that returns a promise for the HTTP response */
|
|
13
|
+
export declare function makeRequest<T = void>(urlStr: UrlString, options?: RequestInit, data?: string | Buffer): Promise<HttpResponse<T>>;
|
|
14
|
+
/** Transforms `Promise<HttpResponse<T>>` into `Promise<T>` */
|
|
15
|
+
export declare function unwrapResponse<T>(response: Promise<HttpResponse<T>>): Promise<T>;
|