@ceraph/react-native-mcp 1.0.1 → 1.0.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.
package/README.md CHANGED
@@ -14,11 +14,8 @@ Works with any MCP client: Claude Code, Cursor, Codex, VS Code, Antigravity, and
14
14
 
15
15
  Ceraph supports React Native and Expo apps. iOS testing runs on macOS through
16
16
  Xcode and WebDriverAgent. Android testing runs on macOS, Windows, or Linux
17
- through ADB and UiAutomator2.
18
-
19
- For both Expo and bare React Native projects, `ceraph start` creates, installs,
20
- and launches the native development build as needed. Expo projects run
21
- through that build rather than Expo Go.
17
+ through ADB and UiAutomator2. Expo projects use a development build rather than
18
+ Expo Go.
22
19
 
23
20
  | Target / host | Status | Notes |
24
21
  | -------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------- |
@@ -29,7 +26,7 @@ through that build rather than Expo Go.
29
26
 
30
27
  ### Choosing a platform and target
31
28
 
32
- On macOS, an otherwise ambiguous `auto` request defaults to iOS. On Windows and
29
+ On macOS, `ceraph start` defaults to iOS. On Windows and
33
30
  Linux it defaults to Android. An active automation session stays selected.
34
31
  With `--device`, Ceraph selects the platform automatically when exactly one USB
35
32
  device is connected. When multiple devices are connected, pass the exact Apple
@@ -66,7 +63,9 @@ The `rn_target_status` tool reports the active platform, exact runtime, target p
66
63
 
67
64
  ## iOS setup
68
65
 
69
- iOS device testing requires macOS, Xcode 14+, and iOS 16 or later.
66
+ Install Xcode 14 or later and complete its first-launch setup. Physical devices
67
+ require iOS 16 or later; simulator testing requires an installed iOS Simulator
68
+ runtime.
70
69
 
71
70
  ### Physical device
72
71
 
@@ -299,7 +298,7 @@ Settings → Tools → MCP Servers → Add, then enter:
299
298
  | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
300
299
  | `ceraph_snapshot` | Structured accessibility-tree snapshot of the current screen. Pass `includeStyles: true` after visual changes to include bounded render-time styles for uniquely matched visible elements, plus honest style-coverage metadata. |
301
300
  | `ceraph_run_hook` | Run a project-owned command inside the live app when authentication, gated state, a development-only blocker, or cleanup would otherwise prevent meaningful testing. |
302
- | `ceraph_record_run` | Replay an already-verified path without model pauses and produce a clean MP4 with structured UI snapshots and screenshots tracing the verified flow. |
301
+ | `ceraph_record_run` | Replay an already-verified path without model pauses and produce a clean MP4 with structured UI snapshots and screenshots tracing the verified flow. The recording is screen-only evidence; it does not capture or verify audio. |
303
302
  | `screen_tap` | Tap by snapshot ref, bounds, or coordinates. Prefer a stable ref; screenshot-derived coordinates are best-effort. |
304
303
  | `screen_tap_and_verify` | Find an element by ref/text/label/type, tap its center, and assert a required follow-up selector is on screen. Use `screen_tap` when no postcondition is needed. |
305
304
  | `screen_tap_chain` | Tap a sequence of controls on the same stable screen; sends nothing if any target cannot be resolved. |
@@ -349,7 +348,7 @@ internal use. [Read the full agreement](https://ceraph.dev/license.txt).
349
348
 
350
349
  ## Media picker testing
351
350
 
352
- Call `ceraph_add_media` before opening a native image or video picker when the selected runtime needs something to choose. Ceraph adds the supplied media to the runtime's system photo library; the agent then opens and drives the app's real picker UI as part of the end-to-end flow.
351
+ Call `ceraph_add_media` before opening a native image or video picker when the selected runtime needs something to choose. Ceraph adds the supplied media to the runtime's system photo library; the agent then opens and drives the app's real picker UI as part of the flow.
353
352
 
354
353
  The tool accepts JPEG, PNG, WebP, and HEIC images up to 5 MB, plus MP4, MOV,
355
354
  and M4V videos up to 25 MB. It supports iOS Simulators and Android emulators or
@@ -383,8 +382,7 @@ export function ScanProfileScreen() {
383
382
  `mediaKey` can select both an image and a video for a screen that supports both
384
383
  capture modes.
385
384
 
386
- Ask the agent to add fixtures with `ceraph_add_camera_image` or
387
- `ceraph_add_camera_video`. Images support JPEG, PNG, WebP, and HEIC up to 5 MB;
385
+ Ask your agent to add test images or videos. Images support JPEG, PNG, WebP, and HEIC up to 5 MB;
388
386
  videos support MP4, MOV, and M4V up to 25 MB. Set `overwrite: true` when replacing
389
387
  an existing key.
390
388
 
@@ -422,12 +420,6 @@ A **hook** is a project-owned command that Ceraph can run inside the live
422
420
  development app. It can use the app's own state, navigation, auth, feature-flag,
423
421
  and API modules. The agent invokes a hook explicitly with `ceraph_run_hook`.
424
422
 
425
- > **Safety:** Hooks use your app's services, so a development build
426
- > can still affect a production backend. Use disposable, non-production data,
427
- > keep credentials in your existing secret configuration, and prefer idempotent
428
- > (safe-to-repeat), `runId`-scoped effects. Never modify production or real-user
429
- > data without explicit human authorization. Clean up afterward.
430
-
431
423
  **Create a hook** in `.ceraph/hooks/`, one file per route, named `*.hook.ts` or `*.hook.js`. It exports the route it fires on and a `run` function, and may import your app's own modules:
432
424
 
433
425
  ```ts
@@ -519,16 +511,12 @@ preference or when Ceraph's remediation asks for an explicit override.
519
511
  ## Updates
520
512
 
521
513
  Ceraph automatically informs your agent when it detects a newer release.
522
- You normally don't need to check for updates yourself. To invoke an update
523
- manually, run this from an initialized project:
514
+ You normally don't need to check for updates yourself. To update manually:
524
515
 
525
516
  ```bash
526
517
  ceraph update
527
518
  ```
528
519
 
529
- If the global command is unavailable, run
530
- `npx @ceraph/react-native-mcp@latest update` instead.
531
-
532
520
  By default, Ceraph asks for permission before installing an update. You can ask
533
521
  your agent to enable automatic updates instead at any time.
534
522
 
@@ -1 +1 @@
1
- 'use strict';const _0x51198b=_0x59b4;(function(_0x45942f,_0x48abe5){const _0x3d5773=_0x59b4,_0x37d5cf=_0x45942f();while(!![]){try{const _0x50af78=parseInt(_0x3d5773(0x166))/0x1+-parseInt(_0x3d5773(0x148))/0x2*(-parseInt(_0x3d5773(0x163))/0x3)+parseInt(_0x3d5773(0x160))/0x4+-parseInt(_0x3d5773(0x167))/0x5+-parseInt(_0x3d5773(0x149))/0x6*(-parseInt(_0x3d5773(0x141))/0x7)+-parseInt(_0x3d5773(0x168))/0x8*(parseInt(_0x3d5773(0x15d))/0x9)+-parseInt(_0x3d5773(0x13b))/0xa*(-parseInt(_0x3d5773(0x171))/0xb);if(_0x50af78===_0x48abe5)break;else _0x37d5cf['push'](_0x37d5cf['shift']());}catch(_0x5f336a){_0x37d5cf['push'](_0x37d5cf['shift']());}}}(_0x307e,0x3ba23));var __defProp=Object['defineProperty'],__getOwnPropDesc=Object['getOwnPropertyDescriptor'],__getOwnPropNames=Object[_0x51198b(0x170)],__hasOwnProp=Object['prototype'][_0x51198b(0x16a)],__export=(_0x38dd1d,_0x83eb36)=>{for(var _0x418f44 in _0x83eb36)__defProp(_0x38dd1d,_0x418f44,{'get':_0x83eb36[_0x418f44],'enumerable':!![]});},__copyProps=(_0x119769,_0xb7958b,_0x23a6e4,_0x45b1e1)=>{const _0x17c482=_0x51198b;if(_0xb7958b&&typeof _0xb7958b==='object'||typeof _0xb7958b==='function'){for(let _0x3bba5d of __getOwnPropNames(_0xb7958b))if(!__hasOwnProp[_0x17c482(0x154)](_0x119769,_0x3bba5d)&&_0x3bba5d!==_0x23a6e4)__defProp(_0x119769,_0x3bba5d,{'get':()=>_0xb7958b[_0x3bba5d],'enumerable':!(_0x45b1e1=__getOwnPropDesc(_0xb7958b,_0x3bba5d))||_0x45b1e1[_0x17c482(0x16f)]});}return _0x119769;},__toCommonJS=_0x48df48=>__copyProps(__defProp({},'__esModule',{'value':!![]}),_0x48df48),babel_plugin_exports={};__export(babel_plugin_exports,{'default':()=>ceraphTestIdPlugin}),module['exports']=__toCommonJS(babel_plugin_exports);var CERAPH_TESTID_PREFIX=_0x51198b(0x161);function _0x307e(){const _0x3cd0a4=['line','process','call','TextField','onLongPress','onChangeText','NODE_ENV','column','padStart','TouchableNativeFeedback','relative','738Vdzovb','name','Pressable','216628lmSSgd','cer_','isJSXAttribute','12eXABvP','relPath','onChange','19674CcrdOq','1168700KFcKno','26224VKGyDO','join','hasOwnProperty','has','MenuItem','length','node','enumerable','getOwnPropertyNames','143UQNoZH','stringLiteral','col','116930IrzLvL','isJSXNamespacedName','types','unshift','opts','charCodeAt','418103MuEEON','replace','testID','file','loc','split','start','51426REuHrn','42CPQvCZ','Picker','IrRKn','ListItem','onPressIn','toString','TextInput','attributes','push'];_0x307e=function(){return _0x3cd0a4;};return _0x307e();}function normalizeRelPath(_0x2dfc76){const _0x15e3a9=_0x51198b;return _0x2dfc76['replace'](/\\/g,'/')[_0x15e3a9(0x142)](/^\.\//,'')['replace'](/^\/+/,'');}function slug(_0x4e77e6){const _0x75b84b=_0x51198b,_0x55a407=_0x4e77e6['replace'](/\.[jt]sx?$/i,''),_0x4e97fb=_0x55a407['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')[_0x75b84b(0x142)](/-+/g,'-')['replace'](/^-+|-+$/g,'');return _0x4e97fb[_0x75b84b(0x16d)]>0x28?_0x4e97fb['slice'](_0x4e97fb['length']-0x28)['replace'](/^-+/,''):_0x4e97fb;}function fnv1a64Hex(_0xdc5f45){const _0x37065b=_0x51198b;let _0x555040=0xcbf29ce484222325n;const _0x5e784e=0x100000001b3n,_0x30e960=0xffffffffffffffffn;for(let _0x4e7d1c=0x0;_0x4e7d1c<_0xdc5f45['length'];_0x4e7d1c++){_0x555040^=BigInt(_0xdc5f45[_0x37065b(0x140)](_0x4e7d1c)),_0x555040=_0x555040*_0x5e784e&_0x30e960;}return _0x555040[_0x37065b(0x14e)](0x10)['padStart'](0x10,'0');}function deriveTestId(_0x1f97b9){const _0x448283=_0x51198b,_0x4d367f=normalizeRelPath(_0x1f97b9[_0x448283(0x164)]),_0x118410=_0x4d367f+'|'+_0x1f97b9[_0x448283(0x152)]+'|'+_0x1f97b9[_0x448283(0x173)]+'|'+(_0x1f97b9['tag']??''),_0x242002=fnv1a64Hex(_0x118410)['slice'](0x0,0xa);return''+CERAPH_TESTID_PREFIX+slug(_0x4d367f)+'_'+_0x1f97b9[_0x448283(0x152)]+'_'+_0x1f97b9['col']+'_'+_0x242002;}var INTERACTIVE_TAGS=new Set([_0x51198b(0x15f),'TouchableOpacity','TouchableHighlight','TouchableWithoutFeedback',_0x51198b(0x15b),'Button','Link','IconButton',_0x51198b(0x16c),_0x51198b(0x14c),'Chip']),INPUT_TAGS=new Set([_0x51198b(0x14f),_0x51198b(0x155),'Switch',_0x51198b(0x14a),'Slider','Checkbox','SegmentedControl','SearchBar']),PRESS_PROPS=new Set(['onPress',_0x51198b(0x14d),_0x51198b(0x156),'onClick']),INPUT_PROPS=new Set([_0x51198b(0x157),'onValueChange',_0x51198b(0x165)]);function baseTag(_0x151708){return _0x151708['split']('.')[0x0];}function isTargetableJsx(_0x1c4660,_0x378d7c){const _0x541b90=_0x51198b,_0x375ec7=baseTag(_0x1c4660);if(INTERACTIVE_TAGS[_0x541b90(0x16b)](_0x1c4660)||INTERACTIVE_TAGS[_0x541b90(0x16b)](_0x375ec7)||INPUT_TAGS[_0x541b90(0x16b)](_0x1c4660)||INPUT_TAGS[_0x541b90(0x16b)](_0x375ec7))return!![];for(const _0x6e6e8f of _0x378d7c){if(PRESS_PROPS['has'](_0x6e6e8f)||INPUT_PROPS['has'](_0x6e6e8f))return!![];}return![];}var import_node_path=require('path');function jsxTagName(_0x337a9b,_0x42a024){const _0x533d23=_0x51198b;if(_0x42a024['isJSXIdentifier'](_0x337a9b))return _0x337a9b[_0x533d23(0x15e)];if(_0x42a024['isJSXMemberExpression'](_0x337a9b)){const _0x1e1406=[];let _0x1a7b6a=_0x337a9b;while(_0x42a024['isJSXMemberExpression'](_0x1a7b6a)){if('iWMIG'===_0x533d23(0x14b)){let _0x303498=0xcbf29ce484222325n;const _0x24a2dc=0x100000001b3n,_0x31d911=0xffffffffffffffffn;for(let _0x2c2f4b=0x0;_0x2c2f4b<_0x2865a7[_0x533d23(0x16d)];_0x2c2f4b++){_0x303498^=_0x15ec85(_0x3d6cbf['charCodeAt'](_0x2c2f4b)),_0x303498=_0x303498*_0x24a2dc&_0x31d911;}return _0x303498['toString'](0x10)[_0x533d23(0x15a)](0x10,'0');}else _0x1e1406[_0x533d23(0x13e)](_0x1a7b6a['property'][_0x533d23(0x15e)]),_0x1a7b6a=_0x1a7b6a['object'];}if(_0x42a024['isJSXIdentifier'](_0x1a7b6a))_0x1e1406['unshift'](_0x1a7b6a[_0x533d23(0x15e)]);return _0x1e1406[_0x533d23(0x169)]('.');}if(_0x42a024[_0x533d23(0x13c)](_0x337a9b))return _0x337a9b['namespace']['name']+':'+_0x337a9b['name']['name'];return'';}function attrName(_0x3c13e9,_0x454b93){const _0x21672b=_0x51198b;return _0x454b93['isJSXIdentifier'](_0x3c13e9[_0x21672b(0x15e)])?_0x3c13e9[_0x21672b(0x15e)]['name']:void 0x0;}function attrNames(_0x5e2428,_0x29fbe9){const _0x131a47=_0x51198b,_0x55df7d=[];for(const _0x8a02c5 of _0x5e2428['attributes']){if(_0x29fbe9[_0x131a47(0x162)](_0x8a02c5)){if('MGgrv'!=='MGgrv'){const _0x1a778c=_0x4e3374(_0x3d1798);if(_0x13e807['has'](_0x2db297)||_0xf3081['has'](_0x1a778c)||_0x5b092b['has'](_0x5e47de)||_0x495ffe[_0x131a47(0x16b)](_0x1a778c))return!![];for(const _0x2d77a2 of _0x23c52b){if(_0x403f4d['has'](_0x2d77a2)||_0x11a352[_0x131a47(0x16b)](_0x2d77a2))return!![];}return![];}else{const _0x3f00c4=attrName(_0x8a02c5,_0x29fbe9);if(_0x3f00c4)_0x55df7d[_0x131a47(0x151)](_0x3f00c4);}}}return _0x55df7d;}function hasTestId(_0x307c59){return _0x307c59['includes']('testID');}function _0x59b4(_0x111992,_0x4d4318){_0x111992=_0x111992-0x13b;const _0x307e61=_0x307e();let _0x59b49a=_0x307e61[_0x111992];return _0x59b49a;}function toRelPath(_0x5255b5,_0x31c736){const _0x11c5da=_0x51198b,_0x2386e6=_0x5255b5??'',_0x33c8cc=_0x2386e6?(0x0,import_node_path[_0x11c5da(0x15c)])(_0x2386e6,_0x31c736):_0x31c736;return import_node_path['sep']==='/'?_0x33c8cc:_0x33c8cc[_0x11c5da(0x146)](import_node_path['sep'])[_0x11c5da(0x169)](import_node_path['posix']['sep']);}function defaultEnabled(){const _0x36aa09=_0x51198b,_0x479c92=globalThis[_0x36aa09(0x153)]?.['env'];return _0x479c92?.[_0x36aa09(0x158)]!=='production';}function ceraphTestIdPlugin(_0x2a408c,_0x52fa28={}){const _0xc477e5=_0x51198b,_0x1ad342=_0x2a408c[_0xc477e5(0x13d)],_0x40eeda=_0x52fa28['enabled']??defaultEnabled();return{'name':'ceraph-testid-injector','visitor':{'JSXOpeningElement'(_0x1d7034,_0x36c781){const _0x4a7010=_0xc477e5;if(!_0x40eeda)return;const _0x34de1b=_0x1d7034[_0x4a7010(0x16e)],_0x289f50=_0x34de1b[_0x4a7010(0x145)];if(!_0x289f50)return;const _0x135c94=_0x36c781['file'][_0x4a7010(0x13f)]['filename'];if(!_0x135c94)return;const _0x2ff256=jsxTagName(_0x34de1b['name'],_0x1ad342),_0x4874c1=attrNames(_0x34de1b,_0x1ad342);if(hasTestId(_0x4874c1))return;if(!isTargetableJsx(_0x2ff256,_0x4874c1))return;const _0x435e34=toRelPath(_0x36c781[_0x4a7010(0x144)][_0x4a7010(0x13f)]['root']??null,_0x135c94),_0x304ee6=deriveTestId({'relPath':_0x435e34,'line':_0x289f50['start'][_0x4a7010(0x152)],'col':_0x289f50[_0x4a7010(0x147)][_0x4a7010(0x159)]+0x1,'tag':_0x2ff256});_0x34de1b[_0x4a7010(0x150)][_0x4a7010(0x13e)](_0x1ad342['jsxAttribute'](_0x1ad342['jsxIdentifier'](_0x4a7010(0x143)),_0x1ad342[_0x4a7010(0x172)](_0x304ee6)));}}};}
1
+ 'use strict';const _0xec1b36=_0x1041;(function(_0x425405,_0x3ec134){const _0x464a8b=_0x1041,_0x5458f8=_0x425405();while(!![]){try{const _0x562d0b=-parseInt(_0x464a8b(0x8e))/0x1+-parseInt(_0x464a8b(0x9b))/0x2*(parseInt(_0x464a8b(0x95))/0x3)+-parseInt(_0x464a8b(0x6e))/0x4*(-parseInt(_0x464a8b(0x73))/0x5)+parseInt(_0x464a8b(0x76))/0x6*(parseInt(_0x464a8b(0x8d))/0x7)+parseInt(_0x464a8b(0x9a))/0x8+-parseInt(_0x464a8b(0x70))/0x9+parseInt(_0x464a8b(0x6d))/0xa;if(_0x562d0b===_0x3ec134)break;else _0x5458f8['push'](_0x5458f8['shift']());}catch(_0x1e58f7){_0x5458f8['push'](_0x5458f8['shift']());}}}(_0x59eb,0x91231));var __defProp=Object[_0xec1b36(0x93)],__getOwnPropDesc=Object[_0xec1b36(0xa8)],__getOwnPropNames=Object[_0xec1b36(0x94)],__hasOwnProp=Object[_0xec1b36(0x9d)]['hasOwnProperty'],__export=(_0x1f98a8,_0x17ca8)=>{for(var _0x36860b in _0x17ca8)__defProp(_0x1f98a8,_0x36860b,{'get':_0x17ca8[_0x36860b],'enumerable':!![]});},__copyProps=(_0x4025bb,_0x31008a,_0x125e36,_0x46107a)=>{const _0x19dedf=_0xec1b36;if(_0x31008a&&typeof _0x31008a===_0x19dedf(0xa5)||typeof _0x31008a===_0x19dedf(0x85)){for(let _0x4b80a6 of __getOwnPropNames(_0x31008a))if(!__hasOwnProp['call'](_0x4025bb,_0x4b80a6)&&_0x4b80a6!==_0x125e36)__defProp(_0x4025bb,_0x4b80a6,{'get':()=>_0x31008a[_0x4b80a6],'enumerable':!(_0x46107a=__getOwnPropDesc(_0x31008a,_0x4b80a6))||_0x46107a[_0x19dedf(0x72)]});}return _0x4025bb;},__toCommonJS=_0x4752b9=>__copyProps(__defProp({},_0xec1b36(0x8c),{'value':!![]}),_0x4752b9),babel_plugin_exports={};__export(babel_plugin_exports,{'default':()=>ceraphTestIdPlugin}),module[_0xec1b36(0x69)]=__toCommonJS(babel_plugin_exports);var CERAPH_TESTID_PREFIX='cer_';function normalizeRelPath(_0x2ffda8){const _0x585562=_0xec1b36;return _0x2ffda8[_0x585562(0x9e)](/\\/g,'/')[_0x585562(0x9e)](/^\.\//,'')[_0x585562(0x9e)](/^\/+/,'');}function slug(_0x517740){const _0x18d136=_0xec1b36,_0x3ec1cf=_0x517740['replace'](/\.[jt]sx?$/i,''),_0x457262=_0x3ec1cf[_0x18d136(0x7f)]()['replace'](/[^a-z0-9]+/g,'-')[_0x18d136(0x9e)](/-+/g,'-')['replace'](/^-+|-+$/g,'');return _0x457262[_0x18d136(0x97)]>0x28?_0x457262[_0x18d136(0x7d)](_0x457262['length']-0x28)['replace'](/^-+/,''):_0x457262;}function fnv1a64Hex(_0x565826){const _0x41d865=_0xec1b36;let _0x508499=0xcbf29ce484222325n;const _0x678f5d=0x100000001b3n,_0x452f6f=0xffffffffffffffffn;for(let _0xf1ed5=0x0;_0xf1ed5<_0x565826['length'];_0xf1ed5++){_0x508499^=BigInt(_0x565826[_0x41d865(0x7e)](_0xf1ed5)),_0x508499=_0x508499*_0x678f5d&_0x452f6f;}return _0x508499[_0x41d865(0x7c)](0x10)['padStart'](0x10,'0');}function deriveTestId(_0x588eeb){const _0x50295c=_0xec1b36,_0xd6e2d7=normalizeRelPath(_0x588eeb[_0x50295c(0x7b)]),_0x9ae2a5=_0xd6e2d7+'|'+_0x588eeb['line']+'|'+_0x588eeb[_0x50295c(0x77)]+'|'+(_0x588eeb['tag']??''),_0x27318d=fnv1a64Hex(_0x9ae2a5)[_0x50295c(0x7d)](0x0,0xa);return''+CERAPH_TESTID_PREFIX+slug(_0xd6e2d7)+'_'+_0x588eeb[_0x50295c(0x6a)]+'_'+_0x588eeb['col']+'_'+_0x27318d;}var INTERACTIVE_TAGS=new Set(['Pressable',_0xec1b36(0x71),_0xec1b36(0xa1),'TouchableWithoutFeedback','TouchableNativeFeedback','Button',_0xec1b36(0x8a),_0xec1b36(0x91),_0xec1b36(0x75),'ListItem','Chip']),INPUT_TAGS=new Set(['TextInput',_0xec1b36(0x9c),'Switch','Picker',_0xec1b36(0xa4),'Checkbox','SegmentedControl','SearchBar']),PRESS_PROPS=new Set([_0xec1b36(0x99),'onPressIn','onLongPress','onClick']),INPUT_PROPS=new Set([_0xec1b36(0x86),'onValueChange',_0xec1b36(0xa3)]);function baseTag(_0x5e5198){const _0xbade78=_0xec1b36;return _0x5e5198[_0xbade78(0x6f)]('.')[0x0];}function isTargetableJsx(_0x9e3d6b,_0x2e4190){const _0x2ac226=_0xec1b36,_0x78813c=baseTag(_0x9e3d6b);if(INTERACTIVE_TAGS['has'](_0x9e3d6b)||INTERACTIVE_TAGS['has'](_0x78813c)||INPUT_TAGS['has'](_0x9e3d6b)||INPUT_TAGS['has'](_0x78813c))return!![];for(const _0x8940a2 of _0x2e4190){if(PRESS_PROPS[_0x2ac226(0x82)](_0x8940a2)||INPUT_PROPS[_0x2ac226(0x82)](_0x8940a2))return!![];}return![];}function _0x1041(_0x47cbaf,_0x211131){_0x47cbaf=_0x47cbaf-0x69;const _0x59eb99=_0x59eb();let _0x1041da=_0x59eb99[_0x47cbaf];return _0x1041da;}var import_node_path=require(_0xec1b36(0x9f));function _0x59eb(){const _0x3fd9b9=['loc','onPress','6775472QeQESl','336628FTHzqJ','TextField','prototype','replace','path','types','TouchableHighlight','join','onChange','Slider','object','isJSXIdentifier','stringLiteral','getOwnPropertyDescriptor','node','exports','line','env','start','3539240MdrtRJ','16xnKKvB','split','2388969hBAydX','TouchableOpacity','enumerable','44285rtqkCZ','isJSXAttribute','MenuItem','66YroYWD','col','posix','name','opts','relPath','toString','slice','charCodeAt','toLowerCase','unshift','root','has','file','isJSXNamespacedName','function','onChangeText','sep','includes','push','Link','jsxAttribute','__esModule','89327VaDiQp','11793bcmAuH','process','property','IconButton','jsxIdentifier','defineProperty','getOwnPropertyNames','9TKeopW','testID','length'];_0x59eb=function(){return _0x3fd9b9;};return _0x59eb();}function jsxTagName(_0x4e5473,_0x40c6af){const _0x2c85c0=_0xec1b36;if(_0x40c6af[_0x2c85c0(0xa6)](_0x4e5473))return _0x4e5473[_0x2c85c0(0x79)];if(_0x40c6af['isJSXMemberExpression'](_0x4e5473)){const _0x3779eb=[];let _0x40fb57=_0x4e5473;while(_0x40c6af['isJSXMemberExpression'](_0x40fb57)){_0x3779eb['unshift'](_0x40fb57[_0x2c85c0(0x90)]['name']),_0x40fb57=_0x40fb57[_0x2c85c0(0xa5)];}if(_0x40c6af[_0x2c85c0(0xa6)](_0x40fb57))_0x3779eb[_0x2c85c0(0x80)](_0x40fb57[_0x2c85c0(0x79)]);return _0x3779eb[_0x2c85c0(0xa2)]('.');}if(_0x40c6af[_0x2c85c0(0x84)](_0x4e5473))return _0x4e5473['namespace']['name']+':'+_0x4e5473[_0x2c85c0(0x79)]['name'];return'';}function attrName(_0x2fa218,_0x294b69){const _0x45f20b=_0xec1b36;return _0x294b69[_0x45f20b(0xa6)](_0x2fa218[_0x45f20b(0x79)])?_0x2fa218['name'][_0x45f20b(0x79)]:void 0x0;}function attrNames(_0x436f58,_0x568ee4){const _0x4e65d1=_0xec1b36,_0x403c40=[];for(const _0x7fcc67 of _0x436f58['attributes']){if(_0x568ee4[_0x4e65d1(0x74)](_0x7fcc67)){const _0x28f8cf=attrName(_0x7fcc67,_0x568ee4);if(_0x28f8cf)_0x403c40[_0x4e65d1(0x89)](_0x28f8cf);}}return _0x403c40;}function hasTestId(_0x2e15cb){const _0x3d31d9=_0xec1b36;return _0x2e15cb[_0x3d31d9(0x88)](_0x3d31d9(0x96));}function toRelPath(_0x8375c8,_0x17f6c5){const _0x433177=_0xec1b36,_0x1bfada=_0x8375c8??'',_0x87482e=_0x1bfada?(0x0,import_node_path['relative'])(_0x1bfada,_0x17f6c5):_0x17f6c5;return import_node_path[_0x433177(0x87)]==='/'?_0x87482e:_0x87482e[_0x433177(0x6f)](import_node_path[_0x433177(0x87)])['join'](import_node_path[_0x433177(0x78)]['sep']);}function defaultEnabled(){const _0x3d1e5c=_0xec1b36,_0x224d97=globalThis[_0x3d1e5c(0x8f)]?.[_0x3d1e5c(0x6b)];return _0x224d97?.['NODE_ENV']!=='production';}function ceraphTestIdPlugin(_0x7a0353,_0x16abb9={}){const _0x254feb=_0xec1b36,_0x738510=_0x7a0353[_0x254feb(0xa0)],_0x3cb722=_0x16abb9['enabled']??defaultEnabled();return{'name':'ceraph-testid-injector','visitor':{'JSXOpeningElement'(_0x4dc432,_0x113347){const _0x3cc583=_0x254feb;if(!_0x3cb722)return;const _0x142823=_0x4dc432[_0x3cc583(0xa9)],_0x30b62=_0x142823[_0x3cc583(0x98)];if(!_0x30b62)return;const _0x2e2ed7=_0x113347[_0x3cc583(0x83)][_0x3cc583(0x7a)]['filename'];if(!_0x2e2ed7)return;const _0xbfdd46=jsxTagName(_0x142823[_0x3cc583(0x79)],_0x738510),_0x19987a=attrNames(_0x142823,_0x738510);if(hasTestId(_0x19987a))return;if(!isTargetableJsx(_0xbfdd46,_0x19987a))return;const _0xa75f92=toRelPath(_0x113347[_0x3cc583(0x83)]['opts'][_0x3cc583(0x81)]??null,_0x2e2ed7),_0x49d491=deriveTestId({'relPath':_0xa75f92,'line':_0x30b62['start']['line'],'col':_0x30b62[_0x3cc583(0x6c)]['column']+0x1,'tag':_0xbfdd46});_0x142823['attributes'][_0x3cc583(0x80)](_0x738510[_0x3cc583(0x8b)](_0x738510[_0x3cc583(0x92)](_0x3cc583(0x96)),_0x738510[_0x3cc583(0xa7)](_0x49d491)));}}};}
@@ -1 +1 @@
1
- const _0x57ee3a=_0x2910;(function(_0x5c03fb,_0x5d82f6){const _0x413a5c=_0x2910,_0x4cc2f3=_0x5c03fb();while(!![]){try{const _0x5b6477=parseInt(_0x413a5c(0x172))/0x1+parseInt(_0x413a5c(0x153))/0x2*(parseInt(_0x413a5c(0x166))/0x3)+parseInt(_0x413a5c(0x14e))/0x4*(parseInt(_0x413a5c(0x171))/0x5)+parseInt(_0x413a5c(0x151))/0x6+-parseInt(_0x413a5c(0x160))/0x7*(-parseInt(_0x413a5c(0x16f))/0x8)+-parseInt(_0x413a5c(0x177))/0x9+-parseInt(_0x413a5c(0x155))/0xa;if(_0x5b6477===_0x5d82f6)break;else _0x4cc2f3['push'](_0x4cc2f3['shift']());}catch(_0x2f03a3){_0x4cc2f3['push'](_0x4cc2f3['shift']());}}}(_0x647c,0x68575));var CERAPH_TESTID_PREFIX=_0x57ee3a(0x164);function _0x647c(){const _0x3559d0=['slice','onValueChange','testID','namespace','Pressable','IconButton','line','types','ceraph-testid-injector','file','join','onLongPress','split','isJSXMemberExpression','40KzaPdk','TouchableHighlight','enabled','117954GRTfSg','node','2friuxM','replace','12917560cOfzvX','charCodeAt','dViHO','length','isJSXIdentifier','sep','isJSXAttribute','loc','root','attributes','Picker','161bpKujm','unshift','NODE_ENV','Switch','cer_','has','1331238tuihaR','SegmentedControl','jsxAttribute','TouchableOpacity','onPress','Checkbox','opts','ListItem','stringLiteral','201448BwcQEA','tag','252690jXxbyO','783752kdmMdn','TextField','start','push','toLowerCase','5513067AZPpyt','name','SearchBar'];_0x647c=function(){return _0x3559d0;};return _0x647c();}function normalizeRelPath(_0x59d9fa){const _0x2e432b=_0x57ee3a;return _0x59d9fa['replace'](/\\/g,'/')[_0x2e432b(0x154)](/^\.\//,'')['replace'](/^\/+/,'');}function slug(_0x3c0853){const _0x10c4e8=_0x57ee3a,_0x519460=_0x3c0853[_0x10c4e8(0x154)](/\.[jt]sx?$/i,''),_0xb94032=_0x519460[_0x10c4e8(0x176)]()[_0x10c4e8(0x154)](/[^a-z0-9]+/g,'-')['replace'](/-+/g,'-')['replace'](/^-+|-+$/g,'');return _0xb94032[_0x10c4e8(0x158)]>0x28?_0xb94032[_0x10c4e8(0x140)](_0xb94032[_0x10c4e8(0x158)]-0x28)[_0x10c4e8(0x154)](/^-+/,''):_0xb94032;}function fnv1a64Hex(_0xf7fbdc){const _0x156e6a=_0x57ee3a;let _0x37c152=0xcbf29ce484222325n;const _0x617b28=0x100000001b3n,_0x1cfc97=0xffffffffffffffffn;for(let _0x1337d8=0x0;_0x1337d8<_0xf7fbdc[_0x156e6a(0x158)];_0x1337d8++){_0x37c152^=BigInt(_0xf7fbdc[_0x156e6a(0x156)](_0x1337d8)),_0x37c152=_0x37c152*_0x617b28&_0x1cfc97;}return _0x37c152['toString'](0x10)['padStart'](0x10,'0');}function deriveTestId(_0x3b2ca6){const _0x35cee3=_0x57ee3a,_0x4c7877=normalizeRelPath(_0x3b2ca6['relPath']),_0x3737d6=_0x4c7877+'|'+_0x3b2ca6['line']+'|'+_0x3b2ca6['col']+'|'+(_0x3b2ca6[_0x35cee3(0x170)]??''),_0x2b4678=fnv1a64Hex(_0x3737d6)['slice'](0x0,0xa);return''+CERAPH_TESTID_PREFIX+slug(_0x4c7877)+'_'+_0x3b2ca6[_0x35cee3(0x146)]+'_'+_0x3b2ca6['col']+'_'+_0x2b4678;}var INTERACTIVE_TAGS=new Set([_0x57ee3a(0x144),_0x57ee3a(0x169),_0x57ee3a(0x14f),'TouchableWithoutFeedback','TouchableNativeFeedback','Button','Link',_0x57ee3a(0x145),'MenuItem',_0x57ee3a(0x16d),'Chip']),INPUT_TAGS=new Set(['TextInput',_0x57ee3a(0x173),_0x57ee3a(0x163),_0x57ee3a(0x15f),'Slider',_0x57ee3a(0x16b),_0x57ee3a(0x167),_0x57ee3a(0x13f)]),PRESS_PROPS=new Set([_0x57ee3a(0x16a),'onPressIn',_0x57ee3a(0x14b),'onClick']),INPUT_PROPS=new Set(['onChangeText',_0x57ee3a(0x141),'onChange']);function baseTag(_0x59a8cf){const _0x1c4883=_0x57ee3a;return _0x59a8cf[_0x1c4883(0x14c)]('.')[0x0];}function isTargetableJsx(_0x3a3f6c,_0x4418bb){const _0x512b75=_0x57ee3a,_0x1118c3=baseTag(_0x3a3f6c);if(INTERACTIVE_TAGS['has'](_0x3a3f6c)||INTERACTIVE_TAGS[_0x512b75(0x165)](_0x1118c3)||INPUT_TAGS[_0x512b75(0x165)](_0x3a3f6c)||INPUT_TAGS['has'](_0x1118c3))return!![];for(const _0x419e5d of _0x4418bb){if(PRESS_PROPS[_0x512b75(0x165)](_0x419e5d)||INPUT_PROPS[_0x512b75(0x165)](_0x419e5d))return!![];}return![];}import{posix,relative,sep}from'path';function jsxTagName(_0x31bbb6,_0x25c290){const _0x8f5103=_0x57ee3a;if(_0x25c290[_0x8f5103(0x159)](_0x31bbb6))return _0x31bbb6[_0x8f5103(0x178)];if(_0x25c290[_0x8f5103(0x14d)](_0x31bbb6)){if('NwHYR'!==_0x8f5103(0x157)){const _0x231934=[];let _0x36b2e4=_0x31bbb6;while(_0x25c290[_0x8f5103(0x14d)](_0x36b2e4)){_0x231934[_0x8f5103(0x161)](_0x36b2e4['property'][_0x8f5103(0x178)]),_0x36b2e4=_0x36b2e4['object'];}if(_0x25c290[_0x8f5103(0x159)](_0x36b2e4))_0x231934[_0x8f5103(0x161)](_0x36b2e4[_0x8f5103(0x178)]);return _0x231934[_0x8f5103(0x14a)]('.');}else{if(!_0x138fe9)return;const _0x4a8c33=_0x2376b4['node'],_0x3ecd0a=_0x4a8c33['loc'];if(!_0x3ecd0a)return;const _0x3971ff=_0x2216b9[_0x8f5103(0x149)][_0x8f5103(0x16c)]['filename'];if(!_0x3971ff)return;const _0x401844=_0x4ae0c7(_0x4a8c33[_0x8f5103(0x178)],_0x162b78),_0x368b38=_0x1cef9b(_0x4a8c33,_0x304c9d);if(_0x321b8d(_0x368b38))return;if(!_0x358c17(_0x401844,_0x368b38))return;const _0x262bbf=_0x53f735(_0x1bb857[_0x8f5103(0x149)]['opts'][_0x8f5103(0x15d)]??null,_0x3971ff),_0x469633=_0x2e7bee({'relPath':_0x262bbf,'line':_0x3ecd0a[_0x8f5103(0x174)][_0x8f5103(0x146)],'col':_0x3ecd0a['start']['column']+0x1,'tag':_0x401844});_0x4a8c33['attributes'][_0x8f5103(0x161)](_0x78ead8['jsxAttribute'](_0x18058f['jsxIdentifier'](_0x8f5103(0x142)),_0x31e750[_0x8f5103(0x16e)](_0x469633)));}}if(_0x25c290['isJSXNamespacedName'](_0x31bbb6))return _0x31bbb6[_0x8f5103(0x143)]['name']+':'+_0x31bbb6['name'][_0x8f5103(0x178)];return'';}function attrName(_0x2caa7d,_0x5ee43f){const _0x40bd92=_0x57ee3a;return _0x5ee43f['isJSXIdentifier'](_0x2caa7d['name'])?_0x2caa7d[_0x40bd92(0x178)]['name']:void 0x0;}function attrNames(_0xb30ec,_0x1eafb7){const _0x3e07f2=_0x57ee3a,_0x1f8f61=[];for(const _0x22661b of _0xb30ec['attributes']){if(_0x1eafb7[_0x3e07f2(0x15b)](_0x22661b)){const _0x1e576d=attrName(_0x22661b,_0x1eafb7);if(_0x1e576d)_0x1f8f61[_0x3e07f2(0x175)](_0x1e576d);}}return _0x1f8f61;}function hasTestId(_0x3f8e13){const _0x52b4fb=_0x57ee3a;return _0x3f8e13['includes'](_0x52b4fb(0x142));}function toRelPath(_0xb292c7,_0x4e9d31){const _0x3f509c=_0x57ee3a,_0x5d08f3=_0xb292c7??'',_0x1631e3=_0x5d08f3?relative(_0x5d08f3,_0x4e9d31):_0x4e9d31;return sep==='/'?_0x1631e3:_0x1631e3['split'](sep)[_0x3f509c(0x14a)](posix[_0x3f509c(0x15a)]);}function defaultEnabled(){const _0xa6f07d=_0x57ee3a,_0x5cd527=globalThis['process']?.['env'];return _0x5cd527?.[_0xa6f07d(0x162)]!=='production';}function ceraphTestIdPlugin(_0x5b1280,_0x594cb5={}){const _0x4648fd=_0x57ee3a,_0x2a8381=_0x5b1280[_0x4648fd(0x147)],_0x185ea6=_0x594cb5[_0x4648fd(0x150)]??defaultEnabled();return{'name':_0x4648fd(0x148),'visitor':{'JSXOpeningElement'(_0x2d2ea7,_0x1d6a3a){const _0x1ab614=_0x4648fd;if(!_0x185ea6)return;const _0x282c00=_0x2d2ea7[_0x1ab614(0x152)],_0x385387=_0x282c00[_0x1ab614(0x15c)];if(!_0x385387)return;const _0x23a561=_0x1d6a3a['file'][_0x1ab614(0x16c)]['filename'];if(!_0x23a561)return;const _0x2e9af9=jsxTagName(_0x282c00[_0x1ab614(0x178)],_0x2a8381),_0x519748=attrNames(_0x282c00,_0x2a8381);if(hasTestId(_0x519748))return;if(!isTargetableJsx(_0x2e9af9,_0x519748))return;const _0x41bc15=toRelPath(_0x1d6a3a[_0x1ab614(0x149)]['opts'][_0x1ab614(0x15d)]??null,_0x23a561),_0x5810a6=deriveTestId({'relPath':_0x41bc15,'line':_0x385387[_0x1ab614(0x174)][_0x1ab614(0x146)],'col':_0x385387['start']['column']+0x1,'tag':_0x2e9af9});_0x282c00[_0x1ab614(0x15e)]['unshift'](_0x2a8381[_0x1ab614(0x168)](_0x2a8381['jsxIdentifier'](_0x1ab614(0x142)),_0x2a8381['stringLiteral'](_0x5810a6)));}}};}function _0x2910(_0x49e452,_0x2fa3db){_0x49e452=_0x49e452-0x13f;const _0x647c1a=_0x647c();let _0x29102d=_0x647c1a[_0x49e452];return _0x29102d;}export{ceraphTestIdPlugin as default};
1
+ const _0x2d249e=_0x583a;(function(_0x3e7a4c,_0x45c8fc){const _0x581946=_0x583a,_0x186157=_0x3e7a4c();while(!![]){try{const _0xd34c95=-parseInt(_0x581946(0x1ac))/0x1*(-parseInt(_0x581946(0x1a2))/0x2)+parseInt(_0x581946(0x1a0))/0x3+parseInt(_0x581946(0x193))/0x4*(parseInt(_0x581946(0x1a4))/0x5)+parseInt(_0x581946(0x1a8))/0x6+-parseInt(_0x581946(0x191))/0x7+parseInt(_0x581946(0x18e))/0x8+-parseInt(_0x581946(0x1b9))/0x9;if(_0xd34c95===_0x45c8fc)break;else _0x186157['push'](_0x186157['shift']());}catch(_0x98223e){_0x186157['push'](_0x186157['shift']());}}}(_0x24e1,0x8ff92));var CERAPH_TESTID_PREFIX=_0x2d249e(0x196);function normalizeRelPath(_0x4ed0c5){const _0x215b35=_0x2d249e;return _0x4ed0c5[_0x215b35(0x1af)](/\\/g,'/')['replace'](/^\.\//,'')[_0x215b35(0x1af)](/^\/+/,'');}function slug(_0x4e3612){const _0x2c7a6d=_0x2d249e,_0x20af26=_0x4e3612[_0x2c7a6d(0x1af)](/\.[jt]sx?$/i,''),_0xc44934=_0x20af26[_0x2c7a6d(0x197)]()['replace'](/[^a-z0-9]+/g,'-')[_0x2c7a6d(0x1af)](/-+/g,'-')[_0x2c7a6d(0x1af)](/^-+|-+$/g,'');return _0xc44934[_0x2c7a6d(0x1ab)]>0x28?_0xc44934[_0x2c7a6d(0x1ad)](_0xc44934[_0x2c7a6d(0x1ab)]-0x28)[_0x2c7a6d(0x1af)](/^-+/,''):_0xc44934;}function _0x583a(_0x1dc3f3,_0x166736){_0x1dc3f3=_0x1dc3f3-0x18b;const _0x24e111=_0x24e1();let _0x583a23=_0x24e111[_0x1dc3f3];return _0x583a23;}function fnv1a64Hex(_0x4f6a8a){const _0x59d0e9=_0x2d249e;let _0x3348b6=0xcbf29ce484222325n;const _0x36235d=0x100000001b3n,_0x13603d=0xffffffffffffffffn;for(let _0x272007=0x0;_0x272007<_0x4f6a8a['length'];_0x272007++){_0x3348b6^=BigInt(_0x4f6a8a[_0x59d0e9(0x1b8)](_0x272007)),_0x3348b6=_0x3348b6*_0x36235d&_0x13603d;}return _0x3348b6[_0x59d0e9(0x1b2)](0x10)['padStart'](0x10,'0');}function deriveTestId(_0x279379){const _0x70a5ff=_0x2d249e,_0x3f1a13=normalizeRelPath(_0x279379['relPath']),_0x403999=_0x3f1a13+'|'+_0x279379['line']+'|'+_0x279379[_0x70a5ff(0x1b4)]+'|'+(_0x279379['tag']??''),_0x4a438a=fnv1a64Hex(_0x403999)[_0x70a5ff(0x1ad)](0x0,0xa);return''+CERAPH_TESTID_PREFIX+slug(_0x3f1a13)+'_'+_0x279379['line']+'_'+_0x279379[_0x70a5ff(0x1b4)]+'_'+_0x4a438a;}var INTERACTIVE_TAGS=new Set([_0x2d249e(0x1a6),_0x2d249e(0x1a1),_0x2d249e(0x1ae),_0x2d249e(0x1a7),_0x2d249e(0x1aa),_0x2d249e(0x19e),_0x2d249e(0x18b),'IconButton','MenuItem',_0x2d249e(0x1a9),_0x2d249e(0x19a)]),INPUT_TAGS=new Set(['TextInput','TextField','Switch',_0x2d249e(0x192),_0x2d249e(0x19f),'Checkbox','SegmentedControl','SearchBar']),PRESS_PROPS=new Set(['onPress',_0x2d249e(0x18d),'onLongPress','onClick']),INPUT_PROPS=new Set([_0x2d249e(0x190),'onValueChange','onChange']);function baseTag(_0x1339ff){return _0x1339ff['split']('.')[0x0];}function isTargetableJsx(_0x30483a,_0xf0139b){const _0x5f493a=_0x2d249e,_0x56667f=baseTag(_0x30483a);if(INTERACTIVE_TAGS[_0x5f493a(0x18c)](_0x30483a)||INTERACTIVE_TAGS[_0x5f493a(0x18c)](_0x56667f)||INPUT_TAGS[_0x5f493a(0x18c)](_0x30483a)||INPUT_TAGS['has'](_0x56667f))return!![];for(const _0x6fa91e of _0xf0139b){if(PRESS_PROPS['has'](_0x6fa91e)||INPUT_PROPS['has'](_0x6fa91e))return!![];}return![];}import{posix,relative,sep}from'path';function jsxTagName(_0x4c3b03,_0x5ee374){const _0x40aedc=_0x2d249e;if(_0x5ee374['isJSXIdentifier'](_0x4c3b03))return _0x4c3b03[_0x40aedc(0x1b6)];if(_0x5ee374[_0x40aedc(0x1b0)](_0x4c3b03)){const _0x59b5b8=[];let _0x81adca=_0x4c3b03;while(_0x5ee374['isJSXMemberExpression'](_0x81adca)){_0x59b5b8[_0x40aedc(0x19d)](_0x81adca[_0x40aedc(0x1b5)]['name']),_0x81adca=_0x81adca['object'];}if(_0x5ee374['isJSXIdentifier'](_0x81adca))_0x59b5b8[_0x40aedc(0x19d)](_0x81adca['name']);return _0x59b5b8['join']('.');}if(_0x5ee374[_0x40aedc(0x1b3)](_0x4c3b03))return _0x4c3b03['namespace'][_0x40aedc(0x1b6)]+':'+_0x4c3b03[_0x40aedc(0x1b6)]['name'];return'';}function attrName(_0x135840,_0x32bde1){const _0x34fc0c=_0x2d249e;return _0x32bde1['isJSXIdentifier'](_0x135840[_0x34fc0c(0x1b6)])?_0x135840[_0x34fc0c(0x1b6)]['name']:void 0x0;}function attrNames(_0x369aa1,_0x1e5652){const _0xb0a882=_0x2d249e,_0x3df50d=[];for(const _0x8815e9 of _0x369aa1[_0xb0a882(0x1a3)]){if(_0x1e5652['isJSXAttribute'](_0x8815e9)){const _0x22199c=attrName(_0x8815e9,_0x1e5652);if(_0x22199c)_0x3df50d[_0xb0a882(0x199)](_0x22199c);}}return _0x3df50d;}function hasTestId(_0x59469f){const _0x278bd1=_0x2d249e;return _0x59469f[_0x278bd1(0x19b)]('testID');}function toRelPath(_0x4a7452,_0x454dd4){const _0x3d7583=_0x2d249e,_0x1e6028=_0x4a7452??'',_0x3618f2=_0x1e6028?relative(_0x1e6028,_0x454dd4):_0x454dd4;return sep==='/'?_0x3618f2:_0x3618f2['split'](sep)['join'](posix[_0x3d7583(0x198)]);}function defaultEnabled(){const _0x13bbd3=_0x2d249e,_0x2f3095=globalThis[_0x13bbd3(0x1b7)]?.['env'];return _0x2f3095?.['NODE_ENV']!==_0x13bbd3(0x194);}function _0x24e1(){const _0x35d5a9=['attributes','323755MUtARF','filename','Pressable','TouchableWithoutFeedback','890082AGpXBt','ListItem','TouchableNativeFeedback','length','76kWcxiZ','slice','TouchableHighlight','replace','isJSXMemberExpression','jsxAttribute','toString','isJSXNamespacedName','col','property','name','process','charCodeAt','18770733ZLSByt','Link','has','onPressIn','7456936MKemIm','testID','onChangeText','5298202VwLBGX','Picker','44YMnjiz','production','ceraph-testid-injector','cer_','toLowerCase','sep','push','Chip','includes','file','unshift','Button','Slider','3105708AHxrza','TouchableOpacity','15902dgUlIg'];_0x24e1=function(){return _0x35d5a9;};return _0x24e1();}function ceraphTestIdPlugin(_0x1a2bc0,_0x51caca={}){const _0x2d3e78=_0x2d249e,_0x1cf5d7=_0x1a2bc0['types'],_0x3ac3e6=_0x51caca['enabled']??defaultEnabled();return{'name':_0x2d3e78(0x195),'visitor':{'JSXOpeningElement'(_0x220ab0,_0x3ca4b7){const _0x1cf66d=_0x2d3e78;if(!_0x3ac3e6)return;const _0x59cc16=_0x220ab0['node'],_0x330358=_0x59cc16['loc'];if(!_0x330358)return;const _0x25fe33=_0x3ca4b7['file']['opts'][_0x1cf66d(0x1a5)];if(!_0x25fe33)return;const _0x5d76da=jsxTagName(_0x59cc16[_0x1cf66d(0x1b6)],_0x1cf5d7),_0x1ee730=attrNames(_0x59cc16,_0x1cf5d7);if(hasTestId(_0x1ee730))return;if(!isTargetableJsx(_0x5d76da,_0x1ee730))return;const _0x574146=toRelPath(_0x3ca4b7[_0x1cf66d(0x19c)]['opts']['root']??null,_0x25fe33),_0x5c4acf=deriveTestId({'relPath':_0x574146,'line':_0x330358['start']['line'],'col':_0x330358['start']['column']+0x1,'tag':_0x5d76da});_0x59cc16['attributes']['unshift'](_0x1cf5d7[_0x1cf66d(0x1b1)](_0x1cf5d7['jsxIdentifier'](_0x1cf66d(0x18f)),_0x1cf5d7['stringLiteral'](_0x5c4acf)));}}};}export{ceraphTestIdPlugin as default};