@edgible-team/cli 1.0.1
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/LICENSE +136 -0
- package/README.md +450 -0
- package/dist/client/api-client.js +1057 -0
- package/dist/client/index.js +21 -0
- package/dist/commands/agent.js +1280 -0
- package/dist/commands/ai.js +608 -0
- package/dist/commands/application.js +885 -0
- package/dist/commands/auth.js +570 -0
- package/dist/commands/base/BaseCommand.js +93 -0
- package/dist/commands/base/CommandHandler.js +7 -0
- package/dist/commands/base/command-wrapper.js +58 -0
- package/dist/commands/base/middleware.js +77 -0
- package/dist/commands/config.js +116 -0
- package/dist/commands/connectivity.js +59 -0
- package/dist/commands/debug.js +98 -0
- package/dist/commands/discover.js +144 -0
- package/dist/commands/examples/migrated-command-example.js +180 -0
- package/dist/commands/gateway.js +494 -0
- package/dist/commands/managedGateway.js +787 -0
- package/dist/commands/utils/config-validator.js +76 -0
- package/dist/commands/utils/gateway-prompt.js +79 -0
- package/dist/commands/utils/input-parser.js +120 -0
- package/dist/commands/utils/output-formatter.js +109 -0
- package/dist/config/app-config.js +99 -0
- package/dist/detection/SystemCapabilityDetector.js +1244 -0
- package/dist/detection/ToolDetector.js +305 -0
- package/dist/detection/WorkloadDetector.js +314 -0
- package/dist/di/bindings.js +99 -0
- package/dist/di/container.js +88 -0
- package/dist/di/types.js +32 -0
- package/dist/index.js +52 -0
- package/dist/interfaces/IDaemonManager.js +3 -0
- package/dist/repositories/config-repository.js +62 -0
- package/dist/repositories/gateway-repository.js +35 -0
- package/dist/scripts/postinstall.js +101 -0
- package/dist/services/AgentStatusManager.js +299 -0
- package/dist/services/ConnectivityTester.js +271 -0
- package/dist/services/DependencyInstaller.js +475 -0
- package/dist/services/LocalAgentManager.js +2216 -0
- package/dist/services/application/ApplicationService.js +299 -0
- package/dist/services/auth/AuthService.js +214 -0
- package/dist/services/aws.js +644 -0
- package/dist/services/daemon/DaemonManagerFactory.js +65 -0
- package/dist/services/daemon/DockerDaemonManager.js +395 -0
- package/dist/services/daemon/LaunchdDaemonManager.js +257 -0
- package/dist/services/daemon/PodmanDaemonManager.js +369 -0
- package/dist/services/daemon/SystemdDaemonManager.js +221 -0
- package/dist/services/daemon/WindowsServiceDaemonManager.js +210 -0
- package/dist/services/daemon/index.js +16 -0
- package/dist/services/edgible.js +3060 -0
- package/dist/services/gateway/GatewayService.js +334 -0
- package/dist/state/config.js +146 -0
- package/dist/types/AgentConfig.js +5 -0
- package/dist/types/AgentStatus.js +5 -0
- package/dist/types/ApiClient.js +5 -0
- package/dist/types/ApiRequests.js +5 -0
- package/dist/types/ApiResponses.js +5 -0
- package/dist/types/Application.js +5 -0
- package/dist/types/CaddyJson.js +5 -0
- package/dist/types/UnifiedAgentStatus.js +56 -0
- package/dist/types/WireGuard.js +5 -0
- package/dist/types/Workload.js +5 -0
- package/dist/types/agent.js +5 -0
- package/dist/types/command-options.js +5 -0
- package/dist/types/connectivity.js +5 -0
- package/dist/types/errors.js +250 -0
- package/dist/types/gateway-types.js +5 -0
- package/dist/types/index.js +48 -0
- package/dist/types/models/ApplicationData.js +5 -0
- package/dist/types/models/CertificateData.js +5 -0
- package/dist/types/models/DeviceData.js +5 -0
- package/dist/types/models/DevicePoolData.js +5 -0
- package/dist/types/models/OrganizationData.js +5 -0
- package/dist/types/models/OrganizationInviteData.js +5 -0
- package/dist/types/models/ProviderConfiguration.js +5 -0
- package/dist/types/models/ResourceData.js +5 -0
- package/dist/types/models/ServiceResourceData.js +5 -0
- package/dist/types/models/UserData.js +5 -0
- package/dist/types/route.js +5 -0
- package/dist/types/validation/schemas.js +218 -0
- package/dist/types/validation.js +5 -0
- package/dist/utils/FileIntegrityManager.js +256 -0
- package/dist/utils/PathMigration.js +219 -0
- package/dist/utils/PathResolver.js +235 -0
- package/dist/utils/PlatformDetector.js +277 -0
- package/dist/utils/console-logger.js +130 -0
- package/dist/utils/docker-compose-parser.js +179 -0
- package/dist/utils/errors.js +130 -0
- package/dist/utils/health-checker.js +155 -0
- package/dist/utils/json-logger.js +72 -0
- package/dist/utils/log-formatter.js +293 -0
- package/dist/utils/logger.js +59 -0
- package/dist/utils/network-utils.js +217 -0
- package/dist/utils/output.js +182 -0
- package/dist/utils/passwordValidation.js +91 -0
- package/dist/utils/progress.js +167 -0
- package/dist/utils/sudo-checker.js +22 -0
- package/dist/utils/urls.js +32 -0
- package/dist/utils/validation.js +31 -0
- package/dist/validation/schemas.js +175 -0
- package/dist/validation/validator.js +67 -0
- package/package.json +83 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency injection bindings
|
|
4
|
+
* Registers all services with the container
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.bindServices = bindServices;
|
|
8
|
+
exports.initializeContainer = initializeContainer;
|
|
9
|
+
const container_1 = require("./container");
|
|
10
|
+
const types_1 = require("./types");
|
|
11
|
+
const console_logger_1 = require("../utils/console-logger");
|
|
12
|
+
const app_config_1 = require("../config/app-config");
|
|
13
|
+
const config_1 = require("../state/config");
|
|
14
|
+
const edgible_1 = require("../services/edgible");
|
|
15
|
+
const LocalAgentManager_1 = require("../services/LocalAgentManager");
|
|
16
|
+
const ConnectivityTester_1 = require("../services/ConnectivityTester");
|
|
17
|
+
const WorkloadDetector_1 = require("../detection/WorkloadDetector");
|
|
18
|
+
const ToolDetector_1 = require("../detection/ToolDetector");
|
|
19
|
+
const logger_1 = require("../utils/logger");
|
|
20
|
+
const config_repository_1 = require("../repositories/config-repository");
|
|
21
|
+
const gateway_repository_1 = require("../repositories/gateway-repository");
|
|
22
|
+
const AuthService_1 = require("../services/auth/AuthService");
|
|
23
|
+
const ApplicationService_1 = require("../services/application/ApplicationService");
|
|
24
|
+
const GatewayService_1 = require("../services/gateway/GatewayService");
|
|
25
|
+
/**
|
|
26
|
+
* Bind all services to the container
|
|
27
|
+
*/
|
|
28
|
+
function bindServices(container = (0, container_1.getContainer)()) {
|
|
29
|
+
// Bind configuration
|
|
30
|
+
container.bind(types_1.TYPES.AppConfig, () => (0, app_config_1.getConfig)(), true);
|
|
31
|
+
// Bind logger
|
|
32
|
+
container.bind(types_1.TYPES.Logger, () => {
|
|
33
|
+
const config = container.get(types_1.TYPES.AppConfig);
|
|
34
|
+
const logger = new console_logger_1.ConsoleLogger({
|
|
35
|
+
level: (0, logger_1.parseLogLevel)(config.logLevel),
|
|
36
|
+
colorEnabled: config.colorEnabled,
|
|
37
|
+
plain: config.plain,
|
|
38
|
+
});
|
|
39
|
+
return logger;
|
|
40
|
+
}, true);
|
|
41
|
+
// Bind ConfigManager
|
|
42
|
+
container.bind(types_1.TYPES.ConfigManager, () => new config_1.ConfigManager(), true);
|
|
43
|
+
// Bind Repositories
|
|
44
|
+
container.bind(types_1.TYPES.ConfigRepository, () => {
|
|
45
|
+
const configManager = container.get(types_1.TYPES.ConfigManager);
|
|
46
|
+
return new config_repository_1.ConfigRepositoryImpl(configManager);
|
|
47
|
+
}, true);
|
|
48
|
+
container.bind(types_1.TYPES.GatewayRepository, () => {
|
|
49
|
+
const configManager = container.get(types_1.TYPES.ConfigManager);
|
|
50
|
+
return new gateway_repository_1.GatewayRepositoryImpl(configManager);
|
|
51
|
+
}, true);
|
|
52
|
+
// Bind AuthService
|
|
53
|
+
container.bind(types_1.TYPES.AuthService, () => {
|
|
54
|
+
const config = container.get(types_1.TYPES.AppConfig);
|
|
55
|
+
const configRepository = container.get(types_1.TYPES.ConfigRepository);
|
|
56
|
+
const logger = container.get(types_1.TYPES.Logger);
|
|
57
|
+
return new AuthService_1.AuthServiceImpl(config.apiBaseUrl, configRepository, logger);
|
|
58
|
+
}, true);
|
|
59
|
+
// Bind ApplicationService
|
|
60
|
+
container.bind(types_1.TYPES.ApplicationService, () => {
|
|
61
|
+
const config = container.get(types_1.TYPES.AppConfig);
|
|
62
|
+
const configRepository = container.get(types_1.TYPES.ConfigRepository);
|
|
63
|
+
const authService = container.get(types_1.TYPES.AuthService);
|
|
64
|
+
const logger = container.get(types_1.TYPES.Logger);
|
|
65
|
+
return new ApplicationService_1.ApplicationServiceImpl(config.apiBaseUrl, configRepository, authService, logger);
|
|
66
|
+
}, true);
|
|
67
|
+
// Bind GatewayService
|
|
68
|
+
container.bind(types_1.TYPES.GatewayService, () => {
|
|
69
|
+
const config = container.get(types_1.TYPES.AppConfig);
|
|
70
|
+
const configRepository = container.get(types_1.TYPES.ConfigRepository);
|
|
71
|
+
const gatewayRepository = container.get(types_1.TYPES.GatewayRepository);
|
|
72
|
+
const authService = container.get(types_1.TYPES.AuthService);
|
|
73
|
+
const logger = container.get(types_1.TYPES.Logger);
|
|
74
|
+
return new GatewayService_1.GatewayServiceImpl(config.apiBaseUrl, configRepository, gatewayRepository, authService, logger);
|
|
75
|
+
}, true);
|
|
76
|
+
// Bind EdgibleService
|
|
77
|
+
container.bind(types_1.TYPES.EdgibleService, () => {
|
|
78
|
+
const config = container.get(types_1.TYPES.AppConfig);
|
|
79
|
+
return new edgible_1.EdgibleService(config.apiBaseUrl);
|
|
80
|
+
}, true);
|
|
81
|
+
// Bind LocalAgentManager
|
|
82
|
+
container.bind(types_1.TYPES.LocalAgentManager, () => new LocalAgentManager_1.LocalAgentManager(), true);
|
|
83
|
+
// Bind ConnectivityTester
|
|
84
|
+
container.bind(types_1.TYPES.ConnectivityTester, () => new ConnectivityTester_1.ConnectivityTester(), false);
|
|
85
|
+
// Bind WorkloadDetector
|
|
86
|
+
container.bind(types_1.TYPES.WorkloadDetector, () => new WorkloadDetector_1.WorkloadDetector(), false);
|
|
87
|
+
// Bind ToolDetector
|
|
88
|
+
container.bind(types_1.TYPES.ToolDetector, () => ToolDetector_1.ToolDetector, true);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Initialize container with all bindings
|
|
92
|
+
* Should be called once at application startup
|
|
93
|
+
*/
|
|
94
|
+
function initializeContainer() {
|
|
95
|
+
const container = (0, container_1.getContainer)();
|
|
96
|
+
bindServices(container);
|
|
97
|
+
return container;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=bindings.js.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simple dependency injection container
|
|
4
|
+
* Supports singleton and transient bindings
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Container = void 0;
|
|
8
|
+
exports.getContainer = getContainer;
|
|
9
|
+
exports.setContainer = setContainer;
|
|
10
|
+
exports.resetContainer = resetContainer;
|
|
11
|
+
class Container {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.bindings = new Map();
|
|
14
|
+
this.singletons = new Map();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Register a service binding
|
|
18
|
+
*/
|
|
19
|
+
bind(identifier, factory, singleton = true) {
|
|
20
|
+
this.bindings.set(identifier, { factory, singleton });
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get a service instance
|
|
24
|
+
*/
|
|
25
|
+
get(identifier) {
|
|
26
|
+
const binding = this.bindings.get(identifier);
|
|
27
|
+
if (!binding) {
|
|
28
|
+
throw new Error(`Service not bound: ${identifier.toString()}`);
|
|
29
|
+
}
|
|
30
|
+
if (binding.singleton) {
|
|
31
|
+
if (!this.singletons.has(identifier)) {
|
|
32
|
+
const instance = binding.factory();
|
|
33
|
+
this.singletons.set(identifier, instance);
|
|
34
|
+
}
|
|
35
|
+
return this.singletons.get(identifier);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return binding.factory();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if a service is bound
|
|
43
|
+
*/
|
|
44
|
+
isBound(identifier) {
|
|
45
|
+
return this.bindings.has(identifier);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Clear all bindings and singletons (useful for testing)
|
|
49
|
+
*/
|
|
50
|
+
reset() {
|
|
51
|
+
this.bindings.clear();
|
|
52
|
+
this.singletons.clear();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Unbind a specific service
|
|
56
|
+
*/
|
|
57
|
+
unbind(identifier) {
|
|
58
|
+
this.bindings.delete(identifier);
|
|
59
|
+
this.singletons.delete(identifier);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Container = Container;
|
|
63
|
+
/**
|
|
64
|
+
* Default container instance
|
|
65
|
+
*/
|
|
66
|
+
let defaultContainer = null;
|
|
67
|
+
/**
|
|
68
|
+
* Get default container instance
|
|
69
|
+
*/
|
|
70
|
+
function getContainer() {
|
|
71
|
+
if (!defaultContainer) {
|
|
72
|
+
defaultContainer = new Container();
|
|
73
|
+
}
|
|
74
|
+
return defaultContainer;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Set container instance (useful for testing)
|
|
78
|
+
*/
|
|
79
|
+
function setContainer(container) {
|
|
80
|
+
defaultContainer = container;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Reset default container
|
|
84
|
+
*/
|
|
85
|
+
function resetContainer() {
|
|
86
|
+
defaultContainer = null;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=container.js.map
|
package/dist/di/types.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency injection type identifiers
|
|
4
|
+
* Uses symbol-based keys for type safety
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TYPES = void 0;
|
|
8
|
+
exports.TYPES = {
|
|
9
|
+
// Loggers
|
|
10
|
+
Logger: Symbol.for('Logger'),
|
|
11
|
+
// Services
|
|
12
|
+
EdgibleService: Symbol.for('EdgibleService'),
|
|
13
|
+
AuthService: Symbol.for('AuthService'),
|
|
14
|
+
GatewayService: Symbol.for('GatewayService'),
|
|
15
|
+
ApplicationService: Symbol.for('ApplicationService'),
|
|
16
|
+
GatewaySshService: Symbol.for('GatewaySshService'),
|
|
17
|
+
GatewayDiagnosticsService: Symbol.for('GatewayDiagnosticsService'),
|
|
18
|
+
LocalAgentManager: Symbol.for('LocalAgentManager'),
|
|
19
|
+
ConnectivityTester: Symbol.for('ConnectivityTester'),
|
|
20
|
+
AWSService: Symbol.for('AWSService'),
|
|
21
|
+
// Repositories
|
|
22
|
+
ConfigRepository: Symbol.for('ConfigRepository'),
|
|
23
|
+
GatewayRepository: Symbol.for('GatewayRepository'),
|
|
24
|
+
// Managers
|
|
25
|
+
ConfigManager: Symbol.for('ConfigManager'),
|
|
26
|
+
// Detectors
|
|
27
|
+
WorkloadDetector: Symbol.for('WorkloadDetector'),
|
|
28
|
+
ToolDetector: Symbol.for('ToolDetector'),
|
|
29
|
+
// Configuration
|
|
30
|
+
AppConfig: Symbol.for('AppConfig'),
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=types.js.map
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const errors_1 = require("./utils/errors");
|
|
6
|
+
const output_1 = require("./utils/output");
|
|
7
|
+
const bindings_1 = require("./di/bindings");
|
|
8
|
+
const application_1 = require("./commands/application");
|
|
9
|
+
const gateway_1 = require("./commands/gateway");
|
|
10
|
+
const auth_1 = require("./commands/auth");
|
|
11
|
+
const config_1 = require("./commands/config");
|
|
12
|
+
const discover_1 = require("./commands/discover");
|
|
13
|
+
const connectivity_1 = require("./commands/connectivity");
|
|
14
|
+
const ai_1 = require("./commands/ai");
|
|
15
|
+
const agent_1 = require("./commands/agent");
|
|
16
|
+
const debug_1 = require("./commands/debug");
|
|
17
|
+
const managedGateway_1 = require("./commands/managedGateway");
|
|
18
|
+
// Initialize dependency injection container
|
|
19
|
+
(0, bindings_1.initializeContainer)();
|
|
20
|
+
const program = new commander_1.Command();
|
|
21
|
+
// Set up the CLI
|
|
22
|
+
program
|
|
23
|
+
.name('edgible')
|
|
24
|
+
.description('CLI tool for Edgible service')
|
|
25
|
+
.version('1.0.0')
|
|
26
|
+
.configureHelp({
|
|
27
|
+
helpWidth: 100,
|
|
28
|
+
})
|
|
29
|
+
.option('--no-color', 'Disable colored output')
|
|
30
|
+
.option('--plain', 'Plain text output (no colors, no emojis)')
|
|
31
|
+
.hook('preAction', (thisCommand, actionCommand) => {
|
|
32
|
+
// Apply output configuration based on global options
|
|
33
|
+
const opts = thisCommand.opts();
|
|
34
|
+
(0, output_1.applyOutputConfig)({ noColor: opts.noColor === false, plain: opts.plain === true });
|
|
35
|
+
// Configure error handler
|
|
36
|
+
errors_1.ErrorHandler.setColorEnabled((0, output_1.detectColorSupport)() && opts.plain !== true);
|
|
37
|
+
});
|
|
38
|
+
// Set up command groups
|
|
39
|
+
(0, auth_1.setupAuthCommands)(program);
|
|
40
|
+
(0, application_1.setupApplicationCommands)(program);
|
|
41
|
+
(0, gateway_1.setupGatewayCommands)(program);
|
|
42
|
+
(0, config_1.setupConfigCommands)(program);
|
|
43
|
+
(0, discover_1.setupDiscoverCommands)(program);
|
|
44
|
+
(0, connectivity_1.setupConnectivityCommands)(program);
|
|
45
|
+
(0, ai_1.setupAiCommands)(program);
|
|
46
|
+
(0, agent_1.setupAgentCommands)(program);
|
|
47
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
48
|
+
(0, debug_1.setupDebugCommands)(program);
|
|
49
|
+
(0, managedGateway_1.setupManagedGatewayCommands)(program);
|
|
50
|
+
}
|
|
51
|
+
program.parse(process.argv);
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration repository
|
|
4
|
+
* Abstracts config access for better testability and centralized state management
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ConfigRepositoryImpl = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* ConfigRepository implementation using ConfigManager
|
|
10
|
+
*/
|
|
11
|
+
class ConfigRepositoryImpl {
|
|
12
|
+
constructor(configManager) {
|
|
13
|
+
this.configManager = configManager;
|
|
14
|
+
}
|
|
15
|
+
getConfig() {
|
|
16
|
+
return this.configManager.getConfig();
|
|
17
|
+
}
|
|
18
|
+
updateConfig(updates) {
|
|
19
|
+
this.configManager.updateConfig(updates);
|
|
20
|
+
}
|
|
21
|
+
isFirstRun() {
|
|
22
|
+
return this.configManager.isFirstRun();
|
|
23
|
+
}
|
|
24
|
+
setFirstRunComplete() {
|
|
25
|
+
this.configManager.setFirstRunComplete();
|
|
26
|
+
}
|
|
27
|
+
setEmail(email) {
|
|
28
|
+
this.configManager.setEmail(email);
|
|
29
|
+
}
|
|
30
|
+
getEmail() {
|
|
31
|
+
return this.configManager.getEmail();
|
|
32
|
+
}
|
|
33
|
+
setAccountStatus(exists) {
|
|
34
|
+
this.configManager.setAccountStatus(exists);
|
|
35
|
+
}
|
|
36
|
+
hasAccount() {
|
|
37
|
+
return this.configManager.hasAccount();
|
|
38
|
+
}
|
|
39
|
+
clearConfig() {
|
|
40
|
+
this.configManager.clearConfig();
|
|
41
|
+
}
|
|
42
|
+
setAWSProfile(profile) {
|
|
43
|
+
this.configManager.setAWSProfile(profile);
|
|
44
|
+
}
|
|
45
|
+
getAWSProfile() {
|
|
46
|
+
return this.configManager.getAWSProfile();
|
|
47
|
+
}
|
|
48
|
+
setAWSRegion(region) {
|
|
49
|
+
this.configManager.setAWSRegion(region);
|
|
50
|
+
}
|
|
51
|
+
getAWSRegion() {
|
|
52
|
+
return this.configManager.getAWSRegion();
|
|
53
|
+
}
|
|
54
|
+
setDeviceType(deviceType) {
|
|
55
|
+
this.configManager.setDeviceType(deviceType);
|
|
56
|
+
}
|
|
57
|
+
getDeviceType() {
|
|
58
|
+
return this.configManager.getDeviceType();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.ConfigRepositoryImpl = ConfigRepositoryImpl;
|
|
62
|
+
//# sourceMappingURL=config-repository.js.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Gateway repository
|
|
4
|
+
* Manages gateway state and configuration
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.GatewayRepositoryImpl = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* GatewayRepository implementation using ConfigManager
|
|
10
|
+
*/
|
|
11
|
+
class GatewayRepositoryImpl {
|
|
12
|
+
constructor(configManager) {
|
|
13
|
+
this.configManager = configManager;
|
|
14
|
+
}
|
|
15
|
+
addGateway(gatewayId, gatewayInfo) {
|
|
16
|
+
this.configManager.addGateway(gatewayId, gatewayInfo);
|
|
17
|
+
}
|
|
18
|
+
getGateway(gatewayId) {
|
|
19
|
+
return this.configManager.getGateway(gatewayId);
|
|
20
|
+
}
|
|
21
|
+
getGateways() {
|
|
22
|
+
return this.configManager.getGateways();
|
|
23
|
+
}
|
|
24
|
+
removeGateway(gatewayId) {
|
|
25
|
+
this.configManager.removeGateway(gatewayId);
|
|
26
|
+
}
|
|
27
|
+
hasGateway(gatewayId) {
|
|
28
|
+
return this.getGateway(gatewayId) !== undefined;
|
|
29
|
+
}
|
|
30
|
+
listGatewayIds() {
|
|
31
|
+
return Object.keys(this.getGateways());
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.GatewayRepositoryImpl = GatewayRepositoryImpl;
|
|
35
|
+
//# sourceMappingURL=gateway-repository.js.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Post-Install Script
|
|
5
|
+
*
|
|
6
|
+
* Displays welcome message and performs basic environment checks after installation.
|
|
7
|
+
* This runs automatically after `npm install` or `npm install -g edgible-cli`.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
const { execSync } = require('child_process');
|
|
13
|
+
|
|
14
|
+
// Colors for console output
|
|
15
|
+
const colors = {
|
|
16
|
+
reset: '\x1b[0m',
|
|
17
|
+
bright: '\x1b[1m',
|
|
18
|
+
green: '\x1b[32m',
|
|
19
|
+
yellow: '\x1b[33m',
|
|
20
|
+
cyan: '\x1b[36m',
|
|
21
|
+
gray: '\x1b[90m'
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
function log(message, color = colors.reset) {
|
|
25
|
+
console.log(`${color}${message}${colors.reset}`);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function checkNodeVersion() {
|
|
29
|
+
const version = process.version;
|
|
30
|
+
const major = parseInt(version.split('.')[0].substring(1));
|
|
31
|
+
|
|
32
|
+
if (major < 16) {
|
|
33
|
+
log(`\n⚠️ Warning: Node.js ${version} detected. Edgible CLI requires Node.js >=16.0.0`, colors.yellow);
|
|
34
|
+
log(` Please upgrade Node.js: https://nodejs.org/\n`, colors.gray);
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function checkIfGlobalInstall() {
|
|
41
|
+
// Check if running in global node_modules
|
|
42
|
+
const isGlobal = __dirname.includes('node_modules') &&
|
|
43
|
+
(__dirname.includes('/lib/node_modules/') ||
|
|
44
|
+
__dirname.includes('\\lib\\node_modules\\'));
|
|
45
|
+
return isGlobal;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function main() {
|
|
49
|
+
try {
|
|
50
|
+
// Skip in CI environments
|
|
51
|
+
if (process.env.CI || process.env.EDGIBLE_NO_INTERACTIVE) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
log('\n');
|
|
56
|
+
log('═══════════════════════════════════════════════════════', colors.cyan);
|
|
57
|
+
log(' ✨ Welcome to Edgible CLI!', colors.bright + colors.cyan);
|
|
58
|
+
log('═══════════════════════════════════════════════════════', colors.cyan);
|
|
59
|
+
log('\n');
|
|
60
|
+
|
|
61
|
+
// Check Node.js version
|
|
62
|
+
const nodeOk = checkNodeVersion();
|
|
63
|
+
|
|
64
|
+
// Check if global install
|
|
65
|
+
const isGlobal = checkIfGlobalInstall();
|
|
66
|
+
|
|
67
|
+
if (isGlobal) {
|
|
68
|
+
log('✅ Edgible CLI installed globally', colors.green);
|
|
69
|
+
log('\n');
|
|
70
|
+
log('Quick Start:', colors.bright);
|
|
71
|
+
log(' 1. Run: edgible login', colors.gray);
|
|
72
|
+
log(' 2. Run: edgible --help', colors.gray);
|
|
73
|
+
log('\n');
|
|
74
|
+
} else {
|
|
75
|
+
log('📦 Edgible CLI installed locally', colors.cyan);
|
|
76
|
+
log('\n');
|
|
77
|
+
log('Quick Start:', colors.bright);
|
|
78
|
+
log(' 1. Run: npx edgible login', colors.gray);
|
|
79
|
+
log(' 2. Run: npx edgible --help', colors.gray);
|
|
80
|
+
log('\n');
|
|
81
|
+
log('For global access, install with: npm install -g edgible-cli', colors.gray);
|
|
82
|
+
log('\n');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
log('Documentation: https://edgible.com/docs', colors.cyan);
|
|
86
|
+
log('Support: https://github.com/edgible/edgible-cli/issues', colors.cyan);
|
|
87
|
+
log('\n');
|
|
88
|
+
|
|
89
|
+
} catch (error) {
|
|
90
|
+
// Silently fail - post-install scripts should not break installation
|
|
91
|
+
// Error is logged to npm but won't stop the process
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Run if called directly
|
|
96
|
+
if (require.main === module) {
|
|
97
|
+
main();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
module.exports = { main };
|
|
101
|
+
|