@relayplane/proxy 0.1.9 → 0.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/config.js ADDED
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * RelayPlane Proxy Configuration
4
+ *
5
+ * Handles configuration persistence, telemetry settings, and device identity.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.loadConfig = loadConfig;
44
+ exports.saveConfig = saveConfig;
45
+ exports.updateConfig = updateConfig;
46
+ exports.isFirstRun = isFirstRun;
47
+ exports.markFirstRunComplete = markFirstRunComplete;
48
+ exports.isTelemetryEnabled = isTelemetryEnabled;
49
+ exports.enableTelemetry = enableTelemetry;
50
+ exports.disableTelemetry = disableTelemetry;
51
+ exports.getDeviceId = getDeviceId;
52
+ exports.setApiKey = setApiKey;
53
+ exports.getApiKey = getApiKey;
54
+ exports.getConfigDir = getConfigDir;
55
+ exports.getConfigPath = getConfigPath;
56
+ const fs = __importStar(require("fs"));
57
+ const path = __importStar(require("path"));
58
+ const os = __importStar(require("os"));
59
+ const crypto = __importStar(require("crypto"));
60
+ const CONFIG_VERSION = 1;
61
+ const CONFIG_DIR = path.join(os.homedir(), '.relayplane');
62
+ const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
63
+ /**
64
+ * Generate an anonymous device ID
65
+ * Uses a random hash that cannot be traced back to the device
66
+ */
67
+ function generateDeviceId() {
68
+ const randomBytes = crypto.randomBytes(16);
69
+ const hash = crypto.createHash('sha256').update(randomBytes).digest('hex');
70
+ return `anon_${hash.slice(0, 16)}`;
71
+ }
72
+ /**
73
+ * Ensure config directory exists
74
+ */
75
+ function ensureConfigDir() {
76
+ if (!fs.existsSync(CONFIG_DIR)) {
77
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
78
+ }
79
+ }
80
+ /**
81
+ * Create default configuration
82
+ */
83
+ function createDefaultConfig() {
84
+ const now = new Date().toISOString();
85
+ return {
86
+ device_id: generateDeviceId(),
87
+ telemetry_enabled: true, // On by default, opt-out available
88
+ first_run_complete: false,
89
+ config_version: CONFIG_VERSION,
90
+ created_at: now,
91
+ updated_at: now,
92
+ };
93
+ }
94
+ /**
95
+ * Load configuration from disk
96
+ * Creates default config if none exists
97
+ */
98
+ function loadConfig() {
99
+ ensureConfigDir();
100
+ if (!fs.existsSync(CONFIG_FILE)) {
101
+ const config = createDefaultConfig();
102
+ saveConfig(config);
103
+ return config;
104
+ }
105
+ try {
106
+ const data = fs.readFileSync(CONFIG_FILE, 'utf-8');
107
+ const config = JSON.parse(data);
108
+ // Ensure required fields exist (for migrations)
109
+ if (!config.device_id) {
110
+ config.device_id = generateDeviceId();
111
+ }
112
+ if (config.telemetry_enabled === undefined) {
113
+ config.telemetry_enabled = true;
114
+ }
115
+ if (!config.config_version) {
116
+ config.config_version = CONFIG_VERSION;
117
+ }
118
+ return config;
119
+ }
120
+ catch (err) {
121
+ // If config is corrupted, create new one
122
+ const config = createDefaultConfig();
123
+ saveConfig(config);
124
+ return config;
125
+ }
126
+ }
127
+ /**
128
+ * Save configuration to disk
129
+ */
130
+ function saveConfig(config) {
131
+ ensureConfigDir();
132
+ config.updated_at = new Date().toISOString();
133
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
134
+ }
135
+ /**
136
+ * Update specific config fields
137
+ */
138
+ function updateConfig(updates) {
139
+ const config = loadConfig();
140
+ Object.assign(config, updates);
141
+ saveConfig(config);
142
+ return config;
143
+ }
144
+ /**
145
+ * Check if this is the first run (disclosure not shown yet)
146
+ */
147
+ function isFirstRun() {
148
+ const config = loadConfig();
149
+ return !config.first_run_complete;
150
+ }
151
+ /**
152
+ * Mark first run as complete
153
+ */
154
+ function markFirstRunComplete() {
155
+ updateConfig({ first_run_complete: true });
156
+ }
157
+ /**
158
+ * Check if telemetry is enabled
159
+ */
160
+ function isTelemetryEnabled() {
161
+ const config = loadConfig();
162
+ return config.telemetry_enabled;
163
+ }
164
+ /**
165
+ * Enable telemetry
166
+ */
167
+ function enableTelemetry() {
168
+ updateConfig({ telemetry_enabled: true });
169
+ }
170
+ /**
171
+ * Disable telemetry
172
+ */
173
+ function disableTelemetry() {
174
+ updateConfig({ telemetry_enabled: false });
175
+ }
176
+ /**
177
+ * Get device ID for telemetry
178
+ */
179
+ function getDeviceId() {
180
+ const config = loadConfig();
181
+ return config.device_id;
182
+ }
183
+ /**
184
+ * Set API key for Pro features
185
+ */
186
+ function setApiKey(key) {
187
+ updateConfig({ api_key: key });
188
+ }
189
+ /**
190
+ * Get API key
191
+ */
192
+ function getApiKey() {
193
+ const config = loadConfig();
194
+ return config.api_key;
195
+ }
196
+ /**
197
+ * Get config directory path
198
+ */
199
+ function getConfigDir() {
200
+ return CONFIG_DIR;
201
+ }
202
+ /**
203
+ * Get config file path
204
+ */
205
+ function getConfigPath() {
206
+ return CONFIG_FILE;
207
+ }
208
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}