apphx 2.0.0 → 2.1.0
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 +11 -9
- package/dist/cli.js +41 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.js +4 -2
- package/dist/config.js.map +1 -1
- package/dist/integrations.js +177 -91
- package/dist/integrations.js.map +1 -1
- package/dist/notify.js +267 -0
- package/dist/notify.js.map +1 -0
- package/dist/policy.js +3 -16
- package/dist/policy.js.map +1 -1
- package/dist/runner.js +119 -20
- package/dist/runner.js.map +1 -1
- package/dist/schemas.js +57 -2
- package/dist/schemas.js.map +1 -1
- package/dist/vendor/obfuscator/dist/config.js +119 -6
- package/dist/vendor/obfuscator/dist/config.js.map +1 -1
- package/dist/vendor/obfuscator/dist/dfa.js +528 -0
- package/dist/vendor/obfuscator/dist/dfa.js.map +1 -0
- package/dist/vendor/obfuscator/dist/flutter.js +3266 -0
- package/dist/vendor/obfuscator/dist/flutter.js.map +1 -0
- package/dist/vendor/obfuscator/dist/image-utils.js +335 -0
- package/dist/vendor/obfuscator/dist/image-utils.js.map +1 -0
- package/dist/vendor/obfuscator/dist/junk.js +1501 -0
- package/dist/vendor/obfuscator/dist/junk.js.map +1 -0
- package/dist/vendor/obfuscator/dist/lexicon-data.js +972 -0
- package/dist/vendor/obfuscator/dist/lexicon-data.js.map +1 -0
- package/dist/vendor/obfuscator/dist/obfuscate.js +51 -2
- package/dist/vendor/obfuscator/dist/obfuscate.js.map +1 -1
- package/dist/vendor/obfuscator/dist/objc-symbols.js +1819 -0
- package/dist/vendor/obfuscator/dist/objc-symbols.js.map +1 -0
- package/dist/vendor/obfuscator/dist/project-identity.js +852 -0
- package/dist/vendor/obfuscator/dist/project-identity.js.map +1 -0
- package/dist/vendor/obfuscator/dist/string-encrypt.js +330 -0
- package/dist/vendor/obfuscator/dist/string-encrypt.js.map +1 -0
- package/examples/android-java.factory.json +40 -5
- package/examples/expo.factory.json +68 -5
- package/examples/flutter.factory.json +40 -4
- package/examples/luggage.json +1 -0
- package/examples/multi-role-agents.md +129 -0
- package/examples/mygo.factory.json +54 -4
- package/examples/queue-loop-demo.md +146 -0
- package/examples/react-native.factory.json +58 -5
- package/examples/roles.example.json +31 -0
- package/examples/swift.factory.json +60 -5
- package/examples/uni-app.factory.json +58 -5
- package/package.json +1 -1
- package/skills/apphx/SKILL.md +39 -4
- package/skills/apphx/resources/requirement.json +1 -0
- package/skills/apphx-obfuscator/LICENSE +21 -0
- package/skills/apphx-obfuscator/SKILL.md +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objc-symbols.js","names":[],"sources":["../src/objc-symbols.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport type { TransformOutcome, WalkEntry } from './common.js';\nimport { deriveHash, extension, seededRandom, writeIfChanged } from './common.js';\n\n/**\n * Deterministic Objective-C & Swift symbol renamer. Qt GUI, SQLite, networking,\n * licensing and nltk/wordnet lookups are dropped. All randomness flows through\n * the seeded PRNG in common.js, so a given seed always produces the same output.\n */\n\nconst LEXICON: readonly string[] = ['application', 'architecture', 'argument', 'array', 'arrow', 'assembly', 'assign', 'assignment', 'associated', 'associative', 'atomic', 'attribute', 'audio', 'background', 'backward', 'bandwidth', 'base', 'batch', 'benefit', 'best', 'binary', 'binding', 'bitmap', 'bitwise', 'block', 'boolean', 'border', 'breakpoint', 'build', 'bus', 'business', 'buttons', 'byte', 'cache', 'call', 'callback', 'candidate', 'chain', 'character', 'check', 'checked', 'child', 'cleanup', 'client', 'clipboard', 'clone', 'collection', 'combo', 'command', 'communication', 'compatible', 'compile', 'compiler', 'component', 'composition', 'computer', 'concept', 'concrete', 'concurrent', 'configuration', 'connection', 'constraint', 'construct', 'container', 'containment', 'context', 'control', 'console', 'const', 'constant', 'copy', 'cover', 'create', 'creation', 'cursor', 'custom', 'data', 'database', 'datagram', 'dead', 'debug', 'debugger', 'declaration', 'deduction', 'default', 'defer', 'define', 'definition', 'delegate', 'delegation', 'demarshal', 'dereference', 'derived', 'design', 'destroy', 'destructor', 'device', 'dialog', 'directive', 'directory', 'disk', 'dispatch', 'distributed', 'document', 'dot', 'driver', 'dynamic', 'efficiency', 'efficient', 'end', 'entity', 'encapsulation', 'enclosing', 'enum', 'enumerators', 'equal', 'equality', 'equivalence', 'equivalent', 'escape', 'evaluate', 'event', 'exception', 'explicit', 'export', 'expression', 'facility', 'feature', 'field', 'file', 'firmware', 'flag', 'flash', 'flexibility', 'flush', 'font', 'form', 'formal', 'forward', 'forwarding', 'fractal', 'framework', 'full', 'function', 'functionality', 'functor', 'game', 'generate', 'generic', 'getter', 'global', 'group', 'guard', 'gui', 'hand', 'handle', 'handler', 'hard', 'hardware', 'hash', 'header', 'heap', 'hierarchy', 'hook', 'hyperlink', 'icon', 'ide', 'identifier', 'illinois', 'image', 'immediate', 'immutability', 'immutable', 'implement', 'implementation', 'implicit', 'import', 'increment', 'infinite', 'information', 'infrastructure', 'inheritance', 'inline', 'initialization', 'initialize', 'inner', 'instance', 'instantiated', 'instantiation', 'integer', 'integrate', 'interacts', 'interface', 'for', 'interpreter', 'invariants', 'invoke', 'iterate', 'iterative', 'iterator', 'iteration', 'item', 'laser', 'level', 'library', 'lifetime', 'link', 'linker', 'literal', 'load', 'loader', 'local', 'lock', 'loop', 'lvalue', 'macro', 'magic', 'maintain', 'manipulator', 'marshal', 'mechanism', 'member', 'memberwise', 'memory', 'menu', 'message', 'method', 'micro', 'middleware', 'modeling', 'modem', 'module', 'modifier', 'most', 'mouse', 'mutable', 'namespace', 'native', 'nested', 'network', 'object', 'online', 'opaque', 'operand', 'operating', 'operation', 'operator', 'option', 'ordinary', 'overflow', 'overhead', 'overload', 'overloaded', 'override', 'package', 'pair', 'palette', 'pane', 'parallel', 'parameter', 'parent', 'parentheses', 'parse', 'part', 'partial', 'pass', 'pattern', 'performance', 'persistence', 'pixel', 'placement', 'platform', 'pointer', 'poll', 'polymorphism', 'pop', 'port', 'postfix', 'precedence', 'prefix', 'preprocessor', 'prime', 'primitive', 'print', 'printer', 'priority', 'procedure', 'procedural', 'process', 'profile', 'profiler', 'programmer', 'programming', 'progress', 'project', 'property', 'protocol', 'pseudo', 'qualified', 'qualifier', 'quality', 'queue', 'radian', 'radio', 'raise', 'random', 'rank', 'raw', 'record', 'recordset', 'recursive', 'refactoring', 'refer', 'reference', 'register', 'reflection', 'relational', 'represent', 'resolve', 'resolution', 'restriction', 'return', 'robust', 'robustness', 'routine', 'runtime', 'common', 'rvalue', 'save', 'schedule', 'scheduler', 'scheme', 'scroll', 'scope', 'screen', 'search', 'semantics', 'sequential', 'server', 'serial', 'serialization', 'setter', 'signal', 'signature', 'slider', 'slot', 'smart', 'snapshot', 'specialization', 'specification', 'splitter', 'software', 'solution', 'source', 'stack', 'standard', 'statement', 'status', 'stl', 'stream', 'string', 'subroutine', 'subscript', 'subtype', 'support', 'suspend', 'symbol', 'syntax', 'tag', 'target', 'task', 'template', 'temporary', 'text', 'thread', 'throw', 'token', 'transaction', 'traverse', 'trigger', 'type', 'uml', 'unary', 'underflow', 'unchecked', 'unqualified', 'unwinding', 'user', 'variable', 'vector', 'viable', 'video', 'view', 'virtual', 'volatile', 'vowel', 'window', 'word', 'wrapper', 'abstract', 'abstraction', 'access', 'account', 'action', 'activate', 'active', 'actual', 'adapter', 'address', 'adl', 'advanced', 'aggregation', 'algorithm', 'alias', 'align', 'allocate', 'angle', 'annotation', 'api', 'app', 'appearance', 'append', 'archive', 'asynchronous', 'authentication', 'authorization', 'backup', 'bcl', 'bookkeeping', 'bounds', 'boxing', 'brace', 'bracket', 'browser', 'bug', 'through', 'calendar', 'cascading', 'casting', 'catalog', 'checkpoint', 'cil', 'class', 'classification', 'clause', 'code', 'cli', 'cls', 'coff', 'com', 'comment', 'commit', 'composite', 'concurrency', 'constructor', 'cookie', 'corba', 'crosstab', 'crtp', 'cts', 'cube', 'dataset', 'dbms', 'dcom', 'deallocate', 'decay', 'decision', 'declarative', 'dependent', 'deploy', 'dhtml', 'digest', 'digital', 'dime', 'dirty', 'disassembler', 'disco', 'dispid', 'dna', 'dom', 'dtd', 'dump', 'eai', 'ebco', 'edi', 'engine', 'error', 'exclusive', 'evidence', 'exit', 'fat', 'fetch', 'filter', 'finalization', 'firewall', 'finalizer', 'foreign', 'fragmentation', 'gac', 'genericity'];\n\nexport const FILTER_CLASS_NAME_LIST: readonly string[] = ['TabBarController', 'AppDelegate', 'ViewController', 'UINavigationController', 'NavigationController', 'ScriptMessageHandler', 'CollectionViewFlowLayout', 'main', 'CoreBle', 'Photo', 'Manager'];\n\nconst FILTER_LIST_A: readonly string[] = 'enable scale URL supportsTextureSampleCount writeToFile code zoomScale direction videoGravity textLabel anonymous progress failure cancel block time enabled drawRect flashMode newCommandQueueWithMaxCommandBufferCount animateTransition secureTextEntry mediaType fileType device animation value draw commit play pause hide version locale parentController credential affinity listContainerView transitionDuration day context accessoryType detailText identifier object length path array queue beginTime timer configuration notify interval isEqual UUID timeRange createdAt containerSize url parameters player session pickerView row bridge section hidden badgeValue spacing rowHeight systemVersion ScriptMessage toURL quality logout hints uuid apple cache list selectIndex string isSelected fillColor cornerRadius masksToBounds borderColor delay receiver placeholderText timeZone archiveRootObject exponent widthIs heightIs regularExpression sureBtn param isPlaying itemSize inputView filter strokeColor state latitude longitude types attributed suspend inTransaction protocol seekToTime paused loadImage localizable standard webView button label orientation objects resources meta index completion attributedText bounces animationDuration goBack goForward operationType lastPathComponent loopMode animationImages begin LocationManager response config lineSpacing lineHeight customView backgroundView volume MD5 animationRepeatCount exposureMode appID encode lossless sel topItem asset reset manager userInfo top params date components sectionInset actions line borderUIColor selector scheme location request openURL executing finished beginAppearanceTransition origin isRecording totalCount totalCost writer totalSize read beginUpdates String after endIndex reduce schedule refresh convert isFileURL accessibilityLabel combine valueChanged named canEditRowAt insets torchMode cancelled task jpushNotificationCenter layoutMargins evaluateJavaScript dateFromString withString handlers calendar cancelExport selectItem rounded editingStyleForRowAt awakeFromNib alertControllerWithTitle allocWithZone init drawMode sourceType substring dispose unarchiveObjectWithFile preferHDAudio username loopCount union endAppearanceTransition actionWithTitle alert track create resume prepareForReuse dismiss normalColor selectColor repeating fromJSON voiceDetect onSuccess onError reversed cgPath grouped configurations dateFormat beginRefreshing endRefreshing refreshing compare stringFromDate visibleCells video progressBlock rotationAngle isTouchInside CC_DLL isNegative sizing voiceToText beforeSend completed instance pathForResource loadRequest loadHTMLString completionHandler long options color lock unlock format body description streamError query openLog userSig resignFirstResponder valueForHTTPHeaderField FBlock textAlignment memberNumber hangup cityEntity drawableSize texture screen presentsWithTransaction pixelFormat framebufferOnly role isCancelled item toView bundle values placeholderImage targetId tapGesture handler hidesForSinglePage country postNotification right lineHeightMultiple textContainer layoutManager textStorage items phoneNumber thumbnail isAnimating rightView progressView searchBar pageControl segmentedControl resultBlock objectAtIndex highlightedColor md5 synchronize maskView audioDenoise trackTimerStart trackTimerEnd notificationWithName localizedDescription _id playerView highlighted speed md5HashOfData requestAuthorization NobleInfo nobleInfo displayAvailable struct callback newRequest onReceive conversationType userId userID completionBlock openid window navigationController selectRow inDatabase timeInterval autoDeactivateAudioSession decodeForDisplay allowPickingOriginalPhoto muted StatusBarStyle refreshControl editable countLimit region coordinate mediaTypes stringValue thumbImage avatar sort prefersStatusBarHidden dealloc const method createDirectory linkTextAttributes selectable clearsOnInsertion textContainerInset second notification invalidate exit radius opacity readOptions canGoBack canGoForward exportAsynchronouslyWithCompletionHandler animations rect save change makeImage makeNSView makeUIView colorWithRed createDirectoryAtPath panGestureRecognizer gestureRecognizer editing password mode uid weixin_no order_by crc32 completeTransition cost screenX screenY screenViewX screenViewY screenFrame allKeys objc_setAssociatedObject moveItemAtURL constraintForView batteryLevel children push_back objectForKeyedSubscript totalTime close bind connect cocos2d isOn weekday hour minute second objc weixinAuthLoginInContext qqAuthLoginWithDelegate presentDrawable nextDrawable sorted batteryMonitoringEnabled defaultCenter clearCache round fullResolutionImage blue red green now implementationLayer encoding fileName topLeft layer paragraphStyle zero groupId groupID groupid'.split(' ');\n\nconst FILTER_LIST_B: readonly string[] = 'int reason bytes endDate mute one focusMode running sessionPreset timeStamp portraitUri groupName extra labelText weight userName objectName operation topRight displayName nickName gender birthday nickname headerImageView once minSize margin timestamp quitAfterComment commentId starValue resolveStatus sourceUserId transform phoneNumbers clear alpha appendBytes exp phone level_id email write matrix find shake complete notificationWithOperation parse times log sum empty debuggerVacateOpen executeUpdate recordedDuration requestImageWithURL source loadData executeQuery layout managedObjectContext end attributes timeoutInterval cachePolicy attribute baseURL port statusCode arguments lineWidth lineCap timingFunction products whiteBalanceMode kickUsers endUpdates statusBarStyle videoMaximumDuration progressHandler networkAccessAllowed equalTo fail reuseIdentifier priority normalize false true next reverse order loop first frames awake errno std function capacity evutil_socket_geterror leading trailing custom property xml trigger locations continuous emotionOriginalURL connection magic sectionTitles background emotionType inView emotionOriginalURL sampleRate category translation price isValid headerReferenceSize footerReferenceSize ext backgroundImage city subject province searchDisplayController appKey host failureBlock cls pageIndex pageNum horizontal isHidden weak coverImage networkActivityIndicatorVisible launchOptions event info leading price experience leftMargin rightMargin topMargin leadingMargin trailingMargin strong where alias login edges menuRightMargin triangleY triangleRightMargin triangleSize otherMargin beginMargin endMargin for seq subtitle openId sign stack isSuccess buttonWithType scene Double metrics copyWithZone endEditing defaultManager selectItemAtIndexPath encodeWithCoder authorizationStatus product loadingView invite_code resourceLoader exportSessionWithAsset final mask distance subscriber deselectItemAtIndexPath dictionaryRepresentation pagingEnabled team_scale compressQuality netStatus Finish platform faceView tableView Array readData rotated copyItem decelerationRate isLoading accessoryView language baseline superview selectionStyle successBlock hidesBottomBarWhenPushed lineJoin colors endPoint indicatorColor parentVC propertyName socks5Type page accessoryData fromType result scheduleRule comment customizedId menu inputAccessoryView privilege containerView backSpaceButtonImage intrinsicContentSize accessibilityValue mAveragePower mPeakPower badge msg DelayTime categories lineColor isFirstResponder becomeFirstResponder constraint inset downloadImageWithURL isWXAppSupport scaleToSize colorWithHexString Clear resetOffsetFromCenter popActivity bounds responseSerializer acceptableContentTypes requestSerializer strokeEnd lineBreakMode vertical hudType customImage indicatorBackGroundColor acceptableStatusCodes readingOptions automaticallyInflatesResponseImage videoPath cancelAllOperations appendData dictionary model icon user photo controlView rate bezierPath clearMemory arrayWithArray streamStatus limit post AssetsManagerEx undoManager scheduledTimerWithTimeInterval attributeText fillWithData suspended operations serverTrust fromValue toValue inviterAccid cacheKeyForURL socks5Addr nextObject sorted stretch value_type keyPath system area resourcePath decode failed unsigned operator revents events auto listen shutdown map Quaternion override AffineTransform Rect totalUnitCount nibWithNibName topAnchor activityItems process datePickerMode datePicker alignmentMode detailsLabel administrativeArea locality thoroughfare subLocality horizontalEdgeLength enablesReturnKeyAutomatically JSONObjectWithData async isDirectory adSize render uint BytesSize serializer subThoroughfare callStatus groupMemberDataSource videoView dateInterval daterRange transactions fetchRequest audioMix videoComposition reader posterImage propertyType blueColor EVP_CIPHER buffer myself multiplier BN_ULONG switch disconnect cachedResponseForRequest JSONString jsonString FFTSetup Sticker pauseRecord willRotateToInterfaceOrientation GetSize collection localIdentifier socket tree searchTextField camera audioMuted backItem isEditing parent videoOrientation endTime lastInsertRowId names active isOriginal handleOpenURL handleOpenUniversalLink openWXApp toDate isExist _block textValue rectOfInterest metadataObjectTypes hideHUDForView ins nib beautyLevel totleTime invalidateLayout clearDiskOnCompletion willAnimateRotationToInterfaceOrientation navigationBarHidden navigationBar repeats dragging statusBarHidden beautyLevel ruddinessLevel isReceived lineViewWithFrame unreadCount outputImage placeholderColor videoAsset videoResolution decompress m_frictionIndex lineView timeLabel avatarView expirationTimeInGMTFormat onNewMessage conversationData onlineUserOnly inviter clockwise convData hCenter vCenter listView listScrollView pagerView fetchOne applyTransform reachabilityStatusChangeBlock targetSize provider objectId columnNumber presetName isRunning frameCount outputURL URLCache creationDate videoSettings outputSettings attributedTitle atIndex fromView inSection diskCache isVisible pixelWidth pixelHeight md5String columnExists xmlChar prefix noMoreData frameOfPresentedViewInContainerView truncationToken releaseToRefresh refreshSuccess refreshFailure myNetworkLoggerPlugin'.split(' ');\n\nexport const FILTER_LIST: readonly string[] = [...FILTER_LIST_A, ...FILTER_LIST_B];\n\nexport const FILTER_MUST_IGNORE_METHOD_AND_PROPERTY_LIST: readonly string[] = 'select realloc const swap move pop sqrtf Free operator Init Key Vec2 reserve retain release erase append fastSet resize continue uLong uInt Bytef intValue floatValue step detach value Value Point point interactive replace edge intValue uncompress push rewind strcasecmp eof flush main back rotation npos Type resize random arc4random pointer reference Position position timeval mData self epsilon uLongf itemWidth pointSize snapshot acceleration fixed abort args base iconv_close force isAnalog isPressed _Nonnull Nonnull valueOptions interface isKindOfClass BackgroundColor backgroundColor effect infoDictionary foregroundColor extent statusBarFrame error key applyLayoutAttributes record fireDate headers cancelButtonTitle methodSignature returnValue dynamic superclass userContentController frame float and front double const doubleValue free copy from open leftView year month height width padding familyName itemForTag text textColor duration count type success title class name keyboardType borderWidth target tag left offset placeholder status alignment action delegate style lessThanOrEqualTo Group nil model leftBarButtonItem rightBarButtonItem assign extension constant opaque nextResponder statusBarOrientation navigationItem safeAreaInsets option userInterfaceStyle attributedPlaceholder physicalMemory transitionCoordinator translucent colorSpace givenName Height Width anchorPoint id ID switcher disableActions traitCollection nativeScale repeatCount resourceValue range BOOL bool load mix flags className tabBarItem tabBar tabBarController tabBarItemsAttributes __nullable Nullable _Nullable null _Nonnull fontSize fontName font SEL touchesBegan touchesEnded titleColor titleView titleLabel titleSelectedColor titles titleForState titleTextAttributes titlePositionAdjustment titleShadowColor TitleColor titleEdgeInsets titleFont keyword keyWords addSubview layoutSubviews subviews destination keyboardAppearance keyWindow domain observeValueForKeyPath snapshotView blockOperationWithBlock colorSpace contentOffset document firstResponder brightness isTracking cornerRadii statusBarManager playCommand pauseCommand cameraFlashMode cameraDevice prefix suffix href node properties childViewControllers owner windowScene dateComponents done subscription blur newValue cgImage layerClass sampleData container footerView headerView plugins break longValue appearance available restarted enabledConsoleLog sockaddr isExecuting isFinished pathExtension conditions convertPoint convertRect seekToOffset readDataOfLength writeData signal broadcast allHeaderFields exporter runsForEachTargetApplicationUIConfiguration stroke UTF8String stringFromNumber required default enum weekOfYear weekOfMonth weekdayOrdinal itemSpacing with lineFragmentPadding marker if_data rawValue identity keys distribution documentDirectory isEnabled compressionQuality isEmpty ciImage Data deviceMotionUpdateInterval pixelBuffer machine matches contains last actionSheet defaults oldValue searchController bytesPerRow mediaBox superlayer connections devices level ports enumerator lensPosition deviceWhiteBalanceGains activeFormat high autoFocus results mtlDevice commandBuffer targetContentOffset velocity canBecomeFirstResponder minimumValue autoscroll pitch gravity roll isHighlighted baseAddress animate supportedInterfaceOrientations shouldAutorotate preview queryItems isReady isAsynchronous targetFrame oldValue span intersection cachesDirectory undoManager hexString service uuidString scaleX jsonObject errCode absoluteString before appendString windows listener desc dict isReachable diskCapacity securityPolicy firstWeekday component identifierForVendor gestureRecognizerShouldBegin'.split(' ');\n\nexport const FILTER_MUST_IGNORE_METHOD_LIST: readonly string[] = 'viewDidLoad viewWillDisappear viewWillAppear layoutSubviews viewDidLayoutSubviews forwardInvocation scrollViewDidScroll awakeFromNib willMoveToSuperview drawTextInRect drawRect dealloc load layerClass performBatchUpdates md5String columnExists writeData debugDescription'.split(' ');\n\nfunction pyCapitalize(s: string): string {\n if (s.length === 0) return s;\n return s[0]!.toUpperCase() + s.slice(1).toLowerCase();\n}\n\nfunction pyTitle(s: string): string {\n return pyCapitalize(s);\n}\n\nfunction upperFirst(s: string): string {\n if (s.length === 0) return s;\n return s[0]!.toUpperCase() + s.slice(1);\n}\n\nfunction pyIsTitle(s: string): boolean {\n if (s.length === 0) return false;\n if (!(s[0]! >= 'A' && s[0]! <= 'Z')) return false;\n for (let i = 1; i < s.length; i += 1) if (s[i]! >= 'A' && s[i]! <= 'Z') return false;\n return true;\n}\n\nfunction pyIsUpper(s: string): boolean {\n return s.length > 0 && /^[A-Z]+$/.test(s);\n}\n\nfunction pyIsDigit(s: string): boolean {\n return s.length > 0 && /^[0-9]+$/.test(s);\n}\n\nexport type MissAlgorithmType = 0 | 1 | 3;\n\nexport interface ObjcMagicColorOptions {\n enabled?: boolean;\n addColor?: number;\n textColor?: number;\n replaceColor?: readonly [number, number, number];\n alpha?: readonly [number, number];\n}\n\nexport interface ObjcSymbolsOptions {\n algorithmType?: MissAlgorithmType;\n methodPrefix?: string;\n methodSuffix?: string;\n propertyPrefix?: string;\n classPrefix?: string;\n replaceClassPrefix?: { from: string; to: string };\n replaceMethodPrefix?: { from: string; to: string };\n replacePropertyPrefix?: { from: string; to: string };\n magicColor?: ObjcMagicColorOptions;\n fileExtensions?: readonly string[];\n}\n\ninterface SeededRng {\n next(): number;\n randInt(min: number, max: number): number;\n choice<T>(values: readonly T[]): T;\n}\n\nfunction createRng(seed: string): SeededRng {\n const random = seededRandom(deriveHash(seed, 'objc-symbols'));\n return {\n next: random,\n randInt(min, max) { return min + Math.floor(random() * (max - min + 1)); },\n choice(values) { return values[Math.floor(random() * values.length)]!; },\n };\n}\n\ninterface RenameContext {\n options: ObjcSymbolsOptions;\n seed: string;\n rng: SeededRng;\n methodMap: Map<string, string>;\n propertyMap: Map<string, string>;\n classMap: Map<string, string>;\n temporaryPropertyNames: Set<string>;\n allMissClassNames: Set<string>;\n projectNames: string[];\n}\n\nexport function createRenameContext(options: ObjcSymbolsOptions = {}, seed: string): RenameContext {\n return {\n options,\n seed,\n rng: createRng(seed),\n methodMap: new Map(),\n propertyMap: new Map(),\n classMap: new Map(),\n temporaryPropertyNames: new Set(),\n allMissClassNames: new Set(),\n projectNames: [],\n };\n}\n\nconst ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n\nfunction randomStringNoNumber(num: number, ctx: RenameContext): string {\n let salt = '';\n for (let i = 0; i < num; i += 1) salt += ALPHA[ctx.rng.randInt(0, ALPHA.length - 1)]!;\n return salt;\n}\n\nfunction randomWordFromLexicon(ctx: RenameContext): string {\n let word = ctx.rng.choice(LEXICON);\n word = word.replace(/\\n/g, '');\n if (word === 'virtual') word = 'virtualObj';\n word = word.replace(/ /g, '').replace(/\"/g, '');\n if (word.length === 0) word = 'word';\n return word;\n}\n\nexport function isContainChinese(text: string): boolean {\n for (const ch of text) if (ch >= '\\u4e00' && ch <= '\\u9fff') return true;\n return false;\n}\n\nconst PINYIN: Readonly<Record<string, string>> = {\n 一: 'Yi', 二: 'Er', 三: 'San', 四: 'Si', 五: 'Wu', 六: 'Liu', 七: 'Qi', 八: 'Ba', 九: 'Jiu', 十: 'Shi',\n 中: 'Zhong', 文: 'Wen', 上: 'Shang', 下: 'Xia', 大: 'Da', 小: 'Xiao', 左: 'Zuo', 右: 'You', 前: 'Qian', 后: 'Hou',\n 登: 'Deng', 录: 'Lu', 注: 'Zhu', 册: 'Ce', 用: 'Yong', 户: 'Hu', 名: 'Ming', 密: 'Mi', 码: 'Ma', 视: 'Shi',\n 图: 'Tu', 本: 'Ben', 按: 'An', 钮: 'Niu', 页: 'Ye', 面: 'Mian', 数: 'Shu', 据: 'Ju', 字: 'Zi',\n};\n\nexport function chineseToPinyin(chineseWord: string): string {\n let out = '';\n for (const ch of chineseWord) out += PINYIN[ch] ?? ch;\n return out;\n}\n\nexport function isNumberString(text: string): boolean {\n return /[0-9]+/.test(text);\n}\n\nexport function isIgnoreAnalysisLine(line: string): boolean {\n const stripped = line.trim();\n if (line.length === 0 || stripped.length === 0) return true;\n if (stripped.startsWith('#') && !stripped.startsWith('#define')) return true;\n if (stripped.startsWith('//')) return true;\n if (stripped.startsWith('/*')) return true;\n return false;\n}\n\nexport function isXibOrSb(filePath: string): boolean {\n return filePath.endsWith('.xib') || filePath.endsWith('.storyboard');\n}\n\nexport function isHaveSpecialChar(text: string): boolean {\n const special = '~!@#$%^&*()+-*/<>,.[]\\\\/';\n for (const ch of special) if (text.includes(ch)) return true;\n return false;\n}\n\nconst METHOD_STARTS: readonly string[] = ['RSA_', '_ossl_', 'frame', 'mas_', 'mj_', 'sd_', 'yy_', 'bk_', 'allows', 'number', 'cell', 'is', 'data', 'reload', 'min', 'max', 'separator', 'file', 'tableView', 'scrollView', 'application', 'dequeue', 'heightFor', 'cameraView', 'transfor', 'has', 'scrollTo', 'insert', 'animated', 'center', 'bottom', 'indexPath', 'message', 'collectionView', 'newQuadricyc', 'show', 'view', 'shadow', 'selected', 'timeout', 'didReceive', 'tintColor', 'textView', 'textField', 'timeInterval', 'table', 'scroll', 'image', 'shareTo', 'preferred', 'start', 'stop', 'add', 'layoutAttributesFor', 'dispatch_', 'tap', 'keyboard', 'async', 'chatToolBar', 'formatted', 'remove', 'register', 'share', 'send', 'Send', 'delete', 'addRightBarButtonItem', 'onTM', 'onDisconnect', 'stringWith', 'prepareTo', 'downloadTask', 'uploadTask', 'current', 'constraints', 'activityIndicator', 'estimated', 'content', 'size', 'Size', 'nib', 'Unity', 'il2cpp_', 'pthread_', 'inet_', 'onTouch', 'loadTexture', 'bufferevent_', 'evbuffer_', 'event_', 'evutil_', 'evthread_', 'update', 'xml', 'enumerateKeysAnd', 'fetchAlbum', 'delegate', 'CGImage', 'build', 'get', 'set', 'did'];\n\nconst METHOD_ENDS: readonly string[] = ['TintColor', 'ForKey', 'Texture', 'ViewController', 'ViewControllerAnimated', 'SpaceToView', 'EqualToView', 'RatioToView', 'OfUID'];\n\nconst METHOD_EXACT: Readonly<Set<string>> = new Set(['_free', 'free', '_setFree', 'setFree', '_malloc', 'malloc', '_setMalloc', 'setMalloc', '_setDebugMalloc', 'setDebugMalloc', 'set', 'Set']);\n\nconst METHOD_CONTAINS: readonly string[] = [')', '(', '#', ',', '*', ' ', '/'];\n\nexport function isPassMethodName(funName: string, isSwift: boolean): boolean {\n if (funName.length <= 4) return true;\n if (FILTER_LIST.includes(funName)) return true;\n if (FILTER_MUST_IGNORE_METHOD_AND_PROPERTY_LIST.includes(funName)) return true;\n if (funName.startsWith('init')) return true;\n if (funName.startsWith('set') && !isSwift && !funName.startsWith('setting')) return true;\n if (funName.startsWith('get') && !isSwift) return true;\n if (funName.startsWith('color') && funName.length <= 11) return true;\n if (METHOD_CONTAINS.some((c) => funName.includes(c))) return true;\n if (pyIsUpper(funName)) return true;\n if (funName.startsWith('save') && funName.endsWith('Value')) return true;\n if (METHOD_STARTS.some((p) => funName.startsWith(p))) return true;\n if (METHOD_ENDS.some((s) => funName.endsWith(s))) return true;\n if (METHOD_EXACT.has(funName)) return true;\n if (isContainChinese(funName)) return true;\n return false;\n}\n\nexport function isHaveMethodName(line: string): boolean {\n const lineNew = line.replace(/ /g, '');\n const eq = line.indexOf('=');\n const bracket = line.indexOf('(');\n if (bracket > eq && eq !== -1 && bracket !== -1) return false;\n if (!line.includes('(') && !line.includes(')')) return false;\n if (lineNew.startsWith('+(')) return true;\n if (lineNew.startsWith('-(')) return true;\n if (line.startsWith('void ')) return true;\n if (line.startsWith('short ')) return true;\n if (line.startsWith('int ')) return true;\n if (line.startsWith('long ')) return true;\n if (line.startsWith('float ')) return true;\n if (line.startsWith('double ')) return true;\n if (line.startsWith('char ')) return true;\n if (line.startsWith('bool ')) return true;\n if (line.startsWith('BOOL ')) return true;\n return false;\n}\n\nexport function colonIsInBrackets(line: string): boolean {\n let count = 0;\n for (const ch of line) {\n if (ch === '(') count += 1;\n else if (ch === ')') count -= 1;\n if (ch === ':' && count !== 0) return true;\n }\n return false;\n}\n\nexport function methodNameListInLine(line: string): string[] {\n const funList: string[] = [];\n if (line.includes('^') && !line.includes(':')) {\n funList.push(line.split(')').at(-1)!.replace(/;/g, '').replace(/ /g, '').replace(/\\n/g, ''));\n return funList;\n }\n if (line.startsWith('void ')) {\n funList.push(line.slice(line.indexOf('void ') + 5, line.indexOf('(')).replace(/ /g, '').replace(/\\n/g, ''));\n return funList;\n }\n if (line.startsWith('int ')) {\n funList.push(line.slice(line.indexOf('int ') + 4, line.indexOf('(')).replace(/ /g, '').replace(/\\n/g, ''));\n return funList;\n }\n line = line.replace(/\\+/g, '').replace(/-/g, '').replace(/\\+ /g, '').replace(/- /g, '').trim();\n line = line.replace(/ :\\(/g, ':(');\n if (line.includes(':') && !colonIsInBrackets(line)) {\n for (let item of line.split(' ')) {\n if (item.includes(':')) {\n item = item.split(':')[0]!;\n item = item.slice(item.indexOf(')') + 1);\n if (item.length > 0) funList.push(item);\n }\n }\n if (funList.length === 1) {\n funList[0] = `${funList[0]}:`;\n return funList;\n }\n return funList;\n }\n const index = line.indexOf(')') + 1;\n const semi = line.indexOf(';');\n let funName = line.slice(index, semi === -1 ? undefined : semi);\n if (funName.length === 0) {\n line = line.slice(0, line.indexOf('('));\n funName = line.split(/\\s+/).at(-1)!.trim();\n }\n funList.push(funName);\n return funList;\n}\n\nexport function createMissMethodName(funName: string, ctx: RenameContext): string {\n const parts = funName.replace(/[A-Z]/g, (m) => `_${m}`).split('_').filter((item) => item.length > 2);\n const lastFunName = parts.length > 0 ? ctx.rng.choice(parts) : pyTitle(randomWordFromLexicon(ctx));\n let miss = randomWordFromLexicon(ctx) + pyCapitalize(randomWordFromLexicon(ctx)) + pyTitle(lastFunName);\n if (funName.startsWith('_')) miss = `_${miss}`;\n return miss;\n}\n\nexport function getMissMethodNameWithOriginalName(methodName: string, methodPrefix: string | undefined, ctx: RenameContext): string {\n const prefix = methodPrefix ?? '';\n let miss: string;\n if (prefix.length > 0 && prefix.endsWith('#')) miss = `${prefix.split('#')[0]!}${methodName}`;\n else if (ctx.options.algorithmType === 0) miss = createMissMethodName(methodName, ctx);\n else if (ctx.options.algorithmType === 1) miss = randomWordByEnchant(methodName, ctx);\n else if (ctx.options.algorithmType === 3) miss = randomStringNoNumber(methodName.length * 2, ctx);\n else miss = createMissMethodName(methodName, ctx);\n if (prefix.length > 0) miss = prefix.endsWith('_') ? `${prefix}${miss}` : `${prefix}${upperFirst(miss)}`;\n const suffix = ctx.options.methodSuffix ?? '';\n if (suffix.length > 0) miss = `${miss}${suffix}`;\n return miss;\n}\n\nexport function getMissMethodNameTuple(line: string, methodPrefix: string | undefined, ctx: RenameContext): [string, string] | null {\n const lineNew = line.replace(/\\n/g, '').replace(/: \\(/g, ':(').replace(/\\*\\) /g, '*)').trimStart();\n if (!isHaveMethodName(lineNew)) return null;\n const funList = methodNameListInLine(lineNew);\n if (funList.length === 0) return null;\n let funName = funList[0]!.trim();\n if (funName.includes(':')) funName = funName.split(':')[0]!.trim();\n if (isPassMethodName(funName, false)) return null;\n const cached = ctx.methodMap.get(funName);\n if (cached !== undefined) return [funName, cached];\n const repName = getMissMethodNameWithOriginalName(funName, methodPrefix, ctx).replace(/\\s+/g, '');\n ctx.methodMap.set(funName, repName);\n return [funName, repName];\n}\n\nexport function replaceMethodNameInLine(line: string, funName: string, missFunName: string, isXib: boolean): string {\n const markCode2 = '{Z-F-J}';\n const markCode3 = \"$Z-F-J$\";\n if (line.includes(`*${funName} `)) line = line.replaceAll(`*${funName} `, `*${missFunName} `);\n if (line.includes(`\"${funName}\"`)) line = line.replaceAll(`\"${funName}\"`, markCode2);\n if (line.includes(`\"${funName}.h\"`)) line = line.replaceAll(`\"${funName}.h\"`, markCode3);\n\n const c1 = \"$MISSFUNCNAME=1$\";\n const r1 = `${funName}://`;\n if (line.includes(r1)) line = line.replaceAll(r1, c1);\n const c2 = \"$MISSFUNCNAME=2$\";\n const r2 = `${funName}/`;\n if (line.includes(r2)) line = line.replaceAll(r2, c2);\n const c3 = \"$MISSFUNCNAME=3$\";\n const r3 = `/${funName}`;\n if (line.includes(r3)) line = line.replaceAll(r3, c3);\n const c4 = \"$MISSFUNCNAME=4$\";\n const r4 = `<${funName}>`;\n if (line.includes(r4) && isXib) line = line.replaceAll(r4, c4);\n\n let result = line.replace(/\\b\\w+\\b/g, (token) => (token === funName ? missFunName : token));\n if (line.includes(`_${funName}`)) result = result.replace(/\\b\\w+\\b/g, (token) => (token === `_${funName}` ? `_${missFunName}` : token));\n if (result.includes(markCode2)) result = result.replaceAll(markCode2, `\"${funName}\"`);\n if (result.includes(markCode3)) result = result.replaceAll(markCode3, `\"${funName}.h\"`);\n if (result.includes(c1)) result = result.replaceAll(c1, r1);\n if (result.includes(c2)) result = result.replaceAll(c2, r2);\n if (result.includes(c3)) result = result.replaceAll(c3, r3);\n if (result.includes(c4)) result = result.replaceAll(c4, r4);\n return result;\n}\n\nconst KEY_WORD_PASS: Readonly<Set<string>> = new Set(['manager', 'model', 'view', 'cell', 'controller', 'root', 'event', 'header', 'is', 'set', 'base', 'with', 'index', 'table', 'api', 'string', 'data', 'error', 'block', 'button', 'time', 'array', 'dictionary', 'key', 'color', 'mutable', 'date', 'picker', 'image', 'integer', 'int', 'collection', 'title', 'label']);\n\nconst ARABIC_NUMERALS_MAP: Readonly<Record<string, string>> = { '1': 'one', '2': 'two', '3': 'three', '4': 'four', '5': 'five', '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine', '0': 'zero' };\n\nfunction judgeTitleIsCapitalize(word: string, list: string[]): void {\n if (list.length === 0) return;\n const first = list[0]!;\n list[0] = /[a-z]/.test(word[0] ?? '') ? first.toLowerCase() : pyCapitalize(first);\n}\n\nexport function randomWordByEnchant(word: string, ctx: RenameContext): string {\n let w = word.includes('-') ? word.replace(/-/g, '_') : word;\n let newWord = '';\n for (let i = 0; i < w.length; i += 1) {\n const ch = w[i]!;\n if (ch >= '0' && ch <= '9') {\n const name = ARABIC_NUMERALS_MAP[ch]!;\n newWord += i === 0 ? name : pyCapitalize(name);\n } else newWord += ch;\n }\n if (isContainChinese(w)) for (const item of w.match(/[一-鿿]+/g) ?? []) newWord = newWord.replace(item, chineseToPinyin(item));\n w = newWord;\n let wordList: string[];\n if (w.includes('_')) {\n const parts = w.split('_');\n const out: string[] = [];\n parts.forEach((part, idx) => {\n out.push(...(part.match(/[a-zA-Z][^A-Z]*/g) ?? []));\n if (idx !== parts.length - 1) out.push('_');\n });\n wordList = out;\n } else wordList = w.match(/[a-zA-Z][^A-Z]*/g) ?? [];\n if (wordList.length === 0) return w;\n const newWordList: string[] = [];\n for (const item of wordList) {\n if (item === '_') { newWordList.push(item); continue; }\n if (KEY_WORD_PASS.has(item.toLowerCase()) || /[0-9]/.test(item)) { newWordList.push(item); continue; }\n const randomWord = randomWordFromLexicon(ctx);\n newWordList.push(pyIsTitle(item) ? pyCapitalize(randomWord) : randomWord.toLowerCase());\n }\n judgeTitleIsCapitalize(w, newWordList);\n let returnWord = newWordList.join('');\n if (w === returnWord) {\n const idx = ctx.rng.randInt(0, newWordList.length - 1);\n if (idx === 0) {\n newWordList[0] = pyTitle(newWordList[0]!);\n newWordList.splice(idx, 0, randomWordFromLexicon(ctx));\n } else newWordList.splice(idx, 0, pyTitle(randomWordFromLexicon(ctx)));\n judgeTitleIsCapitalize(w, newWordList);\n returnWord = newWordList.join('');\n }\n if (returnWord.length <= 3) returnWord += pyTitle(randomWordFromLexicon(ctx));\n if (w.endsWith('_')) return `${returnWord}_`;\n return returnWord;\n}\n\nconst PROPERTY_STARTS: readonly string[] = ['CG', 'preferred', 'UI', 'NS', 'AV', 'CF', 'HTTP', 'mas_', 'mj_', 'sd_', 'yy_', 'allows', 'start', 'stop', 'add', 'layoutAttributesFor', 'number', 'cell', 'data', 'init', 'weak', 'reload', 'min', 'max', 'separator', 'file', 'tableView', 'scrollView', 'set', 'get', 'application', 'dequeue', 'heightFor', 'cameraView', 'transfor', 'has', 'scrollTo', 'insert', 'animated', 'center', 'bottom', 'indexPath', 'message', 'collectionView', 'show', 'view', 'shadow', 'selected', 'timeout', 'didReceive', 'tintColor', 'timeInterval', 'textView', 'textField', 'table', 'scroll', 'image', 'kCGImage', 'update', '_t', '_value', 'tv_', 'GL', 'offset', 'bool', 'asset', 'ritl_', 'AFNetworking', 'SDWebImage', 'task', 'build', 'get', 'set', 'did', 'WX', 'GIF_', 'Audio', 'DDLog', 'shareTo', 'dispatch_', 'tap', 'keyboard', 'async', 'chatToolBar', 'formatted', 'remove', 'register', 'share', 'send', 'delete', 'addRightBarButtonItem', 'onTM', 'onDisconnect', 'stringWith', 'prepareTo', 'downloadTask', 'uploadTask', 'current', 'constraints', 'activityIndicator', 'estimated', 'content', 'size', 'Size', 'nib', 'markedText', 'lua_get'];\n\nconst PROPERTY_ENDS: readonly string[] = ['TintColor', 'ForKey', '_func', 'ViewController', 'ViewControllerAnimated', 'SpaceToView', 'EqualToView', 'RatioToView', 'OfUID', 'StatusBarStyle', 'StatusBarHidden'];\n\nconst PROPERTY_EXACT: Readonly<Set<string>> = new Set(['release', 'return', 'ignored', '_nullable', 'int', 'str', 'the', 'cmd', 'void', 'val', 'field', 'token', 'token_', '_token', 'SEL', 'sel']);\n\nconst PROPERTY_CONTAINS: readonly string[] = ['Delegate', 'delegate', ' ', ':', ']', '(', ')'];\n\nexport function isPassPropertyName(propertyName: string, propertyEndsWithNum = false): boolean {\n if (propertyName.length === 0 || propertyName.length <= 3) return true;\n if (FILTER_LIST.includes(propertyName)) return true;\n if (FILTER_MUST_IGNORE_METHOD_AND_PROPERTY_LIST.includes(propertyName)) return true;\n if (isNumberString(propertyName) && propertyEndsWithNum) return true;\n if (PROPERTY_EXACT.has(propertyName)) return true;\n if (propertyName.startsWith('AL') && pyIsTitle(propertyName[0]!) && pyIsTitle(propertyName[1]!)) return true;\n if (propertyName.startsWith('save') && propertyName.endsWith('Value')) return true;\n if (propertyName.startsWith('bt') && !pyIsTitle(propertyName[2] ?? '')) return true;\n if (propertyName.startsWith('ai_') && !pyIsTitle(propertyName[3] ?? '')) return true;\n if (pyIsUpper(propertyName)) return true;\n if (pyIsDigit(propertyName)) return true;\n if (PROPERTY_STARTS.some((p) => propertyName.startsWith(p))) return true;\n if (PROPERTY_ENDS.some((s) => propertyName.endsWith(s))) return true;\n if (PROPERTY_CONTAINS.some((c) => propertyName.includes(c))) return true;\n return false;\n}\n\nconst STRING_PUNCTUATION = new Set(\"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^`{|}~\");\n\nexport function getSetProName(propertyName: string): string {\n return `set${propertyName.slice(0, 1).toUpperCase()}${propertyName.slice(1)}`;\n}\n\nexport function createMissPropertyNameWithOriginalPropertyName(propertyName: string, ctx: RenameContext, isAddWord = false): string {\n const parts = propertyName.replace(/[A-Z]/g, (m) => `_${m}`).split('_').filter((item) => item.length > 2);\n const lastPropertyName = parts.length > 0 ? parts.at(-1)! : pyTitle(randomWordFromLexicon(ctx));\n let miss: string;\n if (parts.length > 0) miss = randomWordFromLexicon(ctx) + pyTitle(lastPropertyName);\n else if (propertyName.length <= 5) miss = randomWordFromLexicon(ctx) + pyCapitalize(propertyName);\n else miss = randomWordFromLexicon(ctx) + pyCapitalize(propertyName.slice(0, Math.floor(propertyName.length / 2)));\n if (isAddWord) miss = randomWordFromLexicon(ctx) + miss;\n return miss;\n}\n\nexport function getMissPropertyNameAndAddTemporaryList(propertyName: string, ctx: RenameContext): string | null {\n let miss: string;\n if (ctx.options.algorithmType === 3) miss = randomStringNoNumber(propertyName.length * 2, ctx);\n else {\n miss = createMissPropertyNameWithOriginalPropertyName(propertyName, ctx);\n if (miss === 'Array') miss = randomWordFromLexicon(ctx) + miss;\n }\n if (propertyName.startsWith('_')) miss = `_${miss}`;\n if (ctx.temporaryPropertyNames.has(miss)) return null;\n ctx.temporaryPropertyNames.add(miss);\n return miss;\n}\n\nexport function getOcMissPropertyNameTub(propertyName: string, propertyPrefix: string | undefined, ctx: RenameContext): string {\n const prefix = propertyPrefix ?? '';\n if (prefix.length > 0 && prefix.endsWith('#')) return `${prefix.split('#')[0]!}${propertyName}`;\n const miss = ctx.options.algorithmType === 1\n ? randomWordByEnchant(propertyName, ctx)\n : getMissPropertyNameAndAddTemporaryList(propertyName, ctx) ?? randomWordByEnchant(propertyName, ctx);\n if (prefix.length > 0) return prefix.endsWith('_') ? `${prefix}${miss}` : `${prefix}${upperFirst(miss)}`;\n return miss;\n}\n\nexport function getSwiftMissPropertyNameTub(propertyName: string, propertyPrefix: string | undefined, ctx: RenameContext): string {\n const prefix = propertyPrefix ?? '';\n let miss = randomWordFromLexicon(ctx);\n if (prefix.length > 0 && prefix.endsWith('#')) miss = `${prefix.split('#')[0]!}${propertyName}`;\n else if (prefix.length > 0) {\n const base = ctx.options.algorithmType === 1\n ? randomWordByEnchant(propertyName, ctx)\n : getMissPropertyNameAndAddTemporaryList(propertyName, ctx) ?? randomWordByEnchant(propertyName, ctx);\n miss = prefix.endsWith('_') ? `${prefix}${base}` : `${prefix}${upperFirst(base)}`;\n } else {\n miss = ctx.options.algorithmType === 1\n ? randomWordByEnchant(propertyName, ctx)\n : getMissPropertyNameAndAddTemporaryList(propertyName, ctx) ?? randomWordByEnchant(propertyName, ctx);\n }\n if (propertyName.startsWith('_')) miss = `_${miss}`;\n return miss;\n}\n\nfunction resolvePropertyMissName(propertyName: string, propertyPrefix: string | undefined, ctx: RenameContext, isSwift: boolean): string | null {\n const cached = ctx.propertyMap.get(propertyName);\n if (cached !== undefined) return cached;\n let miss = isSwift ? getSwiftMissPropertyNameTub(propertyName, propertyPrefix, ctx) : getOcMissPropertyNameTub(propertyName, propertyPrefix, ctx);\n if (new Set(ctx.propertyMap.values()).has(miss)) miss += pyTitle(randomWordFromLexicon(ctx));\n if (FILTER_LIST.includes(miss)) miss += pyTitle(randomWordFromLexicon(ctx));\n if (FILTER_MUST_IGNORE_METHOD_AND_PROPERTY_LIST.includes(propertyName)) miss += pyTitle(randomWordFromLexicon(ctx));\n ctx.propertyMap.set(propertyName, miss);\n return miss;\n}\n\nexport function ocPropertyNameTup(line: string, propertyPrefix: string | undefined, ctx: RenameContext): [string, string] | null {\n if (isIgnoreAnalysisLine(line)) return null;\n let work = line;\n if (work.includes('*')) work = work.replace(/\\*/g, ' * ');\n if (work.includes('\\t')) work = work.replace(/\\t/g, ' ');\n if (work.includes('\\n')) work = work.replace(/\\n/g, ' ');\n let propertyName: string | null = null;\n if (work.includes('(^')) {\n const compact = work.split(/\\s+/).join('');\n propertyName = compact.slice(compact.indexOf('(^') + 2, compact.indexOf(')('));\n } else {\n let lineNew = work.split(';')[0]!;\n lineNew = lineNew.replace(/<.*?>/g, ' ').replace(/@property /g, '');\n const lineListNew = lineNew.split(' ').reverse().filter((x) => x.length > 0);\n const starIndex = lineListNew.indexOf('*');\n if (starIndex !== -1) propertyName = lineListNew[starIndex - 1] ?? null;\n else {\n for (const item of lineListNew) {\n if (!pyIsUpper(item) && ![...item].some((ch) => STRING_PUNCTUATION.has(ch))) { propertyName = item; break; }\n }\n }\n }\n if (propertyName == null) return null;\n propertyName = propertyName.split(' ').join('');\n if (propertyName.startsWith('*')) propertyName = propertyName.slice(1);\n if (propertyName.startsWith('_')) propertyName = propertyName.slice(1);\n if (propertyName.endsWith(';') || propertyName.endsWith(',')) propertyName = propertyName.slice(0, -1);\n if (isPassPropertyName(propertyName)) return null;\n const miss = resolvePropertyMissName(propertyName, propertyPrefix, ctx, false);\n return miss === null ? null : [propertyName, miss];\n}\n\nexport function ocConstantNameTup(line: string, propertyPrefix: string | undefined, ctx: RenameContext): [string, string] | null {\n if (isIgnoreAnalysisLine(line)) return null;\n const work = line.replace(/\\*/g, ' ').replace(/\\n/g, '');\n let propertyName: string | null = null;\n for (const item of work.split(' ')) if (item.includes(';')) { propertyName = item.split(';')[0]!; break; }\n if (propertyName == null) return null;\n propertyName = propertyName.split(' ').join('');\n if (propertyName.startsWith('*')) propertyName = propertyName.slice(1);\n if (propertyName.startsWith('_')) propertyName = propertyName.slice(1);\n if (propertyName.endsWith(';') || propertyName.endsWith(',')) propertyName = propertyName.slice(0, -1);\n if (isPassPropertyName(propertyName)) return null;\n const miss = resolvePropertyMissName(propertyName, propertyPrefix, ctx, false);\n return miss === null ? null : [propertyName, miss];\n}\n\nexport function swiftCppPropertyNameTup(line: string, propertyPrefix: string | undefined, _isCCFile: boolean, ctx: RenameContext): [string, string] | null {\n if (isIgnoreAnalysisLine(line)) return null;\n let lineNew = line.replace(/\\[.*?\\]/g, ' ');\n if (lineNew.includes('//')) lineNew = lineNew.slice(0, lineNew.indexOf('//'));\n lineNew = lineNew.replace(/\\/.*?\\*\\//g, '');\n lineNew = lineNew.replace(/;/g, ' ').replace(/\\t/g, ' ').replace(/\\n/g, ' ').trim();\n if (lineNew.includes('::')) return null;\n if (lineNew.length === 0) return null;\n if (lineNew.startsWith('@NSManaged ')) return null;\n let propertyName: string | null = null;\n if (lineNew.includes('var ') && lineNew.includes(':') && !lineNew.includes('=')) propertyName = lineNew.slice(lineNew.indexOf('var ') + 4, lineNew.indexOf(':'));\n else if (lineNew.includes('var ') && lineNew.includes('=')) propertyName = lineNew.slice(lineNew.indexOf('var ') + 4, lineNew.indexOf('='));\n else if (lineNew.includes('let ') && lineNew.includes(':') && !lineNew.includes('=')) propertyName = lineNew.slice(lineNew.indexOf('let ') + 4, lineNew.indexOf(':'));\n else if (lineNew.includes('let ') && lineNew.includes('=')) propertyName = lineNew.slice(lineNew.indexOf('let ') + 4, lineNew.indexOf('='));\n if (propertyName == null) {\n const lineNoWrap = line.trim();\n if (line.includes(' *') && line.includes('(') && line.includes(')')) propertyName = line.slice(line.indexOf('*') + 1, line.indexOf('(')).split(' ')[0] ?? null;\n else if (line.includes(' *') && (lineNoWrap.endsWith(';') || lineNoWrap.endsWith(','))) {\n for (const item of lineNew.split(' ')) if (item.includes('*')) { propertyName = item.replace(/\\*/g, ''); break; }\n } else {\n const basic = ['short', 'int', 'long', 'float', 'double', 'char', 'bool', 'int64_t', 'const', 'BOOL'];\n const lineListNew = lineNew.split(' ');\n const intersection = basic.filter((v) => lineListNew.includes(v));\n const eqIndex = lineListNew.includes('=') ? lineListNew.indexOf('=') : -1;\n if (eqIndex !== -1) propertyName = lineListNew[eqIndex - 1] ?? null;\n else if (intersection.length === 1) {\n const start = lineListNew.indexOf(intersection[0]!) + 1;\n for (let i = start; i < lineListNew.length; i += 1) {\n propertyName = lineListNew[i]!;\n if (propertyName === 'unichar') propertyName = '';\n if (propertyName.length > 0) break;\n }\n }\n }\n }\n if (propertyName == null) return null;\n propertyName = propertyName.trim();\n propertyName = propertyName.split(' ').join('');\n if (propertyName.includes(':')) propertyName = propertyName.split(':')[0]!;\n if (propertyName.startsWith('*')) propertyName = propertyName.slice(1);\n if (propertyName.startsWith('_')) propertyName = propertyName.slice(1);\n if (propertyName.endsWith(';') || propertyName.endsWith(',')) propertyName = propertyName.slice(0, -1);\n if (isPassPropertyName(propertyName)) return null;\n if ([...propertyName].some((ch) => STRING_PUNCTUATION.has(ch))) return null;\n const miss = resolvePropertyMissName(propertyName, propertyPrefix, ctx, true);\n return miss === null ? null : [propertyName, miss];\n}\n\nfunction maskQuotedStrings(line: string): { line: string; restore: (s: string) => string } {\n const store: string[] = [];\n let idx = 0;\n line = line.replace(/\"([^\"]*)\"/g, (_full, content: string) => {\n const token = `\\u0000Q${idx++}\\u0000`;\n store.push(content);\n return `\"${token}\"`;\n });\n return {\n line,\n restore(s) { return s.replace(/\"\\u0000Q(\\d+)\\u0000\"/g, (_f, n: string) => `\"${store[Number(n)]}\"`); },\n };\n}\n\nexport function replacePropertyNameInLine(line: string, propertyName: string, missPropertyName: string, isSwift: boolean, isXib: boolean, isWithinQuotationMarks: boolean): string {\n if (isIgnoreAnalysisLine(line)) return line;\n const masked = maskQuotedStrings(line);\n line = masked.line;\n if (isSwift && line.includes(`(${propertyName})`)) line = line.replaceAll(`(${propertyName})`, `(${missPropertyName})`);\n const setProp = `set${propertyName.slice(0, 1).toUpperCase()}${propertyName.slice(1)}`;\n const missSetProp = `set${missPropertyName.slice(0, 1).toUpperCase()}${missPropertyName.slice(1)}`;\n if (line.includes(setProp)) line = line.replaceAll(setProp, missSetProp);\n line = line.replace(/\\b\\w+\\b/g, (token) => {\n if (token === propertyName) return missPropertyName;\n if (token === `_${propertyName}`) return `_${missPropertyName}`;\n if (token === `${propertyName}Set`) return `${missPropertyName}Set`;\n return token;\n });\n return masked.restore(line);\n}\n\nconst OBJECT_NAME_PASS_LIST: readonly string[] = ['Config', 'text', 'lock', 'debug', 'Base', 'Version', 'main', 'Codable', 'version', 'thread', 'cocos2d', 'system', 'titleView', 'RootViewController', 'TabBarController', 'Decodable', 'Request', 'WebCache', 'YYAdd'];\n\nexport function isPassObjectName(objectName: string, ctx: RenameContext): boolean {\n if (FILTER_CLASS_NAME_LIST.includes(objectName)) return true;\n if (objectName.includes('AppDelegate')) return true;\n if (objectName.length <= 4) return true;\n if (objectName.startsWith('MEIQIA_')) return true;\n if (objectName.startsWith('UMCSDK')) return true;\n if (objectName.startsWith('OSS')) return true;\n if (objectName.startsWith('GTT')) return true;\n if (objectName.startsWith('_')) return true;\n if (objectName.startsWith('x86')) return true;\n if (objectName.startsWith('x64')) return true;\n if (objectName.startsWith('win32_')) return true;\n if (objectName.startsWith('UI')) return true;\n if (objectName.startsWith('NS')) return true;\n if (objectName.startsWith('Agora')) return true;\n if (objectName.startsWith('MJRefresh')) return true;\n if (objectName.includes('-')) return true;\n if (OBJECT_NAME_PASS_LIST.includes(objectName)) return true;\n if (ctx.projectNames.includes(objectName)) return true;\n if (ctx.classMap.has(objectName)) return true;\n if (isContainChinese(objectName)) return true;\n return false;\n}\n\nexport function getMissObjName(oldObjName: string, ctx: RenameContext): string {\n if (oldObjName.includes('+')) oldObjName = oldObjName.split('+').at(-1)!;\n let parts = oldObjName.replace(/[A-Z]/g, (m) => `_${m}`).split('_').filter((item) => item.length > 2);\n if (parts.length > 2) parts = parts.slice(-2);\n if (parts.length <= 2) parts.unshift(pyTitle(randomWordFromLexicon(ctx)));\n parts.unshift(pyTitle(randomWordFromLexicon(ctx)));\n return parts.join('');\n}\n\nexport function getMissClassName(className: string, classPrefix: string | undefined, ctx: RenameContext): string {\n if (className.length === 0) return className;\n const prefix = classPrefix ?? '';\n let miss: string;\n if (prefix.length > 0 && prefix.endsWith('#')) miss = `${prefix.split('#')[0]!}${className.includes('+') ? className.split('+').at(-1)! : className}`;\n else if (ctx.options.algorithmType === 0) miss = getMissObjName(className, ctx).replace(/new/g, 'OBF');\n else if (ctx.options.algorithmType === 1) miss = randomWordByEnchant(className, ctx);\n else if (ctx.options.algorithmType === 3) miss = randomStringNoNumber(className.length, ctx);\n else miss = `${prefix}${getMissObjName(className, ctx).replace(/new/g, 'OBF')}`;\n if (miss.length > 0) miss = /[a-z]/.test(className[0]!) ? miss[0]!.toLowerCase() + miss.slice(1) : upperFirst(miss);\n if (prefix.length > 0 && prefix.endsWith('_')) miss = `${prefix}${miss}`;\n else if (prefix.length > 0 && !prefix.endsWith('#')) miss = `${prefix}${upperFirst(miss)}`;\n if (ctx.allMissClassNames.has(miss)) return `${miss}${pyTitle(randomWordFromLexicon(ctx))}`;\n ctx.allMissClassNames.add(miss);\n return miss;\n}\n\nexport function replaceObjNameByReInLine(line: string, objectName: string, missObjectName: string): string {\n let result = line.replace(/\\b\\w+\\b/g, (token) => (token === objectName ? missObjectName : token));\n const sharedName = `shared${objectName}`;\n if (result.includes(sharedName)) result = result.replace(/\\b\\w+\\b/g, (token) => (token === sharedName ? `shared${missObjectName}` : token));\n if (result.includes(`\"${objectName}.`)) result = result.replaceAll(`\"${objectName}.`, `\"${missObjectName}.`);\n return result;\n}\n\nfunction collectMethodPrefixTuple(line: string, oldPrefix: string, newPrefix: string, ctx: RenameContext): [string, string] | null {\n const lineNew = line.replace(/\\n/g, '').replace(/: \\(/g, ':(').replace(/\\*\\) /g, '*)').trimStart();\n if (!isHaveMethodName(lineNew)) return null;\n const funList = methodNameListInLine(lineNew);\n if (funList.length === 0) return null;\n let methodName = funList[0]!.trim();\n if (methodName.includes(':')) methodName = methodName.split(':')[0]!.trim();\n if (!methodName.startsWith(oldPrefix)) return null;\n if (isPassMethodName(methodName, false) || methodName.startsWith('newQuadricyc')) return null;\n const replace = `${newPrefix}${methodName.slice(oldPrefix.length)}`;\n ctx.methodMap.set(methodName, replace);\n return [methodName, replace];\n}\n\nexport function propertyNameReplaceTuple(line: string, oldPrefix: string, newPrefix: string): [string, string] | null {\n const trimmed = line.replace(/\\n/g, '').trim();\n const withoutSemi = trimmed.slice(0, trimmed.indexOf(';') === -1 ? undefined : trimmed.indexOf(';'));\n const work = withoutSemi.replace(/\\* /g, '*');\n let propertyName: string | null = null;\n const compact = work.split(/\\s+/).join('');\n if (compact.includes('(^')) propertyName = compact.slice(compact.indexOf('(^') + 2, compact.indexOf(')('));\n else {\n const tail = work.split(')').at(-1)!.trim();\n let list: string[];\n if (tail.includes(' ')) list = tail.split(' ');\n else if (!tail.includes(' ') && work.includes('*')) list = tail.split('*');\n else list = [];\n if (list.length < 2) return null;\n const starItem = list.find((item) => item.includes('*'));\n propertyName = starItem == null ? list[1]!.replace(/\\*/g, '') : starItem.slice(starItem.indexOf('*') + 1);\n }\n if (propertyName.includes('>')) propertyName = propertyName.slice(propertyName.indexOf('>') + 1);\n propertyName = propertyName.replace(/\\*/g, '');\n if (!propertyName.startsWith(oldPrefix)) return null;\n if (isNumberString(propertyName)) return null;\n if (isPassPropertyName(propertyName)) return null;\n if ([...propertyName].some((ch) => STRING_PUNCTUATION.has(ch))) return null;\n return [propertyName, `${newPrefix}${propertyName.slice(oldPrefix.length)}`];\n}\n\nfunction replaceClassPrefixInLine(line: string, objectName: string, replaceName: string): string {\n if ((line.includes('initWithRootViewController') || line.includes('popToRootViewControllerAnimated')) && objectName === 'RootViewController') return line;\n if (line.includes('navigationItem.titleView') && objectName === 'titleView') return line;\n if (line.includes('UITabBarController') && objectName === 'TabBarController') return line;\n if (line.startsWith('#import') || line.startsWith('#include')) {\n let out = line;\n out = out.replaceAll(`\"${objectName}.`, `\"${replaceName}.`);\n out = out.replaceAll(`/${objectName}.`, `/${replaceName}.`);\n return out;\n }\n if (line.includes('import') && !line.includes('#import')) return line.replaceAll(` ${objectName}.`, ` ${replaceName}.`);\n return replaceObjNameByReInLine(line, objectName, replaceName);\n}\n\nconst OC_VIEW_LIST: readonly string[] = ['UIView', 'UILabel', 'UIButton', 'UISegmentedControl', 'UITextField', 'UISlider', 'UISwitch', 'UIProgressView', 'UITableView', 'UITableViewCell', 'UIImageView', 'UICollectionView', 'UICollectionViewCell', 'UITextView', 'UIScrollView', 'UIPickerView'];\n\nexport function getSpaceCount(line: string): number {\n let count = 0;\n for (const ch of line) {\n if (ch === ' ') count += 1;\n else break;\n }\n return count;\n}\n\nexport function getClassProNameTub(line: string, isSwift: boolean): [string, string] | null {\n const newLine = line.replace(/\\s+/g, '');\n let ret: [string, string] | null = null;\n for (const className of OC_VIEW_LIST) {\n if (!isSwift) {\n if (line.includes(`[${className} `) && line.includes('=')) ret = [line.slice(line.indexOf('*') + 1, line.indexOf('=')).trim(), className];\n } else if (newLine.includes(`${className}(`) && line.includes('=')) {\n let proName: string;\n if (line.includes('let ')) proName = line.slice(line.indexOf('let ') + 4, line.indexOf('='));\n else if (line.includes('var ')) proName = line.slice(line.indexOf('var ') + 4, line.indexOf('='));\n else proName = line.slice(line.indexOf(' ') + 1, line.indexOf('='));\n if (proName.includes(':')) proName = proName.split(':')[0]!;\n ret = [proName.trim(), className];\n }\n }\n if (line.includes('//') && ret != null && line.indexOf('//') < line.indexOf(ret[0])) ret = null;\n return ret;\n}\n\nfunction round2(v: number): string {\n return (Math.round(v * 100) / 100).toString();\n}\n\nexport function ocRandomColor(alpha: number, ctx: RenameContext): string {\n return `[UIColor colorWithRed:${round2(ctx.rng.next())} green:${round2(ctx.rng.next())} blue:${round2(ctx.rng.next())} alpha:${alpha}]`;\n}\n\nexport function swiftRandomColor(alpha: number, ctx: RenameContext): string {\n return `UIColor.init(red: ${round2(ctx.rng.next())}, green: ${round2(ctx.rng.next())}, blue: ${round2(ctx.rng.next())}, alpha: ${alpha})`;\n}\n\nfunction swiftSysColor(line: string): string | null {\n const colors = ['black', 'darkGray', 'lightGray', 'white', 'gray', 'red', 'green', 'blue', 'cyan', 'yellow', 'magenta', 'orange', 'purple', 'brown', 'clear', 'groupTableViewBackground'];\n for (const color of colors) if (line.includes(`UIColor.${color}`)) return `UIColor.${color}`;\n return null;\n}\n\nfunction getSwiftColorCodeInLine(line: string): string | null {\n const sys = swiftSysColor(line);\n if (sys != null) return sys;\n const start = line.indexOf('UIColor.');\n if (start === -1) return null;\n let depth = 0;\n let lastClose = -1;\n for (let i = start; i < line.length; i += 1) {\n const ch = line[i]!;\n if (ch === '(') depth += 1;\n else if (ch === ')') {\n depth -= 1;\n if (depth === 0) { lastClose = i; break; }\n }\n }\n if (lastClose === -1) return null;\n return line.slice(start, lastClose + 1);\n}\n\nexport function ocColorReplaceLine(line: string, alpha: number, ctx: RenameContext): string {\n const start = line.indexOf('[UIColor ');\n if (start === -1) return line;\n const end = line.indexOf(']', start);\n if (end === -1) return line;\n return line.replace(line.slice(start, end + 1), ocRandomColor(alpha, ctx));\n}\n\nexport function changeViewBackgroundColor(line: string, isSwift: boolean, magic: ObjcMagicColorOptions, ctx: RenameContext): string {\n const isRepBgColor = magic.replaceColor?.[0] ?? -1;\n const isRepTextColor = magic.replaceColor?.[1] ?? -1;\n const isRepClearColor = magic.replaceColor?.[2] ?? -1;\n const isAddBgColor = magic.addColor ?? -1;\n const isAddTextColor = magic.textColor ?? -1;\n const bgAlpha = magic.alpha?.[0] ?? 1;\n const textAlpha = magic.alpha?.[1] ?? 1;\n const otherAlpha = 1;\n\n const proNameTub = getClassProNameTub(line, isSwift);\n if (proNameTub != null) {\n const spaceCount = getSpaceCount(line);\n if (isSwift) {\n if (spaceCount > 4) {\n if (isAddBgColor !== -1) line += `${' '.repeat(spaceCount)}${proNameTub[0]}.backgroundColor = ${swiftRandomColor(bgAlpha, ctx)}\\n`;\n if (isAddTextColor !== -1) {\n if (proNameTub[1] === 'UILabel' || proNameTub[1] === 'UITextField') {\n line += `${' '.repeat(spaceCount)}${proNameTub[0]}.textColor = ${swiftRandomColor(textAlpha, ctx)}\\n`;\n return line;\n }\n if (proNameTub[1] === 'UIButton') line += `${' '.repeat(spaceCount)}${proNameTub[0]}.setTitleColor(${swiftRandomColor(textAlpha, ctx)}, for: .normal)\\n`;\n }\n }\n return line;\n }\n if (isAddBgColor !== -1) line += `${' '.repeat(spaceCount)}${proNameTub[0]}.backgroundColor = ${ocRandomColor(bgAlpha, ctx)};\\n`;\n if (isAddTextColor !== -1) {\n if (proNameTub[1] === 'UILabel' || proNameTub[1] === 'UITextField') {\n line += `${' '.repeat(spaceCount)}${proNameTub[0]}.textColor = ${ocRandomColor(textAlpha, ctx)};\\n`;\n return line;\n }\n if (proNameTub[1] === 'UIButton') line += `${' '.repeat(spaceCount)}[${proNameTub[0]} setTitleColor:${ocRandomColor(textAlpha, ctx)} forState:UIControlStateNormal];\\n`;\n }\n return line;\n }\n\n if (isSwift) {\n if ((line.includes('UIColor.init(') || line.includes('UIColor.')) && !line.includes('UIColor.clear')) {\n const oldColorCode = getSwiftColorCodeInLine(line);\n if (line.includes('.backgroundColor') && oldColorCode != null) return isRepBgColor !== -1 ? line.replace(oldColorCode, swiftRandomColor(bgAlpha, ctx)) : line;\n if ((line.includes(' setTitleColor:') || line.includes('.tintColor')) && oldColorCode != null) return isRepTextColor !== -1 ? line.replace(oldColorCode, swiftRandomColor(textAlpha, ctx)) : line;\n return oldColorCode != null ? line.replace(oldColorCode, swiftRandomColor(otherAlpha, ctx)) : line;\n }\n if (line.includes('UIColor.clear') && isRepClearColor !== -1) {\n const oldColorCode = 'UIColor.clear';\n if (line.includes('.backgroundColor')) return isRepBgColor !== -1 ? line.replace(oldColorCode, swiftRandomColor(bgAlpha, ctx)) : line;\n if (line.includes(' setTitleColor:') || line.includes('.tintColor')) return isRepTextColor !== -1 ? line.replace(oldColorCode, swiftRandomColor(textAlpha, ctx)) : line;\n return line.replace(oldColorCode, swiftRandomColor(otherAlpha, ctx));\n }\n return line;\n }\n\n if (line.includes('[UIColor ')) {\n if (line.includes('.backgroundColor') || line.includes(' setBackgroundColor:')) return isRepBgColor !== -1 ? ocColorReplaceLine(line, bgAlpha, ctx) : line;\n if (line.includes(' setTextColor:') || line.includes(' setTitleColor:') || line.includes('.tintColor') || line.includes(' setTintColor:')) return isRepTextColor !== -1 ? ocColorReplaceLine(line, textAlpha, ctx) : line;\n return ocColorReplaceLine(line, otherAlpha, ctx);\n }\n if ((line.includes('[UIColor clearColor]') || line.includes('UIColor.clearColor')) && isRepClearColor !== -1) {\n const oldColorCode = line.includes('[UIColor clearColor]') ? '[UIColor clearColor]' : 'UIColor.clearColor';\n if (line.includes('.backgroundColor') || line.includes(' setBackgroundColor:')) return isRepBgColor !== -1 ? line.replace(oldColorCode, ocRandomColor(bgAlpha, ctx)) : line;\n if (line.includes(' setTextColor:') || line.includes(' setTitleColor:') || line.includes('.tintColor') || line.includes(' setTintColor:')) return isRepTextColor !== -1 ? line.replace(oldColorCode, ocRandomColor(textAlpha, ctx)) : line;\n return line.replace(oldColorCode, ocRandomColor(otherAlpha, ctx));\n }\n return line;\n}\n\nconst DEFAULT_EXTENSIONS: readonly string[] = ['m', 'mm', 'cpp', 'h', 'swift', 'pch', 'c', 'cc', 'xib', 'storyboard', 'inl', 'hpp'];\n\nfunction isSupported(relative: string, options: ObjcSymbolsOptions): boolean {\n const allowed = new Set(options.fileExtensions ?? DEFAULT_EXTENSIONS);\n return allowed.has(extension(relative));\n}\n\nfunction basenameWithoutExtension(relative: string): string {\n const base = relative.slice(relative.lastIndexOf('/') + 1);\n const dot = base.lastIndexOf('.');\n return dot < 1 ? base : base.slice(0, dot);\n}\n\nfunction transformLine(ctx: RenameContext, relative: string, line: string): string {\n const isSwift = extension(relative) === 'swift';\n const isXib = isXibOrSb(relative);\n let out = line;\n for (const [from, to] of ctx.methodMap) if (out.includes(from)) out = replaceMethodNameInLine(out, from, to, isXib);\n for (const [from, to] of ctx.propertyMap) if (out.includes(from) || out.includes(getSetProName(from))) out = replacePropertyNameInLine(out, from, to, isSwift, isXib, false);\n for (const [from, to] of ctx.classMap) if (out.includes(from)) out = replaceObjNameByReInLine(out, from, to);\n if (ctx.options.magicColor?.enabled) out = changeViewBackgroundColor(out, isSwift, ctx.options.magicColor, ctx);\n return out;\n}\n\nfunction collectMethodFromLine(ctx: RenameContext, line: string): void {\n getMissMethodNameTuple(line, ctx.options.methodPrefix, ctx);\n}\n\nfunction collectSwiftMethod(ctx: RenameContext, line: string): void {\n const trimmed = line.trim();\n if (!trimmed.includes('func ')) return;\n let funcName = trimmed.slice(trimmed.indexOf('func ') + 5);\n funcName = funcName.slice(0, funcName.indexOf('{') === -1 ? undefined : funcName.indexOf('{'));\n if (funcName.includes('(')) funcName = funcName.slice(0, funcName.indexOf('('));\n funcName = funcName.trim();\n if (isHaveSpecialChar(funcName) || funcName.length <= 3) return;\n if (isPassMethodName(funcName, true)) return;\n if (FILTER_LIST.includes(funcName)) return;\n if (!ctx.methodMap.has(funcName)) {\n const prefix = ctx.options.methodPrefix ?? '';\n let miss: string;\n if (prefix.endsWith('#')) miss = `${prefix.split('#')[0]!}${funcName}`;\n else {\n const suffix = ctx.options.methodSuffix ?? '';\n miss = randomWordFromLexicon(ctx) + pyCapitalize(randomWordFromLexicon(ctx)) + pyCapitalize(randomWordFromLexicon(ctx)) + suffix;\n if (prefix.length > 0) miss = prefix.endsWith('_') ? `${prefix}${miss}` : `${prefix}${pyCapitalize(miss)}`;\n }\n ctx.methodMap.set(funcName, miss.replace(/\\s+/g, ''));\n }\n}\n\nfunction collectPropertiesForLine(ctx: RenameContext, relative: string, line: string): void {\n if (isIgnoreAnalysisLine(line)) return;\n const ext = extension(relative);\n if (ext === 'h' || ext === 'm' || ext === 'mm' || ext === 'cpp') {\n if (line.includes('@property')) ocPropertyNameTup(line, ctx.options.propertyPrefix, ctx);\n else if (line.trim().startsWith('@interface') || line.trim().startsWith('@implementation')) ocConstantNameTup(line, ctx.options.propertyPrefix, ctx);\n else swiftCppPropertyNameTup(line, ctx.options.propertyPrefix, ext === 'cpp', ctx);\n } else if (ext === 'swift') {\n swiftCppPropertyNameTup(line, ctx.options.propertyPrefix, false, ctx);\n }\n}\n\nexport function obfuscateObjcContent(content: string, options: ObjcSymbolsOptions = {}, seed: string): string {\n const ctx = createRenameContext(options, seed);\n const lines = content.split('\\n');\n for (const line of lines) {\n if (line.trim().includes('func ')) collectSwiftMethod(ctx, line);\n else collectMethodFromLine(ctx, line);\n collectPropertiesForLine(ctx, 'sample.swift', line);\n }\n return lines.map((line) => transformLine(ctx, 'sample.swift', line)).join('\\n');\n}\n\nexport function renameObjcSymbols(files: WalkEntry[], options: ObjcSymbolsOptions = {}, seed: string): TransformOutcome {\n const ctx = createRenameContext(options, seed);\n const ordered = [...files].sort((a, b) => a.relative.localeCompare(b.relative));\n const classPrefixOpt = options.replaceClassPrefix;\n const methodPrefixOpt = options.replaceMethodPrefix;\n const propertyPrefixOpt = options.replacePropertyPrefix;\n\n const headers = new Set<string>();\n const impls = new Set<string>();\n for (const entry of ordered) {\n const base = basenameWithoutExtension(entry.relative);\n const ext = extension(entry.relative);\n if (ext === 'h') headers.add(base);\n if (ext === 'm' || ext === 'mm' || ext === 'cpp' || ext === 'hpp' || ext === 'swift') impls.add(base);\n }\n for (const base of [...headers].sort()) {\n if (!impls.has(base) || base.includes('+')) continue;\n if (classPrefixOpt) {\n if (!base.startsWith(classPrefixOpt.from) || base.includes('AppDelegate')) continue;\n ctx.classMap.set(base, `${classPrefixOpt.to}${base.slice(classPrefixOpt.from.length)}`);\n continue;\n }\n if (isPassObjectName(base, ctx)) continue;\n ctx.classMap.set(base, getMissClassName(base, ctx.options.classPrefix, ctx));\n }\n\n for (const entry of ordered) {\n if (!isSupported(entry.relative, ctx.options)) continue;\n const content = readFileSync(entry.absolute, 'utf8');\n const ext = extension(entry.relative);\n if (methodPrefixOpt) {\n if (ext === 'h') for (const line of content.split('\\n')) collectMethodPrefixTuple(line, methodPrefixOpt.from, methodPrefixOpt.to, ctx);\n } else if (ext === 'h') {\n for (const line of content.split('\\n')) collectMethodFromLine(ctx, line);\n } else if (ext === 'swift') {\n for (const line of content.split('\\n')) collectSwiftMethod(ctx, line);\n }\n if (['h', 'm', 'mm', 'cpp', 'swift'].includes(ext)) {\n for (const line of content.split('\\n')) {\n if (propertyPrefixOpt) {\n if (line.includes('@property')) {\n const tuple = propertyNameReplaceTuple(line, propertyPrefixOpt.from, propertyPrefixOpt.to);\n if (tuple) ctx.propertyMap.set(tuple[0], tuple[1]);\n }\n } else {\n collectPropertiesForLine(ctx, entry.relative, line);\n }\n }\n }\n }\n\n const changedPaths: string[] = [];\n let changed = 0;\n for (const entry of ordered) {\n if (!isSupported(entry.relative, ctx.options)) continue;\n const before = readFileSync(entry.absolute, 'utf8');\n const after = before.split('\\n').map((line) => transformLine(ctx, entry.relative, line)).join('\\n');\n if (after !== before) {\n if (writeIfChanged(entry, after)) {\n changed += 1;\n changedPaths.push(entry.relative);\n }\n }\n }\n return { changed, changedPaths };\n}\n\n\n\n\n\n\n\n\n\n\n"],"mappings":"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"}
|