@expo/cli 0.18.7 → 0.18.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +1 -1
- package/build/src/login/index.js +1 -2
- package/build/src/login/index.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +9 -1
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +2 -0
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/utils/telemetry/getContext.js +1 -1
- package/package.json +3 -3
- package/static/canary/react-is/cjs/react-is.development.js +200 -0
- package/static/canary/react-is/cjs/react-is.production.js +130 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js +22899 -24003
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js +5190 -4270
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-profiling.js +5206 -4094
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +23165 -24313
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5298 -4377
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +11347 -0
- package/static/canary/scheduler/cjs/scheduler-unstable_mock.development.js +711 -0
- package/static/canary/scheduler/cjs/scheduler-unstable_mock.production.js +415 -0
- package/static/canary/scheduler/cjs/scheduler-unstable_post_task.development.js +208 -0
- package/static/canary/scheduler/cjs/scheduler-unstable_post_task.production.js +145 -0
- package/static/canary/scheduler/cjs/scheduler.development.js +625 -0
- package/static/canary/scheduler/cjs/scheduler.native.development.js +538 -0
- package/static/canary/scheduler/cjs/scheduler.native.production.js +329 -0
- package/static/canary/scheduler/cjs/scheduler.production.js +341 -0
package/build/bin/cli
CHANGED
package/build/src/login/index.js
CHANGED
|
@@ -67,8 +67,7 @@ const expoLogin = async (argv)=>{
|
|
|
67
67
|
`-u, --username <string> Username`,
|
|
68
68
|
`-p, --password <string> Password`,
|
|
69
69
|
`--otp <string> One-time password from your 2FA device`,
|
|
70
|
-
|
|
71
|
-
// `-s, --sso Log in with SSO`,
|
|
70
|
+
`-s, --sso Log in with SSO`,
|
|
72
71
|
`-h, --help Usage info`,
|
|
73
72
|
].join("\n"));
|
|
74
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/login/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from '../../bin/cli';\nimport { assertArgs, printHelp } from '../utils/args';\nimport { logCmdError } from '../utils/errors';\n\nexport const expoLogin: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--username': String,\n '--password': String,\n '--otp': String,\n '--sso': Boolean,\n // Aliases\n '-h': '--help',\n '-u': '--username',\n '-p': '--password',\n '-s': '--sso',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Log in to an Expo account`,\n `npx expo login`,\n [\n `-u, --username <string> Username`,\n `-p, --password <string> Password`,\n `--otp <string> One-time password from your 2FA device`,\n
|
|
1
|
+
{"version":3,"sources":["../../../src/login/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from '../../bin/cli';\nimport { assertArgs, printHelp } from '../utils/args';\nimport { logCmdError } from '../utils/errors';\n\nexport const expoLogin: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--username': String,\n '--password': String,\n '--otp': String,\n '--sso': Boolean,\n // Aliases\n '-h': '--help',\n '-u': '--username',\n '-p': '--password',\n '-s': '--sso',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Log in to an Expo account`,\n `npx expo login`,\n [\n `-u, --username <string> Username`,\n `-p, --password <string> Password`,\n `--otp <string> One-time password from your 2FA device`,\n `-s, --sso Log in with SSO`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const { showLoginPromptAsync } = await import('../api/user/actions.js');\n return showLoginPromptAsync({\n // Parsed options\n username: args['--username'],\n password: args['--password'],\n otp: args['--otp'],\n sso: !!args['--sso'],\n }).catch(logCmdError);\n};\n"],"names":["expoLogin","argv","args","assertArgs","Boolean","String","printHelp","join","showLoginPromptAsync","username","password","otp","sso","catch","logCmdError"],"mappings":"AAAA;;;;;+BAKaA,WAAS;;aAATA,SAAS;;sBAHgB,eAAe;wBACzB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,SAAS,GAAY,OAAOC,IAAI,GAAK;IAChD,MAAMC,IAAI,GAAGC,IAAAA,KAAU,WAAA,EACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,YAAY,EAAEC,MAAM;QACpB,YAAY,EAAEA,MAAM;QACpB,OAAO,EAAEA,MAAM;QACf,OAAO,EAAED,OAAO;QAChB,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,OAAO;KACd,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,IAAAA,KAAS,UAAA,EACP,CAAC,yBAAyB,CAAC,EAC3B,CAAC,cAAc,CAAC,EAChB;YACE,CAAC,iCAAiC,CAAC;YACnC,CAAC,iCAAiC,CAAC;YACnC,CAAC,+DAA+D,CAAC;YACjE,CAAC,wCAAwC,CAAC;YAC1C,CAAC,mCAAmC,CAAC;SACtC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,MAAM,EAAEC,oBAAoB,CAAA,EAAE,GAAG,MAAM,iEAAA,OAAM,CAAC,wBAAwB,GAAC,AAAC;IACxE,OAAOA,oBAAoB,CAAC;QAC1B,iBAAiB;QACjBC,QAAQ,EAAEP,IAAI,CAAC,YAAY,CAAC;QAC5BQ,QAAQ,EAAER,IAAI,CAAC,YAAY,CAAC;QAC5BS,GAAG,EAAET,IAAI,CAAC,OAAO,CAAC;QAClBU,GAAG,EAAE,CAAC,CAACV,IAAI,CAAC,OAAO,CAAC;KACrB,CAAC,CAACW,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;AACxB,CAAC,AAAC"}
|
|
@@ -20,6 +20,13 @@ function _interopRequireDefault(obj) {
|
|
|
20
20
|
default: obj
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
+
// Supported ABIs for Android. see https://developer.android.com/ndk/guides/abis
|
|
24
|
+
const VALID_ARCHITECTURES = [
|
|
25
|
+
"armeabi-v7a",
|
|
26
|
+
"arm64-v8a",
|
|
27
|
+
"x86",
|
|
28
|
+
"x86_64"
|
|
29
|
+
];
|
|
23
30
|
function assertVariant(variant) {
|
|
24
31
|
if (variant && typeof variant !== "string") {
|
|
25
32
|
throw new _errors.CommandError("BAD_ARGS", "--variant must be a string");
|
|
@@ -50,7 +57,8 @@ async function getConnectedDeviceABIS(buildType, device, allArch) {
|
|
|
50
57
|
return "";
|
|
51
58
|
}
|
|
52
59
|
const abis = await (0, _adb.getDeviceABIsAsync)(device);
|
|
53
|
-
|
|
60
|
+
const validAbis = abis.filter((abi)=>VALID_ARCHITECTURES.includes(abi));
|
|
61
|
+
return validAbis.filter((abi, i, arr)=>arr.indexOf(abi) === i).join(",");
|
|
54
62
|
}
|
|
55
63
|
|
|
56
64
|
//# sourceMappingURL=resolveGradlePropsAsync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/run/android/resolveGradlePropsAsync.ts"],"sourcesContent":["import path from 'path';\n\nimport { Device, getDeviceABIsAsync } from '../../start/platforms/android/adb';\nimport { CommandError } from '../../utils/errors';\n\nexport type GradleProps = {\n /** Directory for the APK based on the `variant`. */\n apkVariantDirectory: string;\n /** Name of the app, used in the `apkVariantDirectory`. */\n appName: string;\n /** First section of the provided `variant`, indicates the last part of the file name for the output APK. */\n buildType: string;\n /** Used to assemble the APK, also included in the output APK filename. */\n flavors?: string[];\n /** Architectures to build for. */\n architectures?: string;\n};\n\nfunction assertVariant(variant?: string) {\n if (variant && typeof variant !== 'string') {\n throw new CommandError('BAD_ARGS', '--variant must be a string');\n }\n return variant ?? 'debug';\n}\n\nexport async function resolveGradlePropsAsync(\n projectRoot: string,\n options: { variant?: string; allArch?: boolean },\n device: Device\n): Promise<GradleProps> {\n const variant = assertVariant(options.variant);\n // NOTE(EvanBacon): Why would this be different? Can we get the different name?\n const appName = 'app';\n\n const apkDirectory = path.join(projectRoot, 'android', appName, 'build', 'outputs', 'apk');\n\n // buildDeveloperTrust -> build, developer, trust (where developer, and trust are flavors).\n // This won't work for non-standard flavor names like \"myFlavor\" would be treated as \"my\", \"flavor\".\n const [buildType, ...flavors] = variant.split(/(?=[A-Z])/).map((v) => v.toLowerCase());\n const apkVariantDirectory = path.join(apkDirectory, ...flavors, buildType);\n const architectures = await getConnectedDeviceABIS(buildType, device, options.allArch);\n\n return {\n appName,\n buildType,\n flavors,\n apkVariantDirectory,\n architectures,\n };\n}\n\nasync function getConnectedDeviceABIS(\n buildType: string,\n device: Device,\n allArch?: boolean\n): Promise<string> {\n // Follow the same behavior as iOS, only enable this for debug builds\n if (allArch || buildType !== 'debug') {\n return '';\n }\n\n const abis = await getDeviceABIsAsync(device);\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/run/android/resolveGradlePropsAsync.ts"],"sourcesContent":["import path from 'path';\n\nimport { Device, getDeviceABIsAsync } from '../../start/platforms/android/adb';\nimport { CommandError } from '../../utils/errors';\n\n// Supported ABIs for Android. see https://developer.android.com/ndk/guides/abis\nconst VALID_ARCHITECTURES = ['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'];\n\nexport type GradleProps = {\n /** Directory for the APK based on the `variant`. */\n apkVariantDirectory: string;\n /** Name of the app, used in the `apkVariantDirectory`. */\n appName: string;\n /** First section of the provided `variant`, indicates the last part of the file name for the output APK. */\n buildType: string;\n /** Used to assemble the APK, also included in the output APK filename. */\n flavors?: string[];\n /** Architectures to build for. */\n architectures?: string;\n};\n\nfunction assertVariant(variant?: string) {\n if (variant && typeof variant !== 'string') {\n throw new CommandError('BAD_ARGS', '--variant must be a string');\n }\n return variant ?? 'debug';\n}\n\nexport async function resolveGradlePropsAsync(\n projectRoot: string,\n options: { variant?: string; allArch?: boolean },\n device: Device\n): Promise<GradleProps> {\n const variant = assertVariant(options.variant);\n // NOTE(EvanBacon): Why would this be different? Can we get the different name?\n const appName = 'app';\n\n const apkDirectory = path.join(projectRoot, 'android', appName, 'build', 'outputs', 'apk');\n\n // buildDeveloperTrust -> build, developer, trust (where developer, and trust are flavors).\n // This won't work for non-standard flavor names like \"myFlavor\" would be treated as \"my\", \"flavor\".\n const [buildType, ...flavors] = variant.split(/(?=[A-Z])/).map((v) => v.toLowerCase());\n const apkVariantDirectory = path.join(apkDirectory, ...flavors, buildType);\n const architectures = await getConnectedDeviceABIS(buildType, device, options.allArch);\n\n return {\n appName,\n buildType,\n flavors,\n apkVariantDirectory,\n architectures,\n };\n}\n\nasync function getConnectedDeviceABIS(\n buildType: string,\n device: Device,\n allArch?: boolean\n): Promise<string> {\n // Follow the same behavior as iOS, only enable this for debug builds\n if (allArch || buildType !== 'debug') {\n return '';\n }\n\n const abis = await getDeviceABIsAsync(device);\n\n const validAbis = abis.filter((abi) => VALID_ARCHITECTURES.includes(abi));\n return validAbis.filter((abi, i, arr) => arr.indexOf(abi) === i).join(',');\n}\n"],"names":["resolveGradlePropsAsync","VALID_ARCHITECTURES","assertVariant","variant","CommandError","projectRoot","options","device","appName","apkDirectory","path","join","buildType","flavors","split","map","v","toLowerCase","apkVariantDirectory","architectures","getConnectedDeviceABIS","allArch","abis","getDeviceABIsAsync","validAbis","filter","abi","includes","i","arr","indexOf"],"mappings":"AAAA;;;;+BA4BsBA,yBAAuB;;aAAvBA,uBAAuB;;;8DA5B5B,MAAM;;;;;;qBAEoB,mCAAmC;wBACjD,oBAAoB;;;;;;AAEjD,gFAAgF;AAChF,MAAMC,mBAAmB,GAAG;IAAC,aAAa;IAAE,WAAW;IAAE,KAAK;IAAE,QAAQ;CAAC,AAAC;AAe1E,SAASC,aAAa,CAACC,OAAgB,EAAE;IACvC,IAAIA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;QAC1C,MAAM,IAAIC,OAAY,aAAA,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;IACnE,CAAC;IACD,OAAOD,OAAO,WAAPA,OAAO,GAAI,OAAO,CAAC;AAC5B,CAAC;AAEM,eAAeH,uBAAuB,CAC3CK,WAAmB,EACnBC,OAAgD,EAChDC,MAAc,EACQ;IACtB,MAAMJ,OAAO,GAAGD,aAAa,CAACI,OAAO,CAACH,OAAO,CAAC,AAAC;IAC/C,+EAA+E;IAC/E,MAAMK,OAAO,GAAG,KAAK,AAAC;IAEtB,MAAMC,YAAY,GAAGC,KAAI,EAAA,QAAA,CAACC,IAAI,CAACN,WAAW,EAAE,SAAS,EAAEG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,AAAC;IAE3F,2FAA2F;IAC3F,oGAAoG;IACpG,MAAM,CAACI,SAAS,EAAE,GAAGC,OAAO,CAAC,GAAGV,OAAO,CAACW,KAAK,aAAa,CAACC,GAAG,CAAC,CAACC,CAAC,GAAKA,CAAC,CAACC,WAAW,EAAE,CAAC,AAAC;IACvF,MAAMC,mBAAmB,GAAGR,KAAI,EAAA,QAAA,CAACC,IAAI,CAACF,YAAY,KAAKI,OAAO,EAAED,SAAS,CAAC,AAAC;IAC3E,MAAMO,aAAa,GAAG,MAAMC,sBAAsB,CAACR,SAAS,EAAEL,MAAM,EAAED,OAAO,CAACe,OAAO,CAAC,AAAC;IAEvF,OAAO;QACLb,OAAO;QACPI,SAAS;QACTC,OAAO;QACPK,mBAAmB;QACnBC,aAAa;KACd,CAAC;AACJ,CAAC;AAED,eAAeC,sBAAsB,CACnCR,SAAiB,EACjBL,MAAc,EACdc,OAAiB,EACA;IACjB,qEAAqE;IACrE,IAAIA,OAAO,IAAIT,SAAS,KAAK,OAAO,EAAE;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAMU,IAAI,GAAG,MAAMC,IAAAA,IAAkB,mBAAA,EAAChB,MAAM,CAAC,AAAC;IAE9C,MAAMiB,SAAS,GAAGF,IAAI,CAACG,MAAM,CAAC,CAACC,GAAG,GAAKzB,mBAAmB,CAAC0B,QAAQ,CAACD,GAAG,CAAC,CAAC,AAAC;IAC1E,OAAOF,SAAS,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEE,CAAC,EAAEC,GAAG,GAAKA,GAAG,CAACC,OAAO,CAACJ,GAAG,CAAC,KAAKE,CAAC,CAAC,CAACjB,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -102,6 +102,8 @@ var DeviceABI;
|
|
|
102
102
|
DeviceABI["arm64"] = "arm64";
|
|
103
103
|
DeviceABI["x64"] = "x64";
|
|
104
104
|
DeviceABI["x86"] = "x86";
|
|
105
|
+
DeviceABI["x8664"] = "x86_64";
|
|
106
|
+
DeviceABI["arm64v8a"] = "arm64-v8a";
|
|
105
107
|
DeviceABI["armeabiV7a"] = "armeabi-v7a";
|
|
106
108
|
DeviceABI["armeabi"] = "armeabi";
|
|
107
109
|
DeviceABI["universal"] = "universal";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/platforms/android/adb.ts"],"sourcesContent":["import chalk from 'chalk';\nimport os from 'os';\n\nimport { ADBServer } from './ADBServer';\nimport * as Log from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { learnMore } from '../../../utils/link';\n\nconst debug = require('debug')('expo:start:platforms:android:adb') as typeof console.log;\n\nexport enum DeviceABI {\n // The arch specific android target platforms are soft-deprecated.\n // Instead of using TargetPlatform as a combination arch + platform\n // the code will be updated to carry arch information in [DarwinArch]\n // and [AndroidArch].\n arm = 'arm',\n arm64 = 'arm64',\n x64 = 'x64',\n x86 = 'x86',\n armeabiV7a = 'armeabi-v7a',\n armeabi = 'armeabi',\n universal = 'universal',\n}\n\n/** Represents a connected Android device. */\nexport type Device = {\n /** Process ID. */\n pid?: string;\n /** Name of the device, also used as the ID for opening devices. */\n name: string;\n /** Is emulator or connected device. */\n type: 'emulator' | 'device';\n /** Is the device booted (emulator). */\n isBooted: boolean;\n /** Is device authorized for developing. https://expo.fyi/authorize-android-device */\n isAuthorized: boolean;\n};\n\ntype DeviceContext = Pick<Device, 'pid'>;\n\ntype DeviceProperties = Record<string, string>;\n\nconst CANT_START_ACTIVITY_ERROR = 'Activity not started, unable to resolve Intent';\n// http://developer.android.com/ndk/guides/abis.html\nconst PROP_CPU_NAME = 'ro.product.cpu.abi';\n\nconst PROP_CPU_ABI_LIST_NAME = 'ro.product.cpu.abilist';\n\n// Can sometimes be null\n// http://developer.android.com/ndk/guides/abis.html\nconst PROP_BOOT_ANIMATION_STATE = 'init.svc.bootanim';\n\nlet _server: ADBServer | null;\n\n/** Return the lazily loaded ADB server instance. */\nexport function getServer() {\n _server ??= new ADBServer();\n return _server;\n}\n\n/** Logs an FYI message about authorizing your device. */\nexport function logUnauthorized(device: Device) {\n Log.warn(\n `\\nThis computer is not authorized for developing on ${chalk.bold(device.name)}. ${chalk.dim(\n learnMore('https://expo.fyi/authorize-android-device')\n )}`\n );\n}\n\n/** Returns true if the provided package name is installed on the provided Android device. */\nexport async function isPackageInstalledAsync(\n device: DeviceContext,\n androidPackage: string\n): Promise<boolean> {\n const packages = await getServer().runAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'pm',\n 'list',\n 'packages',\n '--user',\n env.EXPO_ADB_USER,\n androidPackage\n )\n );\n\n const lines = packages.split(/\\r?\\n/);\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n if (line === `package:${androidPackage}`) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * @param device.pid Process ID of the Android device to launch.\n * @param props.launchActivity Activity to launch `[application identifier]/.[main activity name]`, ex: `com.bacon.app/.MainActivity`\n */\nexport async function launchActivityAsync(\n device: DeviceContext,\n {\n launchActivity,\n }: {\n launchActivity: string;\n }\n) {\n return openAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'am',\n 'start',\n // FLAG_ACTIVITY_SINGLE_TOP -- If set, the activity will not be launched if it is already running at the top of the history stack.\n '-f',\n '0x20000000',\n // Activity to open first: com.bacon.app/.MainActivity\n '-n',\n launchActivity\n )\n );\n}\n\n/**\n * @param device.pid Process ID of the Android device to launch.\n * @param props.applicationId package name to launch.\n */\nexport async function openAppIdAsync(\n device: DeviceContext,\n {\n applicationId,\n }: {\n applicationId: string;\n }\n) {\n return openAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'monkey',\n '-p',\n applicationId,\n '-c',\n 'android.intent.category.LAUNCHER',\n '1'\n )\n );\n}\n\n/**\n * @param device.pid Process ID of the Android device to launch.\n * @param props.url URL to launch.\n */\nexport async function openUrlAsync(\n device: DeviceContext,\n {\n url,\n }: {\n url: string;\n }\n) {\n return openAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'am',\n 'start',\n '-a',\n 'android.intent.action.VIEW',\n '-d',\n // ADB requires ampersands to be escaped.\n url.replace(/&/g, String.raw`\\&`)\n )\n );\n}\n\n/** Runs a generic command watches for common errors in order to throw with an expected code. */\nasync function openAsync(args: string[]): Promise<string> {\n const results = await getServer().runAsync(args);\n if (\n results.includes(CANT_START_ACTIVITY_ERROR) ||\n results.match(/Error: Activity class .* does not exist\\./g)\n ) {\n throw new CommandError('APP_NOT_INSTALLED', results.substring(results.indexOf('Error: ')));\n }\n return results;\n}\n\n/** Uninstall an app given its Android package name. */\nexport async function uninstallAsync(\n device: DeviceContext,\n { appId }: { appId: string }\n): Promise<string> {\n return await getServer().runAsync(\n adbArgs(device.pid, 'uninstall', '--user', env.EXPO_ADB_USER, appId)\n );\n}\n\n/** Get package info from an app based on its Android package name. */\nexport async function getPackageInfoAsync(\n device: DeviceContext,\n { appId }: { appId: string }\n): Promise<string> {\n return await getServer().runAsync(adbArgs(device.pid, 'shell', 'dumpsys', 'package', appId));\n}\n\n/** Install an app on a connected device. */\nexport async function installAsync(device: DeviceContext, { filePath }: { filePath: string }) {\n // TODO: Handle the `INSTALL_FAILED_INSUFFICIENT_STORAGE` error.\n return await getServer().runAsync(\n adbArgs(device.pid, 'install', '-r', '-d', '--user', env.EXPO_ADB_USER, filePath)\n );\n}\n\n/** Format ADB args with process ID. */\nexport function adbArgs(pid: Device['pid'], ...options: string[]): string[] {\n const args = [];\n if (pid) {\n args.push('-s', pid);\n }\n\n return args.concat(options);\n}\n\n// TODO: This is very expensive for some operations.\nexport async function getAttachedDevicesAsync(): Promise<Device[]> {\n const output = await getServer().runAsync(['devices', '-l']);\n\n const splitItems = output\n .trim()\n .replace(/\\n$/, '')\n .split(os.EOL)\n // Filter ADB trace logs from the output, e.g.\n // adb D 03-06 15:25:53 63677 4018815 adb_client.cpp:393] adb_query: host:devices-l\n // 03-04 12:29:44.557 16415 16415 D adb : commandline.cpp:1646 Using server socket: tcp:172.27.192.1:5037\n // 03-04 12:29:44.557 16415 16415 D adb : adb_client.cpp:160 _adb_connect: host:version\n .filter((line) => !line.match(/\\.cpp:[0-9]+/));\n\n // First line is `\"List of devices attached\"`, remove it\n // @ts-ignore: todo\n const attachedDevices: {\n props: string[];\n type: Device['type'];\n isAuthorized: Device['isAuthorized'];\n }[] = splitItems\n .slice(1, splitItems.length)\n .map((line) => {\n // unauthorized: ['FA8251A00719', 'unauthorized', 'usb:338690048X', 'transport_id:5']\n // authorized: ['FA8251A00719', 'device', 'usb:336592896X', 'product:walleye', 'model:Pixel_2', 'device:walleye', 'transport_id:4']\n // emulator: ['emulator-5554', 'offline', 'transport_id:1']\n const props = line.split(' ').filter(Boolean);\n\n const isAuthorized = props[1] !== 'unauthorized';\n const type = line.includes('emulator') ? 'emulator' : 'device';\n return { props, type, isAuthorized };\n })\n .filter(({ props: [pid] }) => !!pid);\n\n const devicePromises = attachedDevices.map<Promise<Device>>(async (props) => {\n const {\n type,\n props: [pid, ...deviceInfo],\n isAuthorized,\n } = props;\n\n let name: string | null = null;\n\n if (type === 'device') {\n if (isAuthorized) {\n // Possibly formatted like `model:Pixel_2`\n // Transform to `Pixel_2`\n const modelItem = deviceInfo.find((info) => info.includes('model:'));\n if (modelItem) {\n name = modelItem.replace('model:', '');\n }\n }\n // unauthorized devices don't have a name available to read\n if (!name) {\n // Device FA8251A00719\n name = `Device ${pid}`;\n }\n } else {\n // Given an emulator pid, get the emulator name which can be used to start the emulator later.\n name = (await getAdbNameForDeviceIdAsync({ pid })) ?? '';\n }\n\n return {\n pid,\n name,\n type,\n isAuthorized,\n isBooted: true,\n };\n });\n\n return Promise.all(devicePromises);\n}\n\n/**\n * Return the Emulator name for an emulator ID, this can be used to determine if an emulator is booted.\n *\n * @param device.pid a value like `emulator-5554` from `abd devices`\n */\nexport async function getAdbNameForDeviceIdAsync(device: DeviceContext): Promise<string | null> {\n const results = await getServer().runAsync(adbArgs(device.pid, 'emu', 'avd', 'name'));\n\n if (results.match(/could not connect to TCP port .*: Connection refused/)) {\n // Can also occur when the emulator does not exist.\n throw new CommandError('EMULATOR_NOT_FOUND', results);\n }\n\n return sanitizeAdbDeviceName(results) ?? null;\n}\n\nexport async function isDeviceBootedAsync({\n name,\n}: { name?: string } = {}): Promise<Device | null> {\n const devices = await getAttachedDevicesAsync();\n\n if (!name) {\n return devices[0] ?? null;\n }\n\n return devices.find((device) => device.name === name) ?? null;\n}\n\n/**\n * Returns true when a device's splash screen animation has stopped.\n * This can be used to detect when a device is fully booted and ready to use.\n *\n * @param pid\n */\nexport async function isBootAnimationCompleteAsync(pid?: string): Promise<boolean> {\n try {\n const props = await getPropertyDataForDeviceAsync({ pid }, PROP_BOOT_ANIMATION_STATE);\n return !!props[PROP_BOOT_ANIMATION_STATE].match(/stopped/);\n } catch {\n return false;\n }\n}\n\n/** Get a list of ABIs for the provided device. */\nexport async function getDeviceABIsAsync(\n device: Pick<Device, 'name' | 'pid'>\n): Promise<DeviceABI[]> {\n const cpuAbiList = (await getPropertyDataForDeviceAsync(device, PROP_CPU_ABI_LIST_NAME))[\n PROP_CPU_ABI_LIST_NAME\n ];\n\n if (cpuAbiList) {\n return cpuAbiList.trim().split(',') as DeviceABI[];\n }\n\n const abi = (await getPropertyDataForDeviceAsync(device, PROP_CPU_NAME))[\n PROP_CPU_NAME\n ] as DeviceABI;\n return [abi];\n}\n\nexport async function getPropertyDataForDeviceAsync(\n device: DeviceContext,\n prop?: string\n): Promise<DeviceProperties> {\n // @ts-ignore\n const propCommand = adbArgs(...[device.pid, 'shell', 'getprop', prop].filter(Boolean));\n try {\n // Prevent reading as UTF8.\n const results = await getServer().getFileOutputAsync(propCommand);\n // Like:\n // [wifi.direct.interface]: [p2p-dev-wlan0]\n // [wifi.interface]: [wlan0]\n\n if (prop) {\n debug(`Property data: (device pid: ${device.pid}, prop: ${prop}, data: ${results})`);\n return {\n [prop]: results,\n };\n }\n const props = parseAdbDeviceProperties(results);\n\n debug(`Parsed data:`, props);\n\n return props;\n } catch (error: any) {\n // TODO: Ensure error has message and not stderr\n throw new CommandError(`Failed to get properties for device (${device.pid}): ${error.message}`);\n }\n}\n\nfunction parseAdbDeviceProperties(devicePropertiesString: string) {\n const properties: DeviceProperties = {};\n const propertyExp = /\\[(.*?)\\]: \\[(.*?)\\]/gm;\n for (const match of devicePropertiesString.matchAll(propertyExp)) {\n properties[match[1]] = match[2];\n }\n return properties;\n}\n\n/**\n * Sanitize the ADB device name to only get the actual device name.\n * On Windows, we need to do \\r, \\n, and \\r\\n filtering to get the name.\n */\nexport function sanitizeAdbDeviceName(deviceName: string) {\n return deviceName\n .trim()\n .split(/[\\r\\n]+/)\n .shift();\n}\n"],"names":["getServer","logUnauthorized","isPackageInstalledAsync","launchActivityAsync","openAppIdAsync","openUrlAsync","uninstallAsync","getPackageInfoAsync","installAsync","adbArgs","getAttachedDevicesAsync","getAdbNameForDeviceIdAsync","isDeviceBootedAsync","isBootAnimationCompleteAsync","getDeviceABIsAsync","getPropertyDataForDeviceAsync","sanitizeAdbDeviceName","debug","require","DeviceABI","arm","arm64","x64","x86","armeabiV7a","armeabi","universal","CANT_START_ACTIVITY_ERROR","PROP_CPU_NAME","PROP_CPU_ABI_LIST_NAME","PROP_BOOT_ANIMATION_STATE","_server","ADBServer","device","Log","warn","chalk","bold","name","dim","learnMore","androidPackage","packages","runAsync","pid","env","EXPO_ADB_USER","lines","split","i","length","line","trim","launchActivity","openAsync","applicationId","url","replace","String","raw","args","results","includes","match","CommandError","substring","indexOf","appId","filePath","options","push","concat","output","splitItems","os","EOL","filter","attachedDevices","slice","map","props","Boolean","isAuthorized","type","devicePromises","deviceInfo","modelItem","find","info","isBooted","Promise","all","devices","cpuAbiList","abi","prop","propCommand","getFileOutputAsync","parseAdbDeviceProperties","error","message","devicePropertiesString","properties","propertyExp","matchAll","deviceName","shift"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/platforms/android/adb.ts"],"sourcesContent":["import chalk from 'chalk';\nimport os from 'os';\n\nimport { ADBServer } from './ADBServer';\nimport * as Log from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { learnMore } from '../../../utils/link';\n\nconst debug = require('debug')('expo:start:platforms:android:adb') as typeof console.log;\n\nexport enum DeviceABI {\n // The arch specific android target platforms are soft-deprecated.\n // Instead of using TargetPlatform as a combination arch + platform\n // the code will be updated to carry arch information in [DarwinArch]\n // and [AndroidArch].\n arm = 'arm',\n arm64 = 'arm64',\n x64 = 'x64',\n x86 = 'x86',\n x8664 = 'x86_64',\n arm64v8a = 'arm64-v8a',\n armeabiV7a = 'armeabi-v7a',\n armeabi = 'armeabi',\n universal = 'universal',\n}\n\n/** Represents a connected Android device. */\nexport type Device = {\n /** Process ID. */\n pid?: string;\n /** Name of the device, also used as the ID for opening devices. */\n name: string;\n /** Is emulator or connected device. */\n type: 'emulator' | 'device';\n /** Is the device booted (emulator). */\n isBooted: boolean;\n /** Is device authorized for developing. https://expo.fyi/authorize-android-device */\n isAuthorized: boolean;\n};\n\ntype DeviceContext = Pick<Device, 'pid'>;\n\ntype DeviceProperties = Record<string, string>;\n\nconst CANT_START_ACTIVITY_ERROR = 'Activity not started, unable to resolve Intent';\n// http://developer.android.com/ndk/guides/abis.html\nconst PROP_CPU_NAME = 'ro.product.cpu.abi';\n\nconst PROP_CPU_ABI_LIST_NAME = 'ro.product.cpu.abilist';\n\n// Can sometimes be null\n// http://developer.android.com/ndk/guides/abis.html\nconst PROP_BOOT_ANIMATION_STATE = 'init.svc.bootanim';\n\nlet _server: ADBServer | null;\n\n/** Return the lazily loaded ADB server instance. */\nexport function getServer() {\n _server ??= new ADBServer();\n return _server;\n}\n\n/** Logs an FYI message about authorizing your device. */\nexport function logUnauthorized(device: Device) {\n Log.warn(\n `\\nThis computer is not authorized for developing on ${chalk.bold(device.name)}. ${chalk.dim(\n learnMore('https://expo.fyi/authorize-android-device')\n )}`\n );\n}\n\n/** Returns true if the provided package name is installed on the provided Android device. */\nexport async function isPackageInstalledAsync(\n device: DeviceContext,\n androidPackage: string\n): Promise<boolean> {\n const packages = await getServer().runAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'pm',\n 'list',\n 'packages',\n '--user',\n env.EXPO_ADB_USER,\n androidPackage\n )\n );\n\n const lines = packages.split(/\\r?\\n/);\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n if (line === `package:${androidPackage}`) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * @param device.pid Process ID of the Android device to launch.\n * @param props.launchActivity Activity to launch `[application identifier]/.[main activity name]`, ex: `com.bacon.app/.MainActivity`\n */\nexport async function launchActivityAsync(\n device: DeviceContext,\n {\n launchActivity,\n }: {\n launchActivity: string;\n }\n) {\n return openAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'am',\n 'start',\n // FLAG_ACTIVITY_SINGLE_TOP -- If set, the activity will not be launched if it is already running at the top of the history stack.\n '-f',\n '0x20000000',\n // Activity to open first: com.bacon.app/.MainActivity\n '-n',\n launchActivity\n )\n );\n}\n\n/**\n * @param device.pid Process ID of the Android device to launch.\n * @param props.applicationId package name to launch.\n */\nexport async function openAppIdAsync(\n device: DeviceContext,\n {\n applicationId,\n }: {\n applicationId: string;\n }\n) {\n return openAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'monkey',\n '-p',\n applicationId,\n '-c',\n 'android.intent.category.LAUNCHER',\n '1'\n )\n );\n}\n\n/**\n * @param device.pid Process ID of the Android device to launch.\n * @param props.url URL to launch.\n */\nexport async function openUrlAsync(\n device: DeviceContext,\n {\n url,\n }: {\n url: string;\n }\n) {\n return openAsync(\n adbArgs(\n device.pid,\n 'shell',\n 'am',\n 'start',\n '-a',\n 'android.intent.action.VIEW',\n '-d',\n // ADB requires ampersands to be escaped.\n url.replace(/&/g, String.raw`\\&`)\n )\n );\n}\n\n/** Runs a generic command watches for common errors in order to throw with an expected code. */\nasync function openAsync(args: string[]): Promise<string> {\n const results = await getServer().runAsync(args);\n if (\n results.includes(CANT_START_ACTIVITY_ERROR) ||\n results.match(/Error: Activity class .* does not exist\\./g)\n ) {\n throw new CommandError('APP_NOT_INSTALLED', results.substring(results.indexOf('Error: ')));\n }\n return results;\n}\n\n/** Uninstall an app given its Android package name. */\nexport async function uninstallAsync(\n device: DeviceContext,\n { appId }: { appId: string }\n): Promise<string> {\n return await getServer().runAsync(\n adbArgs(device.pid, 'uninstall', '--user', env.EXPO_ADB_USER, appId)\n );\n}\n\n/** Get package info from an app based on its Android package name. */\nexport async function getPackageInfoAsync(\n device: DeviceContext,\n { appId }: { appId: string }\n): Promise<string> {\n return await getServer().runAsync(adbArgs(device.pid, 'shell', 'dumpsys', 'package', appId));\n}\n\n/** Install an app on a connected device. */\nexport async function installAsync(device: DeviceContext, { filePath }: { filePath: string }) {\n // TODO: Handle the `INSTALL_FAILED_INSUFFICIENT_STORAGE` error.\n return await getServer().runAsync(\n adbArgs(device.pid, 'install', '-r', '-d', '--user', env.EXPO_ADB_USER, filePath)\n );\n}\n\n/** Format ADB args with process ID. */\nexport function adbArgs(pid: Device['pid'], ...options: string[]): string[] {\n const args = [];\n if (pid) {\n args.push('-s', pid);\n }\n\n return args.concat(options);\n}\n\n// TODO: This is very expensive for some operations.\nexport async function getAttachedDevicesAsync(): Promise<Device[]> {\n const output = await getServer().runAsync(['devices', '-l']);\n\n const splitItems = output\n .trim()\n .replace(/\\n$/, '')\n .split(os.EOL)\n // Filter ADB trace logs from the output, e.g.\n // adb D 03-06 15:25:53 63677 4018815 adb_client.cpp:393] adb_query: host:devices-l\n // 03-04 12:29:44.557 16415 16415 D adb : commandline.cpp:1646 Using server socket: tcp:172.27.192.1:5037\n // 03-04 12:29:44.557 16415 16415 D adb : adb_client.cpp:160 _adb_connect: host:version\n .filter((line) => !line.match(/\\.cpp:[0-9]+/));\n\n // First line is `\"List of devices attached\"`, remove it\n // @ts-ignore: todo\n const attachedDevices: {\n props: string[];\n type: Device['type'];\n isAuthorized: Device['isAuthorized'];\n }[] = splitItems\n .slice(1, splitItems.length)\n .map((line) => {\n // unauthorized: ['FA8251A00719', 'unauthorized', 'usb:338690048X', 'transport_id:5']\n // authorized: ['FA8251A00719', 'device', 'usb:336592896X', 'product:walleye', 'model:Pixel_2', 'device:walleye', 'transport_id:4']\n // emulator: ['emulator-5554', 'offline', 'transport_id:1']\n const props = line.split(' ').filter(Boolean);\n\n const isAuthorized = props[1] !== 'unauthorized';\n const type = line.includes('emulator') ? 'emulator' : 'device';\n return { props, type, isAuthorized };\n })\n .filter(({ props: [pid] }) => !!pid);\n\n const devicePromises = attachedDevices.map<Promise<Device>>(async (props) => {\n const {\n type,\n props: [pid, ...deviceInfo],\n isAuthorized,\n } = props;\n\n let name: string | null = null;\n\n if (type === 'device') {\n if (isAuthorized) {\n // Possibly formatted like `model:Pixel_2`\n // Transform to `Pixel_2`\n const modelItem = deviceInfo.find((info) => info.includes('model:'));\n if (modelItem) {\n name = modelItem.replace('model:', '');\n }\n }\n // unauthorized devices don't have a name available to read\n if (!name) {\n // Device FA8251A00719\n name = `Device ${pid}`;\n }\n } else {\n // Given an emulator pid, get the emulator name which can be used to start the emulator later.\n name = (await getAdbNameForDeviceIdAsync({ pid })) ?? '';\n }\n\n return {\n pid,\n name,\n type,\n isAuthorized,\n isBooted: true,\n };\n });\n\n return Promise.all(devicePromises);\n}\n\n/**\n * Return the Emulator name for an emulator ID, this can be used to determine if an emulator is booted.\n *\n * @param device.pid a value like `emulator-5554` from `abd devices`\n */\nexport async function getAdbNameForDeviceIdAsync(device: DeviceContext): Promise<string | null> {\n const results = await getServer().runAsync(adbArgs(device.pid, 'emu', 'avd', 'name'));\n\n if (results.match(/could not connect to TCP port .*: Connection refused/)) {\n // Can also occur when the emulator does not exist.\n throw new CommandError('EMULATOR_NOT_FOUND', results);\n }\n\n return sanitizeAdbDeviceName(results) ?? null;\n}\n\nexport async function isDeviceBootedAsync({\n name,\n}: { name?: string } = {}): Promise<Device | null> {\n const devices = await getAttachedDevicesAsync();\n\n if (!name) {\n return devices[0] ?? null;\n }\n\n return devices.find((device) => device.name === name) ?? null;\n}\n\n/**\n * Returns true when a device's splash screen animation has stopped.\n * This can be used to detect when a device is fully booted and ready to use.\n *\n * @param pid\n */\nexport async function isBootAnimationCompleteAsync(pid?: string): Promise<boolean> {\n try {\n const props = await getPropertyDataForDeviceAsync({ pid }, PROP_BOOT_ANIMATION_STATE);\n return !!props[PROP_BOOT_ANIMATION_STATE].match(/stopped/);\n } catch {\n return false;\n }\n}\n\n/** Get a list of ABIs for the provided device. */\nexport async function getDeviceABIsAsync(\n device: Pick<Device, 'name' | 'pid'>\n): Promise<DeviceABI[]> {\n const cpuAbiList = (await getPropertyDataForDeviceAsync(device, PROP_CPU_ABI_LIST_NAME))[\n PROP_CPU_ABI_LIST_NAME\n ];\n\n if (cpuAbiList) {\n return cpuAbiList.trim().split(',') as DeviceABI[];\n }\n\n const abi = (await getPropertyDataForDeviceAsync(device, PROP_CPU_NAME))[\n PROP_CPU_NAME\n ] as DeviceABI;\n return [abi];\n}\n\nexport async function getPropertyDataForDeviceAsync(\n device: DeviceContext,\n prop?: string\n): Promise<DeviceProperties> {\n // @ts-ignore\n const propCommand = adbArgs(...[device.pid, 'shell', 'getprop', prop].filter(Boolean));\n try {\n // Prevent reading as UTF8.\n const results = await getServer().getFileOutputAsync(propCommand);\n // Like:\n // [wifi.direct.interface]: [p2p-dev-wlan0]\n // [wifi.interface]: [wlan0]\n\n if (prop) {\n debug(`Property data: (device pid: ${device.pid}, prop: ${prop}, data: ${results})`);\n return {\n [prop]: results,\n };\n }\n const props = parseAdbDeviceProperties(results);\n\n debug(`Parsed data:`, props);\n\n return props;\n } catch (error: any) {\n // TODO: Ensure error has message and not stderr\n throw new CommandError(`Failed to get properties for device (${device.pid}): ${error.message}`);\n }\n}\n\nfunction parseAdbDeviceProperties(devicePropertiesString: string) {\n const properties: DeviceProperties = {};\n const propertyExp = /\\[(.*?)\\]: \\[(.*?)\\]/gm;\n for (const match of devicePropertiesString.matchAll(propertyExp)) {\n properties[match[1]] = match[2];\n }\n return properties;\n}\n\n/**\n * Sanitize the ADB device name to only get the actual device name.\n * On Windows, we need to do \\r, \\n, and \\r\\n filtering to get the name.\n */\nexport function sanitizeAdbDeviceName(deviceName: string) {\n return deviceName\n .trim()\n .split(/[\\r\\n]+/)\n .shift();\n}\n"],"names":["getServer","logUnauthorized","isPackageInstalledAsync","launchActivityAsync","openAppIdAsync","openUrlAsync","uninstallAsync","getPackageInfoAsync","installAsync","adbArgs","getAttachedDevicesAsync","getAdbNameForDeviceIdAsync","isDeviceBootedAsync","isBootAnimationCompleteAsync","getDeviceABIsAsync","getPropertyDataForDeviceAsync","sanitizeAdbDeviceName","debug","require","DeviceABI","arm","arm64","x64","x86","x8664","arm64v8a","armeabiV7a","armeabi","universal","CANT_START_ACTIVITY_ERROR","PROP_CPU_NAME","PROP_CPU_ABI_LIST_NAME","PROP_BOOT_ANIMATION_STATE","_server","ADBServer","device","Log","warn","chalk","bold","name","dim","learnMore","androidPackage","packages","runAsync","pid","env","EXPO_ADB_USER","lines","split","i","length","line","trim","launchActivity","openAsync","applicationId","url","replace","String","raw","args","results","includes","match","CommandError","substring","indexOf","appId","filePath","options","push","concat","output","splitItems","os","EOL","filter","attachedDevices","slice","map","props","Boolean","isAuthorized","type","devicePromises","deviceInfo","modelItem","find","info","isBooted","Promise","all","devices","cpuAbiList","abi","prop","propCommand","getFileOutputAsync","parseAdbDeviceProperties","error","message","devicePropertiesString","properties","propertyExp","matchAll","deviceName","shift"],"mappings":"AAAA;;;;;;;;;;;;IA0DgBA,SAAS,MAATA,SAAS;IAMTC,eAAe,MAAfA,eAAe;IASTC,uBAAuB,MAAvBA,uBAAuB;IA+BvBC,mBAAmB,MAAnBA,mBAAmB;IA4BnBC,cAAc,MAAdA,cAAc;IA0BdC,YAAY,MAAZA,YAAY;IAoCZC,cAAc,MAAdA,cAAc;IAUdC,mBAAmB,MAAnBA,mBAAmB;IAQnBC,YAAY,MAAZA,YAAY;IAQlBC,OAAO,MAAPA,OAAO;IAUDC,uBAAuB,MAAvBA,uBAAuB;IA8EvBC,0BAA0B,MAA1BA,0BAA0B;IAW1BC,mBAAmB,MAAnBA,mBAAmB;IAkBnBC,4BAA4B,MAA5BA,4BAA4B;IAU5BC,kBAAkB,MAAlBA,kBAAkB;IAiBlBC,6BAA6B,MAA7BA,6BAA6B;IA2CnCC,qBAAqB,MAArBA,qBAAqB;;;8DAvZnB,OAAO;;;;;;;8DACV,IAAI;;;;;;2BAEO,aAAa;2DAClB,cAAc;qBACf,oBAAoB;wBACX,uBAAuB;sBAC1B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/C,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,kCAAkC,CAAC,AAAsB,AAAC;IAElF,SAcN;UAdWC,SAAS;IAATA,SAAS,CACnB,kEAAkE;IAClE,mEAAmE;IACnE,qEAAqE;IACrE,qBAAqB;IACrBC,KAAG,IAAHA,KAAG;IALOD,SAAS,CAMnBE,OAAK,IAALA,OAAK;IANKF,SAAS,CAOnBG,KAAG,IAAHA,KAAG;IAPOH,SAAS,CAQnBI,KAAG,IAAHA,KAAG;IAROJ,SAAS,CASnBK,OAAK,IAAG,QAAQ;IATNL,SAAS,CAUnBM,UAAQ,IAAG,WAAW;IAVZN,SAAS,CAWnBO,YAAU,IAAG,aAAa;IAXhBP,SAAS,CAYnBQ,SAAO,IAAPA,SAAO;IAZGR,SAAS,CAanBS,WAAS,IAATA,WAAS;GAbCT,SAAS,KAATA,SAAS;AAkCrB,MAAMU,yBAAyB,GAAG,gDAAgD,AAAC;AACnF,oDAAoD;AACpD,MAAMC,aAAa,GAAG,oBAAoB,AAAC;AAE3C,MAAMC,sBAAsB,GAAG,wBAAwB,AAAC;AAExD,wBAAwB;AACxB,oDAAoD;AACpD,MAAMC,yBAAyB,GAAG,mBAAmB,AAAC;AAEtD,IAAIC,OAAO,AAAkB,AAAC;AAGvB,SAASjC,SAAS,GAAG;IAC1BiC,OAAO,WAAPA,OAAO,GAAPA,OAAO,GAAK,IAAIC,UAAS,UAAA,EAAE,CAAC;IAC5B,OAAOD,OAAO,CAAC;AACjB,CAAC;AAGM,SAAShC,eAAe,CAACkC,MAAc,EAAE;IAC9CC,IAAG,CAACC,IAAI,CACN,CAAC,oDAAoD,EAAEC,MAAK,EAAA,QAAA,CAACC,IAAI,CAACJ,MAAM,CAACK,IAAI,CAAC,CAAC,EAAE,EAAEF,MAAK,EAAA,QAAA,CAACG,GAAG,CAC1FC,IAAAA,KAAS,UAAA,EAAC,2CAA2C,CAAC,CACvD,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAGM,eAAexC,uBAAuB,CAC3CiC,MAAqB,EACrBQ,cAAsB,EACJ;IAClB,MAAMC,QAAQ,GAAG,MAAM5C,SAAS,EAAE,CAAC6C,QAAQ,CACzCpC,OAAO,CACL0B,MAAM,CAACW,GAAG,EACV,OAAO,EACP,IAAI,EACJ,MAAM,EACN,UAAU,EACV,QAAQ,EACRC,IAAG,IAAA,CAACC,aAAa,EACjBL,cAAc,CACf,CACF,AAAC;IAEF,MAAMM,KAAK,GAAGL,QAAQ,CAACM,KAAK,SAAS,AAAC;IACtC,IAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,CAAE;QACrC,MAAME,IAAI,GAAGJ,KAAK,CAACE,CAAC,CAAC,CAACG,IAAI,EAAE,AAAC;QAC7B,IAAID,IAAI,KAAK,CAAC,QAAQ,EAAEV,cAAc,CAAC,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAMM,eAAexC,mBAAmB,CACvCgC,MAAqB,EACrB,EACEoB,cAAc,CAAA,EAGf,EACD;IACA,OAAOC,SAAS,CACd/C,OAAO,CACL0B,MAAM,CAACW,GAAG,EACV,OAAO,EACP,IAAI,EACJ,OAAO,EACP,kIAAkI;IAClI,IAAI,EACJ,YAAY,EACZ,sDAAsD;IACtD,IAAI,EACJS,cAAc,CACf,CACF,CAAC;AACJ,CAAC;AAMM,eAAenD,cAAc,CAClC+B,MAAqB,EACrB,EACEsB,aAAa,CAAA,EAGd,EACD;IACA,OAAOD,SAAS,CACd/C,OAAO,CACL0B,MAAM,CAACW,GAAG,EACV,OAAO,EACP,QAAQ,EACR,IAAI,EACJW,aAAa,EACb,IAAI,EACJ,kCAAkC,EAClC,GAAG,CACJ,CACF,CAAC;AACJ,CAAC;AAMM,eAAepD,YAAY,CAChC8B,MAAqB,EACrB,EACEuB,GAAG,CAAA,EAGJ,EACD;IACA,OAAOF,SAAS,CACd/C,OAAO,CACL0B,MAAM,CAACW,GAAG,EACV,OAAO,EACP,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,4BAA4B,EAC5B,IAAI,EACJ,yCAAyC;IACzCY,GAAG,CAACC,OAAO,OAAOC,MAAM,CAACC,GAAG,CAAC,EAAE,CAAC,CAAC,CAClC,CACF,CAAC;AACJ,CAAC;AAED,8FAA8F,GAC9F,eAAeL,SAAS,CAACM,IAAc,EAAmB;IACxD,MAAMC,OAAO,GAAG,MAAM/D,SAAS,EAAE,CAAC6C,QAAQ,CAACiB,IAAI,CAAC,AAAC;IACjD,IACEC,OAAO,CAACC,QAAQ,CAACnC,yBAAyB,CAAC,IAC3CkC,OAAO,CAACE,KAAK,8CAA8C,EAC3D;QACA,MAAM,IAAIC,OAAY,aAAA,CAAC,mBAAmB,EAAEH,OAAO,CAACI,SAAS,CAACJ,OAAO,CAACK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAOL,OAAO,CAAC;AACjB,CAAC;AAGM,eAAezD,cAAc,CAClC6B,MAAqB,EACrB,EAAEkC,KAAK,CAAA,EAAqB,EACX;IACjB,OAAO,MAAMrE,SAAS,EAAE,CAAC6C,QAAQ,CAC/BpC,OAAO,CAAC0B,MAAM,CAACW,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAEC,IAAG,IAAA,CAACC,aAAa,EAAEqB,KAAK,CAAC,CACrE,CAAC;AACJ,CAAC;AAGM,eAAe9D,mBAAmB,CACvC4B,MAAqB,EACrB,EAAEkC,KAAK,CAAA,EAAqB,EACX;IACjB,OAAO,MAAMrE,SAAS,EAAE,CAAC6C,QAAQ,CAACpC,OAAO,CAAC0B,MAAM,CAACW,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAEuB,KAAK,CAAC,CAAC,CAAC;AAC/F,CAAC;AAGM,eAAe7D,YAAY,CAAC2B,MAAqB,EAAE,EAAEmC,QAAQ,CAAA,EAAwB,EAAE;IAC5F,gEAAgE;IAChE,OAAO,MAAMtE,SAAS,EAAE,CAAC6C,QAAQ,CAC/BpC,OAAO,CAAC0B,MAAM,CAACW,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAEC,IAAG,IAAA,CAACC,aAAa,EAAEsB,QAAQ,CAAC,CAClF,CAAC;AACJ,CAAC;AAGM,SAAS7D,OAAO,CAACqC,GAAkB,EAAE,GAAGyB,OAAO,AAAU,EAAY;IAC1E,MAAMT,IAAI,GAAG,EAAE,AAAC;IAChB,IAAIhB,GAAG,EAAE;QACPgB,IAAI,CAACU,IAAI,CAAC,IAAI,EAAE1B,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,OAAOgB,IAAI,CAACW,MAAM,CAACF,OAAO,CAAC,CAAC;AAC9B,CAAC;AAGM,eAAe7D,uBAAuB,GAAsB;IACjE,MAAMgE,MAAM,GAAG,MAAM1E,SAAS,EAAE,CAAC6C,QAAQ,CAAC;QAAC,SAAS;QAAE,IAAI;KAAC,CAAC,AAAC;IAE7D,MAAM8B,UAAU,GAAGD,MAAM,CACtBpB,IAAI,EAAE,CACNK,OAAO,QAAQ,EAAE,CAAC,CAClBT,KAAK,CAAC0B,GAAE,EAAA,QAAA,CAACC,GAAG,CAAC,AACd,8CAA8C;IAC9C,mFAAmF;IACnF,6GAA6G;IAC7G,2FAA2F;KAC1FC,MAAM,CAAC,CAACzB,IAAI,GAAK,CAACA,IAAI,CAACY,KAAK,gBAAgB,CAAC,AAAC;IAEjD,wDAAwD;IACxD,mBAAmB;IACnB,MAAMc,eAAe,GAIfJ,UAAU,CACbK,KAAK,CAAC,CAAC,EAAEL,UAAU,CAACvB,MAAM,CAAC,CAC3B6B,GAAG,CAAC,CAAC5B,IAAI,GAAK;QACb,qFAAqF;QACrF,mIAAmI;QACnI,2DAA2D;QAC3D,MAAM6B,KAAK,GAAG7B,IAAI,CAACH,KAAK,CAAC,GAAG,CAAC,CAAC4B,MAAM,CAACK,OAAO,CAAC,AAAC;QAE9C,MAAMC,YAAY,GAAGF,KAAK,CAAC,CAAC,CAAC,KAAK,cAAc,AAAC;QACjD,MAAMG,IAAI,GAAGhC,IAAI,CAACW,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,QAAQ,AAAC;QAC/D,OAAO;YAAEkB,KAAK;YAAEG,IAAI;YAAED,YAAY;SAAE,CAAC;IACvC,CAAC,CAAC,CACDN,MAAM,CAAC,CAAC,EAAEI,KAAK,EAAE,CAACpC,GAAG,CAAC,CAAA,EAAE,GAAK,CAAC,CAACA,GAAG,CAAC,AAAC;IAEvC,MAAMwC,cAAc,GAAGP,eAAe,CAACE,GAAG,CAAkB,OAAOC,KAAK,GAAK;QAC3E,MAAM,EACJG,IAAI,CAAA,EACJH,KAAK,EAAE,CAACpC,GAAG,EAAE,GAAGyC,UAAU,CAAC,CAAA,EAC3BH,YAAY,CAAA,IACb,GAAGF,KAAK,AAAC;QAEV,IAAI1C,IAAI,GAAkB,IAAI,AAAC;QAE/B,IAAI6C,IAAI,KAAK,QAAQ,EAAE;YACrB,IAAID,YAAY,EAAE;gBAChB,0CAA0C;gBAC1C,yBAAyB;gBACzB,MAAMI,SAAS,GAAGD,UAAU,CAACE,IAAI,CAAC,CAACC,IAAI,GAAKA,IAAI,CAAC1B,QAAQ,CAAC,QAAQ,CAAC,CAAC,AAAC;gBACrE,IAAIwB,SAAS,EAAE;oBACbhD,IAAI,GAAGgD,SAAS,CAAC7B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,2DAA2D;YAC3D,IAAI,CAACnB,IAAI,EAAE;gBACT,sBAAsB;gBACtBA,IAAI,GAAG,CAAC,OAAO,EAAEM,GAAG,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,OAAO;gBAEE,GAA2C;YADlD,8FAA8F;YAC9FN,IAAI,GAAG,CAAA,GAA2C,GAA1C,MAAM7B,0BAA0B,CAAC;gBAAEmC,GAAG;aAAE,CAAC,YAA1C,GAA2C,GAAI,EAAE,CAAC;QAC3D,CAAC;QAED,OAAO;YACLA,GAAG;YACHN,IAAI;YACJ6C,IAAI;YACJD,YAAY;YACZO,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC,CAAC,AAAC;IAEH,OAAOC,OAAO,CAACC,GAAG,CAACP,cAAc,CAAC,CAAC;AACrC,CAAC;AAOM,eAAe3E,0BAA0B,CAACwB,MAAqB,EAA0B;IAC9F,MAAM4B,OAAO,GAAG,MAAM/D,SAAS,EAAE,CAAC6C,QAAQ,CAACpC,OAAO,CAAC0B,MAAM,CAACW,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,AAAC;IAEtF,IAAIiB,OAAO,CAACE,KAAK,wDAAwD,EAAE;QACzE,mDAAmD;QACnD,MAAM,IAAIC,OAAY,aAAA,CAAC,oBAAoB,EAAEH,OAAO,CAAC,CAAC;IACxD,CAAC;QAEM/C,GAA8B;IAArC,OAAOA,CAAAA,GAA8B,GAA9BA,qBAAqB,CAAC+C,OAAO,CAAC,YAA9B/C,GAA8B,GAAI,IAAI,CAAC;AAChD,CAAC;AAEM,eAAeJ,mBAAmB,CAAC,EACxC4B,IAAI,CAAA,EACc,GAAG,EAAE,EAA0B;IACjD,MAAMsD,OAAO,GAAG,MAAMpF,uBAAuB,EAAE,AAAC;IAEhD,IAAI,CAAC8B,IAAI,EAAE;YACFsD,GAAU;QAAjB,OAAOA,CAAAA,GAAU,GAAVA,OAAO,CAAC,CAAC,CAAC,YAAVA,GAAU,GAAI,IAAI,CAAC;IAC5B,CAAC;QAEMA,IAA8C;IAArD,OAAOA,CAAAA,IAA8C,GAA9CA,OAAO,CAACL,IAAI,CAAC,CAACtD,MAAM,GAAKA,MAAM,CAACK,IAAI,KAAKA,IAAI,CAAC,YAA9CsD,IAA8C,GAAI,IAAI,CAAC;AAChE,CAAC;AAQM,eAAejF,4BAA4B,CAACiC,GAAY,EAAoB;IACjF,IAAI;QACF,MAAMoC,KAAK,GAAG,MAAMnE,6BAA6B,CAAC;YAAE+B,GAAG;SAAE,EAAEd,yBAAyB,CAAC,AAAC;QACtF,OAAO,CAAC,CAACkD,KAAK,CAAClD,yBAAyB,CAAC,CAACiC,KAAK,WAAW,CAAC;IAC7D,EAAE,OAAM;QACN,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAGM,eAAenD,kBAAkB,CACtCqB,MAAoC,EACd;IACtB,MAAM4D,UAAU,GAAG,CAAC,MAAMhF,6BAA6B,CAACoB,MAAM,EAAEJ,sBAAsB,CAAC,CAAC,CACtFA,sBAAsB,CACvB,AAAC;IAEF,IAAIgE,UAAU,EAAE;QACd,OAAOA,UAAU,CAACzC,IAAI,EAAE,CAACJ,KAAK,CAAC,GAAG,CAAC,CAAgB;IACrD,CAAC;IAED,MAAM8C,GAAG,GAAG,CAAC,MAAMjF,6BAA6B,CAACoB,MAAM,EAAEL,aAAa,CAAC,CAAC,CACtEA,aAAa,CACd,AAAa,AAAC;IACf,OAAO;QAACkE,GAAG;KAAC,CAAC;AACf,CAAC;AAEM,eAAejF,6BAA6B,CACjDoB,MAAqB,EACrB8D,IAAa,EACc;IAC3B,aAAa;IACb,MAAMC,WAAW,GAAGzF,OAAO,IAAI;QAAC0B,MAAM,CAACW,GAAG;QAAE,OAAO;QAAE,SAAS;QAAEmD,IAAI;KAAC,CAACnB,MAAM,CAACK,OAAO,CAAC,CAAC,AAAC;IACvF,IAAI;QACF,2BAA2B;QAC3B,MAAMpB,OAAO,GAAG,MAAM/D,SAAS,EAAE,CAACmG,kBAAkB,CAACD,WAAW,CAAC,AAAC;QAClE,QAAQ;QACR,2CAA2C;QAC3C,4BAA4B;QAE5B,IAAID,IAAI,EAAE;YACRhF,KAAK,CAAC,CAAC,4BAA4B,EAAEkB,MAAM,CAACW,GAAG,CAAC,QAAQ,EAAEmD,IAAI,CAAC,QAAQ,EAAElC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,OAAO;gBACL,CAACkC,IAAI,CAAC,EAAElC,OAAO;aAChB,CAAC;QACJ,CAAC;QACD,MAAMmB,KAAK,GAAGkB,wBAAwB,CAACrC,OAAO,CAAC,AAAC;QAEhD9C,KAAK,CAAC,CAAC,YAAY,CAAC,EAAEiE,KAAK,CAAC,CAAC;QAE7B,OAAOA,KAAK,CAAC;IACf,EAAE,OAAOmB,KAAK,EAAO;QACnB,gDAAgD;QAChD,MAAM,IAAInC,OAAY,aAAA,CAAC,CAAC,qCAAqC,EAAE/B,MAAM,CAACW,GAAG,CAAC,GAAG,EAAEuD,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,SAASF,wBAAwB,CAACG,sBAA8B,EAAE;IAChE,MAAMC,UAAU,GAAqB,EAAE,AAAC;IACxC,MAAMC,WAAW,2BAA2B,AAAC;IAC7C,KAAK,MAAMxC,KAAK,IAAIsC,sBAAsB,CAACG,QAAQ,CAACD,WAAW,CAAC,CAAE;QAChED,UAAU,CAACvC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAOuC,UAAU,CAAC;AACpB,CAAC;AAMM,SAASxF,qBAAqB,CAAC2F,UAAkB,EAAE;IACxD,OAAOA,UAAU,CACdrD,IAAI,EAAE,CACNJ,KAAK,WAAW,CAChB0D,KAAK,EAAE,CAAC;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/cli",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.9",
|
|
4
4
|
"description": "The Expo CLI",
|
|
5
5
|
"main": "build/bin/cli",
|
|
6
6
|
"bin": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@expo/osascript": "^2.0.31",
|
|
50
50
|
"@expo/package-manager": "^1.5.0",
|
|
51
51
|
"@expo/plist": "^0.1.0",
|
|
52
|
-
"@expo/prebuild-config": "7.0.
|
|
52
|
+
"@expo/prebuild-config": "7.0.3",
|
|
53
53
|
"@expo/rudder-sdk-node": "1.1.1",
|
|
54
54
|
"@expo/spawn-async": "^1.7.2",
|
|
55
55
|
"@expo/xcpretty": "^4.3.0",
|
|
@@ -168,5 +168,5 @@
|
|
|
168
168
|
"tree-kill": "^1.2.2",
|
|
169
169
|
"tsd": "^0.28.1"
|
|
170
170
|
},
|
|
171
|
-
"gitHead": "
|
|
171
|
+
"gitHead": "7995f30a8d2af4836f3aef9fe322e9403fc23d34"
|
|
172
172
|
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-is.development.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
if (process.env.NODE_ENV !== "production") {
|
|
14
|
+
(function() {
|
|
15
|
+
'use strict';
|
|
16
|
+
|
|
17
|
+
// -----------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
var enableScopeAPI = false; // Experimental Create Event Handle API.
|
|
20
|
+
var enableTransitionTracing = false; // No known bugs, but needs performance testing
|
|
21
|
+
|
|
22
|
+
var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber
|
|
23
|
+
|
|
24
|
+
var enableRenderableContext = true; // Enables the `initialValue` option for `useDeferredValue`
|
|
25
|
+
// stuff. Intended to enable React core members to more easily debug scheduling
|
|
26
|
+
// issues in DEV builds.
|
|
27
|
+
|
|
28
|
+
var enableDebugTracing = false;
|
|
29
|
+
|
|
30
|
+
var REACT_ELEMENT_TYPE = Symbol.for('react.transitional.element') ;
|
|
31
|
+
var REACT_PORTAL_TYPE = Symbol.for('react.portal');
|
|
32
|
+
var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
|
|
33
|
+
var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
|
|
34
|
+
var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
|
|
35
|
+
var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); // TODO: Delete with enableRenderableContext
|
|
36
|
+
|
|
37
|
+
var REACT_CONSUMER_TYPE = Symbol.for('react.consumer');
|
|
38
|
+
var REACT_CONTEXT_TYPE = Symbol.for('react.context');
|
|
39
|
+
var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
|
|
40
|
+
var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
|
|
41
|
+
var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
|
|
42
|
+
var REACT_MEMO_TYPE = Symbol.for('react.memo');
|
|
43
|
+
var REACT_LAZY_TYPE = Symbol.for('react.lazy');
|
|
44
|
+
var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
|
|
45
|
+
|
|
46
|
+
var REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference');
|
|
47
|
+
function isValidElementType(type) {
|
|
48
|
+
if (typeof type === 'string' || typeof type === 'function') {
|
|
49
|
+
return true;
|
|
50
|
+
} // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableTransitionTracing ) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (typeof type === 'object' && type !== null) {
|
|
58
|
+
if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || !enableRenderableContext || type.$$typeof === REACT_CONSUMER_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
|
|
59
|
+
// types supported by any Flight configuration anywhere since
|
|
60
|
+
// we don't know which Flight build this will end up being used
|
|
61
|
+
// with.
|
|
62
|
+
type.$$typeof === REACT_CLIENT_REFERENCE || type.getModuleId !== undefined) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function typeOf(object) {
|
|
71
|
+
if (typeof object === 'object' && object !== null) {
|
|
72
|
+
var $$typeof = object.$$typeof;
|
|
73
|
+
|
|
74
|
+
switch ($$typeof) {
|
|
75
|
+
case REACT_ELEMENT_TYPE:
|
|
76
|
+
var type = object.type;
|
|
77
|
+
|
|
78
|
+
switch (type) {
|
|
79
|
+
case REACT_FRAGMENT_TYPE:
|
|
80
|
+
case REACT_PROFILER_TYPE:
|
|
81
|
+
case REACT_STRICT_MODE_TYPE:
|
|
82
|
+
case REACT_SUSPENSE_TYPE:
|
|
83
|
+
case REACT_SUSPENSE_LIST_TYPE:
|
|
84
|
+
return type;
|
|
85
|
+
|
|
86
|
+
default:
|
|
87
|
+
var $$typeofType = type && type.$$typeof;
|
|
88
|
+
|
|
89
|
+
switch ($$typeofType) {
|
|
90
|
+
case REACT_CONTEXT_TYPE:
|
|
91
|
+
case REACT_FORWARD_REF_TYPE:
|
|
92
|
+
case REACT_LAZY_TYPE:
|
|
93
|
+
case REACT_MEMO_TYPE:
|
|
94
|
+
return $$typeofType;
|
|
95
|
+
|
|
96
|
+
case REACT_CONSUMER_TYPE:
|
|
97
|
+
{
|
|
98
|
+
return $$typeofType;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Fall through
|
|
102
|
+
|
|
103
|
+
case REACT_PROVIDER_TYPE:
|
|
104
|
+
|
|
105
|
+
// Fall through
|
|
106
|
+
|
|
107
|
+
default:
|
|
108
|
+
return $$typeof;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
case REACT_PORTAL_TYPE:
|
|
114
|
+
return $$typeof;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
var ContextConsumer = REACT_CONSUMER_TYPE ;
|
|
121
|
+
var ContextProvider = REACT_CONTEXT_TYPE ;
|
|
122
|
+
var Element = REACT_ELEMENT_TYPE;
|
|
123
|
+
var ForwardRef = REACT_FORWARD_REF_TYPE;
|
|
124
|
+
var Fragment = REACT_FRAGMENT_TYPE;
|
|
125
|
+
var Lazy = REACT_LAZY_TYPE;
|
|
126
|
+
var Memo = REACT_MEMO_TYPE;
|
|
127
|
+
var Portal = REACT_PORTAL_TYPE;
|
|
128
|
+
var Profiler = REACT_PROFILER_TYPE;
|
|
129
|
+
var StrictMode = REACT_STRICT_MODE_TYPE;
|
|
130
|
+
var Suspense = REACT_SUSPENSE_TYPE;
|
|
131
|
+
var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
|
|
132
|
+
function isContextConsumer(object) {
|
|
133
|
+
{
|
|
134
|
+
return typeOf(object) === REACT_CONSUMER_TYPE;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function isContextProvider(object) {
|
|
138
|
+
{
|
|
139
|
+
return typeOf(object) === REACT_CONTEXT_TYPE;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function isElement(object) {
|
|
143
|
+
return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
|
|
144
|
+
}
|
|
145
|
+
function isForwardRef(object) {
|
|
146
|
+
return typeOf(object) === REACT_FORWARD_REF_TYPE;
|
|
147
|
+
}
|
|
148
|
+
function isFragment(object) {
|
|
149
|
+
return typeOf(object) === REACT_FRAGMENT_TYPE;
|
|
150
|
+
}
|
|
151
|
+
function isLazy(object) {
|
|
152
|
+
return typeOf(object) === REACT_LAZY_TYPE;
|
|
153
|
+
}
|
|
154
|
+
function isMemo(object) {
|
|
155
|
+
return typeOf(object) === REACT_MEMO_TYPE;
|
|
156
|
+
}
|
|
157
|
+
function isPortal(object) {
|
|
158
|
+
return typeOf(object) === REACT_PORTAL_TYPE;
|
|
159
|
+
}
|
|
160
|
+
function isProfiler(object) {
|
|
161
|
+
return typeOf(object) === REACT_PROFILER_TYPE;
|
|
162
|
+
}
|
|
163
|
+
function isStrictMode(object) {
|
|
164
|
+
return typeOf(object) === REACT_STRICT_MODE_TYPE;
|
|
165
|
+
}
|
|
166
|
+
function isSuspense(object) {
|
|
167
|
+
return typeOf(object) === REACT_SUSPENSE_TYPE;
|
|
168
|
+
}
|
|
169
|
+
function isSuspenseList(object) {
|
|
170
|
+
return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
exports.ContextConsumer = ContextConsumer;
|
|
174
|
+
exports.ContextProvider = ContextProvider;
|
|
175
|
+
exports.Element = Element;
|
|
176
|
+
exports.ForwardRef = ForwardRef;
|
|
177
|
+
exports.Fragment = Fragment;
|
|
178
|
+
exports.Lazy = Lazy;
|
|
179
|
+
exports.Memo = Memo;
|
|
180
|
+
exports.Portal = Portal;
|
|
181
|
+
exports.Profiler = Profiler;
|
|
182
|
+
exports.StrictMode = StrictMode;
|
|
183
|
+
exports.Suspense = Suspense;
|
|
184
|
+
exports.SuspenseList = SuspenseList;
|
|
185
|
+
exports.isContextConsumer = isContextConsumer;
|
|
186
|
+
exports.isContextProvider = isContextProvider;
|
|
187
|
+
exports.isElement = isElement;
|
|
188
|
+
exports.isForwardRef = isForwardRef;
|
|
189
|
+
exports.isFragment = isFragment;
|
|
190
|
+
exports.isLazy = isLazy;
|
|
191
|
+
exports.isMemo = isMemo;
|
|
192
|
+
exports.isPortal = isPortal;
|
|
193
|
+
exports.isProfiler = isProfiler;
|
|
194
|
+
exports.isStrictMode = isStrictMode;
|
|
195
|
+
exports.isSuspense = isSuspense;
|
|
196
|
+
exports.isSuspenseList = isSuspenseList;
|
|
197
|
+
exports.isValidElementType = isValidElementType;
|
|
198
|
+
exports.typeOf = typeOf;
|
|
199
|
+
})();
|
|
200
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-is.production.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
"use strict";
|
|
12
|
+
var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
|
|
13
|
+
REACT_PORTAL_TYPE = Symbol.for("react.portal"),
|
|
14
|
+
REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
|
|
15
|
+
REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
|
|
16
|
+
REACT_PROFILER_TYPE = Symbol.for("react.profiler");
|
|
17
|
+
Symbol.for("react.provider");
|
|
18
|
+
var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"),
|
|
19
|
+
REACT_CONTEXT_TYPE = Symbol.for("react.context"),
|
|
20
|
+
REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
|
|
21
|
+
REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"),
|
|
22
|
+
REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"),
|
|
23
|
+
REACT_MEMO_TYPE = Symbol.for("react.memo"),
|
|
24
|
+
REACT_LAZY_TYPE = Symbol.for("react.lazy"),
|
|
25
|
+
REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen"),
|
|
26
|
+
REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
|
|
27
|
+
function typeOf(object) {
|
|
28
|
+
if ("object" === typeof object && null !== object) {
|
|
29
|
+
var $$typeof = object.$$typeof;
|
|
30
|
+
switch ($$typeof) {
|
|
31
|
+
case REACT_ELEMENT_TYPE:
|
|
32
|
+
switch (((object = object.type), object)) {
|
|
33
|
+
case REACT_FRAGMENT_TYPE:
|
|
34
|
+
case REACT_PROFILER_TYPE:
|
|
35
|
+
case REACT_STRICT_MODE_TYPE:
|
|
36
|
+
case REACT_SUSPENSE_TYPE:
|
|
37
|
+
case REACT_SUSPENSE_LIST_TYPE:
|
|
38
|
+
return object;
|
|
39
|
+
default:
|
|
40
|
+
switch (((object = object && object.$$typeof), object)) {
|
|
41
|
+
case REACT_CONTEXT_TYPE:
|
|
42
|
+
case REACT_FORWARD_REF_TYPE:
|
|
43
|
+
case REACT_LAZY_TYPE:
|
|
44
|
+
case REACT_MEMO_TYPE:
|
|
45
|
+
return object;
|
|
46
|
+
case REACT_CONSUMER_TYPE:
|
|
47
|
+
return object;
|
|
48
|
+
default:
|
|
49
|
+
return $$typeof;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
case REACT_PORTAL_TYPE:
|
|
53
|
+
return $$typeof;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.ContextConsumer = REACT_CONSUMER_TYPE;
|
|
58
|
+
exports.ContextProvider = REACT_CONTEXT_TYPE;
|
|
59
|
+
exports.Element = REACT_ELEMENT_TYPE;
|
|
60
|
+
exports.ForwardRef = REACT_FORWARD_REF_TYPE;
|
|
61
|
+
exports.Fragment = REACT_FRAGMENT_TYPE;
|
|
62
|
+
exports.Lazy = REACT_LAZY_TYPE;
|
|
63
|
+
exports.Memo = REACT_MEMO_TYPE;
|
|
64
|
+
exports.Portal = REACT_PORTAL_TYPE;
|
|
65
|
+
exports.Profiler = REACT_PROFILER_TYPE;
|
|
66
|
+
exports.StrictMode = REACT_STRICT_MODE_TYPE;
|
|
67
|
+
exports.Suspense = REACT_SUSPENSE_TYPE;
|
|
68
|
+
exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;
|
|
69
|
+
exports.isContextConsumer = function (object) {
|
|
70
|
+
return typeOf(object) === REACT_CONSUMER_TYPE;
|
|
71
|
+
};
|
|
72
|
+
exports.isContextProvider = function (object) {
|
|
73
|
+
return typeOf(object) === REACT_CONTEXT_TYPE;
|
|
74
|
+
};
|
|
75
|
+
exports.isElement = function (object) {
|
|
76
|
+
return (
|
|
77
|
+
"object" === typeof object &&
|
|
78
|
+
null !== object &&
|
|
79
|
+
object.$$typeof === REACT_ELEMENT_TYPE
|
|
80
|
+
);
|
|
81
|
+
};
|
|
82
|
+
exports.isForwardRef = function (object) {
|
|
83
|
+
return typeOf(object) === REACT_FORWARD_REF_TYPE;
|
|
84
|
+
};
|
|
85
|
+
exports.isFragment = function (object) {
|
|
86
|
+
return typeOf(object) === REACT_FRAGMENT_TYPE;
|
|
87
|
+
};
|
|
88
|
+
exports.isLazy = function (object) {
|
|
89
|
+
return typeOf(object) === REACT_LAZY_TYPE;
|
|
90
|
+
};
|
|
91
|
+
exports.isMemo = function (object) {
|
|
92
|
+
return typeOf(object) === REACT_MEMO_TYPE;
|
|
93
|
+
};
|
|
94
|
+
exports.isPortal = function (object) {
|
|
95
|
+
return typeOf(object) === REACT_PORTAL_TYPE;
|
|
96
|
+
};
|
|
97
|
+
exports.isProfiler = function (object) {
|
|
98
|
+
return typeOf(object) === REACT_PROFILER_TYPE;
|
|
99
|
+
};
|
|
100
|
+
exports.isStrictMode = function (object) {
|
|
101
|
+
return typeOf(object) === REACT_STRICT_MODE_TYPE;
|
|
102
|
+
};
|
|
103
|
+
exports.isSuspense = function (object) {
|
|
104
|
+
return typeOf(object) === REACT_SUSPENSE_TYPE;
|
|
105
|
+
};
|
|
106
|
+
exports.isSuspenseList = function (object) {
|
|
107
|
+
return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
|
|
108
|
+
};
|
|
109
|
+
exports.isValidElementType = function (type) {
|
|
110
|
+
return "string" === typeof type ||
|
|
111
|
+
"function" === typeof type ||
|
|
112
|
+
type === REACT_FRAGMENT_TYPE ||
|
|
113
|
+
type === REACT_PROFILER_TYPE ||
|
|
114
|
+
type === REACT_STRICT_MODE_TYPE ||
|
|
115
|
+
type === REACT_SUSPENSE_TYPE ||
|
|
116
|
+
type === REACT_SUSPENSE_LIST_TYPE ||
|
|
117
|
+
type === REACT_OFFSCREEN_TYPE ||
|
|
118
|
+
("object" === typeof type &&
|
|
119
|
+
null !== type &&
|
|
120
|
+
(type.$$typeof === REACT_LAZY_TYPE ||
|
|
121
|
+
type.$$typeof === REACT_MEMO_TYPE ||
|
|
122
|
+
type.$$typeof === REACT_CONTEXT_TYPE ||
|
|
123
|
+
type.$$typeof === REACT_CONSUMER_TYPE ||
|
|
124
|
+
type.$$typeof === REACT_FORWARD_REF_TYPE ||
|
|
125
|
+
type.$$typeof === REACT_CLIENT_REFERENCE ||
|
|
126
|
+
void 0 !== type.getModuleId))
|
|
127
|
+
? !0
|
|
128
|
+
: !1;
|
|
129
|
+
};
|
|
130
|
+
exports.typeOf = typeOf;
|