@optimizely/ocp-local-env 1.0.0-beta.4
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/README.md +165 -0
- package/dist/package.json +104 -0
- package/dist/public/bundle.da978bb5437cd82e6d37.js +3 -0
- package/dist/public/bundle.da978bb5437cd82e6d37.js.LICENSE.txt +49 -0
- package/dist/public/bundle.da978bb5437cd82e6d37.js.map +1 -0
- package/dist/public/index.html +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +88 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/executor/FunctionExecutor.d.ts +56 -0
- package/dist/src/executor/FunctionExecutor.js +175 -0
- package/dist/src/executor/FunctionExecutor.js.map +1 -0
- package/dist/src/executor/JobExecutor.d.ts +60 -0
- package/dist/src/executor/JobExecutor.js +203 -0
- package/dist/src/executor/JobExecutor.js.map +1 -0
- package/dist/src/executor/LifecycleExecutor.d.ts +45 -0
- package/dist/src/executor/LifecycleExecutor.js +153 -0
- package/dist/src/executor/LifecycleExecutor.js.map +1 -0
- package/dist/src/executor/watcher.d.ts +63 -0
- package/dist/src/executor/watcher.js +213 -0
- package/dist/src/executor/watcher.js.map +1 -0
- package/dist/src/functions/hello.d.ts +4 -0
- package/dist/src/functions/hello.js +8 -0
- package/dist/src/functions/hello.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/jobs/dailyJob.d.ts +4 -0
- package/dist/src/jobs/dailyJob.js +8 -0
- package/dist/src/jobs/dailyJob.js.map +1 -0
- package/dist/src/local_engine/LocalNotifier.d.ts +10 -0
- package/dist/src/local_engine/LocalNotifier.js +26 -0
- package/dist/src/local_engine/LocalNotifier.js.map +1 -0
- package/dist/src/local_engine/local-engine-child-base.d.ts +79 -0
- package/dist/src/local_engine/local-engine-child-base.js +304 -0
- package/dist/src/local_engine/local-engine-child-base.js.map +1 -0
- package/dist/src/local_engine/local-engine-client.d.ts +80 -0
- package/dist/src/local_engine/local-engine-client.js +333 -0
- package/dist/src/local_engine/local-engine-client.js.map +1 -0
- package/dist/src/local_engine/local-engine-types.d.ts +132 -0
- package/dist/src/local_engine/local-engine-types.js +6 -0
- package/dist/src/local_engine/local-engine-types.js.map +1 -0
- package/dist/src/local_engine/local-engine-unified.d.ts +40 -0
- package/dist/src/local_engine/local-engine-unified.js +406 -0
- package/dist/src/local_engine/local-engine-unified.js.map +1 -0
- package/dist/src/local_engine/local-engine-utils.d.ts +70 -0
- package/dist/src/local_engine/local-engine-utils.js +192 -0
- package/dist/src/local_engine/local-engine-utils.js.map +1 -0
- package/dist/src/local_engine/localSDKConfig.d.ts +30 -0
- package/dist/src/local_engine/localSDKConfig.js +392 -0
- package/dist/src/local_engine/localSDKConfig.js.map +1 -0
- package/dist/src/local_engine/storage/LocalConfigStore.d.ts +56 -0
- package/dist/src/local_engine/storage/LocalConfigStore.js +129 -0
- package/dist/src/local_engine/storage/LocalConfigStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalJobStore.d.ts +110 -0
- package/dist/src/local_engine/storage/LocalJobStore.js +239 -0
- package/dist/src/local_engine/storage/LocalJobStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalKVStore.d.ts +105 -0
- package/dist/src/local_engine/storage/LocalKVStore.js +1002 -0
- package/dist/src/local_engine/storage/LocalKVStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalNotificationStore.d.ts +27 -0
- package/dist/src/local_engine/storage/LocalNotificationStore.js +125 -0
- package/dist/src/local_engine/storage/LocalNotificationStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalSecretsStore.d.ts +114 -0
- package/dist/src/local_engine/storage/LocalSecretsStore.js +319 -0
- package/dist/src/local_engine/storage/LocalSecretsStore.js.map +1 -0
- package/dist/src/local_engine/storage/LocalSettingsStore.d.ts +161 -0
- package/dist/src/local_engine/storage/LocalSettingsStore.js +417 -0
- package/dist/src/local_engine/storage/LocalSettingsStore.js.map +1 -0
- package/dist/src/local_engine/storage/NumberSet.d.ts +21 -0
- package/dist/src/local_engine/storage/NumberSet.js +32 -0
- package/dist/src/local_engine/storage/NumberSet.js.map +1 -0
- package/dist/src/local_engine/storage/StringSet.d.ts +21 -0
- package/dist/src/local_engine/storage/StringSet.js +32 -0
- package/dist/src/local_engine/storage/StringSet.js.map +1 -0
- package/dist/src/local_engine/types.d.ts +52 -0
- package/dist/src/local_engine/types.js +6 -0
- package/dist/src/local_engine/types.js.map +1 -0
- package/dist/src/local_engine/utils.d.ts +31 -0
- package/dist/src/local_engine/utils.js +126 -0
- package/dist/src/local_engine/utils.js.map +1 -0
- package/dist/src/logging/LogManager.d.ts +89 -0
- package/dist/src/logging/LogManager.js +237 -0
- package/dist/src/logging/LogManager.js.map +1 -0
- package/dist/src/server/api/functions.d.ts +7 -0
- package/dist/src/server/api/functions.js +80 -0
- package/dist/src/server/api/functions.js.map +1 -0
- package/dist/src/server/api/jobs.d.ts +8 -0
- package/dist/src/server/api/jobs.js +242 -0
- package/dist/src/server/api/jobs.js.map +1 -0
- package/dist/src/server/api/lifecycle.d.ts +6 -0
- package/dist/src/server/api/lifecycle.js +73 -0
- package/dist/src/server/api/lifecycle.js.map +1 -0
- package/dist/src/server/api/settings.d.ts +6 -0
- package/dist/src/server/api/settings.js +117 -0
- package/dist/src/server/api/settings.js.map +1 -0
- package/dist/src/server/api/stores.d.ts +2 -0
- package/dist/src/server/api/stores.js +341 -0
- package/dist/src/server/api/stores.js.map +1 -0
- package/dist/src/server/api/v1.d.ts +10 -0
- package/dist/src/server/api/v1.js +711 -0
- package/dist/src/server/api/v1.js.map +1 -0
- package/dist/src/server/api.d.ts +8 -0
- package/dist/src/server/api.js +154 -0
- package/dist/src/server/api.js.map +1 -0
- package/dist/src/server/app-discovery.d.ts +5 -0
- package/dist/src/server/app-discovery.js +81 -0
- package/dist/src/server/app-discovery.js.map +1 -0
- package/dist/src/server/config.d.ts +21 -0
- package/dist/src/server/config.js +100 -0
- package/dist/src/server/config.js.map +1 -0
- package/dist/src/server/websocket.d.ts +0 -0
- package/dist/src/server/websocket.js +2 -0
- package/dist/src/server/websocket.js.map +1 -0
- package/dist/src/server.d.ts +2 -0
- package/dist/src/server.js +546 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/types/app.d.ts +155 -0
- package/dist/src/types/app.js +24 -0
- package/dist/src/types/app.js.map +1 -0
- package/dist/src/types/kvstore.d.ts +320 -0
- package/dist/src/types/kvstore.js +5 -0
- package/dist/src/types/kvstore.js.map +1 -0
- package/dist/src/ui/components/App.d.ts +6 -0
- package/dist/src/ui/components/App.js +255 -0
- package/dist/src/ui/components/App.js.map +1 -0
- package/dist/src/ui/components/FunctionsView.d.ts +6 -0
- package/dist/src/ui/components/FunctionsView.js +217 -0
- package/dist/src/ui/components/FunctionsView.js.map +1 -0
- package/dist/src/ui/components/JobsView.d.ts +6 -0
- package/dist/src/ui/components/JobsView.js +257 -0
- package/dist/src/ui/components/JobsView.js.map +1 -0
- package/dist/src/ui/components/KVStoreViewer.d.ts +11 -0
- package/dist/src/ui/components/KVStoreViewer.js +168 -0
- package/dist/src/ui/components/KVStoreViewer.js.map +1 -0
- package/dist/src/ui/components/NotificationViewer.d.ts +16 -0
- package/dist/src/ui/components/NotificationViewer.js +69 -0
- package/dist/src/ui/components/NotificationViewer.js.map +1 -0
- package/dist/src/ui/components/SecretsStoreViewer.d.ts +11 -0
- package/dist/src/ui/components/SecretsStoreViewer.js +179 -0
- package/dist/src/ui/components/SecretsStoreViewer.js.map +1 -0
- package/dist/src/ui/components/SettingsStoreViewer.d.ts +24 -0
- package/dist/src/ui/components/SettingsStoreViewer.js +132 -0
- package/dist/src/ui/components/SettingsStoreViewer.js.map +1 -0
- package/dist/src/ui/components/StoreViewer.d.ts +16 -0
- package/dist/src/ui/components/StoreViewer.js +86 -0
- package/dist/src/ui/components/StoreViewer.js.map +1 -0
- package/dist/src/ui/components/TabbedConsole.d.ts +15 -0
- package/dist/src/ui/components/TabbedConsole.js +93 -0
- package/dist/src/ui/components/TabbedConsole.js.map +1 -0
- package/dist/src/ui/components/common/DataTree.d.ts +15 -0
- package/dist/src/ui/components/common/DataTree.js +95 -0
- package/dist/src/ui/components/common/DataTree.js.map +1 -0
- package/dist/src/ui/components/common/EyeIcon.d.ts +11 -0
- package/dist/src/ui/components/common/EyeIcon.js +11 -0
- package/dist/src/ui/components/common/EyeIcon.js.map +1 -0
- package/dist/src/ui/index.d.ts +1 -0
- package/dist/src/ui/index.js +20 -0
- package/dist/src/ui/index.js.map +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalKVStore.js","sourceRoot":"","sources":["../../../../src/local_engine/storage/LocalKVStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface NotificationEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
status: 'info' | 'success' | 'warn' | 'error';
|
|
4
|
+
activity: string;
|
|
5
|
+
title: string;
|
|
6
|
+
summary: string;
|
|
7
|
+
details?: string;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class LocalNotificationStore {
|
|
11
|
+
private static instances;
|
|
12
|
+
private notificationsDir;
|
|
13
|
+
private currentInstallationId;
|
|
14
|
+
private appRootDir;
|
|
15
|
+
private constructor();
|
|
16
|
+
static getInstance(appRootDir?: string): LocalNotificationStore;
|
|
17
|
+
private ensureDirectoryExists;
|
|
18
|
+
setInstallationId(installationId: string): void;
|
|
19
|
+
private getNotificationsFilePath;
|
|
20
|
+
addNotification(status: 'info' | 'success' | 'warn' | 'error', activity: string, title: string, summary: string, details?: string): void;
|
|
21
|
+
getAllNotifications(): NotificationEntry[];
|
|
22
|
+
clearNotifications(): void;
|
|
23
|
+
deleteNotification(id: string): boolean;
|
|
24
|
+
getLastModified(): string | null;
|
|
25
|
+
private saveNotifications;
|
|
26
|
+
private generateId;
|
|
27
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.LocalNotificationStore = void 0;
|
|
27
|
+
const fs = __importStar(require("fs"));
|
|
28
|
+
const path = __importStar(require("path"));
|
|
29
|
+
class LocalNotificationStore {
|
|
30
|
+
constructor(appRootDir) {
|
|
31
|
+
this.currentInstallationId = null;
|
|
32
|
+
this.appRootDir = appRootDir;
|
|
33
|
+
this.notificationsDir = path.join(appRootDir, '.ocp-local');
|
|
34
|
+
this.ensureDirectoryExists();
|
|
35
|
+
}
|
|
36
|
+
static getInstance(appRootDir) {
|
|
37
|
+
const rootDir = appRootDir || process.cwd();
|
|
38
|
+
if (!LocalNotificationStore.instances.has(rootDir)) {
|
|
39
|
+
LocalNotificationStore.instances.set(rootDir, new LocalNotificationStore(rootDir));
|
|
40
|
+
}
|
|
41
|
+
return LocalNotificationStore.instances.get(rootDir);
|
|
42
|
+
}
|
|
43
|
+
ensureDirectoryExists() {
|
|
44
|
+
if (!fs.existsSync(this.notificationsDir)) {
|
|
45
|
+
fs.mkdirSync(this.notificationsDir, { recursive: true });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
setInstallationId(installationId) {
|
|
49
|
+
this.currentInstallationId = installationId;
|
|
50
|
+
}
|
|
51
|
+
getNotificationsFilePath() {
|
|
52
|
+
const installationId = this.currentInstallationId || 'default';
|
|
53
|
+
return path.join(this.notificationsDir, `notifications-${installationId}.json`);
|
|
54
|
+
}
|
|
55
|
+
addNotification(status, activity, title, summary, details) {
|
|
56
|
+
const notification = {
|
|
57
|
+
id: this.generateId(),
|
|
58
|
+
status,
|
|
59
|
+
activity,
|
|
60
|
+
title,
|
|
61
|
+
summary,
|
|
62
|
+
details,
|
|
63
|
+
timestamp: new Date().toISOString()
|
|
64
|
+
};
|
|
65
|
+
const notifications = this.getAllNotifications();
|
|
66
|
+
notifications.push(notification);
|
|
67
|
+
this.saveNotifications(notifications);
|
|
68
|
+
}
|
|
69
|
+
getAllNotifications() {
|
|
70
|
+
const filePath = this.getNotificationsFilePath();
|
|
71
|
+
if (!fs.existsSync(filePath)) {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
76
|
+
return JSON.parse(data) || [];
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error('Error reading notifications file:', error);
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
clearNotifications() {
|
|
84
|
+
this.saveNotifications([]);
|
|
85
|
+
}
|
|
86
|
+
deleteNotification(id) {
|
|
87
|
+
const notifications = this.getAllNotifications();
|
|
88
|
+
const initialLength = notifications.length;
|
|
89
|
+
const filteredNotifications = notifications.filter(n => n.id !== id);
|
|
90
|
+
if (filteredNotifications.length < initialLength) {
|
|
91
|
+
this.saveNotifications(filteredNotifications);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
getLastModified() {
|
|
97
|
+
const filePath = this.getNotificationsFilePath();
|
|
98
|
+
if (!fs.existsSync(filePath)) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
const stats = fs.statSync(filePath);
|
|
103
|
+
return stats.mtime.toISOString();
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.error('Error getting notifications file stats:', error);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
saveNotifications(notifications) {
|
|
111
|
+
const filePath = this.getNotificationsFilePath();
|
|
112
|
+
try {
|
|
113
|
+
fs.writeFileSync(filePath, JSON.stringify(notifications, null, 2), 'utf8');
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error('Error saving notifications file:', error);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
generateId() {
|
|
120
|
+
return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.LocalNotificationStore = LocalNotificationStore;
|
|
124
|
+
LocalNotificationStore.instances = new Map();
|
|
125
|
+
//# sourceMappingURL=LocalNotificationStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalNotificationStore.js","sourceRoot":"","sources":["../../../../src/local_engine/storage/LocalNotificationStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for local app secrets
|
|
3
|
+
*/
|
|
4
|
+
export interface LocalAppSecrets {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Local secrets store that manages app secrets in .ocp-local/secrets.json
|
|
9
|
+
* Implements singleton pattern to ensure consistent state across wrapper and API
|
|
10
|
+
* Provides basic obfuscation for secrets at rest
|
|
11
|
+
*/
|
|
12
|
+
export declare class LocalSecretsStore {
|
|
13
|
+
private static instances;
|
|
14
|
+
private secretsPath;
|
|
15
|
+
private configDirPath;
|
|
16
|
+
private appRootDir;
|
|
17
|
+
private constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Get or create a singleton instance for the given app directory
|
|
20
|
+
*/
|
|
21
|
+
static getInstance(appRootDir: string): LocalSecretsStore;
|
|
22
|
+
/**
|
|
23
|
+
* Clear all instances (useful for testing)
|
|
24
|
+
*/
|
|
25
|
+
static clearAllInstances(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Ensure the secrets file exists with proper permissions
|
|
28
|
+
*/
|
|
29
|
+
private ensureSecretsFileExists;
|
|
30
|
+
/**
|
|
31
|
+
* Load secrets from disk with basic deobfuscation
|
|
32
|
+
*/
|
|
33
|
+
private loadSecretsFromDisk;
|
|
34
|
+
/**
|
|
35
|
+
* Save secrets to disk with basic obfuscation
|
|
36
|
+
*/
|
|
37
|
+
private saveSecretsToDisk;
|
|
38
|
+
/**
|
|
39
|
+
* Basic obfuscation using Base64 encoding
|
|
40
|
+
*/
|
|
41
|
+
private obfuscateValue;
|
|
42
|
+
/**
|
|
43
|
+
* Basic deobfuscation using Base64 decoding
|
|
44
|
+
*/
|
|
45
|
+
private deobfuscateValue;
|
|
46
|
+
/**
|
|
47
|
+
* Recursively obfuscate object values
|
|
48
|
+
*/
|
|
49
|
+
private obfuscateObject;
|
|
50
|
+
/**
|
|
51
|
+
* Recursively deobfuscate object values
|
|
52
|
+
*/
|
|
53
|
+
private deobfuscateObject;
|
|
54
|
+
/**
|
|
55
|
+
* Get all secrets
|
|
56
|
+
*/
|
|
57
|
+
getSecrets(): LocalAppSecrets;
|
|
58
|
+
/**
|
|
59
|
+
* Get secrets for a specific section/key
|
|
60
|
+
*/
|
|
61
|
+
getSectionSecrets(section: string): any;
|
|
62
|
+
/**
|
|
63
|
+
* Get a specific secret value
|
|
64
|
+
*/
|
|
65
|
+
getSecret(key: string): any;
|
|
66
|
+
/**
|
|
67
|
+
* Set a specific secret value
|
|
68
|
+
*/
|
|
69
|
+
setSecret(key: string, value: any): void;
|
|
70
|
+
/**
|
|
71
|
+
* Update multiple secrets at once
|
|
72
|
+
*/
|
|
73
|
+
updateSecrets(newSecrets: Partial<LocalAppSecrets>): void;
|
|
74
|
+
/**
|
|
75
|
+
* Update secrets for a specific section
|
|
76
|
+
*/
|
|
77
|
+
updateSectionSecrets(section: string, sectionSecrets: any): void;
|
|
78
|
+
/**
|
|
79
|
+
* Delete a specific secret
|
|
80
|
+
*/
|
|
81
|
+
deleteSecret(key: string): void;
|
|
82
|
+
/**
|
|
83
|
+
* Delete specific fields from a secret section
|
|
84
|
+
*/
|
|
85
|
+
deleteSecretFields(section: string, fields: string[]): void;
|
|
86
|
+
/**
|
|
87
|
+
* Clear all secrets (wipe the store)
|
|
88
|
+
*/
|
|
89
|
+
clearSecrets(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Check if secrets store is empty
|
|
92
|
+
*/
|
|
93
|
+
isEmpty(): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Check if a specific secret exists
|
|
96
|
+
*/
|
|
97
|
+
hasSecret(key: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Check if a section has any secrets
|
|
100
|
+
*/
|
|
101
|
+
hasSectionSecrets(section: string): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Get the path to the secrets file
|
|
104
|
+
*/
|
|
105
|
+
getSecretsPath(): string;
|
|
106
|
+
/**
|
|
107
|
+
* Get the config directory path
|
|
108
|
+
*/
|
|
109
|
+
getConfigDirPath(): string;
|
|
110
|
+
/**
|
|
111
|
+
* Wipe all secrets and remove the secrets file (for app uninstall)
|
|
112
|
+
*/
|
|
113
|
+
wipeSecrets(): void;
|
|
114
|
+
}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LocalSecretsStore = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
/**
|
|
10
|
+
* Local secrets store that manages app secrets in .ocp-local/secrets.json
|
|
11
|
+
* Implements singleton pattern to ensure consistent state across wrapper and API
|
|
12
|
+
* Provides basic obfuscation for secrets at rest
|
|
13
|
+
*/
|
|
14
|
+
class LocalSecretsStore {
|
|
15
|
+
constructor(appRootDir) {
|
|
16
|
+
this.appRootDir = appRootDir;
|
|
17
|
+
this.configDirPath = path_1.default.join(appRootDir, '.ocp-local');
|
|
18
|
+
this.secretsPath = path_1.default.join(this.configDirPath, 'secrets.json');
|
|
19
|
+
// Initialize secrets file if it doesn't exist
|
|
20
|
+
this.ensureSecretsFileExists();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get or create a singleton instance for the given app directory
|
|
24
|
+
*/
|
|
25
|
+
static getInstance(appRootDir) {
|
|
26
|
+
const normalizedPath = path_1.default.resolve(appRootDir);
|
|
27
|
+
if (!this.instances.has(normalizedPath)) {
|
|
28
|
+
this.instances.set(normalizedPath, new LocalSecretsStore(normalizedPath));
|
|
29
|
+
}
|
|
30
|
+
return this.instances.get(normalizedPath);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Clear all instances (useful for testing)
|
|
34
|
+
*/
|
|
35
|
+
static clearAllInstances() {
|
|
36
|
+
this.instances.clear();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Ensure the secrets file exists with proper permissions
|
|
40
|
+
*/
|
|
41
|
+
ensureSecretsFileExists() {
|
|
42
|
+
try {
|
|
43
|
+
// Create config directory if it doesn't exist
|
|
44
|
+
if (!fs_1.default.existsSync(this.configDirPath)) {
|
|
45
|
+
fs_1.default.mkdirSync(this.configDirPath, { recursive: true });
|
|
46
|
+
}
|
|
47
|
+
// Create secrets file if it doesn't exist
|
|
48
|
+
if (!fs_1.default.existsSync(this.secretsPath)) {
|
|
49
|
+
const defaultSecrets = {};
|
|
50
|
+
this.saveSecretsToDisk(defaultSecrets);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.warn(`Failed to ensure secrets file exists: ${error instanceof Error ? error.message : String(error)}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Load secrets from disk with basic deobfuscation
|
|
59
|
+
*/
|
|
60
|
+
loadSecretsFromDisk() {
|
|
61
|
+
try {
|
|
62
|
+
if (!fs_1.default.existsSync(this.secretsPath)) {
|
|
63
|
+
return {};
|
|
64
|
+
}
|
|
65
|
+
const fileContent = fs_1.default.readFileSync(this.secretsPath, 'utf-8');
|
|
66
|
+
const obfuscatedData = JSON.parse(fileContent);
|
|
67
|
+
// Deobfuscate the secrets
|
|
68
|
+
const secrets = {};
|
|
69
|
+
for (const [key, value] of Object.entries(obfuscatedData)) {
|
|
70
|
+
try {
|
|
71
|
+
if (typeof value === 'string') {
|
|
72
|
+
// Try to decode Base64, fallback to original value if invalid
|
|
73
|
+
secrets[key] = this.deobfuscateValue(value);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Handle nested objects
|
|
77
|
+
secrets[key] = this.deobfuscateObject(value);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
// If deobfuscation fails, keep original value
|
|
82
|
+
secrets[key] = value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return secrets;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.warn(`Error loading secrets from disk: ${error instanceof Error ? error.message : String(error)}`);
|
|
89
|
+
return {};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Save secrets to disk with basic obfuscation
|
|
94
|
+
*/
|
|
95
|
+
saveSecretsToDisk(secrets) {
|
|
96
|
+
try {
|
|
97
|
+
// Obfuscate the secrets before saving
|
|
98
|
+
const obfuscatedSecrets = {};
|
|
99
|
+
for (const [key, value] of Object.entries(secrets)) {
|
|
100
|
+
if (typeof value === 'string') {
|
|
101
|
+
obfuscatedSecrets[key] = this.obfuscateValue(value);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// Handle nested objects
|
|
105
|
+
obfuscatedSecrets[key] = this.obfuscateObject(value);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const jsonContent = JSON.stringify(obfuscatedSecrets, null, 2);
|
|
109
|
+
// Write to temp file first, then rename for atomicity
|
|
110
|
+
const tempPath = `${this.secretsPath}.tmp`;
|
|
111
|
+
fs_1.default.writeFileSync(tempPath, jsonContent, 'utf-8');
|
|
112
|
+
// Set restrictive permissions on the temp file
|
|
113
|
+
try {
|
|
114
|
+
fs_1.default.chmodSync(tempPath, 0o600); // Read/write for owner only
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
console.warn(`Could not set restrictive permissions on secrets file: ${error instanceof Error ? error.message : String(error)}`);
|
|
118
|
+
}
|
|
119
|
+
// Atomic rename
|
|
120
|
+
fs_1.default.renameSync(tempPath, this.secretsPath);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error(`Error saving secrets to disk: ${error instanceof Error ? error.message : String(error)}`);
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Basic obfuscation using Base64 encoding
|
|
129
|
+
*/
|
|
130
|
+
obfuscateValue(value) {
|
|
131
|
+
return Buffer.from(value, 'utf-8').toString('base64');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Basic deobfuscation using Base64 decoding
|
|
135
|
+
*/
|
|
136
|
+
deobfuscateValue(value) {
|
|
137
|
+
try {
|
|
138
|
+
return Buffer.from(value, 'base64').toString('utf-8');
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
// If Base64 decoding fails, return original value
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Recursively obfuscate object values
|
|
147
|
+
*/
|
|
148
|
+
obfuscateObject(obj) {
|
|
149
|
+
if (typeof obj === 'string') {
|
|
150
|
+
return this.obfuscateValue(obj);
|
|
151
|
+
}
|
|
152
|
+
else if (Array.isArray(obj)) {
|
|
153
|
+
return obj.map(item => this.obfuscateObject(item));
|
|
154
|
+
}
|
|
155
|
+
else if (obj !== null && typeof obj === 'object') {
|
|
156
|
+
const obfuscated = {};
|
|
157
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
158
|
+
obfuscated[key] = this.obfuscateObject(value);
|
|
159
|
+
}
|
|
160
|
+
return obfuscated;
|
|
161
|
+
}
|
|
162
|
+
return obj;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Recursively deobfuscate object values
|
|
166
|
+
*/
|
|
167
|
+
deobfuscateObject(obj) {
|
|
168
|
+
if (typeof obj === 'string') {
|
|
169
|
+
return this.deobfuscateValue(obj);
|
|
170
|
+
}
|
|
171
|
+
else if (Array.isArray(obj)) {
|
|
172
|
+
return obj.map(item => this.deobfuscateObject(item));
|
|
173
|
+
}
|
|
174
|
+
else if (obj !== null && typeof obj === 'object') {
|
|
175
|
+
const deobfuscated = {};
|
|
176
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
177
|
+
deobfuscated[key] = this.deobfuscateObject(value);
|
|
178
|
+
}
|
|
179
|
+
return deobfuscated;
|
|
180
|
+
}
|
|
181
|
+
return obj;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get all secrets
|
|
185
|
+
*/
|
|
186
|
+
getSecrets() {
|
|
187
|
+
return this.loadSecretsFromDisk();
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get secrets for a specific section/key
|
|
191
|
+
*/
|
|
192
|
+
getSectionSecrets(section) {
|
|
193
|
+
const secrets = this.loadSecretsFromDisk();
|
|
194
|
+
return secrets[section] || {};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get a specific secret value
|
|
198
|
+
*/
|
|
199
|
+
getSecret(key) {
|
|
200
|
+
const secrets = this.loadSecretsFromDisk();
|
|
201
|
+
return secrets[key];
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Set a specific secret value
|
|
205
|
+
*/
|
|
206
|
+
setSecret(key, value) {
|
|
207
|
+
const secrets = this.loadSecretsFromDisk();
|
|
208
|
+
secrets[key] = value;
|
|
209
|
+
this.saveSecretsToDisk(secrets);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Update multiple secrets at once
|
|
213
|
+
*/
|
|
214
|
+
updateSecrets(newSecrets) {
|
|
215
|
+
const secrets = this.loadSecretsFromDisk();
|
|
216
|
+
const updatedSecrets = { ...secrets, ...newSecrets };
|
|
217
|
+
this.saveSecretsToDisk(updatedSecrets);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Update secrets for a specific section
|
|
221
|
+
*/
|
|
222
|
+
updateSectionSecrets(section, sectionSecrets) {
|
|
223
|
+
const secrets = this.loadSecretsFromDisk();
|
|
224
|
+
if (Object.keys(sectionSecrets).length === 0) {
|
|
225
|
+
// If empty object, delete the section
|
|
226
|
+
delete secrets[section];
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
// Merge with existing section secrets
|
|
230
|
+
secrets[section] = { ...secrets[section], ...sectionSecrets };
|
|
231
|
+
}
|
|
232
|
+
this.saveSecretsToDisk(secrets);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Delete a specific secret
|
|
236
|
+
*/
|
|
237
|
+
deleteSecret(key) {
|
|
238
|
+
const secrets = this.loadSecretsFromDisk();
|
|
239
|
+
delete secrets[key];
|
|
240
|
+
this.saveSecretsToDisk(secrets);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Delete specific fields from a secret section
|
|
244
|
+
*/
|
|
245
|
+
deleteSecretFields(section, fields) {
|
|
246
|
+
const secrets = this.loadSecretsFromDisk();
|
|
247
|
+
const sectionSecrets = secrets[section];
|
|
248
|
+
if (sectionSecrets && typeof sectionSecrets === 'object') {
|
|
249
|
+
fields.forEach(field => {
|
|
250
|
+
delete sectionSecrets[field];
|
|
251
|
+
});
|
|
252
|
+
// If section is empty after deletion, remove it entirely
|
|
253
|
+
if (Object.keys(sectionSecrets).length === 0) {
|
|
254
|
+
delete secrets[section];
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
secrets[section] = sectionSecrets;
|
|
258
|
+
}
|
|
259
|
+
this.saveSecretsToDisk(secrets);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Clear all secrets (wipe the store)
|
|
264
|
+
*/
|
|
265
|
+
clearSecrets() {
|
|
266
|
+
this.saveSecretsToDisk({});
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Check if secrets store is empty
|
|
270
|
+
*/
|
|
271
|
+
isEmpty() {
|
|
272
|
+
const secrets = this.loadSecretsFromDisk();
|
|
273
|
+
return Object.keys(secrets).length === 0;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Check if a specific secret exists
|
|
277
|
+
*/
|
|
278
|
+
hasSecret(key) {
|
|
279
|
+
const secrets = this.loadSecretsFromDisk();
|
|
280
|
+
return key in secrets;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Check if a section has any secrets
|
|
284
|
+
*/
|
|
285
|
+
hasSectionSecrets(section) {
|
|
286
|
+
const secrets = this.loadSecretsFromDisk();
|
|
287
|
+
const sectionSecrets = secrets[section];
|
|
288
|
+
return !!(sectionSecrets && typeof sectionSecrets === 'object' && Object.keys(sectionSecrets).length > 0);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Get the path to the secrets file
|
|
292
|
+
*/
|
|
293
|
+
getSecretsPath() {
|
|
294
|
+
return this.secretsPath;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get the config directory path
|
|
298
|
+
*/
|
|
299
|
+
getConfigDirPath() {
|
|
300
|
+
return this.configDirPath;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Wipe all secrets and remove the secrets file (for app uninstall)
|
|
304
|
+
*/
|
|
305
|
+
wipeSecrets() {
|
|
306
|
+
try {
|
|
307
|
+
if (fs_1.default.existsSync(this.secretsPath)) {
|
|
308
|
+
fs_1.default.unlinkSync(this.secretsPath);
|
|
309
|
+
}
|
|
310
|
+
console.log(`[LocalSecretsStore] Wiped secrets for app: ${this.appRootDir}`);
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
console.warn(`[LocalSecretsStore] Failed to wipe secrets: ${error instanceof Error ? error.message : String(error)}`);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
exports.LocalSecretsStore = LocalSecretsStore;
|
|
318
|
+
LocalSecretsStore.instances = new Map();
|
|
319
|
+
//# sourceMappingURL=LocalSecretsStore.js.map
|