@arbidocs/client 0.3.184 → 0.3.185
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.cjs +32 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -3
- package/dist/index.d.ts +11 -3
- package/dist/index.js +32 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -120,7 +120,38 @@ function generateSalt(username, deploymentDomain) {
|
|
|
120
120
|
const hash = sodium__default.default.crypto_hash_sha256(sodium__default.default.from_string(saltString));
|
|
121
121
|
return hash.slice(0, 16);
|
|
122
122
|
}
|
|
123
|
+
var PREWARM_TTL_MS = 6e4;
|
|
124
|
+
var prewarmed = null;
|
|
125
|
+
function prewarmId(username, password, deploymentDomain) {
|
|
126
|
+
return `${username}\0${deploymentDomain}\0${password}`;
|
|
127
|
+
}
|
|
128
|
+
function dropPrewarmed() {
|
|
129
|
+
if (prewarmed) clearTimeout(prewarmed.timer);
|
|
130
|
+
prewarmed = null;
|
|
131
|
+
}
|
|
132
|
+
function prewarmKeyPairs(username, password, deploymentDomain) {
|
|
133
|
+
if (!username || !password || !deploymentDomain) return;
|
|
134
|
+
const id = prewarmId(username, password, deploymentDomain);
|
|
135
|
+
if (prewarmed?.id === id) return;
|
|
136
|
+
dropPrewarmed();
|
|
137
|
+
const promise = deriveKeyPairs(username, password, deploymentDomain);
|
|
138
|
+
promise.catch(() => {
|
|
139
|
+
if (prewarmed?.promise === promise) dropPrewarmed();
|
|
140
|
+
});
|
|
141
|
+
prewarmed = { id, promise, timer: setTimeout(dropPrewarmed, PREWARM_TTL_MS) };
|
|
142
|
+
}
|
|
123
143
|
async function generateKeyPairs(username, password, deploymentDomain) {
|
|
144
|
+
if (prewarmed && prewarmed.id === prewarmId(username, password, deploymentDomain)) {
|
|
145
|
+
const { promise } = prewarmed;
|
|
146
|
+
dropPrewarmed();
|
|
147
|
+
try {
|
|
148
|
+
return await promise;
|
|
149
|
+
} catch {
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return deriveKeyPairs(username, password, deploymentDomain);
|
|
153
|
+
}
|
|
154
|
+
async function deriveKeyPairs(username, password, deploymentDomain) {
|
|
124
155
|
await initSodium();
|
|
125
156
|
if (!deploymentDomain) {
|
|
126
157
|
throw new Error("Deployment domain not available. Cannot generate keys.");
|
|
@@ -1171,6 +1202,7 @@ exports.initSodium = initSodium;
|
|
|
1171
1202
|
exports.initializeDatabase = initializeDatabase;
|
|
1172
1203
|
exports.isMessageType = isMessageType;
|
|
1173
1204
|
exports.parseServerMessage = parseServerMessage;
|
|
1205
|
+
exports.prewarmKeyPairs = prewarmKeyPairs;
|
|
1174
1206
|
exports.saveSession = saveSession;
|
|
1175
1207
|
exports.sealKeyForSession = sealKeyForSession;
|
|
1176
1208
|
exports.sealedBoxDecrypt = sealedBoxDecrypt;
|