@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,153 @@
|
|
|
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.LifecycleExecutor = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const local_engine_client_1 = require("../local_engine/local-engine-client");
|
|
9
|
+
/**
|
|
10
|
+
* Executes lifecycle methods of an OCP app
|
|
11
|
+
*/
|
|
12
|
+
class LifecycleExecutor {
|
|
13
|
+
constructor(appDir, app, settingsStore, configStore) {
|
|
14
|
+
this.appDir = appDir;
|
|
15
|
+
this.app = app;
|
|
16
|
+
this.settingsStore = settingsStore;
|
|
17
|
+
this.configStore = configStore;
|
|
18
|
+
this.localEngineClient = new local_engine_client_1.LocalEngineClient();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Execute the onInstall lifecycle method
|
|
22
|
+
*/
|
|
23
|
+
async executeInstall() {
|
|
24
|
+
return this.executeLifecycleMethod("onInstall");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Execute the onUninstall lifecycle method
|
|
28
|
+
*/
|
|
29
|
+
async executeUninstall() {
|
|
30
|
+
return this.executeLifecycleMethod("onUninstall");
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Execute the canUninstall lifecycle method
|
|
34
|
+
*/
|
|
35
|
+
async executeCanUninstall() {
|
|
36
|
+
return this.executeLifecycleMethod("canUninstall");
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Execute the onUpgrade lifecycle method
|
|
40
|
+
*/
|
|
41
|
+
async executeUpgrade(fromVersion) {
|
|
42
|
+
return this.executeLifecycleMethod("onUpgrade", { fromVersion });
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Execute the onSettingsForm lifecycle method
|
|
46
|
+
*/
|
|
47
|
+
async executeSettingsForm(page, action, formData) {
|
|
48
|
+
return this.executeLifecycleMethod("onSettingsForm", {
|
|
49
|
+
page,
|
|
50
|
+
action,
|
|
51
|
+
formData,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Execute a lifecycle method by running it in the app's built environment
|
|
56
|
+
*/
|
|
57
|
+
async executeLifecycleMethod(method, params) {
|
|
58
|
+
const startTime = Date.now();
|
|
59
|
+
const logs = [];
|
|
60
|
+
try {
|
|
61
|
+
// Check if lifecycle file exists
|
|
62
|
+
const lifecyclePath = path_1.default.join(this.appDir, "src", "lifecycle", "Lifecycle.ts");
|
|
63
|
+
const distLifecyclePath = path_1.default.join(this.appDir, "dist", "lifecycle", "Lifecycle.js");
|
|
64
|
+
// Try to execute the built lifecycle file if it exists
|
|
65
|
+
const executionResult = await this.executeLifecycleScript(method, params, distLifecyclePath);
|
|
66
|
+
const executionTime = Date.now() - startTime;
|
|
67
|
+
if (executionResult.success) {
|
|
68
|
+
logs.push(`${method} lifecycle hook started`);
|
|
69
|
+
logs.push(...executionResult.logs);
|
|
70
|
+
logs.push(`${method} lifecycle hook completed successfully`);
|
|
71
|
+
return {
|
|
72
|
+
success: true,
|
|
73
|
+
logs,
|
|
74
|
+
executionTime,
|
|
75
|
+
result: executionResult.result,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
logs.push(`${method} lifecycle hook started`);
|
|
80
|
+
logs.push(...executionResult.logs);
|
|
81
|
+
logs.push(`${method} lifecycle hook failed: ${executionResult.error}`);
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
logs,
|
|
85
|
+
error: {
|
|
86
|
+
message: executionResult.error || "Lifecycle method execution failed",
|
|
87
|
+
stack: executionResult.stack,
|
|
88
|
+
},
|
|
89
|
+
executionTime,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const executionTime = Date.now() - startTime;
|
|
95
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
96
|
+
logs.push(`${method} lifecycle hook started`);
|
|
97
|
+
logs.push(`Error executing ${method}: ${errorMessage}`);
|
|
98
|
+
return {
|
|
99
|
+
success: false,
|
|
100
|
+
logs,
|
|
101
|
+
error: {
|
|
102
|
+
message: errorMessage,
|
|
103
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
104
|
+
},
|
|
105
|
+
executionTime,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Execute the lifecycle script using IPC
|
|
111
|
+
*/
|
|
112
|
+
async executeLifecycleScript(method, params = {}, scriptPath) {
|
|
113
|
+
try {
|
|
114
|
+
// Convert request to IPC format
|
|
115
|
+
const ipcRequest = {
|
|
116
|
+
method,
|
|
117
|
+
params,
|
|
118
|
+
scriptPath,
|
|
119
|
+
appDir: this.appDir
|
|
120
|
+
};
|
|
121
|
+
// Prepare app config for IPC
|
|
122
|
+
const appConfig = {
|
|
123
|
+
manifest: this.app.manifest,
|
|
124
|
+
path: this.appDir,
|
|
125
|
+
isBuilt: true,
|
|
126
|
+
isValid: true
|
|
127
|
+
};
|
|
128
|
+
// Execute via IPC
|
|
129
|
+
const result = await this.localEngineClient.executeLifecycle(ipcRequest, appConfig, this.appDir);
|
|
130
|
+
return {
|
|
131
|
+
success: result.success || true,
|
|
132
|
+
logs: [],
|
|
133
|
+
result: result.result
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return {
|
|
138
|
+
success: false,
|
|
139
|
+
logs: [],
|
|
140
|
+
error: error.message,
|
|
141
|
+
stack: error.stack
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Cleanup IPC connections when executor is destroyed
|
|
147
|
+
*/
|
|
148
|
+
async cleanup() {
|
|
149
|
+
await this.localEngineClient.closeAllConnections();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.LifecycleExecutor = LifecycleExecutor;
|
|
153
|
+
//# sourceMappingURL=LifecycleExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LifecycleExecutor.js","sourceRoot":"","sources":["../../../src/executor/LifecycleExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
/**
|
|
4
|
+
* Watches for file changes in an OCP app and triggers rebuilds
|
|
5
|
+
*/
|
|
6
|
+
export declare class AppWatcher extends EventEmitter {
|
|
7
|
+
private watcher;
|
|
8
|
+
private buildInProgress;
|
|
9
|
+
private appDir;
|
|
10
|
+
private buildCommand;
|
|
11
|
+
private lastBuildSuccess;
|
|
12
|
+
private lastBuildTimestamp;
|
|
13
|
+
private lastBuildError;
|
|
14
|
+
private buildLogs;
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new file watcher for the specified app directory
|
|
17
|
+
*/
|
|
18
|
+
constructor(appDir: string);
|
|
19
|
+
/**
|
|
20
|
+
* Start watching for file changes
|
|
21
|
+
*/
|
|
22
|
+
start(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Stop watching for file changes
|
|
25
|
+
*/
|
|
26
|
+
stop(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Handle a file change event
|
|
29
|
+
*/
|
|
30
|
+
private handleFileChange;
|
|
31
|
+
/**
|
|
32
|
+
* Build the app using the configured build command
|
|
33
|
+
*/
|
|
34
|
+
private buildApp;
|
|
35
|
+
/**
|
|
36
|
+
* Trigger a manual build of the app
|
|
37
|
+
*/
|
|
38
|
+
triggerBuild(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Returns whether a build is currently in progress
|
|
41
|
+
*/
|
|
42
|
+
isBuildInProgress(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Returns whether the last build was successful
|
|
45
|
+
*/
|
|
46
|
+
getLastBuildSuccess(): boolean | null;
|
|
47
|
+
/**
|
|
48
|
+
* Returns the timestamp of the last build
|
|
49
|
+
*/
|
|
50
|
+
getLastBuildTimestamp(): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Returns the error message from the last failed build
|
|
53
|
+
*/
|
|
54
|
+
getLastBuildError(): string | null;
|
|
55
|
+
/**
|
|
56
|
+
* Returns the most recent build logs
|
|
57
|
+
*/
|
|
58
|
+
getBuildLogs(limit?: number): Array<{
|
|
59
|
+
type: 'stdout' | 'stderr';
|
|
60
|
+
data: string;
|
|
61
|
+
timestamp: string;
|
|
62
|
+
}>;
|
|
63
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
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.AppWatcher = void 0;
|
|
7
|
+
const chokidar_1 = __importDefault(require("chokidar"));
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const events_1 = require("events");
|
|
11
|
+
const config_1 = require("../server/config");
|
|
12
|
+
const LogManager_1 = require("../logging/LogManager");
|
|
13
|
+
/**
|
|
14
|
+
* Watches for file changes in an OCP app and triggers rebuilds
|
|
15
|
+
*/
|
|
16
|
+
class AppWatcher extends events_1.EventEmitter {
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new file watcher for the specified app directory
|
|
19
|
+
*/
|
|
20
|
+
constructor(appDir) {
|
|
21
|
+
super();
|
|
22
|
+
this.watcher = null;
|
|
23
|
+
this.buildInProgress = false;
|
|
24
|
+
this.lastBuildSuccess = null;
|
|
25
|
+
this.lastBuildTimestamp = null;
|
|
26
|
+
this.lastBuildError = null;
|
|
27
|
+
this.buildLogs = [];
|
|
28
|
+
this.appDir = appDir;
|
|
29
|
+
this.buildCommand = config_1.config.app.buildCommand;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Start watching for file changes
|
|
33
|
+
*/
|
|
34
|
+
start() {
|
|
35
|
+
const watchPaths = config_1.config.app.watchPaths.map(pattern => path_1.default.join(this.appDir, pattern));
|
|
36
|
+
this.watcher = chokidar_1.default.watch(watchPaths, {
|
|
37
|
+
ignored: config_1.config.app.ignorePaths,
|
|
38
|
+
persistent: true,
|
|
39
|
+
ignoreInitial: true
|
|
40
|
+
});
|
|
41
|
+
this.watcher.on('change', (filePath) => {
|
|
42
|
+
this.handleFileChange(filePath);
|
|
43
|
+
});
|
|
44
|
+
this.watcher.on('add', (filePath) => {
|
|
45
|
+
this.handleFileChange(filePath);
|
|
46
|
+
});
|
|
47
|
+
this.watcher.on('unlink', (filePath) => {
|
|
48
|
+
this.handleFileChange(filePath);
|
|
49
|
+
});
|
|
50
|
+
console.log(`Watching for file changes in ${this.appDir}`);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Stop watching for file changes
|
|
54
|
+
*/
|
|
55
|
+
stop() {
|
|
56
|
+
if (this.watcher) {
|
|
57
|
+
this.watcher.close();
|
|
58
|
+
this.watcher = null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Handle a file change event
|
|
63
|
+
*/
|
|
64
|
+
async handleFileChange(filePath) {
|
|
65
|
+
if (this.buildInProgress) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Normalize path for logging
|
|
69
|
+
const relativePath = path_1.default.relative(this.appDir, filePath);
|
|
70
|
+
console.log(`File changed: ${relativePath}`);
|
|
71
|
+
this.buildInProgress = true;
|
|
72
|
+
// Use super.emit() to satisfy TypeScript
|
|
73
|
+
super.emit('buildStart', { file: relativePath });
|
|
74
|
+
const logManager = LogManager_1.LogManager.getInstance();
|
|
75
|
+
logManager.logBuildEvent('started', { file: relativePath });
|
|
76
|
+
try {
|
|
77
|
+
await this.buildApp();
|
|
78
|
+
this.lastBuildSuccess = true;
|
|
79
|
+
this.lastBuildTimestamp = new Date().toISOString();
|
|
80
|
+
this.lastBuildError = null;
|
|
81
|
+
logManager.logBuildEvent('success');
|
|
82
|
+
super.emit('buildSuccess');
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
this.lastBuildSuccess = false;
|
|
86
|
+
this.lastBuildTimestamp = new Date().toISOString();
|
|
87
|
+
this.lastBuildError = error instanceof Error ? error.message : String(error);
|
|
88
|
+
logManager.logBuildEvent('error', {
|
|
89
|
+
error: this.lastBuildError,
|
|
90
|
+
file: relativePath
|
|
91
|
+
});
|
|
92
|
+
super.emit('buildError', error);
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
this.buildInProgress = false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Build the app using the configured build command
|
|
100
|
+
*/
|
|
101
|
+
buildApp() {
|
|
102
|
+
return new Promise((resolve, reject) => {
|
|
103
|
+
console.log(`Building app with command: ${this.buildCommand}`);
|
|
104
|
+
// Split the command into parts for spawn
|
|
105
|
+
const [command, ...args] = this.buildCommand.split(' ');
|
|
106
|
+
const buildProcess = (0, child_process_1.spawn)(command, args, {
|
|
107
|
+
cwd: this.appDir,
|
|
108
|
+
stdio: 'pipe',
|
|
109
|
+
shell: true
|
|
110
|
+
});
|
|
111
|
+
let stdout = '';
|
|
112
|
+
let stderr = '';
|
|
113
|
+
const logManager = LogManager_1.LogManager.getInstance();
|
|
114
|
+
buildProcess.stdout.on('data', (data) => {
|
|
115
|
+
const output = data.toString();
|
|
116
|
+
stdout += output;
|
|
117
|
+
const logEntry = {
|
|
118
|
+
type: 'stdout',
|
|
119
|
+
data: output,
|
|
120
|
+
timestamp: new Date().toISOString()
|
|
121
|
+
};
|
|
122
|
+
this.buildLogs.push(logEntry);
|
|
123
|
+
super.emit('buildLog', logEntry);
|
|
124
|
+
// Log to centralized logging system
|
|
125
|
+
logManager.logBuildOutput(output.trim());
|
|
126
|
+
});
|
|
127
|
+
buildProcess.stderr.on('data', (data) => {
|
|
128
|
+
const output = data.toString();
|
|
129
|
+
stderr += output;
|
|
130
|
+
const logEntry = {
|
|
131
|
+
type: 'stderr',
|
|
132
|
+
data: output,
|
|
133
|
+
timestamp: new Date().toISOString()
|
|
134
|
+
};
|
|
135
|
+
this.buildLogs.push(logEntry);
|
|
136
|
+
super.emit('buildLog', logEntry);
|
|
137
|
+
// Log to centralized logging system
|
|
138
|
+
logManager.logBuildOutput(output.trim(), true);
|
|
139
|
+
});
|
|
140
|
+
buildProcess.on('close', (code) => {
|
|
141
|
+
if (code === 0) {
|
|
142
|
+
console.log('Build completed successfully');
|
|
143
|
+
resolve();
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const error = new Error(`Build failed with exit code ${code}.\n${stderr}`);
|
|
147
|
+
console.error(error);
|
|
148
|
+
reject(error);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Trigger a manual build of the app
|
|
155
|
+
*/
|
|
156
|
+
async triggerBuild() {
|
|
157
|
+
if (this.buildInProgress) {
|
|
158
|
+
throw new Error('Build already in progress');
|
|
159
|
+
}
|
|
160
|
+
this.buildInProgress = true;
|
|
161
|
+
super.emit('buildStart', { file: null });
|
|
162
|
+
try {
|
|
163
|
+
await this.buildApp();
|
|
164
|
+
this.lastBuildSuccess = true;
|
|
165
|
+
this.lastBuildTimestamp = new Date().toISOString();
|
|
166
|
+
this.lastBuildError = null;
|
|
167
|
+
super.emit('buildSuccess');
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
this.lastBuildSuccess = false;
|
|
171
|
+
this.lastBuildTimestamp = new Date().toISOString();
|
|
172
|
+
this.lastBuildError = error instanceof Error ? error.message : String(error);
|
|
173
|
+
super.emit('buildError', error);
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
this.buildInProgress = false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Returns whether a build is currently in progress
|
|
182
|
+
*/
|
|
183
|
+
isBuildInProgress() {
|
|
184
|
+
return this.buildInProgress;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Returns whether the last build was successful
|
|
188
|
+
*/
|
|
189
|
+
getLastBuildSuccess() {
|
|
190
|
+
return this.lastBuildSuccess;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Returns the timestamp of the last build
|
|
194
|
+
*/
|
|
195
|
+
getLastBuildTimestamp() {
|
|
196
|
+
return this.lastBuildTimestamp;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Returns the error message from the last failed build
|
|
200
|
+
*/
|
|
201
|
+
getLastBuildError() {
|
|
202
|
+
return this.lastBuildError;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Returns the most recent build logs
|
|
206
|
+
*/
|
|
207
|
+
getBuildLogs(limit = 100) {
|
|
208
|
+
// Return the most recent logs up to the limit
|
|
209
|
+
return this.buildLogs.slice(-limit);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.AppWatcher = AppWatcher;
|
|
213
|
+
//# sourceMappingURL=watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/executor/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hello.js","sourceRoot":"","sources":["../../../src/functions/hello.js"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG,KAAK,WAAU,OAAO,EAAE,OAAO;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC;IAC3C,OAAO;QACL,OAAO,EAAE,UAAU,IAAI,GAAG;KAC3B,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { startServer } from './server';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startServer = void 0;
|
|
4
|
+
// Export all components for external use
|
|
5
|
+
var server_1 = require("./server");
|
|
6
|
+
Object.defineProperty(exports, "startServer", { enumerable: true, get: function () { return server_1.startServer; } });
|
|
7
|
+
// CLI is the main entry point when installed globally
|
|
8
|
+
// It's not exported as it's meant to be run directly
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AAEpB,sDAAsD;AACtD,qDAAqD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dailyJob.js","sourceRoot":"","sources":["../../../src/jobs/dailyJob.js"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG,KAAK,WAAU,OAAO;IACrC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACzE,OAAO;QACL,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Notifier } from "@zaiusinc/app-sdk";
|
|
2
|
+
export declare class LocalNotifier implements Notifier {
|
|
3
|
+
private notificationStore;
|
|
4
|
+
constructor(appRootDir?: string);
|
|
5
|
+
setInstallationId(installationId: string): void;
|
|
6
|
+
info(activity: string, title: string, summary: string, details?: string): Promise<void>;
|
|
7
|
+
success(activity: string, title: string, summary: string, details?: string): Promise<void>;
|
|
8
|
+
warn(activity: string, title: string, summary: string, details?: string): Promise<void>;
|
|
9
|
+
error(activity: string, title: string, summary: string, details?: string): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalNotifier = void 0;
|
|
4
|
+
const LocalNotificationStore_1 = require("./storage/LocalNotificationStore");
|
|
5
|
+
class LocalNotifier {
|
|
6
|
+
constructor(appRootDir) {
|
|
7
|
+
this.notificationStore = LocalNotificationStore_1.LocalNotificationStore.getInstance(appRootDir);
|
|
8
|
+
}
|
|
9
|
+
setInstallationId(installationId) {
|
|
10
|
+
this.notificationStore.setInstallationId(installationId);
|
|
11
|
+
}
|
|
12
|
+
async info(activity, title, summary, details) {
|
|
13
|
+
this.notificationStore.addNotification("info", activity, title, summary, details);
|
|
14
|
+
}
|
|
15
|
+
async success(activity, title, summary, details) {
|
|
16
|
+
this.notificationStore.addNotification("success", activity, title, summary, details);
|
|
17
|
+
}
|
|
18
|
+
async warn(activity, title, summary, details) {
|
|
19
|
+
this.notificationStore.addNotification("warn", activity, title, summary, details);
|
|
20
|
+
}
|
|
21
|
+
async error(activity, title, summary, details) {
|
|
22
|
+
this.notificationStore.addNotification("error", activity, title, summary, details);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.LocalNotifier = LocalNotifier;
|
|
26
|
+
//# sourceMappingURL=LocalNotifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalNotifier.js","sourceRoot":"","sources":["../../../src/local_engine/LocalNotifier.ts"],"names":[],"mappings":";;;AACA,6EAA0E;AAE1E,MAAa,aAAa;IAGxB,YAAY,UAAmB;QAC7B,IAAI,CAAC,iBAAiB,GAAG,+CAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IAEM,iBAAiB,CAAC,cAAsB;QAC7C,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,OAAgB;QAEhB,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,MAAM,EACN,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,OAAgB;QAEhB,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,OAAgB;QAEhB,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,MAAM,EACN,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CACT,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,OAAgB;QAEhB,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpC,OAAO,EACP,QAAQ,EACR,KAAK,EACL,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC;CACF;AAtED,sCAsEC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for IPC-enabled child processes
|
|
3
|
+
*/
|
|
4
|
+
import { ChildMessage, AppConfig } from './local-engine-types';
|
|
5
|
+
export declare abstract class LocalEngineChildBase {
|
|
6
|
+
protected appConfig?: AppConfig;
|
|
7
|
+
protected appDir?: string;
|
|
8
|
+
protected initialized: boolean;
|
|
9
|
+
protected currentRequestId?: string;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* Initialize the child process and start listening for messages
|
|
13
|
+
*/
|
|
14
|
+
start(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Abstract methods to be implemented by specific wrapper types
|
|
17
|
+
*/
|
|
18
|
+
protected abstract initialize(appConfig: AppConfig, appDir: string): Promise<void>;
|
|
19
|
+
protected abstract executeFunction(request: any): Promise<any>;
|
|
20
|
+
protected abstract executeLifecycle(request: any): Promise<any>;
|
|
21
|
+
protected abstract executeJob(request: any): Promise<any>;
|
|
22
|
+
protected abstract cleanup(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Set up message handlers for parent communication
|
|
25
|
+
*/
|
|
26
|
+
private setupMessageHandlers;
|
|
27
|
+
/**
|
|
28
|
+
* Set up global error handlers
|
|
29
|
+
*/
|
|
30
|
+
private setupErrorHandlers;
|
|
31
|
+
/**
|
|
32
|
+
* Handle incoming messages from parent
|
|
33
|
+
*/
|
|
34
|
+
private handleMessage;
|
|
35
|
+
/**
|
|
36
|
+
* Handle initialization request
|
|
37
|
+
*/
|
|
38
|
+
private handleInitialize;
|
|
39
|
+
/**
|
|
40
|
+
* Handle function execution request
|
|
41
|
+
*/
|
|
42
|
+
private handleExecuteFunction;
|
|
43
|
+
/**
|
|
44
|
+
* Handle lifecycle execution request
|
|
45
|
+
*/
|
|
46
|
+
private handleExecuteLifecycle;
|
|
47
|
+
/**
|
|
48
|
+
* Handle job execution request
|
|
49
|
+
*/
|
|
50
|
+
private handleExecuteJob;
|
|
51
|
+
/**
|
|
52
|
+
* Handle shutdown request
|
|
53
|
+
*/
|
|
54
|
+
private handleShutdown;
|
|
55
|
+
/**
|
|
56
|
+
* Handle cancellation request
|
|
57
|
+
*/
|
|
58
|
+
private handleCancel;
|
|
59
|
+
/**
|
|
60
|
+
* Send ready message to parent
|
|
61
|
+
*/
|
|
62
|
+
protected sendReady(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Send progress update to parent
|
|
65
|
+
*/
|
|
66
|
+
protected sendProgress(requestId: string, message: string, progress?: number): void;
|
|
67
|
+
/**
|
|
68
|
+
* Send log message to parent
|
|
69
|
+
*/
|
|
70
|
+
protected sendLog(level: 'debug' | 'info' | 'warn' | 'error', message: string, requestId?: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Send error message to parent
|
|
73
|
+
*/
|
|
74
|
+
protected sendError(requestId: string, message: string, error: any, executionTime?: number): void;
|
|
75
|
+
/**
|
|
76
|
+
* Send a message to the parent process
|
|
77
|
+
*/
|
|
78
|
+
protected sendMessage(message: ChildMessage): void;
|
|
79
|
+
}
|