@xenon-device-management/xenon 1.1.3 → 1.1.6

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 CHANGED
@@ -83,7 +83,7 @@
83
83
 
84
84
  ```bash
85
85
  # Install Xenon plugin
86
- appium plugin install xenon
86
+ appium plugin install --source=npm @xenon-device-management/xenon
87
87
 
88
88
  # Or install from source
89
89
  git clone https://github.com/xenon-platform/xenon.git
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xenon-device-management/xenon",
3
- "version": "1.1.3",
3
+ "version": "1.1.6",
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,8 @@
9
9
  "./package.json": "./package.json"
10
10
  },
11
11
  "scripts": {
12
- "build": "tsc -b && npm run build:copy",
12
+ "postinstall": "npx prisma generate",
13
+ "build": "npx prisma generate && tsc -b && npm run build:copy",
13
14
  "build:all": "npm run build:xenon && npm run build",
14
15
  "build:copy": "rm -rf lib/public && mkdir -p lib && cp -R src/public lib/ && cp schema.json lib/",
15
16
  "build:schema": "node scripts/generate-types-from-schema.js",
@@ -29,6 +30,7 @@
29
30
  "format": "prettier --write \"{src,web,test}/**/*.{ts,tsx,json,md}\" --single-quote",
30
31
  "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
32
  "db:generate": "ts-node src/scripts/generate-database-migration.ts",
33
+ "prepare": "npx prisma generate",
32
34
  "prepublishOnly": "npm run build:all"
33
35
  },
34
36
  "repository": {
@@ -9,19 +9,13 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PrismaService = void 0;
13
- const client_1 = require("@prisma/client");
14
- const config_1 = require("../config");
12
+ exports.getPrismaService = exports.PrismaService = void 0;
13
+ const prisma_1 = require("../prisma");
15
14
  const typedi_1 = require("typedi");
16
- let PrismaService = class PrismaService extends client_1.PrismaClient {
17
- constructor() {
18
- super({
19
- datasources: {
20
- db: {
21
- url: config_1.config.databaseUrl,
22
- },
23
- },
24
- });
15
+ let PrismaService = class PrismaService {
16
+ constructor() { }
17
+ get client() {
18
+ return prisma_1.prisma;
25
19
  }
26
20
  };
27
21
  exports.PrismaService = PrismaService;
@@ -29,3 +23,6 @@ exports.PrismaService = PrismaService = __decorate([
29
23
  (0, typedi_1.Service)(),
30
24
  __metadata("design:paramtypes", [])
31
25
  ], PrismaService);
26
+ // For compatibility with parts of the code that might expect PrismaService to be the client
27
+ const getPrismaService = () => prisma_1.prisma;
28
+ exports.getPrismaService = getPrismaService;
@@ -52,7 +52,7 @@ const semver = __importStar(require("semver"));
52
52
  const logger_1 = __importDefault(require("../logger"));
53
53
  class PrismaDeviceStore {
54
54
  constructor() {
55
- this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService);
55
+ this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService).client;
56
56
  }
57
57
  toIDevice(device) {
58
58
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
@@ -276,7 +276,7 @@ class PrismaDeviceStore {
276
276
  exports.PrismaDeviceStore = PrismaDeviceStore;
277
277
  class PrismaPendingSessionStore {
278
278
  constructor() {
279
- this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService);
279
+ this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService).client;
280
280
  }
281
281
  addPendingSession(capability) {
282
282
  return __awaiter(this, void 0, void 0, function* () {
@@ -328,7 +328,7 @@ class PrismaPendingSessionStore {
328
328
  exports.PrismaPendingSessionStore = PrismaPendingSessionStore;
329
329
  class PrismaCLIArgsStore {
330
330
  constructor() {
331
- this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService);
331
+ this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService).client;
332
332
  }
333
333
  addCLIArgs(args) {
334
334
  return __awaiter(this, void 0, void 0, function* () {
@@ -349,7 +349,7 @@ class PrismaCLIArgsStore {
349
349
  exports.PrismaCLIArgsStore = PrismaCLIArgsStore;
350
350
  class PrismaHealEtalonStore {
351
351
  constructor() {
352
- this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService);
352
+ this.prisma = typedi_1.Container.get(prisma_service_1.PrismaService).client;
353
353
  }
354
354
  saveSignature(etalon) {
355
355
  return __awaiter(this, void 0, void 0, function* () {
@@ -27,8 +27,8 @@ const prisma_service_1 = require("./prisma-service");
27
27
  const logger_1 = __importDefault(require("../logger"));
28
28
  const typedi_1 = require("typedi");
29
29
  let QueueService = class QueueService {
30
- constructor(prisma) {
31
- this.prisma = prisma;
30
+ constructor(prismaService) {
31
+ this.prismaService = prismaService;
32
32
  this.deviceStore = device_store_1.DeviceStoreFactory.getStore();
33
33
  this.pendingStore = device_store_1.DeviceStoreFactory.getPendingSessionStore();
34
34
  }
@@ -39,7 +39,7 @@ let QueueService = class QueueService {
39
39
  getAverageSessionDuration(platform) {
40
40
  return __awaiter(this, void 0, void 0, function* () {
41
41
  try {
42
- const recentSessions = yield this.prisma.session.findMany({
42
+ const recentSessions = yield this.prismaService.client.session.findMany({
43
43
  where: {
44
44
  device_platform: platform.toLowerCase(),
45
45
  endTime: { not: null },
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
- exports.prisma = new client_1.PrismaClient({
7
- datasources: {
8
- db: {
9
- url: config_1.config.databaseUrl,
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
  });
@@ -32,12 +32,12 @@ let NotificationService = class NotificationService {
32
32
  }
33
33
  getConfigs() {
34
34
  return __awaiter(this, void 0, void 0, function* () {
35
- return this.prisma.webhookConfig.findMany();
35
+ return this.prisma.client.webhookConfig.findMany();
36
36
  });
37
37
  }
38
38
  saveConfig(url_1, events_1) {
39
39
  return __awaiter(this, arguments, void 0, function* (url, events, type = 'slack', payloadTemplate) {
40
- return this.prisma.webhookConfig.create({
40
+ return this.prisma.client.webhookConfig.create({
41
41
  data: {
42
42
  url,
43
43
  events: JSON.stringify(events),
@@ -50,7 +50,7 @@ let NotificationService = class NotificationService {
50
50
  }
51
51
  deleteConfig(id) {
52
52
  return __awaiter(this, void 0, void 0, function* () {
53
- yield this.prisma.webhookConfig.delete({ where: { id } });
53
+ yield this.prisma.client.webhookConfig.delete({ where: { id } });
54
54
  });
55
55
  }
56
56
  dispatchEvent(eventType, payload) {
@@ -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
+ });
@@ -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",
3
+ "version": "1.1.6",
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,8 @@
9
9
  "./package.json": "./package.json"
10
10
  },
11
11
  "scripts": {
12
- "build": "tsc -b && npm run build:copy",
12
+ "postinstall": "npx prisma generate",
13
+ "build": "npx prisma generate && tsc -b && npm run build:copy",
13
14
  "build:all": "npm run build:xenon && npm run build",
14
15
  "build:copy": "rm -rf lib/public && mkdir -p lib && cp -R src/public lib/ && cp schema.json lib/",
15
16
  "build:schema": "node scripts/generate-types-from-schema.js",
@@ -29,6 +30,7 @@
29
30
  "format": "prettier --write \"{src,web,test}/**/*.{ts,tsx,json,md}\" --single-quote",
30
31
  "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
32
  "db:generate": "ts-node src/scripts/generate-database-migration.ts",
33
+ "prepare": "npx prisma generate",
32
34
  "prepublishOnly": "npm run build:all"
33
35
  },
34
36
  "repository": {