react-native-harness 1.0.0-alpha.1 → 1.0.0-alpha.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"metro.d.ts","sourceRoot":"","sources":["../../src/bundlers/metro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWvD,eAAO,MAAM,QAAQ,GAAU,gBAAc,KAAG,OAAO,CAAC,YAAY,CA6BnE,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,aAAW,EACX,mBAAe,EACf,mBAAiB,KAChB,OAAO,CAAC,IAAI,CA4Bd,CAAC;AAEF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAE9C,CAAC"}
1
+ {"version":3,"file":"metro.d.ts","sourceRoot":"","sources":["../../src/bundlers/metro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWvD,eAAO,MAAM,QAAQ,GAAU,gBAAc,KAAG,OAAO,CAAC,YAAY,CAuCnE,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,aAAW,EACX,mBAAe,EACf,mBAAiB,KAChB,OAAO,CAAC,IAAI,CA4Bd,CAAC;AAEF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAE9C,CAAC"}
@@ -13,6 +13,15 @@ export const runMetro = async (isExpo = false) => {
13
13
  ...(isExpo && { EXPO_NO_METRO_WORKSPACE_ROOT: 'true' }),
14
14
  },
15
15
  });
16
+ // Forward metro output to CLI output
17
+ metro.nodeChildProcess.then((childProcess) => {
18
+ if (childProcess.stdout) {
19
+ childProcess.stdout.pipe(process.stdout);
20
+ }
21
+ if (childProcess.stderr) {
22
+ childProcess.stderr.pipe(process.stderr);
23
+ }
24
+ });
16
25
  metro.catch((error) => {
17
26
  // This process is going to be killed by us, so we don't need to throw an error
18
27
  if (error instanceof SubprocessError && error.signalName === 'SIGTERM') {
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAqJA,eAAO,MAAM,WAAW,GACtB,aAAa,MAAM,EACnB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAoCd,CAAC"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAsJA,eAAO,MAAM,WAAW,GACtB,aAAa,MAAM,EACnB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAqCd,CAAC"}
@@ -39,7 +39,7 @@ const findTestFiles = async (context, pattern) => {
39
39
  discoverSpinner.start('Discovering tests');
40
40
  const globPattern = pattern || context.config.include;
41
41
  const glob = new Glob(globPattern, {
42
- cwd: process.cwd(),
42
+ cwd: context.projectRoot,
43
43
  });
44
44
  context.testFiles = await glob.walk();
45
45
  discoverSpinner.stop(`Found ${context.testFiles.length} test files`);
@@ -81,7 +81,7 @@ const cleanUp = async (context) => {
81
81
  };
82
82
  export const testCommand = async (runnerName, pattern) => {
83
83
  intro('React Native Test Harness');
84
- const config = await getConfig(process.cwd());
84
+ const { config, projectRoot } = await getConfig(process.cwd());
85
85
  config.reporter = defaultReporter;
86
86
  const selectedRunnerName = runnerName ?? config.defaultRunner;
87
87
  if (!selectedRunnerName) {
@@ -96,6 +96,7 @@ export const testCommand = async (runnerName, pattern) => {
96
96
  runner,
97
97
  testFiles: [],
98
98
  results: [],
99
+ projectRoot,
99
100
  };
100
101
  try {
101
102
  await setupEnvironment(context);
@@ -1 +1 @@
1
- {"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/errors/errorHandler.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,IAuK5C,CAAC"}
1
+ {"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/errors/errorHandler.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,IAkL5C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { ConfigLoadError, ConfigNotFoundError, ConfigValidationError, } from '@react-native-harness/config';
2
2
  import { AssertionError } from '../utils.js';
3
- import { NoRunnerSpecifiedError, RunnerNotFoundError, EnvironmentInitializationError, TestExecutionError, RpcClientError, AppNotInstalledError, BridgeTimeoutError, } from './errors.js';
3
+ import { NoRunnerSpecifiedError, RunnerNotFoundError, EnvironmentInitializationError, TestExecutionError, RpcClientError, AppNotInstalledError, BridgeTimeoutError, BundlingFailedError, } from './errors.js';
4
4
  export const handleError = (error) => {
5
5
  if (error instanceof AssertionError) {
6
6
  console.error(`\n❌ Assertion Error`);
@@ -116,6 +116,18 @@ export const handleError = (error) => {
116
116
  }
117
117
  console.error(`\nPlease install the app and try running the tests again.`);
118
118
  }
119
+ else if (error instanceof BundlingFailedError) {
120
+ console.error(`\n❌ Test File Bundling Error`);
121
+ console.error(`\nFile: ${error.modulePath}`);
122
+ console.error(`\nError: ${error.reason}`);
123
+ console.error(`\nTroubleshooting steps:`);
124
+ console.error(` • Check the test file syntax and imports`);
125
+ console.error(` • Verify all imported modules exist and are accessible`);
126
+ console.error(` • Ensure the Metro bundler configuration is correct`);
127
+ console.error(` • Check for any circular dependencies in the test file`);
128
+ console.error(` • Verify that all required packages are installed`);
129
+ console.error(`\nPlease fix the bundling issues and try again.`);
130
+ }
119
131
  else if (error instanceof BridgeTimeoutError) {
120
132
  console.error(`\n❌ Bridge Connection Timeout`);
121
133
  console.error(`\nThe bridge connection timed out after ${error.timeout}ms while waiting for the "${error.runnerName}" (${error.platform}) runner to be ready.`);
@@ -38,4 +38,9 @@ export declare class AppNotInstalledError extends Error {
38
38
  readonly platform: 'ios' | 'android';
39
39
  constructor(deviceName: string, bundleId: string, platform: 'ios' | 'android');
40
40
  }
41
+ export declare class BundlingFailedError extends Error {
42
+ readonly modulePath: string;
43
+ readonly reason: string;
44
+ constructor(modulePath: string, reason: string);
45
+ }
41
46
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,gBAAgB,EAAE,gBAAgB,EAAE;IAKhD,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;CACtC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE;IAMpE,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;CACtC;AAED,qBAAa,8BAA+B,SAAQ,KAAK;gBAErD,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM;IAUlB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAEzC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM;IAenB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;IAS3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,OAAO,EAAE,MAAM;aACf,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;gBAFhB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;CAOnC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;aAChB,QAAQ,EAAE,KAAK,GAAG,SAAS;gBAF3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,KAAK,GAAG,SAAS;CAS9C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,gBAAgB,EAAE,gBAAgB,EAAE;IAKhD,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;CACtC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE;IAMpE,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;CACtC;AAED,qBAAa,8BAA+B,SAAQ,KAAK;gBAErD,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM;IAUlB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAEzC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM;IAenB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;IAS3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,OAAO,EAAE,MAAM;aACf,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;gBAFhB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;CAOnC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;aAChB,QAAQ,EAAE,KAAK,GAAG,SAAS;gBAF3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,KAAK,GAAG,SAAS;CAS9C;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,UAAU,EAAE,MAAM;aAClB,MAAM,EAAE,MAAM;gBADd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAKjC"}
@@ -81,3 +81,13 @@ export class AppNotInstalledError extends Error {
81
81
  this.name = 'AppNotInstalledError';
82
82
  }
83
83
  }
84
+ export class BundlingFailedError extends Error {
85
+ modulePath;
86
+ reason;
87
+ constructor(modulePath, reason) {
88
+ super(`Bundling of ${modulePath} failed: ${reason}`);
89
+ this.modulePath = modulePath;
90
+ this.reason = reason;
91
+ this.name = 'BundlingFailedError';
92
+ }
93
+ }
@@ -1,4 +1,4 @@
1
- import { assertNativeRunnerConfig, } from '@react-native-harness/config';
1
+ import { assertAndroidRunnerConfig, } from '@react-native-harness/config';
2
2
  import { logger } from '@react-native-harness/tools';
3
3
  import { runEmulator, getEmulatorDeviceId, reversePort, isAppInstalled, getEmulatorStatus, } from './emulator.js';
4
4
  import { runApp, killApp } from './build.js';
@@ -8,7 +8,7 @@ import { AppNotInstalledError } from '../../errors/errors.js';
8
8
  const androidPlatformAdapter = {
9
9
  name: 'android',
10
10
  getEnvironment: async (runner) => {
11
- assertNativeRunnerConfig(runner);
11
+ assertAndroidRunnerConfig(runner);
12
12
  let emulator = null;
13
13
  const emulatorStatus = await getEmulatorStatus(runner.deviceId);
14
14
  logger.debug(`Emulator status: ${emulatorStatus}`);
@@ -1,7 +1,7 @@
1
1
  export declare const listDevices: () => Promise<any>;
2
- export declare const getDeviceByName: (simulatorName: string) => Promise<any | null>;
2
+ export declare const getDeviceByName: (simulatorName: string, systemVersion: string) => Promise<any | null>;
3
3
  export declare const listApps: (udid: string) => Promise<string[]>;
4
- export declare const isAppInstalled: (simulatorName: string, bundleId: string) => Promise<boolean>;
5
- export declare const runApp: (simulatorName: string, appName: string) => Promise<void>;
6
- export declare const killApp: (simulatorName: string, appName: string) => Promise<void>;
4
+ export declare const isAppInstalled: (udid: string, bundleId: string) => Promise<boolean>;
5
+ export declare const runApp: (udid: string, appName: string) => Promise<void>;
6
+ export declare const killApp: (udid: string, appName: string) => Promise<void>;
7
7
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/platforms/ios/build.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,GAAG,CAQ/C,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,KACpB,OAAO,CAAC,GAAG,GAAG,IAAI,CAapB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAY7D,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,eAAe,MAAM,EACrB,UAAU,MAAM,KACf,OAAO,CAAC,OAAO,CASjB,CAAC;AAEF,eAAO,MAAM,MAAM,GACjB,eAAe,MAAM,EACrB,SAAS,MAAM,KACd,OAAO,CAAC,IAAI,CAGd,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,eAAe,MAAM,EACrB,SAAS,MAAM,KACd,OAAO,CAAC,IAAI,CAOd,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/platforms/ios/build.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,GAAG,CAQ/C,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,eAAe,MAAM,KACpB,OAAO,CAAC,GAAG,GAAG,IAAI,CAqBpB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAY7D,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,UAAU,MAAM,KACf,OAAO,CAAC,OAAO,CAGjB,CAAC;AAEF,eAAO,MAAM,MAAM,GAAU,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAGxE,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAEzE,CAAC"}
@@ -8,15 +8,17 @@ export const listDevices = async () => {
8
8
  ]);
9
9
  return JSON.parse(stdout);
10
10
  };
11
- export const getDeviceByName = async (simulatorName) => {
11
+ export const getDeviceByName = async (simulatorName, systemVersion) => {
12
12
  const devices = await listDevices();
13
- for (const runtime in devices.devices) {
14
- const runtimeDevices = devices.devices[runtime];
15
- for (const device of runtimeDevices) {
16
- if (device.name === simulatorName && device.isAvailable) {
17
- return device;
18
- }
19
- }
13
+ const expectedRuntimeId = `com.apple.CoreSimulator.SimRuntime.iOS-${systemVersion.replace(/\./, '-')}`;
14
+ const runtime = devices.devices[expectedRuntimeId];
15
+ if (!runtime) {
16
+ return null;
17
+ }
18
+ const runtimeDevices = devices.devices[runtime];
19
+ const device = runtimeDevices.find((d) => d.name === simulatorName);
20
+ if (device) {
21
+ return device;
20
22
  }
21
23
  return null;
22
24
  };
@@ -29,23 +31,14 @@ export const listApps = async (udid) => {
29
31
  const { stdout: jsonOutput } = await spawn('plutil', ['-convert', 'json', '-o', '-', '-'], { stdin: { string: plistOutput } });
30
32
  return Object.keys(JSON.parse(jsonOutput));
31
33
  };
32
- export const isAppInstalled = async (simulatorName, bundleId) => {
33
- const device = await getDeviceByName(simulatorName);
34
- if (!device) {
35
- throw new Error(`Simulator ${simulatorName} not found`);
36
- }
37
- const appList = await listApps(device.udid);
34
+ export const isAppInstalled = async (udid, bundleId) => {
35
+ const appList = await listApps(udid);
38
36
  return appList.includes(bundleId);
39
37
  };
40
- export const runApp = async (simulatorName, appName) => {
41
- await killApp(simulatorName, appName);
42
- await spawn('xcrun', ['simctl', 'launch', simulatorName, appName]);
38
+ export const runApp = async (udid, appName) => {
39
+ await killApp(udid, appName);
40
+ await spawn('xcrun', ['simctl', 'launch', udid, appName]);
43
41
  };
44
- export const killApp = async (simulatorName, appName) => {
45
- await spawnAndForget('xcrun', [
46
- 'simctl',
47
- 'terminate',
48
- simulatorName,
49
- appName,
50
- ]);
42
+ export const killApp = async (udid, appName) => {
43
+ await spawnAndForget('xcrun', ['simctl', 'terminate', udid, appName]);
51
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/ios/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAW9D,QAAA,MAAM,kBAAkB,EAAE,eAqCzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/ios/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAa9D,QAAA,MAAM,kBAAkB,EAAE,eA8CzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,34 +1,39 @@
1
- import { assertNativeRunnerConfig, } from '@react-native-harness/config';
2
- import { getSimulatorStatus, runSimulator, stopSimulator, } from './simulator.js';
1
+ import { assertIOSRunnerConfig, } from '@react-native-harness/config';
2
+ import { getSimulatorDeviceId, getSimulatorStatus, runSimulator, stopSimulator, } from './simulator.js';
3
3
  import { isAppInstalled, runApp, killApp } from './build.js';
4
4
  import { killWithAwait } from '../../process.js';
5
5
  import { runMetro } from '../../bundlers/metro.js';
6
6
  import { AppNotInstalledError } from '../../errors/errors.js';
7
+ import { assert } from '../../utils.js';
7
8
  const iosPlatformAdapter = {
8
9
  name: 'ios',
9
10
  getEnvironment: async (runner) => {
10
- assertNativeRunnerConfig(runner);
11
+ assertIOSRunnerConfig(runner);
12
+ // TODO: system version is also important as there may be two emulators with the same name
13
+ // but different system versions
11
14
  let shouldStopSimulator = false;
12
- const simulatorStatus = await getSimulatorStatus(runner.deviceId);
15
+ const udid = await getSimulatorDeviceId(runner.deviceId, runner.systemVersion);
16
+ assert(!!udid, 'Simulator not found');
17
+ const simulatorStatus = await getSimulatorStatus(udid);
13
18
  const metroPromise = runMetro();
14
19
  if (simulatorStatus === 'stopped') {
15
- await runSimulator(runner.deviceId);
20
+ await runSimulator(udid);
16
21
  shouldStopSimulator = true;
17
22
  }
18
- const isInstalled = await isAppInstalled(runner.deviceId, runner.bundleId);
23
+ const isInstalled = await isAppInstalled(udid, runner.bundleId);
19
24
  if (!isInstalled) {
20
25
  throw new AppNotInstalledError(runner.deviceId, runner.bundleId, 'ios');
21
26
  }
22
27
  const metro = await metroPromise;
23
- await runApp(runner.deviceId, runner.bundleId);
28
+ await runApp(udid, runner.bundleId);
24
29
  return {
25
30
  restart: async () => {
26
- await runApp(runner.deviceId, runner.bundleId);
31
+ await runApp(udid, runner.bundleId);
27
32
  },
28
33
  dispose: async () => {
29
- await killApp(runner.deviceId, runner.bundleId);
34
+ await killApp(udid, runner.bundleId);
30
35
  if (shouldStopSimulator) {
31
- await stopSimulator(runner.deviceId);
36
+ await stopSimulator(udid);
32
37
  }
33
38
  await killWithAwait(metro);
34
39
  },
@@ -1,11 +1,11 @@
1
1
  export type IOSSimulatorStatus = 'stopped' | 'loading' | 'running';
2
- export declare const getSimulatorDeviceId: (simulatorName: string) => Promise<string | null>;
2
+ export declare const getSimulatorDeviceId: (simulatorName: string, systemVersion: string) => Promise<string | null>;
3
3
  export declare const getAvailableSimulators: () => Promise<Array<{
4
4
  name: string;
5
5
  udid: string;
6
6
  runtime: string;
7
7
  }>>;
8
- export declare const getSimulatorStatus: (simulatorName: string) => Promise<IOSSimulatorStatus>;
9
- export declare const runSimulator: (name: string) => Promise<void>;
10
- export declare const stopSimulator: (name: string) => Promise<void>;
8
+ export declare const getSimulatorStatus: (udid: string) => Promise<IOSSimulatorStatus>;
9
+ export declare const runSimulator: (udid: string) => Promise<void>;
10
+ export declare const stopSimulator: (udid: string) => Promise<void>;
11
11
  //# sourceMappingURL=simulator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../../src/platforms/ios/simulator.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnE,eAAO,MAAM,oBAAoB,GAC/B,eAAe,MAAM,KACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CA4BvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAa,OAAO,CACrD,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,eAAe,MAAM,KACpB,OAAO,CAAC,kBAAkB,CAkC5B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAuC7D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAQ9D,CAAC"}
1
+ {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../../../src/platforms/ios/simulator.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnE,eAAO,MAAM,oBAAoB,GAC/B,eAAe,MAAM,EACrB,eAAe,MAAM,KACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CA8BvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAa,OAAO,CACrD,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,KACX,OAAO,CAAC,kBAAkB,CAgC5B,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAiC7D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAE9D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { spawn } from '@react-native-harness/tools';
2
- export const getSimulatorDeviceId = async (simulatorName) => {
2
+ export const getSimulatorDeviceId = async (simulatorName, systemVersion) => {
3
3
  try {
4
4
  const { stdout } = await spawn('xcrun', [
5
5
  'simctl',
@@ -8,15 +8,14 @@ export const getSimulatorDeviceId = async (simulatorName) => {
8
8
  '--json',
9
9
  ]);
10
10
  const devices = JSON.parse(stdout);
11
- // Find the device across all iOS versions
12
- for (const runtime in devices.devices) {
13
- if (runtime.includes('iOS')) {
14
- const runtimeDevices = devices.devices[runtime];
15
- const device = runtimeDevices.find((d) => d.name === simulatorName);
16
- if (device) {
17
- return device.udid;
18
- }
19
- }
11
+ const expectedRuntimeId = `com.apple.CoreSimulator.SimRuntime.iOS-${systemVersion.replace(/\./, '-')}`;
12
+ const runtime = devices.devices[expectedRuntimeId];
13
+ if (!runtime) {
14
+ return null;
15
+ }
16
+ const device = runtime.find((d) => d.name === simulatorName);
17
+ if (device) {
18
+ return device.udid;
20
19
  }
21
20
  return null;
22
21
  }
@@ -54,7 +53,7 @@ export const getAvailableSimulators = async () => {
54
53
  return [];
55
54
  }
56
55
  };
57
- export const getSimulatorStatus = async (simulatorName) => {
56
+ export const getSimulatorStatus = async (udid) => {
58
57
  try {
59
58
  const { stdout } = await spawn('xcrun', [
60
59
  'simctl',
@@ -66,7 +65,7 @@ export const getSimulatorStatus = async (simulatorName) => {
66
65
  for (const runtime in devices.devices) {
67
66
  if (runtime.includes('iOS')) {
68
67
  const runtimeDevices = devices.devices[runtime];
69
- const device = runtimeDevices.find((d) => d.name === simulatorName);
68
+ const device = runtimeDevices.find((d) => d.udid === udid);
70
69
  if (device) {
71
70
  switch (device.state) {
72
71
  case 'Booted':
@@ -85,13 +84,9 @@ export const getSimulatorStatus = async (simulatorName) => {
85
84
  return 'stopped';
86
85
  }
87
86
  };
88
- export const runSimulator = async (name) => {
89
- const deviceId = await getSimulatorDeviceId(name);
90
- if (!deviceId) {
91
- throw new Error('Simulator not found');
92
- }
87
+ export const runSimulator = async (udid) => {
93
88
  try {
94
- await spawn('xcrun', ['simctl', 'boot', deviceId]);
89
+ await spawn('xcrun', ['simctl', 'boot', udid]);
95
90
  }
96
91
  catch (bootError) {
97
92
  // Ignore if simulator is already booted
@@ -103,7 +98,7 @@ export const runSimulator = async (name) => {
103
98
  let attempts = 0;
104
99
  while (true) {
105
100
  attempts++;
106
- const status = await getSimulatorStatus(name);
101
+ const status = await getSimulatorStatus(udid);
107
102
  if (status === 'running') {
108
103
  break;
109
104
  }
@@ -113,16 +108,12 @@ export const runSimulator = async (name) => {
113
108
  await new Promise((resolve) => setTimeout(resolve, 1000));
114
109
  }
115
110
  };
116
- export const stopSimulator = async (name) => {
117
- const simulatorId = await getSimulatorDeviceId(name);
118
- if (!simulatorId) {
119
- return; // Already stopped
120
- }
121
- await stopSimulatorById(simulatorId);
111
+ export const stopSimulator = async (udid) => {
112
+ await stopSimulatorById(udid);
122
113
  };
123
- const stopSimulatorById = async (simulatorId) => {
114
+ const stopSimulatorById = async (udid) => {
124
115
  try {
125
- await spawn('xcrun', ['simctl', 'shutdown', simulatorId]);
116
+ await spawn('xcrun', ['simctl', 'shutdown', udid]);
126
117
  }
127
118
  catch (shutdownError) {
128
119
  // Ignore if simulator is already shut down
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/web/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAyDzD,eAAO,MAAM,kBAAkB,EAAE,eAgChC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/web/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,kBAAkB,EAAE,eAOhC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,73 +1,9 @@
1
- import { assertWebRunnerConfig } from '@react-native-harness/config';
2
- import { logger } from '@react-native-harness/tools';
3
- import { chromium, firefox, webkit } from 'playwright';
4
- import { runMetro } from '../../bundlers/metro.js';
5
- const runBrowser = async (url, browserType) => {
6
- // For now, we're only supporting Firefox, but this will be expanded
7
- // to support other browsers based on the config
8
- let browser;
9
- switch (browserType) {
10
- case 'firefox':
11
- browser = await firefox.launch({
12
- headless: false,
13
- devtools: false,
14
- args: [
15
- '--no-sandbox',
16
- '--disable-setuid-sandbox',
17
- '--disable-dev-shm-usage',
18
- '--disable-web-security',
19
- '--allow-insecure-localhost',
20
- '--ignore-certificate-errors',
21
- ],
22
- ignoreDefaultArgs: ['--disable-extensions'],
23
- });
24
- break;
25
- case 'chrome':
26
- browser = await chromium.launch({
27
- headless: false,
28
- devtools: false,
29
- });
30
- break;
31
- case 'safari':
32
- browser = await webkit.launch({
33
- headless: false,
34
- devtools: false,
35
- });
36
- break;
37
- default:
38
- throw new Error(`Unsupported browser type: ${browserType}`);
39
- }
40
- const context = await browser.newContext({
41
- bypassCSP: true,
42
- ignoreHTTPSErrors: true,
43
- });
44
- const page = await context.newPage();
45
- await page.setViewportSize({ width: 1280, height: 720 });
46
- await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
47
- return { browser, page };
48
- };
1
+ import { assertWebRunnerConfig, } from '@react-native-harness/config';
49
2
  export const webPlatformAdapter = {
50
3
  name: 'web',
51
4
  getEnvironment: async (runner) => {
52
5
  assertWebRunnerConfig(runner);
53
- logger.debug('Starting web environment');
54
- logger.debug('Running metro');
55
- const metro = await runMetro(true);
56
- logger.debug('Metro running');
57
- logger.debug(`Running browser: ${runner.browser}`);
58
- const { browser, page } = await runBrowser('http://localhost:8081', runner.browser);
59
- logger.debug('Browser running');
60
- return {
61
- restart: async () => {
62
- logger.debug('Reloading page');
63
- await page.reload({ waitUntil: 'domcontentloaded', timeout: 60000 });
64
- },
65
- dispose: async () => {
66
- logger.debug('Closing browser');
67
- await browser.close();
68
- metro.kill();
69
- },
70
- };
6
+ throw new Error('Web platform is currently disabled.');
71
7
  },
72
8
  };
73
9
  export default webPlatformAdapter;
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../node_modules/commander/typings/index.d.ts","../node_modules/commander/typings/esm.d.mts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/ws/index.d.mts","../../../node_modules/birpc/dist/index.d.ts","../../bridge/dist/shared/test-runner.d.ts","../../bridge/dist/shared/test-collector.d.ts","../../bridge/dist/shared.d.ts","../../bridge/dist/server.d.ts","../../../node_modules/zod/dist/types/v3/helpers/typealiases.d.ts","../../../node_modules/zod/dist/types/v3/helpers/util.d.ts","../../../node_modules/zod/dist/types/v3/zoderror.d.ts","../../../node_modules/zod/dist/types/v3/locales/en.d.ts","../../../node_modules/zod/dist/types/v3/errors.d.ts","../../../node_modules/zod/dist/types/v3/helpers/parseutil.d.ts","../../../node_modules/zod/dist/types/v3/helpers/enumutil.d.ts","../../../node_modules/zod/dist/types/v3/helpers/errorutil.d.ts","../../../node_modules/zod/dist/types/v3/helpers/partialutil.d.ts","../../../node_modules/zod/dist/types/v3/standard-schema.d.ts","../../../node_modules/zod/dist/types/v3/types.d.ts","../../../node_modules/zod/dist/types/v3/external.d.ts","../../../node_modules/zod/dist/types/v3/index.d.ts","../../../node_modules/zod/dist/types/index.d.ts","../../config/dist/types.d.ts","../../config/dist/reader.d.ts","../../config/dist/errors.d.ts","../../config/dist/index.d.ts","../src/platforms/platform-adapter.ts","../../tools/dist/abort.d.ts","../../../node_modules/picocolors/types.d.ts","../../../node_modules/picocolors/picocolors.d.ts","../../tools/dist/color.d.ts","../../tools/dist/logger.d.ts","../../../node_modules/@clack/core/dist/index.d.mts","../../../node_modules/@clack/prompts/dist/index.d.mts","../../tools/dist/prompts.d.ts","../../../node_modules/nano-spawn/source/index.d.ts","../../tools/dist/spawn.d.ts","../../tools/dist/react-native.d.ts","../../tools/dist/index.d.ts","../src/platforms/android/emulator.ts","../src/platforms/android/build.ts","../src/process.ts","../src/bundlers/metro.ts","../src/errors/errors.ts","../src/platforms/android/index.ts","../src/platforms/ios/simulator.ts","../src/platforms/ios/build.ts","../src/platforms/ios/index.ts","../../../node_modules/playwright-core/types/protocol.d.ts","../../../node_modules/playwright-core/types/structs.d.ts","../../../node_modules/playwright-core/types/types.d.ts","../../../node_modules/playwright-core/index.d.ts","../../../node_modules/playwright/index.d.ts","../src/platforms/web/index.ts","../src/platforms/platform-registry.ts","../../../node_modules/minipass/dist/esm/index.d.ts","../node_modules/lru-cache/dist/esm/index.d.ts","../node_modules/path-scurry/dist/esm/index.d.ts","../node_modules/minimatch/dist/esm/ast.d.ts","../node_modules/minimatch/dist/esm/escape.d.ts","../node_modules/minimatch/dist/esm/unescape.d.ts","../node_modules/minimatch/dist/esm/index.d.ts","../node_modules/glob/dist/esm/pattern.d.ts","../node_modules/glob/dist/esm/processor.d.ts","../node_modules/glob/dist/esm/walker.d.ts","../node_modules/glob/dist/esm/ignore.d.ts","../node_modules/glob/dist/esm/glob.d.ts","../node_modules/glob/dist/esm/has-magic.d.ts","../node_modules/glob/dist/esm/index.d.ts","../../bridge/dist/index.d.ts","../src/reporters/default-reporter.ts","../src/utils.ts","../src/commands/test.ts","../src/errors/errorhandler.ts","../src/index.ts","../src/platforms/android/device.ts","../src/platforms/ios/device.ts","../src/reporters/junit-reporter.ts","../../tools/dist/isinteractive.d.ts","../../tools/src/abort.ts","../../tools/src/color.ts","../../tools/src/isinteractive.ts","../../tools/src/logger.ts","../../tools/src/prompts.ts","../../tools/src/spawn.ts"],"fileIdsList":[[83,86,98],[86,98,136],[52,98],[55,98],[56,61,89,98],[57,68,69,76,86,97,98],[57,58,68,76,98],[59,98],[60,61,69,77,98],[61,86,94,98],[62,64,68,76,98],[63,98],[64,65,98],[68,98],[66,68,98],[68,69,70,86,97,98],[68,69,70,83,86,89,98],[98,102],[98],[64,68,71,76,86,97,98],[68,69,71,72,76,86,94,97,98],[71,73,86,94,97,98],[52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],[68,74,98],[75,97,98],[64,68,76,86,98],[77,98],[78,98],[55,79,98],[80,96,98,102],[81,98],[82,98],[68,83,84,98],[83,85,98,100],[56,68,86,87,88,89,98],[56,86,88,98],[86,87,98],[89,98],[90,98],[68,92,93,98],[92,93,98],[61,76,86,94,98],[95,98],[76,96,98],[56,71,82,97,98],[61,98],[86,98,99],[98,100],[98,101],[56,61,68,70,79,86,97,98,100,102],[86,98,103],[68,71,73,76,86,94,97,98,103,105],[68,90,98,105],[57,98],[98,132],[98,154],[57,69,86,98,152,153],[98,155],[48,98],[98,124],[98,114,115],[98,112,113,114,116,117,122],[98,113,114],[98,122],[98,123],[98,114],[98,112,113,114,117,118,119,120,121],[98,112,113,124],[98,110],[98,106,107,110],[98,108,109],[50,98],[98,159,161,165,166,169],[98,170],[98,161,165,168],[98,159,161,165,168,169,170,171],[98,165],[98,161,165,166,168],[98,159,161,166,167,169],[98,162,163,164],[69,78,98,159,160],[49,57,98,142],[49,98,111,129,130,142,147,158,172,173,174,175],[49,98,129,147,175],[49,98,129],[49,51,69,78,97,98,142,176,177],[49,78,98,142],[49,98,142],[49,57,98,129,130,142,143,144,145,146,147],[49,98,129,130,145,146,147,149,150],[49,98,130,148,151,157],[49,98,129,130,142,146,156],[49,57,98],[49,98,129,142,173],[49,69,78,98,129,173],[49,98],[98,126,127,128],[98,126],[98,125],[98,133],[98,131,134,135,138,140,141],[98,137],[98,139]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"1a2ae3df505891912038749a39e434643cf1f91a578475ae049f36e35c870c58","impliedFormat":1},{"version":"b124c0624b15412ace7d54644ade38d7a69db7e25488a1a4d2a8df6e11696538","impliedFormat":99},{"version":"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","impliedFormat":1},{"version":"a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a","impliedFormat":1},{"version":"f749812878fecfa53cfc13b36e5d35086fb6377983a9df44175da83ccc23af1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7d2e3fea24c712c99c03ad8f556abedbfe105f87f1be10b95dbd409d24bc05a3","impliedFormat":1},{"version":"211e3f15fbced4ab4be19f49ffa990b9ff20d749d33b65ff753be691e7616239","affectsGlobalScope":true,"impliedFormat":1},{"version":"3719525a8f6ab731e3dfd585d9f87df55ec7d50d461df84f74eb4d68bb165244","impliedFormat":1},{"version":"5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713","impliedFormat":1},{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","impliedFormat":1},{"version":"e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","impliedFormat":1},{"version":"bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","impliedFormat":1},{"version":"1cdcfc1f624d6c08aa12c73935f6e13f095919cd99edf95752951796eb225729","impliedFormat":1},{"version":"4eaff3d8e10676fd7913d8c108890e71c688e1e7d52f6d1d55c39514f493dc47","impliedFormat":1},{"version":"14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","impliedFormat":1},{"version":"5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea","impliedFormat":1},{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true,"impliedFormat":1},{"version":"00dee7cdca8b8420c47ea4a31a34b8e8294013ebc4f463fd941e867e7bf05029","affectsGlobalScope":true,"impliedFormat":1},{"version":"3256f3cccd578f9e7fe3a28096c505634bebcee8afb738ffa99368e536ca3a0b","impliedFormat":1},{"version":"1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","impliedFormat":1},{"version":"7f138842074d0a40681775af008c8452093b68c383c94de31759e853c6d06b5c","impliedFormat":1},{"version":"a3d541d303ee505053f5dcbf9fafb65cac3d5631037501cd616195863a6c5740","impliedFormat":1},{"version":"8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","impliedFormat":1},{"version":"2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58","impliedFormat":1},{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true,"impliedFormat":1},{"version":"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","impliedFormat":1},{"version":"7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","impliedFormat":1},{"version":"b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30","impliedFormat":1},{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","impliedFormat":1},{"version":"210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","impliedFormat":1},{"version":"36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","impliedFormat":1},{"version":"0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","impliedFormat":1},{"version":"25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","impliedFormat":1},{"version":"4f3fdeba4e28e21aa719c081b8dc8f91d47e12e773389b9d35679c08151c9d37","impliedFormat":1},{"version":"1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","impliedFormat":1},{"version":"69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","impliedFormat":1},{"version":"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","impliedFormat":1},{"version":"23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","impliedFormat":1},{"version":"f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7","impliedFormat":1},{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","impliedFormat":1},{"version":"1422cd9e705adcc09088fda85a900c2b70e3ad36ea85846f68bd1a884cdf4e2b","impliedFormat":1},{"version":"3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","impliedFormat":1},{"version":"5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2","impliedFormat":1},{"version":"a73ae8c0e62103bb9e21bb6538700881bf135b9a8b125b857ec68edfa0da4ed3","affectsGlobalScope":true,"impliedFormat":1},{"version":"e1c1b2fbe236bf7ee3e342eeae7e20efb8988a0ac7da1cbbfa2c1f66b76c3423","affectsGlobalScope":true,"impliedFormat":1},{"version":"868831cab82b65dfe1d68180e898af1f2101e89ba9b754d1db6fb8cc2fac1921","impliedFormat":1},{"version":"0fe8985a28f82c450a04a6edf1279d7181c0893f37da7d2a27f8efd4fd5edb03","impliedFormat":1},{"version":"e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","impliedFormat":1},{"version":"52120bb7e4583612225bdf08e7c12559548170f11e660d33a33623bae9bbdbba","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6dd3dba8e665ac43d279e0fdf5219edda0eed69b5e9a5061f46cd6a65c4f7a1","impliedFormat":1},{"version":"316f1486e15cbf7896425f0a16dfe12d447dd57cfb3244b8b119c77df870858f","impliedFormat":99},{"version":"f2ee9c0f4e3e40fa79743b5bad3d085d41cf6854c68687737c00d3f6d0ed7941","impliedFormat":99},{"version":"be389ee0d0f5e70329ea4c2fb44b7716e7ceda3680fa0ee32c22329ef8ef7e60","impliedFormat":99},{"version":"402ac3b4c96c5718d18c00339c6e4c66ff0b1a0d8a166570107472342fd57e7a","impliedFormat":99},{"version":"0df9e64851cbe9801f868551cae57fffd2d4339ac98b4d6ff00aad10a5cd8f33","impliedFormat":99},{"version":"18b54e0f8a18bb6b39598a08fe20f310fe683c6e0421bd1d2cda71faeb36e630","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"54f6ec6ea75acea6eb23635617252d249145edbc7bcd9d53f2d70280d2aef953","impliedFormat":1},{"version":"c25ce98cca43a3bfa885862044be0d59557be4ecd06989b2001a83dcf69620fd","impliedFormat":1},{"version":"8e71e53b02c152a38af6aec45e288cc65bede077b92b9b43b3cb54a37978bb33","impliedFormat":1},{"version":"754a9396b14ca3a4241591afb4edc644b293ccc8a3397f49be4dfd520c08acb3","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"de2316e90fc6d379d83002f04ad9698bc1e5285b4d52779778f454dd12ce9f44","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"2da997a01a6aa5c5c09de5d28f0f4407b597c5e1aecfd32f1815809c532650a2","impliedFormat":1},{"version":"5d26d2e47e2352def36f89a3e8bf8581da22b7f857e07ef3114cd52cf4813445","impliedFormat":1},{"version":"3db2efd285e7328d8014b54a7fce3f4861ebcdc655df40517092ed0050983617","impliedFormat":1},{"version":"d5d39a24c759df40480a4bfc0daffd364489702fdbcbdfc1711cde34f8739995","impliedFormat":1},{"version":"7b1626355a7fc135e6abf7d07c5a0d3e3d8ee2d48c073eb7b00f4d8ceca47d87","impliedFormat":99},{"version":"32ae4dd91e565f7e81d22807dcfe460b766d52d7e47141ff0a12a9d3ade09616","impliedFormat":99},{"version":"ab21498cc9c3434e5d72dede3ec195c94b992f2c37b2e8458e06503ae428d626","impliedFormat":99},{"version":"bac31d869789d8dcf7c14dd0d0fae67acea2437fdaf23e4a120eb4bcd5c7d88a","impliedFormat":99},{"version":"8e759f5797c82cb8b75098ed472371537d9c96e7beb4794f7ffef8b6349e09bb","signature":"33039f6557774d3b82268b2bd148d32e384f56b99d465c8bb293ef109e837654","impliedFormat":99},{"version":"3e442c402123b264ccdf7123c1366e1473d9c39f5db69373e938284fc01c49ce","impliedFormat":99},{"version":"590595c1230ebb7c43ebac51b2b2da956a719b213355b4358e2a6b16a8b5936c","impliedFormat":1},{"version":"8c5f0739f00f89f89b03a1fe6658c6d78000d7ebd7f556f0f8d6908fa679de35","impliedFormat":1},{"version":"a15c0df1ac9b2a4d833490522614fc57ae97d70a07bf4964a4d6bb73f3f56399","impliedFormat":99},{"version":"e4cead4a8596a6f051c36ef184f5fb6f117232eefdc1f98ef9847c9efc2c8911","impliedFormat":99},{"version":"e191585a6a460d89791b3d3d39a10607bbcefa7f7c9812af6ca5f11c33d398d1","impliedFormat":99},{"version":"24379e38ef6db808a7aed9b162dae44d16f84f63c04994efb8b0106bcc589909","impliedFormat":99},{"version":"8af66ec621033f41ccb2bcee775e883c2649fa0db71192fe863185b0281082a6","impliedFormat":99},{"version":"9d4af7bde3e345d3071b5fefbece2d3482971aae89ded50f302c8cb246e81581","impliedFormat":99},{"version":"f3eb748185038bca941a02994b1b0b5803c0a2ce818b8a7d72a24a6b814f5d3e","impliedFormat":99},{"version":"2ba26b5ab00dd3495eeb733cdb46d939a8eb755a395a91169158cdf962aff6c3","impliedFormat":99},{"version":"2e1c22b413f96fd388774b174588816f4bd787486ecfe74f5bcb361dd6bfce50","impliedFormat":99},{"version":"6eefa861b6aa125e0f5f8ad9f2f5d9cebee21ecc5f78d4494faf47a637d6208c","signature":"6fe995c2a73841b3fcd30e41789898aca49aa8873554db00f6f14c12a60eeefa","impliedFormat":99},{"version":"c86d845c9dd0aec9a416a2f9d409f19beb105abd650228a15c5cd731d96ddcf7","signature":"5a5615df20c0bdc3ed37d12b4d18ad0668a9fa9c94a6a25505aa644855e862aa","impliedFormat":99},{"version":"69798070e4c8f8553c7ed95b3210904b4448a2caf41d94e9f75a9f816691b1c7","signature":"ce1abe69f27b27079836681c6cdd68b7580e8ccbfe03e2707928241a9b244df5","impliedFormat":99},{"version":"b64eea7b48f02b36e66b4bda1a00862183c7dfeb97fff332c0df8009af449c16","signature":"a5988ef9d5643ff7dc67acc7613caf97069e0940797458fe20c8eb6506aa7e7e","impliedFormat":99},{"version":"c1760e09dd9e385870ba7f8dbb58eecd82951023efcbf5a45127728d44cb0a48","signature":"e9d0ff10b45cdd0f19764775f30faa7c1e2f18d314386d6e3ee4e77f97a3ff32","impliedFormat":99},{"version":"86ecd4570243533a3580afb652d4cb0bd7fe5875883efc989074dde45fbb05c3","signature":"1d283a2b9afc40a8734a3e8b901fec2b965635d8c1cf889ff51797857ae0f8b1","impliedFormat":99},{"version":"6c8cad21e5bbab92666187c13780cb183dec37b10fcaed3e3e8b981ef70f1c7c","signature":"bf54878ba05f58cd83ee75460343ee878f6fb1eff2c90f2ededd2cd474375f0d","impliedFormat":99},{"version":"10af6ab7f300b0efea1b97b67048a6bad016600d175654dae193ad46134287e7","signature":"90086ab58d5d9e95e55850554ca9e35850b6531e8ada7da93c4b61bdee2647ba","impliedFormat":99},{"version":"43770b6a8c1132dd655a7e8bb834d97209ce371f92dca12ecb200c1bb205e8cb","signature":"df429fc17c447fc67d0390c2d78f838378786fbd0cc989b6948fc1cd7262c17a","impliedFormat":99},{"version":"e27b7ea88d3795a698ae3454516e785c58a100d2da74d58e82ca6c3f173a5607","impliedFormat":1},{"version":"32727845ab5bd8a9ef3e4844c567c09f6d418fcf0f90d381c00652a6f23e7f6e","impliedFormat":1},{"version":"a7589d618b8b27dc24d61eaf0b66e3e02f0a53982c25fe2727c9d95a6db7cf0e","impliedFormat":1},{"version":"7a8ec10b0834eb7183e4bfcd929838ac77583828e343211bb73676d1e47f6f01","impliedFormat":1},{"version":"b07f64ff6ec710998a62b07377fbda0ab4c313ba1f0055bfe9faa22cffedd47c","impliedFormat":1},{"version":"c2aca6a7d061fa57df9a0a50b9ef9b6d611b77cfd23461edc7be01375e24a784","signature":"86172af4524210fbeb025fcabea1268e78715fc0a420b916d6a8cd20934e7eeb","impliedFormat":99},{"version":"8db703ab718fba5f6263e2b414dbbb42b4f6f8202e55fd449820df0f69594e49","signature":"9f1bad9472cb60fb2bcd138efef4f1b613b91410f44fda0d830184ab06f4b8ef","impliedFormat":99},{"version":"4115aa147c5a64817fb55274b44087cbf1bc90f54906bfdfc9ee847a71cd91cf","impliedFormat":99},{"version":"599b42c2c7227d59788f9239a30b16e465e15127c7c4541d30b801c23ca681e6","impliedFormat":99},{"version":"072f583571d6e3d30cd9760ee3485d29484fb7b54ba772ac135c747a380096a1","impliedFormat":99},{"version":"7212c2d58855b8df35275180e97903a4b6093d4fbaefea863d8d028da63938c6","impliedFormat":99},{"version":"5bd0f306b4a9dc65bccf38d9295bc52720d2fa455e06f604529d981b5eb8d9dc","impliedFormat":99},{"version":"f30992084e86f4b4c223c558b187cb0a9e83071592bd830d8ff2a471ee2bf2d4","impliedFormat":99},{"version":"854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","impliedFormat":99},{"version":"dd9faff42b456b5f03b85d8fbd64838eb92f6f7b03b36322cbc59c005b7033d3","impliedFormat":99},{"version":"6ff702721d87c0ba8e7f8950e7b0a3b009dfd912fab3997e0b63fab8d83919c3","impliedFormat":99},{"version":"9dce9fc12e9a79d1135699d525aa6b44b71a45e32e3fa0cf331060b980b16317","impliedFormat":99},{"version":"586b2fd8a7d582329658aaceec22f8a5399e05013deb49bcfde28f95f093c8ee","impliedFormat":99},{"version":"59c44b081724d4ab8039988aba34ee6b3bd41c30fc2d8686f4ed06588397b2f7","impliedFormat":99},{"version":"ef1f3eadd7bed282de45bafd7c2c00105cf1db93e22f6cd763bec8a9c2cf6df1","impliedFormat":99},{"version":"3d8885d13f76ff35b7860039e83c936ff37553849707c2fd1d580d193a52be5b","impliedFormat":99},{"version":"a955c49e9dc38915d1a9860dc049a3b5fa46cb4e9b832ebcde89d96d6e68b8e3","impliedFormat":99},{"version":"a1458c573dea42ad7717f60fa0cd280429cd406ea8f997e62f396b0780dc519e","signature":"7eafa82caf0883050cc715861484f1126fdf12900095e0dfeeac0ac8cd884343","impliedFormat":99},{"version":"7fb7e1c1820efcfc66a478e400e9b60546aaa3d5856a3f47a1f752b34c0e684b","signature":"18036d59518e53236d9c59440b5b98b8bd3c717e96b35074dd99ec73465c1156","impliedFormat":99},{"version":"943e4d430b34af4b8acfb293497df8fbb1a335a6846ff8e448a35b2e1ec4cb65","signature":"a1bd754cf6b1b8e70370e8dbad7d4abd7d73178fa1e0eb1956f36ab72b5d7144","impliedFormat":99},{"version":"c1e5c3c334c1e941b599b2461e2ffd0e8e2a36f0b4f9de1bc652da6375b44b15","signature":"72bde9177d6ecb7d2a45761aaa15ef458bf60bedd2071150f8b2c60445c3b115","impliedFormat":99},{"version":"f3c71b768f069f48a2e2bdee211f4705e64f7988f3a514bb34cc2a299c002166","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"a7a0f447cd9fef8b36c1f55038df6b2358d871c0e62ca302cf59eee1493db464","signature":"be79133144bff926c2ec3a838ec1d42fa7a3ca4556199654d047c6588e709ab5","impliedFormat":99},{"version":"10af6ab7f300b0efea1b97b67048a6bad016600d175654dae193ad46134287e7","signature":"90086ab58d5d9e95e55850554ca9e35850b6531e8ada7da93c4b61bdee2647ba","impliedFormat":99},{"version":"ae3e1911c27e8a5db2eb579296c0952809d40c8f38c18e0f58e8fc483fe6e1e5","signature":"e6761f0a3e4e68466d38327d5cd380f5f3c75810fd82cafed45110d60d40a3cc","impliedFormat":99},{"version":"20666143132be33320b033fe7e995c3ce1dcd82585ec140bc833d2abe0bc927a","impliedFormat":99}],"root":[130,131,134,135,138,140,[143,151],157,158,[174,182]],"resolvedRoot":[[131,183],[134,184],[182,185],[135,186],[138,187],[140,188]],"options":{"composite":true,"declarationMap":true,"emitDeclarationOnly":false,"importHelpers":true,"module":199,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.lib.tsbuildinfo"},"referencedMap":[[136,1],[137,2],[52,3],[53,3],[55,4],[56,5],[57,6],[58,7],[59,8],[60,9],[61,10],[62,11],[63,12],[64,13],[65,13],[67,14],[66,15],[68,14],[69,16],[70,17],[54,18],[104,19],[71,20],[72,21],[73,22],[105,23],[74,24],[75,25],[76,26],[77,27],[78,28],[79,29],[80,30],[81,31],[82,32],[83,33],[84,33],[85,34],[86,35],[88,36],[87,37],[89,38],[90,39],[91,19],[92,40],[93,41],[94,42],[95,43],[96,44],[97,45],[98,46],[99,47],[100,48],[101,49],[102,50],[103,51],[106,52],[107,19],[159,53],[139,54],[133,55],[132,19],[155,56],[152,19],[153,56],[154,57],[156,58],[49,59],[48,19],[46,19],[47,19],[8,19],[10,19],[9,19],[2,19],[11,19],[12,19],[13,19],[14,19],[15,19],[16,19],[17,19],[18,19],[3,19],[19,19],[20,19],[4,19],[21,19],[25,19],[22,19],[23,19],[24,19],[26,19],[27,19],[28,19],[5,19],[29,19],[30,19],[31,19],[32,19],[6,19],[36,19],[33,19],[34,19],[35,19],[37,19],[7,19],[38,19],[43,19],[44,19],[39,19],[40,19],[41,19],[42,19],[1,19],[45,19],[125,60],[116,61],[123,62],[118,19],[119,19],[117,63],[120,64],[112,19],[113,19],[124,65],[115,66],[121,19],[122,67],[114,68],[173,69],[111,70],[110,71],[109,19],[108,19],[51,72],[50,19],[170,73],[171,74],[169,75],[172,76],[166,77],[167,78],[168,79],[160,19],[162,77],[163,77],[165,80],[164,77],[161,81],[146,82],[176,83],[177,84],[147,85],[178,86],[144,87],[179,88],[143,82],[148,89],[150,88],[180,88],[151,90],[149,88],[130,85],[158,91],[157,92],[145,93],[174,94],[181,95],[175,96],[128,19],[129,97],[127,98],[126,99],[131,19],[134,100],[142,101],[182,19],[135,19],[138,102],[141,19],[140,103]],"latestChangedDtsFile":"./platforms/ios/build.d.ts","version":"5.8.3"}
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../node_modules/commander/typings/index.d.ts","../node_modules/commander/typings/esm.d.mts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/ws/index.d.mts","../../../node_modules/birpc/dist/index.d.ts","../../bridge/dist/shared/test-runner.d.ts","../../bridge/dist/shared/test-collector.d.ts","../../bridge/dist/shared.d.ts","../../bridge/dist/server.d.ts","../../../node_modules/zod/dist/types/v3/helpers/typealiases.d.ts","../../../node_modules/zod/dist/types/v3/helpers/util.d.ts","../../../node_modules/zod/dist/types/v3/zoderror.d.ts","../../../node_modules/zod/dist/types/v3/locales/en.d.ts","../../../node_modules/zod/dist/types/v3/errors.d.ts","../../../node_modules/zod/dist/types/v3/helpers/parseutil.d.ts","../../../node_modules/zod/dist/types/v3/helpers/enumutil.d.ts","../../../node_modules/zod/dist/types/v3/helpers/errorutil.d.ts","../../../node_modules/zod/dist/types/v3/helpers/partialutil.d.ts","../../../node_modules/zod/dist/types/v3/standard-schema.d.ts","../../../node_modules/zod/dist/types/v3/types.d.ts","../../../node_modules/zod/dist/types/v3/external.d.ts","../../../node_modules/zod/dist/types/v3/index.d.ts","../../../node_modules/zod/dist/types/index.d.ts","../../config/dist/types.d.ts","../../config/dist/reader.d.ts","../../config/dist/errors.d.ts","../../config/dist/index.d.ts","../src/platforms/platform-adapter.ts","../../tools/dist/abort.d.ts","../../../node_modules/picocolors/types.d.ts","../../../node_modules/picocolors/picocolors.d.ts","../../tools/dist/color.d.ts","../../tools/dist/logger.d.ts","../../../node_modules/@clack/core/dist/index.d.mts","../../../node_modules/@clack/prompts/dist/index.d.mts","../../tools/dist/prompts.d.ts","../../../node_modules/nano-spawn/source/index.d.ts","../../tools/dist/spawn.d.ts","../../tools/dist/react-native.d.ts","../../tools/dist/index.d.ts","../src/platforms/android/emulator.ts","../src/platforms/android/build.ts","../src/process.ts","../src/bundlers/metro.ts","../src/errors/errors.ts","../src/platforms/android/index.ts","../src/platforms/ios/simulator.ts","../src/platforms/ios/build.ts","../src/utils.ts","../src/platforms/ios/index.ts","../src/platforms/web/index.ts","../src/platforms/platform-registry.ts","../../../node_modules/minipass/dist/esm/index.d.ts","../node_modules/lru-cache/dist/esm/index.d.ts","../node_modules/path-scurry/dist/esm/index.d.ts","../node_modules/minimatch/dist/esm/ast.d.ts","../node_modules/minimatch/dist/esm/escape.d.ts","../node_modules/minimatch/dist/esm/unescape.d.ts","../node_modules/minimatch/dist/esm/index.d.ts","../node_modules/glob/dist/esm/pattern.d.ts","../node_modules/glob/dist/esm/processor.d.ts","../node_modules/glob/dist/esm/walker.d.ts","../node_modules/glob/dist/esm/ignore.d.ts","../node_modules/glob/dist/esm/glob.d.ts","../node_modules/glob/dist/esm/has-magic.d.ts","../node_modules/glob/dist/esm/index.d.ts","../../bridge/dist/index.d.ts","../src/reporters/default-reporter.ts","../src/commands/test.ts","../src/errors/errorhandler.ts","../src/index.ts","../src/platforms/android/device.ts","../src/platforms/ios/device.ts","../src/reporters/junit-reporter.ts","../../tools/dist/isinteractive.d.ts","../../tools/src/abort.ts","../../tools/src/color.ts","../../tools/src/isinteractive.ts","../../tools/src/logger.ts","../../tools/src/prompts.ts","../../tools/src/spawn.ts"],"fileIdsList":[[83,86,98],[86,98,136],[52,98],[55,98],[56,61,89,98],[57,68,69,76,86,97,98],[57,58,68,76,98],[59,98],[60,61,69,77,98],[61,86,94,98],[62,64,68,76,98],[63,98],[64,65,98],[68,98],[66,68,98],[68,69,70,86,97,98],[68,69,70,83,86,89,98],[98,102],[98],[64,68,71,76,86,97,98],[68,69,71,72,76,86,94,97,98],[71,73,86,94,97,98],[52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],[68,74,98],[75,97,98],[64,68,76,86,98],[77,98],[78,98],[55,79,98],[80,96,98,102],[81,98],[82,98],[68,83,84,98],[83,85,98,100],[56,68,86,87,88,89,98],[56,86,88,98],[86,87,98],[89,98],[90,98],[68,92,93,98],[92,93,98],[61,76,86,94,98],[95,98],[76,96,98],[56,71,82,97,98],[61,98],[86,98,99],[98,100],[98,101],[56,61,68,70,79,86,97,98,100,102],[86,98,103],[68,71,73,76,86,94,97,98,103,105],[68,90,98,105],[57,98],[98,132],[48,98],[98,124],[98,114,115],[98,112,113,114,116,117,122],[98,113,114],[98,122],[98,123],[98,114],[98,112,113,114,117,118,119,120,121],[98,112,113,124],[98,110],[98,106,107,110],[98,108,109],[50,98],[98,155,157,161,162,165],[98,166],[98,157,161,164],[98,155,157,161,164,165,166,167],[98,161],[98,157,161,162,164],[98,155,157,162,163,165],[98,158,159,160],[69,78,98,155,156],[49,57,98,142],[49,98,111,129,130,142,147,151,154,168,169,170],[49,98,129,147,151],[49,98,129],[49,51,69,78,97,98,142,171,172],[49,78,98,142],[49,98,142],[49,57,98,129,130,142,143,144,145,146,147],[49,98,129,130,145,146,147,149,150,151],[49,98,130,148,152,153],[49,98,129,130],[49,57,98],[49,98,129,142,169],[49,69,78,98,129,169],[49,98],[98,126,127,128],[98,126],[98,125],[98,133],[98,131,134,135,138,140,141],[98,137],[98,139]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"1a2ae3df505891912038749a39e434643cf1f91a578475ae049f36e35c870c58","impliedFormat":1},{"version":"b124c0624b15412ace7d54644ade38d7a69db7e25488a1a4d2a8df6e11696538","impliedFormat":99},{"version":"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","impliedFormat":1},{"version":"a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a","impliedFormat":1},{"version":"f749812878fecfa53cfc13b36e5d35086fb6377983a9df44175da83ccc23af1f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7d2e3fea24c712c99c03ad8f556abedbfe105f87f1be10b95dbd409d24bc05a3","impliedFormat":1},{"version":"211e3f15fbced4ab4be19f49ffa990b9ff20d749d33b65ff753be691e7616239","affectsGlobalScope":true,"impliedFormat":1},{"version":"3719525a8f6ab731e3dfd585d9f87df55ec7d50d461df84f74eb4d68bb165244","impliedFormat":1},{"version":"5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713","impliedFormat":1},{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","impliedFormat":1},{"version":"e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","impliedFormat":1},{"version":"bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","impliedFormat":1},{"version":"1cdcfc1f624d6c08aa12c73935f6e13f095919cd99edf95752951796eb225729","impliedFormat":1},{"version":"4eaff3d8e10676fd7913d8c108890e71c688e1e7d52f6d1d55c39514f493dc47","impliedFormat":1},{"version":"14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","impliedFormat":1},{"version":"5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea","impliedFormat":1},{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true,"impliedFormat":1},{"version":"00dee7cdca8b8420c47ea4a31a34b8e8294013ebc4f463fd941e867e7bf05029","affectsGlobalScope":true,"impliedFormat":1},{"version":"3256f3cccd578f9e7fe3a28096c505634bebcee8afb738ffa99368e536ca3a0b","impliedFormat":1},{"version":"1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","impliedFormat":1},{"version":"7f138842074d0a40681775af008c8452093b68c383c94de31759e853c6d06b5c","impliedFormat":1},{"version":"a3d541d303ee505053f5dcbf9fafb65cac3d5631037501cd616195863a6c5740","impliedFormat":1},{"version":"8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","impliedFormat":1},{"version":"2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58","impliedFormat":1},{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true,"impliedFormat":1},{"version":"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","impliedFormat":1},{"version":"7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","impliedFormat":1},{"version":"b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30","impliedFormat":1},{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","impliedFormat":1},{"version":"210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","impliedFormat":1},{"version":"36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","impliedFormat":1},{"version":"0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","impliedFormat":1},{"version":"25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","impliedFormat":1},{"version":"4f3fdeba4e28e21aa719c081b8dc8f91d47e12e773389b9d35679c08151c9d37","impliedFormat":1},{"version":"1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","impliedFormat":1},{"version":"69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","impliedFormat":1},{"version":"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","impliedFormat":1},{"version":"23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","impliedFormat":1},{"version":"f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7","impliedFormat":1},{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","impliedFormat":1},{"version":"1422cd9e705adcc09088fda85a900c2b70e3ad36ea85846f68bd1a884cdf4e2b","impliedFormat":1},{"version":"3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","impliedFormat":1},{"version":"5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2","impliedFormat":1},{"version":"a73ae8c0e62103bb9e21bb6538700881bf135b9a8b125b857ec68edfa0da4ed3","affectsGlobalScope":true,"impliedFormat":1},{"version":"e1c1b2fbe236bf7ee3e342eeae7e20efb8988a0ac7da1cbbfa2c1f66b76c3423","affectsGlobalScope":true,"impliedFormat":1},{"version":"868831cab82b65dfe1d68180e898af1f2101e89ba9b754d1db6fb8cc2fac1921","impliedFormat":1},{"version":"0fe8985a28f82c450a04a6edf1279d7181c0893f37da7d2a27f8efd4fd5edb03","impliedFormat":1},{"version":"e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","impliedFormat":1},{"version":"52120bb7e4583612225bdf08e7c12559548170f11e660d33a33623bae9bbdbba","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6dd3dba8e665ac43d279e0fdf5219edda0eed69b5e9a5061f46cd6a65c4f7a1","impliedFormat":1},{"version":"316f1486e15cbf7896425f0a16dfe12d447dd57cfb3244b8b119c77df870858f","impliedFormat":99},{"version":"f2ee9c0f4e3e40fa79743b5bad3d085d41cf6854c68687737c00d3f6d0ed7941","impliedFormat":99},{"version":"be389ee0d0f5e70329ea4c2fb44b7716e7ceda3680fa0ee32c22329ef8ef7e60","impliedFormat":99},{"version":"402ac3b4c96c5718d18c00339c6e4c66ff0b1a0d8a166570107472342fd57e7a","impliedFormat":99},{"version":"0df9e64851cbe9801f868551cae57fffd2d4339ac98b4d6ff00aad10a5cd8f33","impliedFormat":99},{"version":"18b54e0f8a18bb6b39598a08fe20f310fe683c6e0421bd1d2cda71faeb36e630","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"54f6ec6ea75acea6eb23635617252d249145edbc7bcd9d53f2d70280d2aef953","impliedFormat":1},{"version":"c25ce98cca43a3bfa885862044be0d59557be4ecd06989b2001a83dcf69620fd","impliedFormat":1},{"version":"8e71e53b02c152a38af6aec45e288cc65bede077b92b9b43b3cb54a37978bb33","impliedFormat":1},{"version":"754a9396b14ca3a4241591afb4edc644b293ccc8a3397f49be4dfd520c08acb3","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"de2316e90fc6d379d83002f04ad9698bc1e5285b4d52779778f454dd12ce9f44","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"2da997a01a6aa5c5c09de5d28f0f4407b597c5e1aecfd32f1815809c532650a2","impliedFormat":1},{"version":"5d26d2e47e2352def36f89a3e8bf8581da22b7f857e07ef3114cd52cf4813445","impliedFormat":1},{"version":"3db2efd285e7328d8014b54a7fce3f4861ebcdc655df40517092ed0050983617","impliedFormat":1},{"version":"d5d39a24c759df40480a4bfc0daffd364489702fdbcbdfc1711cde34f8739995","impliedFormat":1},{"version":"90b71a5664229ca2f203273a41f843d57b3ce41a19bc09a95bad1b01721daf17","impliedFormat":99},{"version":"a4156e0a34cc733d97b5ef192a1bc8c985337c100dcf0e9dba3421f887ba7531","impliedFormat":99},{"version":"ab21498cc9c3434e5d72dede3ec195c94b992f2c37b2e8458e06503ae428d626","impliedFormat":99},{"version":"106b50cbf01abab7c0561efc652cf90fa882b75d08eecaf758bd6d890c531d08","impliedFormat":99},{"version":"8e759f5797c82cb8b75098ed472371537d9c96e7beb4794f7ffef8b6349e09bb","signature":"33039f6557774d3b82268b2bd148d32e384f56b99d465c8bb293ef109e837654","impliedFormat":99},{"version":"3e442c402123b264ccdf7123c1366e1473d9c39f5db69373e938284fc01c49ce","impliedFormat":99},{"version":"590595c1230ebb7c43ebac51b2b2da956a719b213355b4358e2a6b16a8b5936c","impliedFormat":1},{"version":"8c5f0739f00f89f89b03a1fe6658c6d78000d7ebd7f556f0f8d6908fa679de35","impliedFormat":1},{"version":"a15c0df1ac9b2a4d833490522614fc57ae97d70a07bf4964a4d6bb73f3f56399","impliedFormat":99},{"version":"e4cead4a8596a6f051c36ef184f5fb6f117232eefdc1f98ef9847c9efc2c8911","impliedFormat":99},{"version":"e191585a6a460d89791b3d3d39a10607bbcefa7f7c9812af6ca5f11c33d398d1","impliedFormat":99},{"version":"24379e38ef6db808a7aed9b162dae44d16f84f63c04994efb8b0106bcc589909","impliedFormat":99},{"version":"8af66ec621033f41ccb2bcee775e883c2649fa0db71192fe863185b0281082a6","impliedFormat":99},{"version":"9d4af7bde3e345d3071b5fefbece2d3482971aae89ded50f302c8cb246e81581","impliedFormat":99},{"version":"f3eb748185038bca941a02994b1b0b5803c0a2ce818b8a7d72a24a6b814f5d3e","impliedFormat":99},{"version":"2ba26b5ab00dd3495eeb733cdb46d939a8eb755a395a91169158cdf962aff6c3","impliedFormat":99},{"version":"2e1c22b413f96fd388774b174588816f4bd787486ecfe74f5bcb361dd6bfce50","impliedFormat":99},{"version":"6eefa861b6aa125e0f5f8ad9f2f5d9cebee21ecc5f78d4494faf47a637d6208c","signature":"6fe995c2a73841b3fcd30e41789898aca49aa8873554db00f6f14c12a60eeefa","impliedFormat":99},{"version":"c86d845c9dd0aec9a416a2f9d409f19beb105abd650228a15c5cd731d96ddcf7","signature":"5a5615df20c0bdc3ed37d12b4d18ad0668a9fa9c94a6a25505aa644855e862aa","impliedFormat":99},{"version":"69798070e4c8f8553c7ed95b3210904b4448a2caf41d94e9f75a9f816691b1c7","signature":"ce1abe69f27b27079836681c6cdd68b7580e8ccbfe03e2707928241a9b244df5","impliedFormat":99},{"version":"032047d584014976c6bd1022d13534fd363a46cebe2931b31396c9c08299e3d7","signature":"a5988ef9d5643ff7dc67acc7613caf97069e0940797458fe20c8eb6506aa7e7e","impliedFormat":99},{"version":"8979cf2b0fe41670907f0ae13662669f7da337a0daba83e4785a48cebf57888b","signature":"c61a685a451c7060951b9d1aea6d16d279a30c6c01de3afb2d01cdf11e87baed","impliedFormat":99},{"version":"e7e5cc867a24a7b44c27bb3c3d059295c0e6c94a6b60ffa5b6fad2e153c8676d","signature":"1d283a2b9afc40a8734a3e8b901fec2b965635d8c1cf889ff51797857ae0f8b1","impliedFormat":99},{"version":"8363eb809a2c2e07e4f7ce2d96e1ef995b4ffe7301049fe650f0c71fb14c7727","signature":"b3d9a80837694108b7698980d7f58913d6ed1883c610bb4e0947b15debd6bfd1","impliedFormat":99},{"version":"87a9a91c6edf6517501bea5052302b42b95d7f8ae76ebff4fc07e17f14e4dc39","signature":"a38041473a7082dffcbe3879593f424cafcaec4114f7024d0772612d85b2b595","impliedFormat":99},{"version":"7fb7e1c1820efcfc66a478e400e9b60546aaa3d5856a3f47a1f752b34c0e684b","signature":"18036d59518e53236d9c59440b5b98b8bd3c717e96b35074dd99ec73465c1156","impliedFormat":99},{"version":"19d8b14f61c343a6d6904a7ba0f367506c878e228ec0e1cd3ba71fc0a9bb49a1","signature":"df429fc17c447fc67d0390c2d78f838378786fbd0cc989b6948fc1cd7262c17a","impliedFormat":99},{"version":"925827c23b1fd251cc8ba72c900321426f89c8ae9e7fe85c228bde13ff281d39","signature":"86172af4524210fbeb025fcabea1268e78715fc0a420b916d6a8cd20934e7eeb","impliedFormat":99},{"version":"8db703ab718fba5f6263e2b414dbbb42b4f6f8202e55fd449820df0f69594e49","signature":"9f1bad9472cb60fb2bcd138efef4f1b613b91410f44fda0d830184ab06f4b8ef","impliedFormat":99},{"version":"4115aa147c5a64817fb55274b44087cbf1bc90f54906bfdfc9ee847a71cd91cf","impliedFormat":99},{"version":"599b42c2c7227d59788f9239a30b16e465e15127c7c4541d30b801c23ca681e6","impliedFormat":99},{"version":"072f583571d6e3d30cd9760ee3485d29484fb7b54ba772ac135c747a380096a1","impliedFormat":99},{"version":"7212c2d58855b8df35275180e97903a4b6093d4fbaefea863d8d028da63938c6","impliedFormat":99},{"version":"5bd0f306b4a9dc65bccf38d9295bc52720d2fa455e06f604529d981b5eb8d9dc","impliedFormat":99},{"version":"f30992084e86f4b4c223c558b187cb0a9e83071592bd830d8ff2a471ee2bf2d4","impliedFormat":99},{"version":"854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","impliedFormat":99},{"version":"dd9faff42b456b5f03b85d8fbd64838eb92f6f7b03b36322cbc59c005b7033d3","impliedFormat":99},{"version":"6ff702721d87c0ba8e7f8950e7b0a3b009dfd912fab3997e0b63fab8d83919c3","impliedFormat":99},{"version":"9dce9fc12e9a79d1135699d525aa6b44b71a45e32e3fa0cf331060b980b16317","impliedFormat":99},{"version":"586b2fd8a7d582329658aaceec22f8a5399e05013deb49bcfde28f95f093c8ee","impliedFormat":99},{"version":"59c44b081724d4ab8039988aba34ee6b3bd41c30fc2d8686f4ed06588397b2f7","impliedFormat":99},{"version":"ef1f3eadd7bed282de45bafd7c2c00105cf1db93e22f6cd763bec8a9c2cf6df1","impliedFormat":99},{"version":"3d8885d13f76ff35b7860039e83c936ff37553849707c2fd1d580d193a52be5b","impliedFormat":99},{"version":"a955c49e9dc38915d1a9860dc049a3b5fa46cb4e9b832ebcde89d96d6e68b8e3","impliedFormat":99},{"version":"a1458c573dea42ad7717f60fa0cd280429cd406ea8f997e62f396b0780dc519e","signature":"7eafa82caf0883050cc715861484f1126fdf12900095e0dfeeac0ac8cd884343","impliedFormat":99},{"version":"75b5745bfffeaddeb43c81fc591e12d74c44b059bd0d03c39966eb858baec379","signature":"a1bd754cf6b1b8e70370e8dbad7d4abd7d73178fa1e0eb1956f36ab72b5d7144","impliedFormat":99},{"version":"031883acc6ff25785c6b2b6b2287141608de7c6d78bbff672f2e4fa42d0fb6a1","signature":"72bde9177d6ecb7d2a45761aaa15ef458bf60bedd2071150f8b2c60445c3b115","impliedFormat":99},{"version":"f3c71b768f069f48a2e2bdee211f4705e64f7988f3a514bb34cc2a299c002166","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"a7a0f447cd9fef8b36c1f55038df6b2358d871c0e62ca302cf59eee1493db464","signature":"be79133144bff926c2ec3a838ec1d42fa7a3ca4556199654d047c6588e709ab5","impliedFormat":99},{"version":"10af6ab7f300b0efea1b97b67048a6bad016600d175654dae193ad46134287e7","signature":"90086ab58d5d9e95e55850554ca9e35850b6531e8ada7da93c4b61bdee2647ba","impliedFormat":99},{"version":"ae3e1911c27e8a5db2eb579296c0952809d40c8f38c18e0f58e8fc483fe6e1e5","signature":"e6761f0a3e4e68466d38327d5cd380f5f3c75810fd82cafed45110d60d40a3cc","impliedFormat":99},{"version":"20666143132be33320b033fe7e995c3ce1dcd82585ec140bc833d2abe0bc927a","impliedFormat":99}],"root":[130,131,134,135,138,140,[143,154],[170,177]],"resolvedRoot":[[131,178],[134,179],[177,180],[135,181],[138,182],[140,183]],"options":{"composite":true,"declarationMap":true,"emitDeclarationOnly":false,"importHelpers":true,"module":199,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.lib.tsbuildinfo"},"referencedMap":[[136,1],[137,2],[52,3],[53,3],[55,4],[56,5],[57,6],[58,7],[59,8],[60,9],[61,10],[62,11],[63,12],[64,13],[65,13],[67,14],[66,15],[68,14],[69,16],[70,17],[54,18],[104,19],[71,20],[72,21],[73,22],[105,23],[74,24],[75,25],[76,26],[77,27],[78,28],[79,29],[80,30],[81,31],[82,32],[83,33],[84,33],[85,34],[86,35],[88,36],[87,37],[89,38],[90,39],[91,19],[92,40],[93,41],[94,42],[95,43],[96,44],[97,45],[98,46],[99,47],[100,48],[101,49],[102,50],[103,51],[106,52],[107,19],[155,53],[139,54],[133,55],[132,19],[49,56],[48,19],[46,19],[47,19],[8,19],[10,19],[9,19],[2,19],[11,19],[12,19],[13,19],[14,19],[15,19],[16,19],[17,19],[18,19],[3,19],[19,19],[20,19],[4,19],[21,19],[25,19],[22,19],[23,19],[24,19],[26,19],[27,19],[28,19],[5,19],[29,19],[30,19],[31,19],[32,19],[6,19],[36,19],[33,19],[34,19],[35,19],[37,19],[7,19],[38,19],[43,19],[44,19],[39,19],[40,19],[41,19],[42,19],[1,19],[45,19],[125,57],[116,58],[123,59],[118,19],[119,19],[117,60],[120,61],[112,19],[113,19],[124,62],[115,63],[121,19],[122,64],[114,65],[169,66],[111,67],[110,68],[109,19],[108,19],[51,69],[50,19],[166,70],[167,71],[165,72],[168,73],[162,74],[163,75],[164,76],[156,19],[158,74],[159,74],[161,77],[160,74],[157,78],[146,79],[171,80],[172,81],[147,82],[173,83],[144,84],[174,85],[143,79],[148,86],[150,85],[175,85],[152,87],[149,85],[130,82],[154,88],[153,89],[145,90],[170,91],[176,92],[151,93],[128,19],[129,94],[127,95],[126,96],[131,19],[134,97],[142,98],[177,19],[135,19],[138,99],[141,19],[140,100]],"latestChangedDtsFile":"./errors/errors.d.ts","version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-harness",
3
- "version": "1.0.0-alpha.1",
3
+ "version": "1.0.0-alpha.3",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "react-native-harness": "./bin.js"
@@ -10,9 +10,9 @@
10
10
  "glob": "^11.0.0",
11
11
  "playwright": "^1.53.2",
12
12
  "tslib": "^2.3.0",
13
- "@react-native-harness/config": "1.0.0-alpha.1",
14
- "@react-native-harness/bridge": "1.0.0-alpha.1",
15
- "@react-native-harness/tools": "1.0.0-alpha.1"
13
+ "@react-native-harness/tools": "1.0.0-alpha.3",
14
+ "@react-native-harness/bridge": "1.0.0-alpha.3",
15
+ "@react-native-harness/config": "1.0.0-alpha.3"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/node": "18.16.9"
@@ -27,6 +27,16 @@ export const runMetro = async (isExpo = false): Promise<ChildProcess> => {
27
27
  }
28
28
  );
29
29
 
30
+ // Forward metro output to CLI output
31
+ metro.nodeChildProcess.then((childProcess) => {
32
+ if (childProcess.stdout) {
33
+ childProcess.stdout.pipe(process.stdout);
34
+ }
35
+ if (childProcess.stderr) {
36
+ childProcess.stderr.pipe(process.stderr);
37
+ }
38
+ });
39
+
30
40
  metro.catch((error) => {
31
41
  // This process is going to be killed by us, so we don't need to throw an error
32
42
  if (error instanceof SubprocessError && error.signalName === 'SIGTERM') {
@@ -35,6 +35,7 @@ type TestRunContext = {
35
35
  environment?: Environment;
36
36
  testFiles?: string[];
37
37
  results?: TestResult[];
38
+ projectRoot: string;
38
39
  };
39
40
 
40
41
  const setupEnvironment = async (context: TestRunContext): Promise<void> => {
@@ -94,7 +95,7 @@ const findTestFiles = async (
94
95
 
95
96
  const globPattern = pattern || context.config.include;
96
97
  const glob = new Glob(globPattern, {
97
- cwd: process.cwd(),
98
+ cwd: context.projectRoot,
98
99
  });
99
100
  context.testFiles = await glob.walk();
100
101
  discoverSpinner.stop(`Found ${context.testFiles.length} test files`);
@@ -153,7 +154,7 @@ export const testCommand = async (
153
154
  ): Promise<void> => {
154
155
  intro('React Native Test Harness');
155
156
 
156
- const config = await getConfig(process.cwd());
157
+ const { config, projectRoot } = await getConfig(process.cwd());
157
158
  config.reporter = defaultReporter;
158
159
 
159
160
  const selectedRunnerName = runnerName ?? config.defaultRunner;
@@ -173,6 +174,7 @@ export const testCommand = async (
173
174
  runner,
174
175
  testFiles: [],
175
176
  results: [],
177
+ projectRoot,
176
178
  };
177
179
 
178
180
  try {
@@ -12,6 +12,7 @@ import {
12
12
  RpcClientError,
13
13
  AppNotInstalledError,
14
14
  BridgeTimeoutError,
15
+ BundlingFailedError,
15
16
  } from './errors.js';
16
17
 
17
18
  export const handleError = (error: unknown): void => {
@@ -149,6 +150,17 @@ export const handleError = (error: unknown): void => {
149
150
  );
150
151
  }
151
152
  console.error(`\nPlease install the app and try running the tests again.`);
153
+ } else if (error instanceof BundlingFailedError) {
154
+ console.error(`\n❌ Test File Bundling Error`);
155
+ console.error(`\nFile: ${error.modulePath}`);
156
+ console.error(`\nError: ${error.reason}`);
157
+ console.error(`\nTroubleshooting steps:`);
158
+ console.error(` • Check the test file syntax and imports`);
159
+ console.error(` • Verify all imported modules exist and are accessible`);
160
+ console.error(` • Ensure the Metro bundler configuration is correct`);
161
+ console.error(` • Check for any circular dependencies in the test file`);
162
+ console.error(` • Verify that all required packages are installed`);
163
+ console.error(`\nPlease fix the bundling issues and try again.`);
152
164
  } else if (error instanceof BridgeTimeoutError) {
153
165
  console.error(`\n❌ Bridge Connection Timeout`);
154
166
  console.error(
@@ -107,3 +107,13 @@ export class AppNotInstalledError extends Error {
107
107
  this.name = 'AppNotInstalledError';
108
108
  }
109
109
  }
110
+
111
+ export class BundlingFailedError extends Error {
112
+ constructor(
113
+ public readonly modulePath: string,
114
+ public readonly reason: string
115
+ ) {
116
+ super(`Bundling of ${modulePath} failed: ${reason}`);
117
+ this.name = 'BundlingFailedError';
118
+ }
119
+ }
@@ -1,6 +1,6 @@
1
1
  import { type ChildProcess } from 'node:child_process';
2
2
  import {
3
- assertNativeRunnerConfig,
3
+ assertAndroidRunnerConfig,
4
4
  TestRunnerConfig,
5
5
  } from '@react-native-harness/config';
6
6
  import { logger } from '@react-native-harness/tools';
@@ -21,7 +21,7 @@ import { AppNotInstalledError } from '../../errors/errors.js';
21
21
  const androidPlatformAdapter: PlatformAdapter = {
22
22
  name: 'android',
23
23
  getEnvironment: async (runner: TestRunnerConfig) => {
24
- assertNativeRunnerConfig(runner);
24
+ assertAndroidRunnerConfig(runner);
25
25
 
26
26
  let emulator: ChildProcess | null = null;
27
27
  const emulatorStatus = await getEmulatorStatus(runner.deviceId);
@@ -11,17 +11,26 @@ export const listDevices = async (): Promise<any> => {
11
11
  };
12
12
 
13
13
  export const getDeviceByName = async (
14
- simulatorName: string
14
+ simulatorName: string,
15
+ systemVersion: string
15
16
  ): Promise<any | null> => {
16
17
  const devices = await listDevices();
18
+ const expectedRuntimeId = `com.apple.CoreSimulator.SimRuntime.iOS-${systemVersion.replace(
19
+ /\./,
20
+ '-'
21
+ )}`;
22
+
23
+ const runtime = devices.devices[expectedRuntimeId];
17
24
 
18
- for (const runtime in devices.devices) {
19
- const runtimeDevices = devices.devices[runtime];
20
- for (const device of runtimeDevices) {
21
- if (device.name === simulatorName && device.isAvailable) {
22
- return device;
23
- }
24
- }
25
+ if (!runtime) {
26
+ return null;
27
+ }
28
+
29
+ const runtimeDevices = devices.devices[runtime];
30
+ const device = runtimeDevices.find((d: any) => d.name === simulatorName);
31
+
32
+ if (device) {
33
+ return device;
25
34
  }
26
35
 
27
36
  return null;
@@ -42,35 +51,18 @@ export const listApps = async (udid: string): Promise<string[]> => {
42
51
  };
43
52
 
44
53
  export const isAppInstalled = async (
45
- simulatorName: string,
54
+ udid: string,
46
55
  bundleId: string
47
56
  ): Promise<boolean> => {
48
- const device = await getDeviceByName(simulatorName);
49
-
50
- if (!device) {
51
- throw new Error(`Simulator ${simulatorName} not found`);
52
- }
53
-
54
- const appList = await listApps(device.udid);
57
+ const appList = await listApps(udid);
55
58
  return appList.includes(bundleId);
56
59
  };
57
60
 
58
- export const runApp = async (
59
- simulatorName: string,
60
- appName: string
61
- ): Promise<void> => {
62
- await killApp(simulatorName, appName);
63
- await spawn('xcrun', ['simctl', 'launch', simulatorName, appName]);
61
+ export const runApp = async (udid: string, appName: string): Promise<void> => {
62
+ await killApp(udid, appName);
63
+ await spawn('xcrun', ['simctl', 'launch', udid, appName]);
64
64
  };
65
65
 
66
- export const killApp = async (
67
- simulatorName: string,
68
- appName: string
69
- ): Promise<void> => {
70
- await spawnAndForget('xcrun', [
71
- 'simctl',
72
- 'terminate',
73
- simulatorName,
74
- appName,
75
- ]);
66
+ export const killApp = async (udid: string, appName: string): Promise<void> => {
67
+ await spawnAndForget('xcrun', ['simctl', 'terminate', udid, appName]);
76
68
  };
@@ -1,9 +1,10 @@
1
1
  import {
2
- assertNativeRunnerConfig,
2
+ assertIOSRunnerConfig,
3
3
  TestRunnerConfig,
4
4
  } from '@react-native-harness/config';
5
5
  import { type PlatformAdapter } from '../platform-adapter.js';
6
6
  import {
7
+ getSimulatorDeviceId,
7
8
  getSimulatorStatus,
8
9
  runSimulator,
9
10
  stopSimulator,
@@ -12,38 +13,48 @@ import { isAppInstalled, runApp, killApp } from './build.js';
12
13
  import { killWithAwait } from '../../process.js';
13
14
  import { runMetro } from '../../bundlers/metro.js';
14
15
  import { AppNotInstalledError } from '../../errors/errors.js';
16
+ import { assert } from '../../utils.js';
15
17
 
16
18
  const iosPlatformAdapter: PlatformAdapter = {
17
19
  name: 'ios',
18
20
  getEnvironment: async (runner: TestRunnerConfig) => {
19
- assertNativeRunnerConfig(runner);
21
+ assertIOSRunnerConfig(runner);
22
+ // TODO: system version is also important as there may be two emulators with the same name
23
+ // but different system versions
20
24
 
21
25
  let shouldStopSimulator = false;
22
- const simulatorStatus = await getSimulatorStatus(runner.deviceId);
26
+ const udid = await getSimulatorDeviceId(
27
+ runner.deviceId,
28
+ runner.systemVersion
29
+ );
30
+
31
+ assert(!!udid, 'Simulator not found');
32
+
33
+ const simulatorStatus = await getSimulatorStatus(udid);
23
34
  const metroPromise = runMetro();
24
35
 
25
36
  if (simulatorStatus === 'stopped') {
26
- await runSimulator(runner.deviceId);
37
+ await runSimulator(udid);
27
38
  shouldStopSimulator = true;
28
39
  }
29
40
 
30
- const isInstalled = await isAppInstalled(runner.deviceId, runner.bundleId);
41
+ const isInstalled = await isAppInstalled(udid, runner.bundleId);
31
42
 
32
43
  if (!isInstalled) {
33
44
  throw new AppNotInstalledError(runner.deviceId, runner.bundleId, 'ios');
34
45
  }
35
46
 
36
47
  const metro = await metroPromise;
37
- await runApp(runner.deviceId, runner.bundleId);
48
+ await runApp(udid, runner.bundleId);
38
49
 
39
50
  return {
40
51
  restart: async () => {
41
- await runApp(runner.deviceId, runner.bundleId);
52
+ await runApp(udid, runner.bundleId);
42
53
  },
43
54
  dispose: async () => {
44
- await killApp(runner.deviceId, runner.bundleId);
55
+ await killApp(udid, runner.bundleId);
45
56
  if (shouldStopSimulator) {
46
- await stopSimulator(runner.deviceId);
57
+ await stopSimulator(udid);
47
58
  }
48
59
 
49
60
  await killWithAwait(metro);
@@ -3,7 +3,8 @@ import { spawn } from '@react-native-harness/tools';
3
3
  export type IOSSimulatorStatus = 'stopped' | 'loading' | 'running';
4
4
 
5
5
  export const getSimulatorDeviceId = async (
6
- simulatorName: string
6
+ simulatorName: string,
7
+ systemVersion: string
7
8
  ): Promise<string | null> => {
8
9
  try {
9
10
  const { stdout } = await spawn('xcrun', [
@@ -13,19 +14,21 @@ export const getSimulatorDeviceId = async (
13
14
  '--json',
14
15
  ]);
15
16
  const devices = JSON.parse(stdout);
17
+ const expectedRuntimeId = `com.apple.CoreSimulator.SimRuntime.iOS-${systemVersion.replace(
18
+ /\./,
19
+ '-'
20
+ )}`;
16
21
 
17
- // Find the device across all iOS versions
18
- for (const runtime in devices.devices) {
19
- if (runtime.includes('iOS')) {
20
- const runtimeDevices = devices.devices[runtime];
21
- const device = runtimeDevices.find(
22
- (d: any) => d.name === simulatorName
23
- );
22
+ const runtime = devices.devices[expectedRuntimeId];
24
23
 
25
- if (device) {
26
- return device.udid;
27
- }
28
- }
24
+ if (!runtime) {
25
+ return null;
26
+ }
27
+
28
+ const device = runtime.find((d: any) => d.name === simulatorName);
29
+
30
+ if (device) {
31
+ return device.udid;
29
32
  }
30
33
 
31
34
  return null;
@@ -73,7 +76,7 @@ export const getAvailableSimulators = async (): Promise<
73
76
  };
74
77
 
75
78
  export const getSimulatorStatus = async (
76
- simulatorName: string
79
+ udid: string
77
80
  ): Promise<IOSSimulatorStatus> => {
78
81
  try {
79
82
  const { stdout } = await spawn('xcrun', [
@@ -87,9 +90,7 @@ export const getSimulatorStatus = async (
87
90
  for (const runtime in devices.devices) {
88
91
  if (runtime.includes('iOS')) {
89
92
  const runtimeDevices = devices.devices[runtime];
90
- const device = runtimeDevices.find(
91
- (d: any) => d.name === simulatorName
92
- );
93
+ const device = runtimeDevices.find((d: any) => d.udid === udid);
93
94
 
94
95
  if (device) {
95
96
  switch (device.state) {
@@ -110,15 +111,9 @@ export const getSimulatorStatus = async (
110
111
  }
111
112
  };
112
113
 
113
- export const runSimulator = async (name: string): Promise<void> => {
114
- const deviceId = await getSimulatorDeviceId(name);
115
-
116
- if (!deviceId) {
117
- throw new Error('Simulator not found');
118
- }
119
-
114
+ export const runSimulator = async (udid: string): Promise<void> => {
120
115
  try {
121
- await spawn('xcrun', ['simctl', 'boot', deviceId]);
116
+ await spawn('xcrun', ['simctl', 'boot', udid]);
122
117
  } catch (bootError: any) {
123
118
  // Ignore if simulator is already booted
124
119
  if (
@@ -137,7 +132,7 @@ export const runSimulator = async (name: string): Promise<void> => {
137
132
  while (true) {
138
133
  attempts++;
139
134
 
140
- const status = await getSimulatorStatus(name);
135
+ const status = await getSimulatorStatus(udid);
141
136
 
142
137
  if (status === 'running') {
143
138
  break;
@@ -151,19 +146,13 @@ export const runSimulator = async (name: string): Promise<void> => {
151
146
  }
152
147
  };
153
148
 
154
- export const stopSimulator = async (name: string): Promise<void> => {
155
- const simulatorId = await getSimulatorDeviceId(name);
156
-
157
- if (!simulatorId) {
158
- return; // Already stopped
159
- }
160
-
161
- await stopSimulatorById(simulatorId);
149
+ export const stopSimulator = async (udid: string): Promise<void> => {
150
+ await stopSimulatorById(udid);
162
151
  };
163
152
 
164
- const stopSimulatorById = async (simulatorId: string): Promise<void> => {
153
+ const stopSimulatorById = async (udid: string): Promise<void> => {
165
154
  try {
166
- await spawn('xcrun', ['simctl', 'shutdown', simulatorId]);
155
+ await spawn('xcrun', ['simctl', 'shutdown', udid]);
167
156
  } catch (shutdownError: any) {
168
157
  // Ignore if simulator is already shut down
169
158
  if (
@@ -1,94 +1,15 @@
1
- import { TestRunnerConfig, WebTestRunnerConfig, assertWebRunnerConfig } from '@react-native-harness/config';
2
- import { logger } from '@react-native-harness/tools';
3
- import { Browser, chromium, firefox, Page, webkit } from 'playwright';
1
+ import {
2
+ TestRunnerConfig,
3
+ assertWebRunnerConfig,
4
+ } from '@react-native-harness/config';
4
5
  import { PlatformAdapter } from '../platform-adapter.js';
5
- import { runMetro } from '../../bundlers/metro.js';
6
-
7
- const runBrowser = async (
8
- url: string,
9
- browserType: WebTestRunnerConfig['browser']
10
- ): Promise<{ browser: Browser; page: Page }> => {
11
- // For now, we're only supporting Firefox, but this will be expanded
12
- // to support other browsers based on the config
13
- let browser: Browser;
14
-
15
- switch (browserType) {
16
- case 'firefox':
17
- browser = await firefox.launch({
18
- headless: false,
19
- devtools: false,
20
- args: [
21
- '--no-sandbox',
22
- '--disable-setuid-sandbox',
23
- '--disable-dev-shm-usage',
24
- '--disable-web-security',
25
- '--allow-insecure-localhost',
26
- '--ignore-certificate-errors',
27
- ],
28
- ignoreDefaultArgs: ['--disable-extensions'],
29
- });
30
- break;
31
- case 'chrome':
32
- browser = await chromium.launch({
33
- headless: false,
34
- devtools: false,
35
- });
36
- break;
37
- case 'safari':
38
- browser = await webkit.launch({
39
- headless: false,
40
- devtools: false,
41
- });
42
- break;
43
- default:
44
- throw new Error(`Unsupported browser type: ${browserType}`);
45
- }
46
-
47
- const context = await browser.newContext({
48
- bypassCSP: true,
49
- ignoreHTTPSErrors: true,
50
- });
51
-
52
- const page = await context.newPage();
53
-
54
- await page.setViewportSize({ width: 1280, height: 720 });
55
-
56
- await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
57
-
58
- return { browser, page };
59
- };
60
6
 
61
7
  export const webPlatformAdapter: PlatformAdapter = {
62
8
  name: 'web',
63
9
  getEnvironment: async (runner: TestRunnerConfig) => {
64
10
  assertWebRunnerConfig(runner);
65
-
66
- logger.debug('Starting web environment');
67
-
68
-
69
-
70
- logger.debug('Running metro');
71
- const metro = await runMetro(true);
72
- logger.debug('Metro running');
73
-
74
- logger.debug(`Running browser: ${runner.browser}`);
75
- const { browser, page } = await runBrowser('http://localhost:8081', runner.browser);
76
- logger.debug('Browser running');
77
-
78
-
79
-
80
- return {
81
- restart: async () => {
82
- logger.debug('Reloading page');
83
- await page.reload({ waitUntil: 'domcontentloaded', timeout: 60000 });
84
- },
85
- dispose: async () => {
86
- logger.debug('Closing browser');
87
- await browser.close();
88
11
 
89
- metro.kill();
90
- },
91
- };
12
+ throw new Error('Web platform is currently disabled.');
92
13
  },
93
14
  };
94
15