@xenon-device-management/xenon 1.1.2 → 1.1.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 +1 -1
- package/lib/package.json +18 -16
- package/lib/src/prisma.js +28 -6
- package/lib/test/e2e/startup-verification.spec.js +54 -0
- package/lib/test/unit/prisma.spec.js +23 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -16
package/README.md
CHANGED
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xenon-device-management/xenon",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Xenon - Intelligent Mobile Infrastructure. A self-healing device orchestration platform for Appium.",
|
|
5
5
|
"main": "./lib/src/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"./package.json": "./package.json"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build": "tsc -b && npm run build:copy",
|
|
12
|
+
"build": "npx prisma generate && tsc -b && npm run build:copy",
|
|
13
13
|
"build:all": "npm run build:xenon && npm run build",
|
|
14
14
|
"build:copy": "rm -rf lib/public && mkdir -p lib && cp -R src/public lib/ && cp schema.json lib/",
|
|
15
15
|
"build:schema": "node scripts/generate-types-from-schema.js",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"format": "prettier --write \"{src,web,test}/**/*.{ts,tsx,json,md}\" --single-quote",
|
|
30
30
|
"db:migrate": "path-exists lib/src/scripts/initialize-database.js && node lib/src/scripts/initialize-database.js || ts-node src/scripts/initialize-database.ts",
|
|
31
31
|
"db:generate": "ts-node src/scripts/generate-database-migration.ts",
|
|
32
|
+
"prepare": "npx prisma generate",
|
|
32
33
|
"prepublishOnly": "npm run build:all"
|
|
33
34
|
},
|
|
34
35
|
"repository": {
|
|
@@ -118,6 +119,7 @@
|
|
|
118
119
|
"zod": "^4.3.6"
|
|
119
120
|
},
|
|
120
121
|
"overrides": {
|
|
122
|
+
"unzipper": "^0.12.3",
|
|
121
123
|
"usbmux": {
|
|
122
124
|
"plist": {
|
|
123
125
|
"xmldom": "npm:@xmldom/xmldom@^0.9.8"
|
|
@@ -131,8 +133,8 @@
|
|
|
131
133
|
"@appium/docutils": "^0.4.11",
|
|
132
134
|
"@appium/fake-driver": "^6.0.1",
|
|
133
135
|
"@appium/plugin-test-support": "^1.0.3",
|
|
134
|
-
"@babel/core": "7.23.9",
|
|
135
|
-
"@babel/plugin-
|
|
136
|
+
"@babel/core": "^7.23.9",
|
|
137
|
+
"@babel/plugin-transform-class-properties": "^7.23.3",
|
|
136
138
|
"@types/async-lock": "1.4.2",
|
|
137
139
|
"@types/bluebird": "^3.5.42",
|
|
138
140
|
"@types/chai": "4.3.10",
|
|
@@ -141,7 +143,7 @@
|
|
|
141
143
|
"@types/fs-extra": "^11.0.0",
|
|
142
144
|
"@types/ip": "^1.1.2",
|
|
143
145
|
"@types/js-yaml": "^4.0.9",
|
|
144
|
-
"@types/lodash": "4.14.202",
|
|
146
|
+
"@types/lodash": "^4.14.202",
|
|
145
147
|
"@types/lokijs": "1.5.14",
|
|
146
148
|
"@types/mocha": "9.1.1",
|
|
147
149
|
"@types/node-schedule": "1.3.2",
|
|
@@ -149,34 +151,34 @@
|
|
|
149
151
|
"@types/sinon-chai": "^3.2.12",
|
|
150
152
|
"@types/swagger-jsdoc": "^6.0.4",
|
|
151
153
|
"@types/swagger-ui-express": "^4.1.8",
|
|
152
|
-
"@types/tcp-port-used": "1.0.4",
|
|
154
|
+
"@types/tcp-port-used": "^1.0.4",
|
|
153
155
|
"@types/uuid": "8.3.4",
|
|
154
156
|
"@types/yargs": "17.0.32",
|
|
155
157
|
"@typescript-eslint/eslint-plugin": "5.62.0",
|
|
156
158
|
"@typescript-eslint/parser": "5.62.0",
|
|
157
159
|
"@wdio/types": "^8.24.2",
|
|
158
|
-
"appium": "3.1.1",
|
|
160
|
+
"appium": "^3.1.1",
|
|
159
161
|
"appium-uiautomator2-driver": "^5.0.3",
|
|
160
162
|
"appium-xcuitest-driver": "^10.1.2",
|
|
161
|
-
"babel-
|
|
162
|
-
"chai": "4.3.10",
|
|
163
|
+
"@babel/eslint-parser": "^7.23.3",
|
|
164
|
+
"chai": "^4.3.10",
|
|
163
165
|
"chai-as-promised": "^7.1.1",
|
|
164
166
|
"chai-exclude": "^2.1.0",
|
|
165
167
|
"dotenv": "^16.3.1",
|
|
166
|
-
"eslint": "8.
|
|
167
|
-
"eslint-config-prettier": "9.0.0",
|
|
168
|
-
"eslint-plugin-import": "2.29.1",
|
|
168
|
+
"eslint": "^8.57.0",
|
|
169
|
+
"eslint-config-prettier": "^9.0.0",
|
|
170
|
+
"eslint-plugin-import": "^2.29.1",
|
|
169
171
|
"eslint-plugin-prettier": "^5.0.0",
|
|
170
172
|
"husky": "7.0.4",
|
|
171
173
|
"js-yaml": "^4.1.0",
|
|
172
174
|
"json-schema-to-typescript": "^15.0.4",
|
|
173
175
|
"lint-staged": "15.0.2",
|
|
174
|
-
"mocha": "
|
|
176
|
+
"mocha": "^10.2.0",
|
|
175
177
|
"prettier": "^3.0.3",
|
|
176
|
-
"ramda": "0.29.1",
|
|
177
|
-
"sinon": "17.0.0",
|
|
178
|
+
"ramda": "^0.29.1",
|
|
179
|
+
"sinon": "^17.0.0",
|
|
178
180
|
"sinon-chai": "^3.7.0",
|
|
179
|
-
"ts-node": "10.9.1",
|
|
181
|
+
"ts-node": "^10.9.1",
|
|
180
182
|
"typescript": "^5.5.4",
|
|
181
183
|
"vite": "^4.5.0",
|
|
182
184
|
"webdriverio": "^8.20.4"
|
package/lib/src/prisma.js
CHANGED
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prisma = void 0;
|
|
6
|
+
exports.prisma = exports.getPrismaClient = void 0;
|
|
4
7
|
const client_1 = require("@prisma/client");
|
|
5
8
|
const config_1 = require("./config");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
10
|
+
let _prisma;
|
|
11
|
+
const getPrismaClient = () => {
|
|
12
|
+
if (!_prisma) {
|
|
13
|
+
try {
|
|
14
|
+
_prisma = new client_1.PrismaClient({
|
|
15
|
+
datasources: {
|
|
16
|
+
db: {
|
|
17
|
+
url: config_1.config.databaseUrl,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
logger_1.default.error('❌ [Prisma] Failed to initialize PrismaClient. Ensure "npx prisma generate" has been run.', error);
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return _prisma;
|
|
28
|
+
};
|
|
29
|
+
exports.getPrismaClient = getPrismaClient;
|
|
30
|
+
exports.prisma = new Proxy({}, {
|
|
31
|
+
get: (target, prop) => {
|
|
32
|
+
return (0, exports.getPrismaClient)()[prop];
|
|
11
33
|
},
|
|
12
34
|
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const chai_1 = __importDefault(require("chai"));
|
|
16
|
+
chai_1.default.should();
|
|
17
|
+
const axios_1 = __importDefault(require("axios"));
|
|
18
|
+
const e2ehelper_1 = require("./e2ehelper");
|
|
19
|
+
const plugin_test_support_1 = require("@appium/plugin-test-support");
|
|
20
|
+
const ip_1 = __importDefault(require("ip"));
|
|
21
|
+
describe('Startup Verification E2E Test', () => {
|
|
22
|
+
// dump hub config into a file
|
|
23
|
+
const hub_config_file = (0, e2ehelper_1.ensureHubConfig)('both');
|
|
24
|
+
// setup appium home
|
|
25
|
+
const APPIUM_HOME = (0, e2ehelper_1.ensureAppiumHome)('startup-verify');
|
|
26
|
+
// run hub
|
|
27
|
+
(0, plugin_test_support_1.pluginE2EHarness)({
|
|
28
|
+
before: global.before,
|
|
29
|
+
after: global.after,
|
|
30
|
+
serverArgs: {
|
|
31
|
+
subcommand: 'server',
|
|
32
|
+
configFile: hub_config_file,
|
|
33
|
+
},
|
|
34
|
+
pluginName: 'xenon',
|
|
35
|
+
port: e2ehelper_1.HUB_APPIUM_PORT,
|
|
36
|
+
driverSource: 'npm',
|
|
37
|
+
driverName: 'uiautomator2',
|
|
38
|
+
driverSpec: 'appium-uiautomator2-driver',
|
|
39
|
+
pluginSource: 'local',
|
|
40
|
+
pluginSpec: e2ehelper_1.PLUGIN_PATH,
|
|
41
|
+
appiumHome: APPIUM_HOME,
|
|
42
|
+
});
|
|
43
|
+
const hub_url = `http://${ip_1.default.address()}:${e2ehelper_1.HUB_APPIUM_PORT}`;
|
|
44
|
+
it('Should start Appium server and load Xenon plugin without crashing', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
+
const response = yield axios_1.default.get(`${hub_url}/xenon`);
|
|
46
|
+
response.status.should.eql(200);
|
|
47
|
+
}));
|
|
48
|
+
it('Should have operational REST API (Swagger verification)', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
// This confirms that the swagger YAML parsing succeeded
|
|
50
|
+
const response = yield axios_1.default.get(`${hub_url}/xenon/api/device`);
|
|
51
|
+
response.status.should.eql(200);
|
|
52
|
+
response.data.should.be.an('array');
|
|
53
|
+
}));
|
|
54
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const prisma_1 = require("../../src/prisma");
|
|
5
|
+
const client_1 = require("@prisma/client");
|
|
6
|
+
describe('Prisma Client Unit Tests', () => {
|
|
7
|
+
it('getPrismaClient should return an instance of PrismaClient', () => {
|
|
8
|
+
const client = (0, prisma_1.getPrismaClient)();
|
|
9
|
+
(0, chai_1.expect)(client).to.be.an.instanceOf(client_1.PrismaClient);
|
|
10
|
+
});
|
|
11
|
+
it('getPrismaClient should be idempotent', () => {
|
|
12
|
+
const client1 = (0, prisma_1.getPrismaClient)();
|
|
13
|
+
const client2 = (0, prisma_1.getPrismaClient)();
|
|
14
|
+
(0, chai_1.expect)(client1).to.equal(client2);
|
|
15
|
+
});
|
|
16
|
+
it('prisma proxy should forward properties to getPrismaClient', () => {
|
|
17
|
+
// We don't need to call actual DB methods, just check if property access works
|
|
18
|
+
// and returns the same thing as the client itself.
|
|
19
|
+
const client = (0, prisma_1.getPrismaClient)();
|
|
20
|
+
(0, chai_1.expect)(prisma_1.prisma.device).to.equal(client.device);
|
|
21
|
+
(0, chai_1.expect)(prisma_1.prisma.$connect).to.be.a('function');
|
|
22
|
+
});
|
|
23
|
+
});
|
package/lib/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/InternalHttpClient.ts","../src/PluginContext.ts","../src/XenonCapabilityManager.ts","../src/chromeUtils.ts","../src/config.ts","../src/device-utils.ts","../src/index.ts","../src/logger.ts","../src/plugin.ts","../src/prisma.ts","../src/app/index.ts","../src/app/swagger-docs.ts","../src/app/swagger.ts","../src/app/routers/apps.ts","../src/app/routers/config.ts","../src/app/routers/control.ts","../src/app/routers/dashboard.ts","../src/app/routers/grid.ts","../src/app/routers/reservation.ts","../src/app/routers/webhook.ts","../src/commands/handle.ts","../src/commands/index.ts","../src/dashboard/asset-manager.ts","../src/dashboard/commands.ts","../src/dashboard/event-manager.ts","../src/dashboard/services/app-service.ts","../src/dashboard/services/failure-analysis-service.ts","../src/dashboard/services/session-service.ts","../src/data-service/CircuitBreaker.ts","../src/data-service/config-service.ts","../src/data-service/db.ts","../src/data-service/device-service.ts","../src/data-service/device-store.interface.ts","../src/data-service/device-store.ts","../src/data-service/pending-sessions-service.ts","../src/data-service/pluginArgs.ts","../src/data-service/prisma-service.ts","../src/data-service/prisma-store.ts","../src/data-service/queue-service.ts","../src/data-service/web-config-service.ts","../src/device-managers/AndroidDeviceManager.ts","../src/device-managers/ChromeDriverManager.ts","../src/device-managers/HealthMonitorService.ts","../src/device-managers/IOSDeviceManager.ts","../src/device-managers/NodeDevices.ts","../src/device-managers/iOSTracker.ts","../src/device-managers/index.ts","../src/device-managers/android/AndroidStreamService.ts","../src/device-managers/android/DeviceLockManager.ts","../src/device-managers/cloud/CapabilityManager.ts","../src/device-managers/cloud/Devices.ts","../src/device-managers/ios/IOSDiscoveryService.ts","../src/device-managers/ios/IOSStreamService.ts","../src/device-managers/ios/WDAClient.ts","../src/enums/Capabilities.ts","../src/enums/Cloud.ts","../src/enums/Platform.ts","../src/enums/SessionType.ts","../src/enums/SocketEvents.ts","../src/helpers/UniversalMjpegProxy.ts","../src/helpers/index.ts","../src/interceptors/CommandInterceptor.ts","../src/interfaces/ICloudManager.ts","../src/interfaces/IDevice.ts","../src/interfaces/IDeviceFilterOptions.ts","../src/interfaces/IDeviceManager.ts","../src/interfaces/IOptions.ts","../src/interfaces/IPluginArgs.ts","../src/interfaces/ISessionCapability.ts","../src/profiling/AndroidAppProfiler.ts","../src/proxy/wd-command-proxy.ts","../src/scripts/generate-database-migration.ts","../src/scripts/initialize-database.ts","../src/scripts/install-go-ios.ts","../src/scripts/prepare-prisma.ts","../src/services/AICommandService.ts","../src/services/AIService.ts","../src/services/CleanupService.ts","../src/services/EventBus.ts","../src/services/InspectorService.ts","../src/services/MetricsService.ts","../src/services/NetworkConditioningService.ts","../src/services/NotificationService.ts","../src/services/RequestLogService.ts","../src/services/ResourceIsolationService.ts","../src/services/SecurityService.ts","../src/services/ServerManager.ts","../src/services/SessionHeartbeatService.ts","../src/services/SessionLifecycleService.ts","../src/services/SocketClient.ts","../src/services/SocketServer.ts","../src/services/TracingService.ts","../src/services/VideoPipelineService.ts","../src/services/healing/FuzzyXmlHealingProvider.ts","../src/services/healing/HealEtalonService.ts","../src/services/healing/HealedLocatorGenerator.ts","../src/services/healing/HealingOrchestrator.ts","../src/services/healing/LlmHealingProvider.ts","../src/services/healing/OcrHealingProvider.ts","../src/services/healing/ResilioTreeHealingProvider.ts","../src/services/healing/VisualAiHealingProvider.ts","../src/services/healing/types.ts","../src/services/omni-vision/OmniVisionService.ts","../src/services/omni-vision/VisionAssertionService.ts","../src/sessions/CloudSession.ts","../src/sessions/LocalSession.ts","../src/sessions/RemoteSession.ts","../src/sessions/SessionManager.ts","../src/sessions/XenonSession.ts","../src/types/CLIArgs.ts","../src/types/CloudArgs.ts","../src/types/CloudSchema.ts","../src/types/DeviceType.ts","../src/types/DeviceUpdate.ts","../src/types/IOSDevice.ts","../src/types/Platform.ts","../src/types/SessionStatus.ts","../src/types/healing.d.ts","../src/validators/CapabilityValidator.ts","../test/e2e/e2ehelper.ts","../test/e2e/plugin-harness.ts","../test/e2e/plugin.spec.ts","../test/e2e/telemetry_verification.spec.ts","../test/e2e/video-recording-test.spec.js","../test/e2e/android/conf.spec.js","../test/e2e/android/conf2.spec.js","../test/e2e/android/conf3.spec.js","../test/e2e/hubnode/forward-request.spec.ts","../test/e2e/hubnode/hubnode.spec.ts","../test/e2e/ios/conf1.spec.js","../test/e2e/ios/conf2.spec.js","../test/helpers/test-container.ts","../test/integration/androidDevices.spec.ts","../test/integration/cliArgs.js","../test/integration/testHelpers.js","../test/integration/ios/01iOSSimulator.spec.ts","../test/integration/ios/02iOSDevices.spec.ts","../test/unit/AndroidDeviceManager.spec.ts","../test/unit/ChromeDriverManager.spec.js","../test/unit/CleanupService.spec.ts","../test/unit/DeviceModel.spec.ts","../test/unit/FuzzyXmlHealingProvider.test.ts","../test/unit/GetAdbOriginal.js","../test/unit/HealingCascade.test.ts","../test/unit/IOSDeviceManager.spec.js","../test/unit/RemoteIOs.spec.js","../test/unit/ResilioTreeHealingProvider.test.ts","../test/unit/commands.spec.js","../test/unit/config.spec.js","../test/unit/device-service.spec.ts","../test/unit/device-utils.spec.ts","../test/unit/helpers.spec.ts","../test/unit/omni-vision.spec.ts","../test/unit/plugin.spec.ts","../test/unit/fixtures/device.config.js","../test/unit/fixtures/devices.js"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/InternalHttpClient.ts","../src/PluginContext.ts","../src/XenonCapabilityManager.ts","../src/chromeUtils.ts","../src/config.ts","../src/device-utils.ts","../src/index.ts","../src/logger.ts","../src/plugin.ts","../src/prisma.ts","../src/app/index.ts","../src/app/swagger-docs.ts","../src/app/swagger.ts","../src/app/routers/apps.ts","../src/app/routers/config.ts","../src/app/routers/control.ts","../src/app/routers/dashboard.ts","../src/app/routers/grid.ts","../src/app/routers/reservation.ts","../src/app/routers/webhook.ts","../src/commands/handle.ts","../src/commands/index.ts","../src/dashboard/asset-manager.ts","../src/dashboard/commands.ts","../src/dashboard/event-manager.ts","../src/dashboard/services/app-service.ts","../src/dashboard/services/failure-analysis-service.ts","../src/dashboard/services/session-service.ts","../src/data-service/CircuitBreaker.ts","../src/data-service/config-service.ts","../src/data-service/db.ts","../src/data-service/device-service.ts","../src/data-service/device-store.interface.ts","../src/data-service/device-store.ts","../src/data-service/pending-sessions-service.ts","../src/data-service/pluginArgs.ts","../src/data-service/prisma-service.ts","../src/data-service/prisma-store.ts","../src/data-service/queue-service.ts","../src/data-service/web-config-service.ts","../src/device-managers/AndroidDeviceManager.ts","../src/device-managers/ChromeDriverManager.ts","../src/device-managers/HealthMonitorService.ts","../src/device-managers/IOSDeviceManager.ts","../src/device-managers/NodeDevices.ts","../src/device-managers/iOSTracker.ts","../src/device-managers/index.ts","../src/device-managers/android/AndroidStreamService.ts","../src/device-managers/android/DeviceLockManager.ts","../src/device-managers/cloud/CapabilityManager.ts","../src/device-managers/cloud/Devices.ts","../src/device-managers/ios/IOSDiscoveryService.ts","../src/device-managers/ios/IOSStreamService.ts","../src/device-managers/ios/WDAClient.ts","../src/enums/Capabilities.ts","../src/enums/Cloud.ts","../src/enums/Platform.ts","../src/enums/SessionType.ts","../src/enums/SocketEvents.ts","../src/helpers/UniversalMjpegProxy.ts","../src/helpers/index.ts","../src/interceptors/CommandInterceptor.ts","../src/interfaces/ICloudManager.ts","../src/interfaces/IDevice.ts","../src/interfaces/IDeviceFilterOptions.ts","../src/interfaces/IDeviceManager.ts","../src/interfaces/IOptions.ts","../src/interfaces/IPluginArgs.ts","../src/interfaces/ISessionCapability.ts","../src/profiling/AndroidAppProfiler.ts","../src/proxy/wd-command-proxy.ts","../src/scripts/generate-database-migration.ts","../src/scripts/initialize-database.ts","../src/scripts/install-go-ios.ts","../src/scripts/prepare-prisma.ts","../src/services/AICommandService.ts","../src/services/AIService.ts","../src/services/CleanupService.ts","../src/services/EventBus.ts","../src/services/InspectorService.ts","../src/services/MetricsService.ts","../src/services/NetworkConditioningService.ts","../src/services/NotificationService.ts","../src/services/RequestLogService.ts","../src/services/ResourceIsolationService.ts","../src/services/SecurityService.ts","../src/services/ServerManager.ts","../src/services/SessionHeartbeatService.ts","../src/services/SessionLifecycleService.ts","../src/services/SocketClient.ts","../src/services/SocketServer.ts","../src/services/TracingService.ts","../src/services/VideoPipelineService.ts","../src/services/healing/FuzzyXmlHealingProvider.ts","../src/services/healing/HealEtalonService.ts","../src/services/healing/HealedLocatorGenerator.ts","../src/services/healing/HealingOrchestrator.ts","../src/services/healing/LlmHealingProvider.ts","../src/services/healing/OcrHealingProvider.ts","../src/services/healing/ResilioTreeHealingProvider.ts","../src/services/healing/VisualAiHealingProvider.ts","../src/services/healing/types.ts","../src/services/omni-vision/OmniVisionService.ts","../src/services/omni-vision/VisionAssertionService.ts","../src/sessions/CloudSession.ts","../src/sessions/LocalSession.ts","../src/sessions/RemoteSession.ts","../src/sessions/SessionManager.ts","../src/sessions/XenonSession.ts","../src/types/CLIArgs.ts","../src/types/CloudArgs.ts","../src/types/CloudSchema.ts","../src/types/DeviceType.ts","../src/types/DeviceUpdate.ts","../src/types/IOSDevice.ts","../src/types/Platform.ts","../src/types/SessionStatus.ts","../src/types/healing.d.ts","../src/validators/CapabilityValidator.ts","../test/e2e/e2ehelper.ts","../test/e2e/plugin-harness.ts","../test/e2e/plugin.spec.ts","../test/e2e/startup-verification.spec.ts","../test/e2e/telemetry_verification.spec.ts","../test/e2e/video-recording-test.spec.js","../test/e2e/android/conf.spec.js","../test/e2e/android/conf2.spec.js","../test/e2e/android/conf3.spec.js","../test/e2e/hubnode/forward-request.spec.ts","../test/e2e/hubnode/hubnode.spec.ts","../test/e2e/ios/conf1.spec.js","../test/e2e/ios/conf2.spec.js","../test/helpers/test-container.ts","../test/integration/androidDevices.spec.ts","../test/integration/cliArgs.js","../test/integration/testHelpers.js","../test/integration/ios/01iOSSimulator.spec.ts","../test/integration/ios/02iOSDevices.spec.ts","../test/unit/AndroidDeviceManager.spec.ts","../test/unit/ChromeDriverManager.spec.js","../test/unit/CleanupService.spec.ts","../test/unit/DeviceModel.spec.ts","../test/unit/FuzzyXmlHealingProvider.test.ts","../test/unit/GetAdbOriginal.js","../test/unit/HealingCascade.test.ts","../test/unit/IOSDeviceManager.spec.js","../test/unit/RemoteIOs.spec.js","../test/unit/ResilioTreeHealingProvider.test.ts","../test/unit/commands.spec.js","../test/unit/config.spec.js","../test/unit/device-service.spec.ts","../test/unit/device-utils.spec.ts","../test/unit/helpers.spec.ts","../test/unit/omni-vision.spec.ts","../test/unit/plugin.spec.ts","../test/unit/prisma.spec.ts","../test/unit/fixtures/device.config.js","../test/unit/fixtures/devices.js"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xenon-device-management/xenon",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Xenon - Intelligent Mobile Infrastructure. A self-healing device orchestration platform for Appium.",
|
|
5
5
|
"main": "./lib/src/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"./package.json": "./package.json"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build": "tsc -b && npm run build:copy",
|
|
12
|
+
"build": "npx prisma generate && tsc -b && npm run build:copy",
|
|
13
13
|
"build:all": "npm run build:xenon && npm run build",
|
|
14
14
|
"build:copy": "rm -rf lib/public && mkdir -p lib && cp -R src/public lib/ && cp schema.json lib/",
|
|
15
15
|
"build:schema": "node scripts/generate-types-from-schema.js",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"format": "prettier --write \"{src,web,test}/**/*.{ts,tsx,json,md}\" --single-quote",
|
|
30
30
|
"db:migrate": "path-exists lib/src/scripts/initialize-database.js && node lib/src/scripts/initialize-database.js || ts-node src/scripts/initialize-database.ts",
|
|
31
31
|
"db:generate": "ts-node src/scripts/generate-database-migration.ts",
|
|
32
|
+
"prepare": "npx prisma generate",
|
|
32
33
|
"prepublishOnly": "npm run build:all"
|
|
33
34
|
},
|
|
34
35
|
"repository": {
|
|
@@ -118,6 +119,7 @@
|
|
|
118
119
|
"zod": "^4.3.6"
|
|
119
120
|
},
|
|
120
121
|
"overrides": {
|
|
122
|
+
"unzipper": "^0.12.3",
|
|
121
123
|
"usbmux": {
|
|
122
124
|
"plist": {
|
|
123
125
|
"xmldom": "npm:@xmldom/xmldom@^0.9.8"
|
|
@@ -131,8 +133,8 @@
|
|
|
131
133
|
"@appium/docutils": "^0.4.11",
|
|
132
134
|
"@appium/fake-driver": "^6.0.1",
|
|
133
135
|
"@appium/plugin-test-support": "^1.0.3",
|
|
134
|
-
"@babel/core": "7.23.9",
|
|
135
|
-
"@babel/plugin-
|
|
136
|
+
"@babel/core": "^7.23.9",
|
|
137
|
+
"@babel/plugin-transform-class-properties": "^7.23.3",
|
|
136
138
|
"@types/async-lock": "1.4.2",
|
|
137
139
|
"@types/bluebird": "^3.5.42",
|
|
138
140
|
"@types/chai": "4.3.10",
|
|
@@ -141,7 +143,7 @@
|
|
|
141
143
|
"@types/fs-extra": "^11.0.0",
|
|
142
144
|
"@types/ip": "^1.1.2",
|
|
143
145
|
"@types/js-yaml": "^4.0.9",
|
|
144
|
-
"@types/lodash": "4.14.202",
|
|
146
|
+
"@types/lodash": "^4.14.202",
|
|
145
147
|
"@types/lokijs": "1.5.14",
|
|
146
148
|
"@types/mocha": "9.1.1",
|
|
147
149
|
"@types/node-schedule": "1.3.2",
|
|
@@ -149,34 +151,34 @@
|
|
|
149
151
|
"@types/sinon-chai": "^3.2.12",
|
|
150
152
|
"@types/swagger-jsdoc": "^6.0.4",
|
|
151
153
|
"@types/swagger-ui-express": "^4.1.8",
|
|
152
|
-
"@types/tcp-port-used": "1.0.4",
|
|
154
|
+
"@types/tcp-port-used": "^1.0.4",
|
|
153
155
|
"@types/uuid": "8.3.4",
|
|
154
156
|
"@types/yargs": "17.0.32",
|
|
155
157
|
"@typescript-eslint/eslint-plugin": "5.62.0",
|
|
156
158
|
"@typescript-eslint/parser": "5.62.0",
|
|
157
159
|
"@wdio/types": "^8.24.2",
|
|
158
|
-
"appium": "3.1.1",
|
|
160
|
+
"appium": "^3.1.1",
|
|
159
161
|
"appium-uiautomator2-driver": "^5.0.3",
|
|
160
162
|
"appium-xcuitest-driver": "^10.1.2",
|
|
161
|
-
"babel-
|
|
162
|
-
"chai": "4.3.10",
|
|
163
|
+
"@babel/eslint-parser": "^7.23.3",
|
|
164
|
+
"chai": "^4.3.10",
|
|
163
165
|
"chai-as-promised": "^7.1.1",
|
|
164
166
|
"chai-exclude": "^2.1.0",
|
|
165
167
|
"dotenv": "^16.3.1",
|
|
166
|
-
"eslint": "8.
|
|
167
|
-
"eslint-config-prettier": "9.0.0",
|
|
168
|
-
"eslint-plugin-import": "2.29.1",
|
|
168
|
+
"eslint": "^8.57.0",
|
|
169
|
+
"eslint-config-prettier": "^9.0.0",
|
|
170
|
+
"eslint-plugin-import": "^2.29.1",
|
|
169
171
|
"eslint-plugin-prettier": "^5.0.0",
|
|
170
172
|
"husky": "7.0.4",
|
|
171
173
|
"js-yaml": "^4.1.0",
|
|
172
174
|
"json-schema-to-typescript": "^15.0.4",
|
|
173
175
|
"lint-staged": "15.0.2",
|
|
174
|
-
"mocha": "
|
|
176
|
+
"mocha": "^10.2.0",
|
|
175
177
|
"prettier": "^3.0.3",
|
|
176
|
-
"ramda": "0.29.1",
|
|
177
|
-
"sinon": "17.0.0",
|
|
178
|
+
"ramda": "^0.29.1",
|
|
179
|
+
"sinon": "^17.0.0",
|
|
178
180
|
"sinon-chai": "^3.7.0",
|
|
179
|
-
"ts-node": "10.9.1",
|
|
181
|
+
"ts-node": "^10.9.1",
|
|
180
182
|
"typescript": "^5.5.4",
|
|
181
183
|
"vite": "^4.5.0",
|
|
182
184
|
"webdriverio": "^8.20.4"
|