chore: update plan automation and chat status UI
This commit is contained in:
94
scripts/capture-auth-utils.mjs
Normal file
94
scripts/capture-auth-utils.mjs
Normal file
@@ -0,0 +1,94 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import process from 'node:process';
|
||||
|
||||
const DEFAULT_CAPTURE_STORAGE_KEY = 'work-app.token-access.registered-token';
|
||||
const DEFAULT_CAPTURE_BASE_URL = 'https://test.sm-home.cloud/';
|
||||
|
||||
function stripWrappingQuotes(value) {
|
||||
if (!value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
if (
|
||||
(value.startsWith('"') && value.endsWith('"')) ||
|
||||
(value.startsWith("'") && value.endsWith("'"))
|
||||
) {
|
||||
return value.slice(1, -1);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
function applyEnvFile(filePath) {
|
||||
if (!fs.existsSync(filePath)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const content = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
for (const rawLine of content.split(/\r?\n/u)) {
|
||||
const line = rawLine.trim();
|
||||
|
||||
if (!line || line.startsWith('#')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const separatorIndex = line.indexOf('=');
|
||||
|
||||
if (separatorIndex <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const key = line.slice(0, separatorIndex).trim();
|
||||
const value = stripWrappingQuotes(line.slice(separatorIndex + 1).trim());
|
||||
|
||||
if (!key || process.env[key] !== undefined) {
|
||||
continue;
|
||||
}
|
||||
|
||||
process.env[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
function loadCaptureEnv(cwd = process.cwd()) {
|
||||
applyEnvFile(path.join(cwd, '.env'));
|
||||
applyEnvFile(path.join(cwd, 'etc/servers/work-server/.env'));
|
||||
}
|
||||
|
||||
export function getCaptureRuntimeConfig(cwd = process.cwd()) {
|
||||
loadCaptureEnv(cwd);
|
||||
|
||||
return {
|
||||
baseUrl:
|
||||
process.env.CAPTURE_BASE_URL?.trim() ||
|
||||
process.env.SERVER_COMMAND_TEST_URL?.trim() ||
|
||||
DEFAULT_CAPTURE_BASE_URL,
|
||||
tokenAccessStorageKey:
|
||||
process.env.CAPTURE_REGISTERED_ACCESS_STORAGE_KEY?.trim() || DEFAULT_CAPTURE_STORAGE_KEY,
|
||||
registeredAccessToken:
|
||||
process.env.CAPTURE_REGISTERED_ACCESS_TOKEN?.trim() ||
|
||||
process.env.VITE_ALLOWED_REGISTRATION_TOKEN?.trim() ||
|
||||
process.env.SERVER_COMMAND_ACCESS_TOKEN?.trim() ||
|
||||
'',
|
||||
};
|
||||
}
|
||||
|
||||
export async function createCaptureContext(browser, options = {}) {
|
||||
const { tokenAccessStorageKey, registeredAccessToken } = getCaptureRuntimeConfig();
|
||||
const context = await browser.newContext(options);
|
||||
|
||||
if (registeredAccessToken) {
|
||||
await context.addInitScript(
|
||||
({ accessToken, storageKey }) => {
|
||||
window.localStorage.setItem(storageKey, accessToken);
|
||||
},
|
||||
{
|
||||
accessToken: registeredAccessToken,
|
||||
storageKey: tokenAccessStorageKey,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
Reference in New Issue
Block a user