six-degrees 0.5.0 → 0.6.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.
Files changed (366) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +14 -14
  4. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  10. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.rsc +20 -19
  14. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +20 -19
  15. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +16 -15
  16. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  17. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/update/route.js +1 -1
  45. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/import/page.js +1 -1
  50. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/import.html +1 -1
  53. package/.next/standalone/.next/server/app/import.rsc +24 -23
  54. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +24 -23
  55. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  56. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +18 -17
  57. package/.next/standalone/.next/server/app/index.html +1 -1
  58. package/.next/standalone/.next/server/app/index.rsc +22 -21
  59. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +18 -17
  60. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +22 -21
  61. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  62. package/.next/standalone/.next/server/app/launch/page.js +1 -1
  63. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/launch.html +2 -2
  66. package/.next/standalone/.next/server/app/launch.rsc +24 -23
  67. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +24 -23
  68. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  69. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +18 -17
  70. package/.next/standalone/.next/server/app/page.js +1 -1
  71. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  74. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/paths.html +1 -1
  77. package/.next/standalone/.next/server/app/paths.rsc +24 -23
  78. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +24 -23
  79. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  80. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +18 -17
  81. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  82. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/profile.html +1 -1
  85. package/.next/standalone/.next/server/app/profile.rsc +24 -23
  86. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +24 -23
  87. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  88. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +18 -17
  89. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  90. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/queue.html +1 -1
  93. package/.next/standalone/.next/server/app/queue.rsc +24 -23
  94. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +24 -23
  95. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  96. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +18 -17
  97. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  98. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/scores.html +1 -1
  101. package/.next/standalone/.next/server/app/scores.rsc +24 -23
  102. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +24 -23
  103. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  104. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +18 -17
  105. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  106. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/settings.html +1 -1
  109. package/.next/standalone/.next/server/app/settings.rsc +24 -23
  110. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +24 -23
  111. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  112. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +18 -17
  113. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  114. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/setup.html +1 -1
  117. package/.next/standalone/.next/server/app/setup.rsc +24 -23
  118. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +24 -23
  119. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  120. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +18 -17
  121. package/.next/standalone/.next/server/app/social/page.js +1 -1
  122. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/social.html +1 -1
  125. package/.next/standalone/.next/server/app/social.rsc +24 -23
  126. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +24 -23
  127. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  128. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +18 -17
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +1 -1
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0um1uey._.js +1 -1
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13dx4sd._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +1 -1
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15wc9e-._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +1 -1
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__18bcnu4._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +2 -2
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +1 -1
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +2 -2
  157. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/[root-of-the-server]__20rwfdw._.js +2 -2
  159. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  160. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +2 -2
  161. package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +5 -5
  162. package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +5 -5
  163. package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +5 -5
  164. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +9 -9
  165. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +3 -0
  166. package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +3 -0
  168. package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +3 -0
  169. package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +3 -0
  170. package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +3 -0
  171. package/.next/standalone/.next/server/chunks/ssr/{_0jdkqgi._.js → _1-658fq._.js} +2 -2
  172. package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +3 -0
  173. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +3 -0
  174. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +9 -0
  175. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +9 -0
  176. package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +3 -0
  177. package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
  178. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +3 -0
  179. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +13 -0
  180. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +13 -0
  181. package/.next/standalone/.next/server/chunks/ssr/{_0gtv9jb._.js → app_components_CompanyScores_1g0mytz.js} +2 -2
  182. package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +14 -12
  185. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  186. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +6 -6
  188. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +4 -4
  190. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/{lib_0i8v-s3._.js → lib_1c4ieuw._.js} +2 -2
  192. package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
  193. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  194. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  195. package/.next/standalone/.next/server/pages/404.html +1 -1
  196. package/.next/standalone/.next/server/pages/500.html +1 -1
  197. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  199. package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +22 -0
  200. package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
  201. package/.next/{static/chunks/2wgz9ietkqqe6.js → standalone/.next/static/chunks/0i02yxppzds1o.js} +1 -1
  202. package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
  203. package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +1 -0
  204. package/.next/standalone/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
  205. package/.next/{static/chunks/3sowbvbaj1s6n.js → standalone/.next/static/chunks/0ws7zy0w57ufi.js} +1 -1
  206. package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
  207. package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +34 -0
  208. package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
  209. package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
  210. package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
  211. package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +45 -0
  212. package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +1 -0
  213. package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +11 -0
  214. package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
  215. package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +1 -0
  216. package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
  217. package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +1 -0
  218. package/.next/standalone/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
  219. package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +11 -0
  220. package/.next/standalone/CHANGELOG.md +61 -0
  221. package/.next/standalone/README.md +22 -8
  222. package/.next/standalone/app/api/scraper/route.js +40 -3
  223. package/.next/standalone/app/api/update/route.js +12 -6
  224. package/.next/standalone/app/components/AppHeader.js +257 -0
  225. package/.next/standalone/app/components/Avatar.js +2 -1
  226. package/.next/standalone/app/components/ChainView.js +12 -12
  227. package/.next/standalone/app/components/FilterPanel.js +20 -12
  228. package/.next/standalone/app/components/ForceGraph.js +163 -25
  229. package/.next/standalone/app/components/GalaxyLab.js +43 -12
  230. package/.next/standalone/app/components/GridView.js +4 -4
  231. package/.next/standalone/app/components/LinkedInLimits.js +2 -1
  232. package/.next/standalone/app/components/ListView.js +3 -3
  233. package/.next/standalone/app/components/NoteDetail.js +2 -1
  234. package/.next/standalone/app/components/OnboardingGate.js +2 -2
  235. package/.next/standalone/app/components/OutlinkQuest.js +2 -1
  236. package/.next/standalone/app/components/PathsAnalyzer.js +3 -2
  237. package/.next/standalone/app/components/PeopleMap.js +2 -1
  238. package/.next/standalone/app/components/RingsView.js +3 -3
  239. package/.next/standalone/app/components/ScanTrail.js +85 -0
  240. package/.next/standalone/app/components/SeparationView.js +100 -77
  241. package/.next/standalone/app/components/Sidebar.js +4 -4
  242. package/.next/standalone/app/components/TheirCircle.js +2 -1
  243. package/.next/standalone/app/components/ThemeLoader.js +9 -0
  244. package/.next/standalone/app/components/UpdatePanel.js +20 -2
  245. package/.next/standalone/app/components/settings/AppearanceSection.js +226 -0
  246. package/.next/standalone/app/components/settings/NetworkHealthSection.js +2 -1
  247. package/.next/standalone/app/components/ui.js +2 -1
  248. package/.next/standalone/app/globals.css +70 -2
  249. package/.next/standalone/app/import/page.js +3 -3
  250. package/.next/standalone/app/layout.js +11 -2
  251. package/.next/standalone/app/page.js +69 -215
  252. package/.next/standalone/app/paths/page.js +8 -21
  253. package/.next/standalone/app/profile/page.js +11 -10
  254. package/.next/standalone/app/queue/page.js +8 -21
  255. package/.next/standalone/app/scores/page.js +1 -1
  256. package/.next/standalone/app/settings/page.js +7 -3
  257. package/.next/standalone/app/setup/page.js +83 -88
  258. package/.next/standalone/app/social/Crm.js +2 -1
  259. package/.next/standalone/app/social/SocialHub.js +2 -2
  260. package/.next/standalone/app/social/page.js +1 -1
  261. package/.next/standalone/lib/data-import.js +1 -0
  262. package/.next/standalone/lib/galaxy-export.js +2 -1
  263. package/.next/standalone/lib/galaxy-lab.js +24 -8
  264. package/.next/standalone/lib/level.js +51 -0
  265. package/.next/standalone/lib/release.js +13 -7
  266. package/.next/standalone/lib/scanner-python.js +38 -8
  267. package/.next/standalone/lib/scraper-client.js +2 -1
  268. package/.next/standalone/lib/separation.js +4 -2
  269. package/.next/standalone/lib/theme-store.js +61 -0
  270. package/.next/standalone/lib/themes.js +186 -0
  271. package/.next/standalone/lib/tiers.js +2 -8
  272. package/.next/standalone/package-lock.json +2 -2
  273. package/.next/standalone/package.json +4 -4
  274. package/.next/standalone/scripts/build-desktop.mjs +325 -0
  275. package/.next/standalone/scripts/build-site.mjs +85 -15
  276. package/.next/standalone/scripts/gen-test-network.mjs +93 -0
  277. package/.next/standalone/scripts/next.mjs +20 -0
  278. package/.next/standalone/scripts/readme_buttons.py +3 -0
  279. package/.next/standalone/scripts/requirements.txt +18 -1
  280. package/.next/standalone/scripts/site-news.mjs +54 -9
  281. package/.next/standalone/scripts/smoke-desktop.mjs +177 -0
  282. package/.next/standalone/scripts/windows/six-degrees.iss +100 -0
  283. package/.next/static/chunks/02pq76u7y4v9-.js +22 -0
  284. package/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
  285. package/.next/{standalone/.next/static/chunks/2wgz9ietkqqe6.js → static/chunks/0i02yxppzds1o.js} +1 -1
  286. package/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
  287. package/.next/static/chunks/0oyslj62jkubd.js +1 -0
  288. package/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
  289. package/.next/{standalone/.next/static/chunks/3sowbvbaj1s6n.js → static/chunks/0ws7zy0w57ufi.js} +1 -1
  290. package/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
  291. package/.next/static/chunks/172e10mi-tpo_.js +34 -0
  292. package/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
  293. package/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
  294. package/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
  295. package/.next/static/chunks/1m3017gp790pw.js +45 -0
  296. package/.next/static/chunks/1t20e8u0st7ep.js +1 -0
  297. package/.next/static/chunks/2-ch9rm27eril.js +11 -0
  298. package/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
  299. package/.next/static/chunks/3bp284gjf7dyq.js +1 -0
  300. package/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
  301. package/.next/static/chunks/3l4t8je6iguzc.js +1 -0
  302. package/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
  303. package/.next/static/chunks/42m0bqr8pbovz.js +11 -0
  304. package/CHANGELOG.md +61 -0
  305. package/README.md +22 -8
  306. package/lib/data-import.js +1 -0
  307. package/lib/galaxy-export.js +2 -1
  308. package/lib/galaxy-lab.js +24 -8
  309. package/lib/level.js +51 -0
  310. package/lib/release.js +13 -7
  311. package/lib/scanner-python.js +38 -8
  312. package/lib/scraper-client.js +2 -1
  313. package/lib/separation.js +4 -2
  314. package/lib/theme-store.js +61 -0
  315. package/lib/themes.js +186 -0
  316. package/lib/tiers.js +2 -8
  317. package/package.json +4 -4
  318. package/scripts/requirements.txt +18 -1
  319. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljcioj._.js +0 -3
  320. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16hs8kw._.js +0 -3
  321. package/.next/standalone/.next/server/chunks/ssr/_01kacen._.js +0 -3
  322. package/.next/standalone/.next/server/chunks/ssr/_0xi-fbs._.js +0 -3
  323. package/.next/standalone/.next/server/chunks/ssr/_0xmwmfv._.js +0 -3
  324. package/.next/standalone/.next/server/chunks/ssr/_1-b9hj7._.js +0 -9
  325. package/.next/standalone/.next/server/chunks/ssr/_112ewem._.js +0 -3
  326. package/.next/standalone/.next/server/chunks/ssr/_16ab63q._.js +0 -3
  327. package/.next/standalone/.next/server/chunks/ssr/_1fxm0-s._.js +0 -3
  328. package/.next/standalone/.next/server/chunks/ssr/_1ra1d3r._.js +0 -9
  329. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +0 -3
  330. package/.next/standalone/.next/server/chunks/ssr/lib_13rapwj._.js +0 -3
  331. package/.next/standalone/.next/static/chunks/03bziijw5srol.js +0 -1
  332. package/.next/standalone/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
  333. package/.next/standalone/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
  334. package/.next/standalone/.next/static/chunks/0g_fy2034bp0x.js +0 -34
  335. package/.next/standalone/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
  336. package/.next/standalone/.next/static/chunks/0w-byiwb2zax8.js +0 -2
  337. package/.next/standalone/.next/static/chunks/1g7jcovdejc9-.js +0 -1
  338. package/.next/standalone/.next/static/chunks/1i51yylxdzht1.js +0 -1
  339. package/.next/standalone/.next/static/chunks/1zf8swaasjf1e.js +0 -43
  340. package/.next/standalone/.next/static/chunks/2dwtoszeq91us.js +0 -1
  341. package/.next/standalone/.next/static/chunks/2rqtpccruavf2.js +0 -1
  342. package/.next/standalone/.next/static/chunks/30x3oq_st7a5r.js +0 -1
  343. package/.next/standalone/.next/static/chunks/355ryio1b7sm1.js +0 -1
  344. package/.next/standalone/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
  345. package/.next/standalone/.next/static/chunks/3fci6qi39-1n5.js +0 -1
  346. package/.next/static/chunks/03bziijw5srol.js +0 -1
  347. package/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
  348. package/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
  349. package/.next/static/chunks/0g_fy2034bp0x.js +0 -34
  350. package/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
  351. package/.next/static/chunks/0w-byiwb2zax8.js +0 -2
  352. package/.next/static/chunks/1g7jcovdejc9-.js +0 -1
  353. package/.next/static/chunks/1i51yylxdzht1.js +0 -1
  354. package/.next/static/chunks/1zf8swaasjf1e.js +0 -43
  355. package/.next/static/chunks/2dwtoszeq91us.js +0 -1
  356. package/.next/static/chunks/2rqtpccruavf2.js +0 -1
  357. package/.next/static/chunks/30x3oq_st7a5r.js +0 -1
  358. package/.next/static/chunks/355ryio1b7sm1.js +0 -1
  359. package/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
  360. package/.next/static/chunks/3fci6qi39-1n5.js +0 -1
  361. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
  362. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
  363. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
  364. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
  365. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
  366. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[88431,28681,48170,54090,41238,98612,26525,92375,19041,e=>{"use strict";var t=e.x("node:sqlite",()=>require("node:sqlite"),!0),n=e.i(2157),r=e.i(60526),i=e.i(50227);let a=`-- Six Degrees — local SQLite schema.
1
+ module.exports=[88431,28681,48170,54090,1348,41238,98612,26525,92375,19041,e=>{"use strict";var t=e.x("node:sqlite",()=>require("node:sqlite"),!0),n=e.i(2157),r=e.i(60526),i=e.i(50227);let a=`-- Six Degrees — local SQLite schema.
2
2
  --
3
3
  -- Ported from the Postgres schema this project ran on before it went
4
4
  -- local-first. Type mapping: uuid -> TEXT (generated in JS), jsonb and
@@ -159,16 +159,16 @@ CREATE TABLE IF NOT EXISTS user_profile (
159
159
  created_at TEXT DEFAULT (datetime('now')),
160
160
  updated_at TEXT DEFAULT (datetime('now'))
161
161
  );
162
- `;e.s(["SCHEMA_SQL",0,a],28681);let o="0.5.0";e.s(["APP_VERSION",0,o],48170);var s=e.x("node:sqlite",()=>require("node:sqlite"),!0),l=e.i(12714),c=e.i(12506);let u=["/api/admin-delete","/api/admin-update","/api/delete-cluster","/api/setup-profile","/api/scraper","/api/update","/api/data/export","/api/data/import","/api/data/restart","/api/data/reveal"],f=new Set(["127.0.0.1","::1","localhost"]),d=new Set(["127.0.0.1","localhost","[::1]","0.0.0.0"]);function p(e){return f.has(String(e||"").toLowerCase())}function h({method:e,pathname:t,headers:n,env:r={}}){let i=e=>n?.get?.(e)??null,a=r.SIX_DEGREES_BIND||r.HOSTNAME;if(function({bind:e,host:t}){let n;if(!p(e)||!t)return!1;try{n=new URL(`http://${t}`).hostname.toLowerCase()}catch{return!0}return!d.has(n)}({bind:a,host:i("host")}))return{status:421,error:"This app only answers to 127.0.0.1 and localhost."};if(function({method:e,secFetchSite:t,origin:n,host:r}){if(!e||!["POST","PUT","PATCH","DELETE"].includes(e.toUpperCase()))return!1;if(t){if("same-origin"===t||"none"===t)return!1;if("same-site"!==t||!n)return!0}if(n)try{let e=new URL(n).host;return!!r&&e!==r}catch{return!0}return!1}({method:e,secFetchSite:i("sec-fetch-site"),origin:i("origin"),host:i("host")}))return{status:403,error:"Cross-site requests are not accepted. This app only answers to pages it serves."};if(!u.some(e=>t===e||t.startsWith(`${e}/`)))return null;let o=function({bind:e,token:t,bearer:n}){return t&&function(e,t){if("string"!=typeof e||"string"!=typeof t||e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e.charCodeAt(r)^t.charCodeAt(r);return 0===n}(n,t)?{allow:!0,reason:"valid admin token"}:p(e)?{allow:!0,reason:"server is bound to loopback; only this machine can connect"}:t?{allow:!1,status:401,reason:"missing or incorrect admin token"}:{allow:!1,status:503,reason:"server is not bound to loopback and no ADMIN_TOKEN is configured"}}({bind:a,token:r.ADMIN_TOKEN,bearer:(i("authorization")||"").replace(/^Bearer\s+/i,"")});return o.allow?null:{status:o.status,error:o.reason}}e.s(["requestRefusal",0,h],54090);var T=e.i(1348);let m=new Set(["ENOENT","EINVAL","ENOTSUP","ENOSYS","EISDIR","EPERM","EBADF"]);function E(e){let t;try{t=n.default.openSync(e,"r")}catch(e){if(m.has(e.code))return;throw e}try{n.default.fsyncSync(t)}catch(e){if(!m.has(e.code))throw e}finally{n.default.closeSync(t)}}function y(e,t){let r=`${e}.${process.pid}.tmp`;try{let i=n.default.openSync(r,"w");try{n.default.writeFileSync(i,t),n.default.fsyncSync(i)}finally{n.default.closeSync(i)}n.default.renameSync(r,e)}catch(e){throw n.default.rmSync(r,{force:!0}),e}E(i.default.dirname(e))}let S=function(e){let t=n.default.openSync(e,"r");try{n.default.fsyncSync(t)}finally{n.default.closeSync(t)}},g=function(e,t){y(e,`${JSON.stringify(t,null,2)}
163
- `)},w={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},_=[25,50,100,200,500],A=[100,250,500,1e3,0],b=[10,25,50,100],N="America/Los_Angeles";function R(e){try{return JSON.parse((0,n.readFileSync)(e,"utf8"))}catch{return null}}function I(e=Date.now()){let t=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:N,year:"numeric",month:"numeric"}).formatToParts(new Date(e)).map(e=>[e.type,e.value])),n=Number(t.year),r=Number(t.month),i=Date.UTC(n,r-1,1,8);for(let e=0;e<2;e++)i=Date.UTC(n,r-1,1,-function(e){let t=(new Intl.DateTimeFormat("en-US",{timeZone:N,timeZoneName:"shortOffset"}).formatToParts(new Date(e)).find(e=>"timeZoneName"===e.type)?.value||"GMT-8").match(/GMT([+-]\d+)(?::(\d+))?/);return t?Number(t[1]):-8}(i));return i}function O(e){let t,n=R(i.default.join(e,"scan-limits.json"))||{},r=(e,t)=>Number.isInteger(e)&&e>=0?e:t;return{daily:r(n.daily,50),monthly:r(n.monthly,250),profiles:(t=r(n.profiles,0)||50,b.filter(e=>e<=t).pop()??b[0]),pace:w[n.pace]?n.pace:"fast"}}let L="linkedin-activity.json",D="linkedin-cooldown.json",x="scan-limits.json",k=e=>!!e&&"object"==typeof e&&!Array.isArray(e),F=e=>void 0===e||Array.isArray(e)&&e.every(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0),X=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0;function $(e,t){if(!k(t))return"it is not a JSON object";if(e===L){if(!F(t.searches)||!F(t.profiles))return"its record of searches is not a list of times"}else if(e===D){if(!X(t.until))return"its pause has no end time";if(void 0!==t.reason&&"string"!=typeof t.reason)return"its pause has a reason that is not text";if(void 0!==t.set_at&&!X(t.set_at))return"its pause has a start time that is not a time"}else if(e===x){if(void 0!==t.daily&&!_.includes(t.daily))return`its daily limit (${String(t.daily).slice(0,20)}) is not one Six Degrees offers`;if(void 0!==t.monthly&&!A.includes(t.monthly))return`its monthly limit (${String(t.monthly).slice(0,20)}) is not one Six Degrees offers`;if(void 0!==t.profiles&&!b.includes(t.profiles))return`its limit on profile views (${String(t.profiles).slice(0,20)}) is not one Six Degrees offers`}return null}function j(e=[],t=[]){let n=e=>e.reduce((e,t)=>e.set(t,(e.get(t)||0)+1),new Map),r=n(e);for(let[e,i]of n(t))i>(r.get(e)||0)&&r.set(e,i);return[...r].sort((e,t)=>e[0]-t[0]).flatMap(([e,t])=>Array(t).fill(e))}function v(e){if(void 0===e)return[];if(!Array.isArray(e))return null;let t=e.map(Number);return t.every(Number.isFinite)?t:null}let U=e=>{try{return(0,n.lstatSync)(e),!0}catch{return!1}};function C({dir:e,from:t}){let n=t=>i.default.join(e,t),r=e=>{let n=R(i.default.join(t,e));return k(n)&&!$(e,n)?n:null},a=r(L);if(a){let e=U(n(L))?R(n(L)):{},t=k(e)?v(e.searches):null,r=k(e)?v(e.profiles):null;t&&r&&g(n(L),{searches:j(t,a.searches),profiles:j(r,a.profiles)})}let o=r(D);if(o){let e=R(n(D)),t=Number.isFinite(Number(e?.until))?Number(e.until):-1/0;o.until>t&&g(n(D),{until:o.until,reason:o.reason??"LinkedIn pushed back",set_at:o.set_at??null})}let s=r(x);s&&!U(n(x))&&g(n(x),{daily:s.daily??50,monthly:s.monthly??250,profiles:s.profiles??50})}e.s(["budgetFileProblem",0,$,"liftCooldown",0,function(e){try{(0,n.unlinkSync)(i.default.join(e,"linkedin-cooldown.json"))}catch{}},"linkedinState",0,function(e,t=Date.now()){let r=O(e),a=function(e,t=Date.now()){let r=i.default.join(e,"linkedin-activity.json"),a=(0,n.existsSync)(r)?R(r):{searches:[],profiles:[]};if(!a||"object"!=typeof a)return{searchesToday:1/0,searchesMonth:0,profilesToday:1/0,unreadable:!0};let o=(Array.isArray(a.searches)?a.searches:[]).map(Number),s=(Array.isArray(a.profiles)?a.profiles:[]).map(Number),l=t/1e3-86400,c=I(t)/1e3;return{searchesToday:o.filter(e=>e>l).length,searchesMonth:o.filter(e=>e>=c).length,profilesToday:s.filter(e=>e>l).length}}(e,t),o=(e,t)=>e?Math.max(0,e-t):null;return{...a,limits:r,leftToday:o(r.daily,a.searchesToday),leftMonth:o(r.monthly,a.searchesMonth),profilesLeftToday:o(r.profiles,a.profilesToday),monthResets:function(e=Date.now()){let t=I(e);return I(t+3456e6)}(t),cooldown:function(e,t=Date.now()){let n=R(i.default.join(e,"linkedin-cooldown.json")),r=1e3*Number(n?.until);return n&&Number.isFinite(r)&&!(r<=t)?{until:r,reason:String(n.reason||"LinkedIn pushed back"),setAt:1e3*Number(n.set_at)||null}:null}(e,t)}},"mergeBudgetFiles",0,C,"writeLimits",0,function(e,{daily:t,monthly:r,profiles:a,pace:o}={}){var s;let l,c=O(e),u={daily:_.includes(t)?t:c.daily,monthly:A.includes(r)?r:c.monthly,profiles:b.includes(a)?a:c.profiles,pace:w[o]?o:c.pace};return s=i.default.join(e,"scan-limits.json"),l=`${s}.${process.pid}.${Date.now()}.tmp`,(0,n.writeFileSync)(l,JSON.stringify(u,null,2)),(0,n.renameSync)(l,s),u}],41238);var M=e.i(74533);let P=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,G="/avatars/";function q(e){return"string"==typeof e&&e.startsWith(G)&&P.test(e.slice(G.length))?e:null}function B(e){return e.prepare(`SELECT DISTINCT profile_url AS profileUrl, profile_image_url AS imageUrl
162
+ `;e.s(["SCHEMA_SQL",0,a],28681);let o="0.6.0";e.s(["APP_VERSION",0,o],48170);var s=e.x("node:sqlite",()=>require("node:sqlite"),!0),l=e.i(12714),c=e.i(12506);let u=["/api/admin-delete","/api/admin-update","/api/delete-cluster","/api/setup-profile","/api/scraper","/api/update","/api/data/export","/api/data/import","/api/data/restart","/api/data/reveal"],f=new Set(["127.0.0.1","::1","localhost"]),d=new Set(["127.0.0.1","localhost","[::1]","0.0.0.0"]);function p(e){return f.has(String(e||"").toLowerCase())}function h({method:e,pathname:t,headers:n,env:r={}}){let i=e=>n?.get?.(e)??null,a=r.SIX_DEGREES_BIND||r.HOSTNAME;if(function({bind:e,host:t}){let n;if(!p(e)||!t)return!1;try{n=new URL(`http://${t}`).hostname.toLowerCase()}catch{return!0}return!d.has(n)}({bind:a,host:i("host")}))return{status:421,error:"This app only answers to 127.0.0.1 and localhost."};if(function({method:e,secFetchSite:t,origin:n,host:r}){if(!e||!["POST","PUT","PATCH","DELETE"].includes(e.toUpperCase()))return!1;if(t){if("same-origin"===t||"none"===t)return!1;if("same-site"!==t||!n)return!0}if(n)try{let e=new URL(n).host;return!!r&&e!==r}catch{return!0}return!1}({method:e,secFetchSite:i("sec-fetch-site"),origin:i("origin"),host:i("host")}))return{status:403,error:"Cross-site requests are not accepted. This app only answers to pages it serves."};if(!u.some(e=>t===e||t.startsWith(`${e}/`)))return null;let o=function({bind:e,token:t,bearer:n}){return t&&function(e,t){if("string"!=typeof e||"string"!=typeof t||e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e.charCodeAt(r)^t.charCodeAt(r);return 0===n}(n,t)?{allow:!0,reason:"valid admin token"}:p(e)?{allow:!0,reason:"server is bound to loopback; only this machine can connect"}:t?{allow:!1,status:401,reason:"missing or incorrect admin token"}:{allow:!1,status:503,reason:"server is not bound to loopback and no ADMIN_TOKEN is configured"}}({bind:a,token:r.ADMIN_TOKEN,bearer:(i("authorization")||"").replace(/^Bearer\s+/i,"")});return o.allow?null:{status:o.status,error:o.reason}}e.s(["requestRefusal",0,h],54090);let T=Symbol.for("six-degrees.scan-state");function m(){let e=globalThis[T];return e?.running!==!0?null:"string"==typeof e.action&&e.action?e.action:"scan"}function E(e){switch(e){case"install":return"The scanner's packages are being installed";case"setup":return"The scanner is being set up";case"login":return"The LinkedIn sign-in window is open";case"photos":return"Profile photos are being saved";default:return"A scan is running"}}e.s(["busyRefusal",0,function(e,t=m()){return t?`${E(t)}. ${e}`:null},"registerScanState",0,function(e){return globalThis[T]||(globalThis[T]=e),globalThis[T]},"runningNow",0,E,"scannerJob",0,m],1348);let y=new Set(["ENOENT","EINVAL","ENOTSUP","ENOSYS","EISDIR","EPERM","EBADF"]);function S(e){let t;try{t=n.default.openSync(e,"r")}catch(e){if(y.has(e.code))return;throw e}try{n.default.fsyncSync(t)}catch(e){if(!y.has(e.code))throw e}finally{n.default.closeSync(t)}}function g(e,t){let r=`${e}.${process.pid}.tmp`;try{let i=n.default.openSync(r,"w");try{n.default.writeFileSync(i,t),n.default.fsyncSync(i)}finally{n.default.closeSync(i)}n.default.renameSync(r,e)}catch(e){throw n.default.rmSync(r,{force:!0}),e}S(i.default.dirname(e))}let w=function(e){let t=n.default.openSync(e,"r");try{n.default.fsyncSync(t)}finally{n.default.closeSync(t)}},_=function(e,t){g(e,`${JSON.stringify(t,null,2)}
163
+ `)},A={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},b=[25,50,100,200,500],N=[100,250,500,1e3,0],R=[10,25,50,100],I="America/Los_Angeles";function O(e){try{return JSON.parse((0,n.readFileSync)(e,"utf8"))}catch{return null}}function L(e=Date.now()){let t=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:I,year:"numeric",month:"numeric"}).formatToParts(new Date(e)).map(e=>[e.type,e.value])),n=Number(t.year),r=Number(t.month),i=Date.UTC(n,r-1,1,8);for(let e=0;e<2;e++)i=Date.UTC(n,r-1,1,-function(e){let t=(new Intl.DateTimeFormat("en-US",{timeZone:I,timeZoneName:"shortOffset"}).formatToParts(new Date(e)).find(e=>"timeZoneName"===e.type)?.value||"GMT-8").match(/GMT([+-]\d+)(?::(\d+))?/);return t?Number(t[1]):-8}(i));return i}function x(e){let t,n=O(i.default.join(e,"scan-limits.json"))||{},r=(e,t)=>Number.isInteger(e)&&e>=0?e:t;return{daily:r(n.daily,50),monthly:r(n.monthly,250),profiles:(t=r(n.profiles,0)||50,R.filter(e=>e<=t).pop()??R[0]),pace:A[n.pace]?n.pace:"fast"}}let D="linkedin-activity.json",k="linkedin-cooldown.json",F="scan-limits.json",X=e=>!!e&&"object"==typeof e&&!Array.isArray(e),$=e=>void 0===e||Array.isArray(e)&&e.every(e=>"number"==typeof e&&Number.isFinite(e)&&e>=0),j=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0;function v(e,t){if(!X(t))return"it is not a JSON object";if(e===D){if(!$(t.searches)||!$(t.profiles))return"its record of searches is not a list of times"}else if(e===k){if(!j(t.until))return"its pause has no end time";if(void 0!==t.reason&&"string"!=typeof t.reason)return"its pause has a reason that is not text";if(void 0!==t.set_at&&!j(t.set_at))return"its pause has a start time that is not a time"}else if(e===F){if(void 0!==t.daily&&!b.includes(t.daily))return`its daily limit (${String(t.daily).slice(0,20)}) is not one Six Degrees offers`;if(void 0!==t.monthly&&!N.includes(t.monthly))return`its monthly limit (${String(t.monthly).slice(0,20)}) is not one Six Degrees offers`;if(void 0!==t.profiles&&!R.includes(t.profiles))return`its limit on profile views (${String(t.profiles).slice(0,20)}) is not one Six Degrees offers`}return null}function U(e=[],t=[]){let n=e=>e.reduce((e,t)=>e.set(t,(e.get(t)||0)+1),new Map),r=n(e);for(let[e,i]of n(t))i>(r.get(e)||0)&&r.set(e,i);return[...r].sort((e,t)=>e[0]-t[0]).flatMap(([e,t])=>Array(t).fill(e))}function C(e){if(void 0===e)return[];if(!Array.isArray(e))return null;let t=e.map(Number);return t.every(Number.isFinite)?t:null}let M=e=>{try{return(0,n.lstatSync)(e),!0}catch{return!1}};function P({dir:e,from:t}){let n=t=>i.default.join(e,t),r=e=>{let n=O(i.default.join(t,e));return X(n)&&!v(e,n)?n:null},a=r(D);if(a){let e=M(n(D))?O(n(D)):{},t=X(e)?C(e.searches):null,r=X(e)?C(e.profiles):null;t&&r&&_(n(D),{searches:U(t,a.searches),profiles:U(r,a.profiles)})}let o=r(k);if(o){let e=O(n(k)),t=Number.isFinite(Number(e?.until))?Number(e.until):-1/0;o.until>t&&_(n(k),{until:o.until,reason:o.reason??"LinkedIn pushed back",set_at:o.set_at??null})}let s=r(F);s&&!M(n(F))&&_(n(F),{daily:s.daily??50,monthly:s.monthly??250,profiles:s.profiles??50})}e.s(["budgetFileProblem",0,v,"liftCooldown",0,function(e){try{(0,n.unlinkSync)(i.default.join(e,"linkedin-cooldown.json"))}catch{}},"linkedinState",0,function(e,t=Date.now()){let r=x(e),a=function(e,t=Date.now()){let r=i.default.join(e,"linkedin-activity.json"),a=(0,n.existsSync)(r)?O(r):{searches:[],profiles:[]};if(!a||"object"!=typeof a)return{searchesToday:1/0,searchesMonth:0,profilesToday:1/0,unreadable:!0};let o=(Array.isArray(a.searches)?a.searches:[]).map(Number),s=(Array.isArray(a.profiles)?a.profiles:[]).map(Number),l=t/1e3-86400,c=L(t)/1e3;return{searchesToday:o.filter(e=>e>l).length,searchesMonth:o.filter(e=>e>=c).length,profilesToday:s.filter(e=>e>l).length}}(e,t),o=(e,t)=>e?Math.max(0,e-t):null;return{...a,limits:r,leftToday:o(r.daily,a.searchesToday),leftMonth:o(r.monthly,a.searchesMonth),profilesLeftToday:o(r.profiles,a.profilesToday),monthResets:function(e=Date.now()){let t=L(e);return L(t+3456e6)}(t),cooldown:function(e,t=Date.now()){let n=O(i.default.join(e,"linkedin-cooldown.json")),r=1e3*Number(n?.until);return n&&Number.isFinite(r)&&!(r<=t)?{until:r,reason:String(n.reason||"LinkedIn pushed back"),setAt:1e3*Number(n.set_at)||null}:null}(e,t)}},"mergeBudgetFiles",0,P,"writeLimits",0,function(e,{daily:t,monthly:r,profiles:a,pace:o}={}){var s;let l,c=x(e),u={daily:b.includes(t)?t:c.daily,monthly:N.includes(r)?r:c.monthly,profiles:R.includes(a)?a:c.profiles,pace:A[o]?o:c.pace};return s=i.default.join(e,"scan-limits.json"),l=`${s}.${process.pid}.${Date.now()}.tmp`,(0,n.writeFileSync)(l,JSON.stringify(u,null,2)),(0,n.renameSync)(l,s),u}],41238);var G=e.i(74533);let q=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,B="/avatars/";function Y(e){return"string"==typeof e&&e.startsWith(B)&&q.test(e.slice(B.length))?e:null}function W(e){return e.prepare(`SELECT DISTINCT profile_url AS profileUrl, profile_image_url AS imageUrl
164
164
  FROM linkedin_connections
165
165
  WHERE profile_image_url IS NOT NULL AND profile_image_url <> ''
166
166
  AND substr(profile_image_url, 1, 9) <> '/avatars/'
167
- ORDER BY profile_url`).all().filter(e=>e.profileUrl&&!q(e.imageUrl))}e.s(["AVATAR_FILE",0,P,"localPhoto",0,q,"waitingPhotoCount",0,function(e){return new Set(B(e).map(e=>e.profileUrl)).size},"waitingPhotos",0,B],98612);let Y=["bridge-progress.json","bridge-skips.json","bridge-unclear.json"],W=["scan-limits.json","linkedin-activity.json","linkedin-cooldown.json"],J=/^(?:social|social-messages|crm)-[\w-]+\.json$/,K=[...Y,...W],V="import-pending",H="before-import-",z=".export-",Q=".import-upload-",Z=".python-setup-",ee=[z,Q,Z],et=/^import-pending\.(done|cancelled)-/;function en(e){try{return(0,n.lstatSync)(e).isDirectory()?(0,n.readdirSync)(e):[]}catch{return[]}}function er(e,t=()=>!0){let r=0,a=0;for(let o of en(e))if(t(o))try{let t=(0,n.lstatSync)(i.default.join(e,o));t.isFile()&&(r++,a+=t.size)}catch{}return{count:r,bytes:a}}function ei(e,{now:t=Date.now(),maxAgeMs:r=36e5}={}){let a=[];try{a=(0,n.readdirSync)(e)}catch{return 0}let o=0;for(let s of a){let a=ee.some(e=>s.startsWith(e));if(!a&&!et.test(s))continue;let l=i.default.join(e,s);try{let e=(0,n.lstatSync)(l);if(!e.isDirectory()||a&&t-e.mtimeMs<r)continue;(0,n.rmSync)(l,{recursive:!0,force:!0}),o++}catch{}}return o}e.s(["BUDGET_FILES",0,W,"EXPORT_WORK_PREFIX",0,z,"IMPORT_BACKUP_PREFIX",0,H,"NETWORK_FILES",0,Y,"PENDING_DIR",0,V,"SETUP_WORK_PREFIX",0,Z,"SOCIAL_FILE",0,J,"TRAVELLING_FILES",0,K,"UPLOAD_WORK_PREFIX",0,Q,"folderReport",0,function({dir:e,dbFile:t,autoPrefix:r,inNetwork:a=null}){let o=i.default.join(e,"avatars");return{dataDir:e,dbFile:t,databaseBytes:["","-wal","-shm"].reduce((e,r)=>e+function(e){try{let t=(0,n.lstatSync)(e);return t.isFile()?t.size:0}catch{return 0}}(t+r),0),photos:er(o,e=>P.test(e)),photosInCopy:a?er(o,e=>P.test(e)&&a.has(e)):null,backups:function(e,{autoPrefix:t}={}){let r=[];try{r=(0,n.readdirSync)(e)}catch{return[]}let a=[];for(let o of r){let r;if(o.startsWith(".")||o.endsWith(".partial"))continue;let s=i.default.join(e,o);try{r=(0,n.lstatSync)(s)}catch{continue}(r.isFile()||r.isDirectory())&&a.push({name:o,bytes:r.isFile()?r.size:function e(t,r={left:5e4}){let a=0,o=[];try{o=(0,n.readdirSync)(t)}catch{return 0}for(let s of o){if(r.left--<=0)break;let o=i.default.join(t,s);try{let t=(0,n.lstatSync)(o);t.isDirectory()?a+=e(o,r):t.isFile()&&(a+=t.size)}catch{}}return a}(s),modifiedAt:r.mtimeMs,kind:t&&o.startsWith(t)?"auto":o.startsWith(H)?"import":"manual",folder:r.isDirectory()})}return a.sort((e,t)=>t.modifiedAt-e.modifiedAt||t.name.localeCompare(e.name))}(i.default.join(i.default.dirname(t),"backups"),{autoPrefix:r}),linkedinSignIn:(0,n.existsSync)(i.default.join(e,"chrome-profile"))}},"namesInFolder",0,en,"revealFolder",0,function(e,{platform:t=process.platform,spawnImpl:n=M.spawn,waitMs:r=3e3}={}){let i=function(e=process.platform){return"darwin"===e?"open":"linux"===e?"xdg-open":null}(t);return i?new Promise(t=>{let a,o=null,s=!1,l=e=>{s||(s=!0,clearTimeout(o),t(e))};try{a=n(i,[e],{stdio:"ignore",detached:!0})}catch(e){l({ok:!1,message:`It couldn't be opened (${e.message}).`});return}a.on("error",e=>l({ok:!1,message:"ENOENT"===e.code?`This computer has no ${i}, so there is no file browser to open it with.`:`It couldn't be opened (${e.message}).`})),a.on("exit",e=>l(0===e?{ok:!0}:{ok:!1,message:`The file browser didn't open (${i} stopped with code ${e}).`})),o=setTimeout(()=>{try{a.unref()}catch{}l({ok:!0})},r)}):Promise.resolve({ok:!1,message:"There is no file browser to open it with on this computer."})},"sweepLeftovers",0,ei],26525);var ea=e.x("node:sqlite",()=>require("node:sqlite"),!0),eo=e.i(66680);let es={sd_export_manifest:"CREATE TABLE sd_export_manifest (key TEXT PRIMARY KEY, value TEXT NOT NULL)",sd_export_files:"CREATE TABLE sd_export_files (path TEXT PRIMARY KEY, bytes BLOB NOT NULL, sha256 TEXT NOT NULL)"};function el(e){return(0,eo.createHash)("sha256").update(e).digest("hex")}function ec(e){return`'${String(e).replace(/'/g,"''")}'`}function eu(e){return[...e.matchAll(/CREATE TABLE IF NOT EXISTS (\w+)/g)].map(e=>e[1])}function ef(e){return[...e.matchAll(/CREATE (?:UNIQUE )?INDEX IF NOT EXISTS (\w+)/g)].map(e=>e[1])}function ed(e,t="main"){try{return e.prepare(`SELECT count(DISTINCT profile_url) AS n FROM ${t}.linkedin_connections`).get().n}catch{return 0}}function ep(e){return new Set(e.prepare(`SELECT DISTINCT substr(profile_image_url, 10) AS name FROM linkedin_connections
168
- WHERE substr(profile_image_url, 1, 9) = '/avatars/'`).all().map(e=>e.name))}e.s(["EXPORT_FORMAT",0,1,"EXPORT_TABLES",0,es,"appIndexes",0,ef,"appTables",0,eu,"buildExport",0,function(e,{dir:t,outFile:r,includePhotos:a=!0,includeSocial:o=!0,appVersion:s,schemaSql:l,now:c=new Date}){let u;e.exec(`VACUUM INTO ${ec(r)}`);let f=new ea.DatabaseSync(r);try{f.exec("PRAGMA journal_mode = DELETE"),f.exec(`${Object.values(es).join(";\n")};`),f.exec("BEGIN"),a||f.exec("UPDATE linkedin_connections SET profile_image_url = NULL WHERE profile_image_url LIKE '/avatars/%'"),f.exec("DELETE FROM app_meta WHERE key = 'last_import'");let e=f.prepare("INSERT INTO sd_export_files (path, bytes, sha256) VALUES (?, ?, ?)"),r=0,d=0,p=a?ep(f):null;for(let s of function(e,{includePhotos:t=!0,photos:r=null,includeSocial:a=!0}={}){let o=e=>{try{return(0,n.lstatSync)(e).isFile()}catch{return!1}},s=[];for(let t of K){let n=i.default.join(e,t);o(n)&&s.push({rel:t,abs:n})}if(a)for(let t of en(e).sort()){let n=i.default.join(e,t);J.test(t)&&o(n)&&s.push({rel:t,abs:n})}if(t)for(let t of en(i.default.join(e,"avatars")).sort()){if(!P.test(t)||r&&!r.has(t))continue;let n=i.default.join(e,"avatars",t);o(n)&&s.push({rel:`avatars/${t}`,abs:n})}return s}(t,{includePhotos:a,photos:p,includeSocial:o})){let t;try{t=(0,n.readFileSync)(s.abs)}catch{continue}e.run(s.rel,t,el(t)),d++,s.rel.startsWith("avatars/")&&r++}let h={};for(let e of eu(l))try{h[e]=f.prepare(`SELECT count(*) AS n FROM "${e}"`).get().n}catch{h[e]=0}let T="";try{T=f.prepare("SELECT value FROM app_meta WHERE key = 'scoring_version'").get()?.value??""}catch{}let m=ed(f),E={format:1,app_version:s,scoring_version:T,exported_at:c.toISOString(),include_photos:+!!a,people:m,photos:r,files:d,counts:JSON.stringify(h)},y=f.prepare("INSERT INTO sd_export_manifest (key, value) VALUES (?, ?)");for(let[e,t]of Object.entries(E))y.run(e,String(t));f.exec("COMMIT"),u={people:m,photos:r,files:d,counts:h}}catch(e){try{f.exec("ROLLBACK")}catch{}throw e}finally{f.close()}return{...u,bytes:(0,n.statSync)(r).size}},"countPeople",0,ed,"exportFileName",0,function(e=new Date){let t=e=>String(e).padStart(2,"0");return`Six Degrees backup ${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}.sixdegrees`},"referencedPhotos",0,ep,"sha256",0,el,"sqlString",0,ec],92375);let eh="/api/data/import",eT=Buffer.from("SQLite format 3\0","latin1");class em extends Error{constructor(e,{status:t=400,...n}={}){super(e),this.status=t,this.extra=n}}function eE(e){let t=e/1024/1024;return`${t<10?t.toFixed(1):Math.round(t)} MB`}let ey=e=>String(e).slice(0,80);async function eS(e,t,{declared:n}){let r=await (0,l.open)(t,"wx",384),i=0;try{if(e)for await(let t of e){let e=t instanceof Uint8Array?t:new Uint8Array(t);if((i+=e.byteLength)>n)throw new em("The file was bigger than the size it was sent with, so nothing was imported. Try again.");for(let t=0;t<e.byteLength;){let{bytesWritten:n}=await r.write(e,t,e.byteLength-t);t+=n}}}finally{await r.close()}if(i!==n)throw new em(`The file didn't arrive whole (${i} of ${n} bytes), so nothing was imported. Try again.`);return i}function eg(e){return"string"!=typeof e?null:K.includes(e)?"file":J.test(e)?"social":e.startsWith("avatars/")&&P.test(e.slice(8))?"photo":null}let ew=["users","linkedin_connections",...Object.keys(es)],e_=Object.freeze({tables:[],indexes:[],columns:{}}),eA=e=>{try{return(0,n.lstatSync)(e),!0}catch{return!1}};function eb(e){let t=Buffer.alloc(eT.length),r=(0,n.openSync)(e,"r");try{let e=(0,n.readSync)(r,t,0,t.length,0);return 0===e||e===t.length&&t.equals(eT)}finally{(0,n.closeSync)(r)}}function eN(e){try{return JSON.parse((0,n.readFileSync)(e,"utf8"))}catch{return null}}function eR(e,t){try{(0,n.renameSync)(e,t)}catch(r){if("EXDEV"!==r.code)throw r;(0,n.cpSync)(e,t,{recursive:!0}),(0,n.lstatSync)(t).isFile()&&S(t),(0,n.rmSync)(e,{recursive:!0,force:!0})}}function eI(e,t){let r=`${t}.partial`;(0,n.rmSync)(r,{force:!0});try{let a=new s.DatabaseSync(e);try{a.exec(`VACUUM INTO ${ec(r)}`)}finally{a.close()}S(r),(0,n.renameSync)(r,t),E(i.default.dirname(t))}catch(e){throw(0,n.rmSync)(r,{force:!0}),e}}function eO(e,t){let n=null,r=null;try{let i=(n=new s.DatabaseSync(t,{readOnly:!0})).prepare("PRAGMA quick_check").all();if(1!==i.length||"ok"!==i[0].quick_check)return!1;(r=new s.DatabaseSync(e)).exec("PRAGMA query_only = ON");let a=e=>e.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'").all().map(e=>e.name),o=(e,t)=>e.prepare(`SELECT count(*) AS n FROM "${t.replace(/"/g,'""')}"`).get().n,l=new Set(a(n));return a(r).every(e=>l.has(e)&&o(r,e)===o(n,e))}catch{return!1}finally{n?.close(),r?.close()}}function eL(e){let t=i.default.join(e,V);if(!eA(i.default.join(t,"READY")))return null;let r=eN(i.default.join(t,"READY"))||{},a=eN(i.default.join(t,"APPLYING")),o=null;try{o=(0,n.readFileSync)(i.default.join(t,"ERROR"),"utf8").trim()||null}catch{}let s=!!(a&&("start"!==a.phase||a.keptAsIs));return{...r,started:s,error:o}}function eD({dir:e,dbFile:t,now:r=new Date,copyDatabase:a=eI}){ei(e,{now:r.getTime()});let o=i.default.join(e,V);if(!eA(i.default.join(o,"READY")))return null;let l=eN(i.default.join(o,"READY"))||{},c=i.default.join(o,"APPLYING"),u=eN(c)||{stamp:r.toISOString().replace(/[:.]/g,"-"),phase:"start"},f=()=>y(c,JSON.stringify(u)),d=e=>{u.phase=e,f()},p=i.default.dirname(t),h=i.default.join(p,"backups"),T=i.default.join(h,`${H}${u.stamp}.sqlite`),m=i.default.join(h,`${H}${u.stamp}-files`),g=i.default.join(o,"data.sqlite"),w=["-wal","-shm","-journal"],_=()=>{for(let e of w)eA(`${t}${e}`)&&!eA(`${T}${e}`)&&eR(`${t}${e}`,`${T}${e}`);eA(t)&&!eA(T)&&eR(t,T),E(h),E(p)},A=!1,b=()=>{(0,n.mkdirSync)(h,{recursive:!0});try{if(!eb(t))throw Error("it is not a SQLite database");a(t,T),A=!0}catch(e){for(let e of["",...w])(0,n.rmSync)(`${T}${e}`,{force:!0});(0,n.rmSync)(`${T}.partial`,{force:!0}),u.keptAsIs=String(e.message||e).slice(0,200),f(),_()}};try{eA(c)||f();let r=["start","database-kept","files-kept"].includes(u.phase);if("start"===u.phase&&(!eA(g)||!function(e){let t=null;try{(t=new s.DatabaseSync(e)).exec("PRAGMA query_only = ON");let n=t.prepare("PRAGMA quick_check").all();return 1===n.length&&"ok"===n[0].quick_check&&1===t.prepare("SELECT count(*) AS n FROM sqlite_master WHERE type = 'table' AND name = 'linkedin_connections'").get().n}catch{return!1}finally{t?.close()}}(g)))throw Error("the imported network waiting here is damaged. Cancel the import and import the file again");if(r&&!u.keptAsIs&&eA(t)&&eb(t)&&function(e){let t=null;try{return(t=new s.DatabaseSync(e)).exec("PRAGMA locking_mode = EXCLUSIVE"),t.prepare("SELECT count(*) AS n FROM sqlite_master").get(),!1}catch(e){return 5===e.errcode||6===e.errcode||/database (table )?is locked/i.test(String(e.message))}finally{try{t?.close()}catch{}}}(t))throw Error("another copy of Six Degrees has this network open (one started with npx six-degrees or npm run dev, perhaps). Quit that copy, then restart this one");if(r&&u.keptAsIs&&_(),"start"===u.phase&&(!u.keptAsIs&&eA(t)&&b(),d("database-kept")),"database-kept"===u.phase){let t=()=>(0,n.mkdirSync)(m,{recursive:!0});for(let n of["avatars",...Y]){let r=i.default.join(e,n);eA(r)&&(t(),eR(r,i.default.join(m,n)))}if(en(i.default.join(o,"files")).some(e=>J.test(e)))for(let n of en(e).filter(e=>J.test(e)))t(),eR(i.default.join(e,n),i.default.join(m,n));for(let r of W){let a=i.default.join(e,r);eA(a)&&(0,n.lstatSync)(a).isFile()&&(t(),(0,n.copyFileSync)(a,i.default.join(m,r)),S(i.default.join(m,r)))}eA(m)&&E(m),E(h),E(e),d("files-kept")}if("files-kept"===u.phase){if(eA(g)){if(!u.keptAsIs&&eA(t)){let e=A&&eO(t,T);if(e||(b(),e=!!u.keptAsIs||eO(t,T)),!e)throw Error("the copy of the network here couldn't be checked, so it wasn't replaced")}for(let e of w)(0,n.rmSync)(`${t}${e}`,{force:!0});(0,n.mkdirSync)(p,{recursive:!0}),eR(g,t),E(p)}d("database-placed")}if("database-placed"===u.phase){let t=i.default.join(o,"files"),r=i.default.join(t,"avatars");if(eA(r)){for(let t of((0,n.mkdirSync)(i.default.join(e,"avatars"),{recursive:!0}),en(r)))eR(i.default.join(r,t),i.default.join(e,"avatars",t));E(i.default.join(e,"avatars"))}for(let n of Y){let r=i.default.join(t,n);eA(r)&&eR(r,i.default.join(e,n))}for(let n of en(t).filter(e=>J.test(e)))eR(i.default.join(t,n),i.default.join(e,n));C({dir:e,from:t}),E(e),d("done")}}catch(e){try{(0,n.writeFileSync)(i.default.join(o,"ERROR"),`${e.message}
169
- `)}catch{}throw e}let N=`${o}.done-${u.stamp}`;(0,n.renameSync)(o,N),(0,n.rmSync)(N,{recursive:!0,force:!0});let R=t=>{let n=i.default.relative(e,t);return!n||n.startsWith("..")||i.default.isAbsolute(n)?t:n};return{appliedAt:r.toISOString(),stagedAt:l.stagedAt??null,exportedAt:l.exportedAt??null,fromVersion:l.fromVersion??null,people:l.people??null,photos:l.photos??null,replacedPeople:l.replacedPeople??null,keptDatabase:eA(T)?R(T):null,keptFiles:eA(m)?R(m):null,keptAsIs:u.keptAsIs??null}}function ex(e,t){e.prepare(`INSERT INTO app_meta (key, value) VALUES ('last_import', ?)
170
- ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(JSON.stringify(t))}function ek(){let e=process.env.SIX_DEGREES_HOME||i.default.join((0,r.homedir)(),".six-degrees");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e}e.s(["IMPORT_ROUTE",0,eh,"ImportError",0,em,"MAX_IMPORT_BYTES",0,0x10000000,"admitImport",0,function(e,{env:t,scanRunning:n,pending:r,currentPeople:i,max:a=0x10000000}){let o=h({method:e.method,pathname:eh,headers:e.headers,env:t});if(o)return{refused:o};let s=Number(e.headers.get("x-six-degrees-size")),l=i(),c=function({scanRunning:e,pending:t,declared:n,currentPeople:r=0,confirmedPeople:i,max:a=0x10000000}){return e?new em(`${(0,T.runningNow)(e)}. Let it finish, or stop it on the Scan page, then import.`,{status:409}):t?new em("An import is already waiting to finish. Restart Six Degrees to finish it, or cancel it first.",{status:409}):!Number.isSafeInteger(n)||n<=0?new em("Choose a Six Degrees export (a .sixdegrees file) to import."):n>a?new em(`That file is ${eE(n)}. This copy can import files up to ${eE(a)}.`,{status:413}):r>0&&i!==r?new em(`This copy already has ${r.toLocaleString("en-US")} people. Confirm that the import replaces them.`,{status:409,needsConfirm:!0,people:r}):null}({scanRunning:n(),pending:r(),declared:s,currentPeople:l,confirmedPeople:Number(e.headers.get("x-six-degrees-replace")),max:a});return c?{refused:{status:c.status,error:c.message,...c.extra}}:{declared:s,currentPeople:l}},"applyPendingImport",0,eD,"cancelPendingImport",0,function(e){let t=eL(e);if(!t)return{cancelled:!1,reason:"none"};if(t.started)return{cancelled:!1,reason:"started"};let r=i.default.join(e,V),a=`${r}.cancelled-${Date.now()}`;return(0,n.renameSync)(r,a),(0,n.rmSync)(a,{recursive:!0,force:!0}),{cancelled:!0}},"lastImport",0,function(e){try{let t=e.prepare("SELECT value FROM app_meta WHERE key = 'last_import'").get()?.value,n=t?JSON.parse(t):null;return n&&"object"==typeof n?n:null}catch{return null}},"pendingImport",0,eL,"receiveUpload",0,eS,"recordImport",0,ex,"restartAdvice",0,function({kind:e,code:t,dataDir:n=null}){let r="It finishes the import as it starts.";if(t)return{canRestart:!0,how:"Click Restart now to finish it: Six Degrees restarts, which takes a few seconds, and finishes the import as it starts."};if("mac-app"===e)return{canRestart:!1,how:`Quit Six Degrees (⌘Q) and open it again. ${r}`};if("npm"===e){let e=n?` --data-dir '${String(n).replace(/'/g,"'\\''")}'`:"";return{canRestart:!1,how:`Stop Six Degrees with Ctrl-C in its Terminal window, then start it again. ${r}`,command:`npx six-degrees${e}`}}return"source"===e?{canRestart:!1,how:`Stop Six Degrees with Ctrl-C in its Terminal window, then start it again. ${r}`,command:"npm run start:packaged"}:{canRestart:!1,how:`Stop the server with Ctrl-C and start it again the way you started it. ${r}`}},"restartCodeFrom",0,function(e=process.env){let t=Number(e.SIX_DEGREES_RESTART_CODE);return Number.isInteger(t)&&t>1&&t<126?t:null},"stageImport",0,function(e,{dir:t,applySchema:r,schemaSql:a,appVersion:o,replacedPeople:l=0,now:u=new Date,retired:f=e_}){let d=function(e,{applySchema:t,schemaSql:r,appVersion:i,retired:a=e_}){let o,l=Buffer.alloc(100),u=0,f=(0,n.openSync)(e,"r");try{u=(0,n.readSync)(f,l,0,100,0)}finally{(0,n.closeSync)(f)}if(u<100||!l.subarray(0,16).equals(eT))throw new em("This isn't a Six Degrees export (a .sixdegrees file), so nothing was imported.");try{o=new s.DatabaseSync(e,{readOnly:!0})}catch(e){throw new em(`This file couldn't be opened (${e.message}), so nothing was imported.`)}try{let e;o.exec("PRAGMA trusted_schema = OFF; PRAGMA query_only = ON; PRAGMA cell_size_check = ON;");try{e=o.prepare("PRAGMA integrity_check").all()}catch(t){e=[{integrity_check:t.message}]}if(1!==e.length||"ok"!==e[0].integrity_check)throw new em("This file is damaged (its database fails SQLite's own check), so nothing was imported. Export it again on the other computer.");let n=function(e,t){let n=new s.DatabaseSync(":memory:");try{e(n),n.exec(`${Object.values(es).join(";\n")};`);let r=new Map;for(let e of[...eu(t),...Object.keys(es)]){let t=n.prepare(`PRAGMA table_info("${e}")`).all();r.set(e,{required:t.filter(e=>e.pk>0||e.notnull&&null===e.dflt_value).map(e=>e.name),allowed:new Set(t.map(e=>e.name))})}return{tables:r,indexes:new Set(ef(t))}}finally{n.close()}}(t,r),l=(e,t)=>new em(`This file holds something a Six Degrees export never does (the ${ey(e)} “${ey(t)}”), so nothing was imported.`),u=new Map(o.prepare("PRAGMA main.table_list").all().map(e=>[e.name,e])),f=o.prepare("SELECT type, name, tbl_name FROM sqlite_master").all(),d=e=>n.tables.has(e)||a.tables.includes(e);for(let e of f){if("table"===e.type){let t=u.get(e.name)?.type;if("table"!==t)throw l(`${t||"unknown"} table`,e.name);if(d(e.name))continue}if(!("index"===e.type&&(n.indexes.has(e.name)||a.indexes.includes(e.name)||String(e.name).startsWith("sqlite_autoindex_")&&d(e.tbl_name))))throw l(e.type,e.name)}let p=new Set(f.filter(e=>"table"===e.type).map(e=>e.name));if(!p.has("sd_export_manifest")||!p.has("sd_export_files"))throw new em("This is a database but not a Six Degrees export, so nothing was imported. Make one on the other computer with Settings → Your data → Save a copy.");for(let[e,{required:t,allowed:r}]of n.tables){if(!p.has(e)){if(!ew.includes(e))continue;throw new em(`This export has no “${e}” table, so nothing was imported.`)}let n=o.prepare(`PRAGMA table_xinfo("${e}")`).all(),i=n.map(e=>e.name),s=a.columns[e]||[];if(!(0===u.get(e).wr&&n.every(e=>0===e.hidden&&(r.has(e.name)||s.includes(e.name)))&&t.every(e=>i.includes(e))))throw new em(`This export's “${e}” table isn't laid out the way Six Degrees makes it, so nothing was imported.`)}let h=Object.fromEntries(o.prepare("SELECT key, value FROM sd_export_manifest").all().map(e=>[e.key,e.value])),T=Number(h.format);if(1!==T)throw new em(Number.isInteger(T)&&T>1?"This export was made by a newer Six Degrees than this copy. Update this copy first, then import it.":"This file's export details aren't ones Six Degrees writes, so nothing was imported.");let m=String(h.app_version??"");if(!/^v?\d+\.\d+\.\d+/.test(m))throw new em("This file doesn't say which version of Six Degrees made it, so nothing was imported.");if((0,c.compareVersions)(m,i)>0)throw new em(`This file comes from Six Degrees ${ey(m)}, which is newer than this copy (${i}). Update this copy first, then import it.`);let E=null;try{E=JSON.parse(h.counts)}catch{}if(!E||"object"!=typeof E||Array.isArray(E))throw new em("This file's export details aren't ones Six Degrees writes, so nothing was imported.");let y=(e,t,n)=>new em(`This file's ${e} doesn't match its own export details (${t}, where they say ${ey(n)}), so nothing was imported. Export it again on the other computer.`);for(let e of p){if(Object.hasOwn(es,e))continue;let t=o.prepare(`SELECT count(*) AS n FROM "${e}"`).get().n;if(!Object.hasOwn(E,e)||Number(E[e])!==t)throw y(`“${e}” table`,`${t} rows`,E[e]??"nothing")}for(let[e,t]of Object.entries(E))if(!p.has(e)&&0!==Number(t))throw y(`“${ey(e)}” table`,"no table",t);let S=0,g=0,w=o.prepare("SELECT bytes, sha256 FROM sd_export_files WHERE path = ?");for(let{path:e}of o.prepare("SELECT path FROM sd_export_files").all()){let t,n=eg(e);if(!n)throw new em(`This file carries “${ey(e)}”, which an export never includes, so nothing was imported.`);let r=w.get(e);if(!(r?.bytes instanceof Uint8Array)||el(r.bytes)!==r.sha256)throw new em(`“${e}” inside this file is damaged (it doesn't match its checksum), so nothing was imported.`);if("photo"===n){S++;continue}try{t=JSON.parse(Buffer.from(r.bytes).toString("utf8"))}catch{t=void 0}if(!t||"object"!=typeof t||Array.isArray(t))throw new em(`“${e}” inside this file can't be read, so nothing was imported.`);let i=W.includes(e)?$(e,t):null;if(i)throw new em(`“${e}” inside this file can't be used (${i}), so nothing was imported.`);g++}if(Number(h.files)!==S+g)throw y("list of files",`${S+g} files`,h.files??"nothing");return{fromVersion:m,exportedAt:h.exported_at||null,people:ed(o),photos:S,files:g}}catch(e){if(e instanceof em)throw e;throw new em(`This file couldn't be read as a Six Degrees export (${ey(e.message)}), so nothing was imported.`)}finally{o.close()}}(e,{applySchema:r,schemaSql:a,appVersion:o,retired:f}),p=i.default.dirname(e),h=i.default.join(p,"files"),T=i.default.join(p,"data.sqlite"),m=[],y=new s.DatabaseSync(T);try{y.exec("PRAGMA trusted_schema = OFF; PRAGMA cell_size_check = ON;"),r(y),y.exec(`ATTACH DATABASE ${ec(e)} AS up`);try{for(let e of(y.exec("BEGIN"),eu(a))){let t=new Set(y.prepare(`PRAGMA main.table_info("${e}")`).all().map(e=>e.name)),n=y.prepare(`PRAGMA up.table_info("${e}")`).all().filter(e=>t.has(e.name)).map(e=>`"${e.name}"`).join(", ");n&&y.exec(`INSERT INTO main."${e}" (${n}) SELECT ${n} FROM up."${e}" ORDER BY rowid`)}y.exec("COMMIT")}catch(e){try{y.exec("ROLLBACK")}catch{}throw new em(`This export's network doesn't fit this copy's database (${e.message}), so nothing was imported.`)}(0,n.mkdirSync)(i.default.join(h,"avatars"),{recursive:!0});let t=y.prepare("SELECT bytes, sha256 FROM up.sd_export_files WHERE path = ?");for(let{path:e}of y.prepare("SELECT path FROM up.sd_export_files").all()){let r=t.get(e),a=eg(e);if(!a||!(r?.bytes instanceof Uint8Array)||el(r.bytes)!==r.sha256)throw new em(`“${ey(e)}” inside this file is damaged, so nothing was imported.`);(0,n.writeFileSync)(i.default.join(h,e),r.bytes,{flag:"wx"}),("file"===a||"social"===a)&&m.push(i.default.join(h,e))}}finally{y.close()}(0,n.rmSync)(e,{force:!0});let g={stagedAt:u.toISOString(),exportedAt:d.exportedAt,fromVersion:d.fromVersion,people:d.people,photos:d.photos,replacedPeople:l};for(let e of((0,n.writeFileSync)(i.default.join(p,"READY"),`${JSON.stringify(g,null,2)}
171
- `),[T,...m,i.default.join(p,"READY")]))S(e);for(let e of[i.default.join(h,"avatars"),h,p])E(e);return(0,n.renameSync)(p,i.default.join(t,V)),E(t),g}],19041);let eF={users:["sectors","goals","company_prestige_config"],user_profile:["sectors","goals","company_prestige_config"],linkedin_connections:["influence_signals"],notifications:["data"],queue_items:[],user_stats:[]},eX={linkedin_connections:["is_catalyst"],notifications:["seen"],users:[],user_profile:[],queue_items:[],user_stats:[]},e$=null,ej=Symbol.for("six-degrees.db-opened");function ev(){return process.env.SIX_DEGREES_DB||i.default.join(ek(),"six-degrees.sqlite")}function eU(e){e.exec(a),function(e){for(let[t,n,r]of eC)e.prepare(`PRAGMA table_info(${t})`).all().some(e=>e.name===n)||e.exec(`ALTER TABLE ${t} ADD COLUMN ${n} ${r}`)}(e)}let eC=[["linkedin_connections","score_why","TEXT"],["linkedin_connections","mutual_count","INTEGER"]],eM="auto-before-";e.s(["AUTO_BACKUP_PREFIX",0,eM,"applySchema",0,eU,"dataDir",0,ek,"dbFile",0,ev,"decodeRow",0,function(e,t){if(!t)return t;let n={...t};for(let t of eF[e]||[])if("string"==typeof n[t])try{n[t]=JSON.parse(n[t])}catch{}for(let t of eX[e]||[])(0===n[t]||1===n[t])&&(n[t]=!!n[t]);return n},"encodeValue",0,function(e,t,n){return void 0===n?null:(eF[e]||[]).includes(t)?null===n?null:JSON.stringify(n):(eX[e]||[]).includes(t)?null===n?null:+!!n:"boolean"==typeof n?+!!n:null!==n&&"object"==typeof n?JSON.stringify(n):n},"getDb",0,function(){if(e$)return e$;let e=ev(),r=null;if(!globalThis[ej])try{(r=eD({dir:ek(),dbFile:e}))&&console.log(`Six Degrees: finished the import (${r.people} people). What was here before: ${r.keptDatabase||"nothing to keep"}.`)}catch(e){console.error(`Six Degrees: could not finish the import (will try again next start): ${e.message}`)}globalThis[ej]=!0,e$=new t.DatabaseSync(e);try{let t=function(e,{dir:t,version:r,keep:a=5,now:o=new Date}){let s=i.default.join(t,"app-version"),l=null;try{l=(0,n.readFileSync)(s,"utf8").trim()}catch{}if(l===r)return null;let c=null;if(e.prepare("SELECT count(*) AS n FROM sqlite_master WHERE type = 'table' AND name = 'linkedin_connections'").get().n>0){let s=i.default.join(t,"backups");(0,n.mkdirSync)(s,{recursive:!0});let l=o.toISOString().replace(/[:.]/g,"-");for(let{f:t}of(c=i.default.join(s,`${eM}${r}-${l}.sqlite`),e.exec(`VACUUM INTO '${c.replace(/'/g,"''")}'`),(0,n.readdirSync)(s).filter(e=>e.startsWith(eM)&&e.endsWith(".sqlite")).map(e=>({f:e,at:(0,n.statSync)(i.default.join(s,e)).mtimeMs})).sort((e,t)=>t.at-e.at||t.f.localeCompare(e.f)).slice(a)))(0,n.rmSync)(i.default.join(s,t),{force:!0})}return(0,n.writeFileSync)(s,`${r}
172
- `),c}(e$,{dir:i.default.dirname(e),version:o});t&&console.log(`Six Degrees ${o}: backed up your data first → ${t}`)}catch(e){console.error(`Six Degrees: could not back up your data before ${o} (will try again next start): ${e.message}`)}if(eU(e$),r)try{ex(e$,r)}catch{}return e$},"newId",0,function(){return crypto.randomUUID()},"nowIso",0,function(){return new Date().toISOString()}],88431)}];
167
+ ORDER BY profile_url`).all().filter(e=>e.profileUrl&&!Y(e.imageUrl))}e.s(["AVATAR_FILE",0,q,"localPhoto",0,Y,"waitingPhotoCount",0,function(e){return new Set(W(e).map(e=>e.profileUrl)).size},"waitingPhotos",0,W],98612);let J=["bridge-progress.json","bridge-skips.json","bridge-unclear.json"],K=["scan-limits.json","linkedin-activity.json","linkedin-cooldown.json"],V=/^(?:social|social-messages|crm)-[\w-]+\.json$/,H=[...J,...K],z="import-pending",Q="before-import-",Z=".export-",ee=".import-upload-",et=".python-setup-",en=[Z,ee,et],er=/^import-pending\.(done|cancelled)-/;function ei(e){try{return(0,n.lstatSync)(e).isDirectory()?(0,n.readdirSync)(e):[]}catch{return[]}}function ea(e,t=()=>!0){let r=0,a=0;for(let o of ei(e))if(t(o))try{let t=(0,n.lstatSync)(i.default.join(e,o));t.isFile()&&(r++,a+=t.size)}catch{}return{count:r,bytes:a}}function eo(e,{now:t=Date.now(),maxAgeMs:r=36e5}={}){let a=[];try{a=(0,n.readdirSync)(e)}catch{return 0}let o=0;for(let s of a){let a=en.some(e=>s.startsWith(e));if(!a&&!er.test(s))continue;let l=i.default.join(e,s);try{let e=(0,n.lstatSync)(l);if(!e.isDirectory()||a&&t-e.mtimeMs<r)continue;(0,n.rmSync)(l,{recursive:!0,force:!0}),o++}catch{}}return o}e.s(["BUDGET_FILES",0,K,"EXPORT_WORK_PREFIX",0,Z,"IMPORT_BACKUP_PREFIX",0,Q,"NETWORK_FILES",0,J,"PENDING_DIR",0,z,"SETUP_WORK_PREFIX",0,et,"SOCIAL_FILE",0,V,"TRAVELLING_FILES",0,H,"UPLOAD_WORK_PREFIX",0,ee,"folderReport",0,function({dir:e,dbFile:t,autoPrefix:r,inNetwork:a=null}){let o=i.default.join(e,"avatars");return{dataDir:e,dbFile:t,databaseBytes:["","-wal","-shm"].reduce((e,r)=>e+function(e){try{let t=(0,n.lstatSync)(e);return t.isFile()?t.size:0}catch{return 0}}(t+r),0),photos:ea(o,e=>q.test(e)),photosInCopy:a?ea(o,e=>q.test(e)&&a.has(e)):null,backups:function(e,{autoPrefix:t}={}){let r=[];try{r=(0,n.readdirSync)(e)}catch{return[]}let a=[];for(let o of r){let r;if(o.startsWith(".")||o.endsWith(".partial"))continue;let s=i.default.join(e,o);try{r=(0,n.lstatSync)(s)}catch{continue}(r.isFile()||r.isDirectory())&&a.push({name:o,bytes:r.isFile()?r.size:function e(t,r={left:5e4}){let a=0,o=[];try{o=(0,n.readdirSync)(t)}catch{return 0}for(let s of o){if(r.left--<=0)break;let o=i.default.join(t,s);try{let t=(0,n.lstatSync)(o);t.isDirectory()?a+=e(o,r):t.isFile()&&(a+=t.size)}catch{}}return a}(s),modifiedAt:r.mtimeMs,kind:t&&o.startsWith(t)?"auto":o.startsWith(Q)?"import":"manual",folder:r.isDirectory()})}return a.sort((e,t)=>t.modifiedAt-e.modifiedAt||t.name.localeCompare(e.name))}(i.default.join(i.default.dirname(t),"backups"),{autoPrefix:r}),linkedinSignIn:(0,n.existsSync)(i.default.join(e,"chrome-profile"))}},"namesInFolder",0,ei,"revealFolder",0,function(e,{platform:t=process.platform,spawnImpl:n=G.spawn,waitMs:r=3e3}={}){let i=function(e=process.platform){return"darwin"===e?"open":"linux"===e?"xdg-open":null}(t);return i?new Promise(t=>{let a,o=null,s=!1,l=e=>{s||(s=!0,clearTimeout(o),t(e))};try{a=n(i,[e],{stdio:"ignore",detached:!0})}catch(e){l({ok:!1,message:`It couldn't be opened (${e.message}).`});return}a.on("error",e=>l({ok:!1,message:"ENOENT"===e.code?`This computer has no ${i}, so there is no file browser to open it with.`:`It couldn't be opened (${e.message}).`})),a.on("exit",e=>l(0===e?{ok:!0}:{ok:!1,message:`The file browser didn't open (${i} stopped with code ${e}).`})),o=setTimeout(()=>{try{a.unref()}catch{}l({ok:!0})},r)}):Promise.resolve({ok:!1,message:"There is no file browser to open it with on this computer."})},"sweepLeftovers",0,eo],26525);var es=e.x("node:sqlite",()=>require("node:sqlite"),!0),el=e.i(66680);let ec={sd_export_manifest:"CREATE TABLE sd_export_manifest (key TEXT PRIMARY KEY, value TEXT NOT NULL)",sd_export_files:"CREATE TABLE sd_export_files (path TEXT PRIMARY KEY, bytes BLOB NOT NULL, sha256 TEXT NOT NULL)"};function eu(e){return(0,el.createHash)("sha256").update(e).digest("hex")}function ef(e){return`'${String(e).replace(/'/g,"''")}'`}function ed(e){return[...e.matchAll(/CREATE TABLE IF NOT EXISTS (\w+)/g)].map(e=>e[1])}function ep(e){return[...e.matchAll(/CREATE (?:UNIQUE )?INDEX IF NOT EXISTS (\w+)/g)].map(e=>e[1])}function eh(e,t="main"){try{return e.prepare(`SELECT count(DISTINCT profile_url) AS n FROM ${t}.linkedin_connections`).get().n}catch{return 0}}function eT(e){return new Set(e.prepare(`SELECT DISTINCT substr(profile_image_url, 10) AS name FROM linkedin_connections
168
+ WHERE substr(profile_image_url, 1, 9) = '/avatars/'`).all().map(e=>e.name))}e.s(["EXPORT_FORMAT",0,1,"EXPORT_TABLES",0,ec,"appIndexes",0,ep,"appTables",0,ed,"buildExport",0,function(e,{dir:t,outFile:r,includePhotos:a=!0,includeSocial:o=!0,appVersion:s,schemaSql:l,now:c=new Date}){let u;e.exec(`VACUUM INTO ${ef(r)}`);let f=new es.DatabaseSync(r);try{f.exec("PRAGMA journal_mode = DELETE"),f.exec(`${Object.values(ec).join(";\n")};`),f.exec("BEGIN"),a||f.exec("UPDATE linkedin_connections SET profile_image_url = NULL WHERE profile_image_url LIKE '/avatars/%'"),f.exec("DELETE FROM app_meta WHERE key = 'last_import'");let e=f.prepare("INSERT INTO sd_export_files (path, bytes, sha256) VALUES (?, ?, ?)"),r=0,d=0,p=a?eT(f):null;for(let s of function(e,{includePhotos:t=!0,photos:r=null,includeSocial:a=!0}={}){let o=e=>{try{return(0,n.lstatSync)(e).isFile()}catch{return!1}},s=[];for(let t of H){let n=i.default.join(e,t);o(n)&&s.push({rel:t,abs:n})}if(a)for(let t of ei(e).sort()){let n=i.default.join(e,t);V.test(t)&&o(n)&&s.push({rel:t,abs:n})}if(t)for(let t of ei(i.default.join(e,"avatars")).sort()){if(!q.test(t)||r&&!r.has(t))continue;let n=i.default.join(e,"avatars",t);o(n)&&s.push({rel:`avatars/${t}`,abs:n})}return s}(t,{includePhotos:a,photos:p,includeSocial:o})){let t;try{t=(0,n.readFileSync)(s.abs)}catch{continue}e.run(s.rel,t,eu(t)),d++,s.rel.startsWith("avatars/")&&r++}let h={};for(let e of ed(l))try{h[e]=f.prepare(`SELECT count(*) AS n FROM "${e}"`).get().n}catch{h[e]=0}let T="";try{T=f.prepare("SELECT value FROM app_meta WHERE key = 'scoring_version'").get()?.value??""}catch{}let m=eh(f),E={format:1,app_version:s,scoring_version:T,exported_at:c.toISOString(),include_photos:+!!a,people:m,photos:r,files:d,counts:JSON.stringify(h)},y=f.prepare("INSERT INTO sd_export_manifest (key, value) VALUES (?, ?)");for(let[e,t]of Object.entries(E))y.run(e,String(t));f.exec("COMMIT"),u={people:m,photos:r,files:d,counts:h}}catch(e){try{f.exec("ROLLBACK")}catch{}throw e}finally{f.close()}return{...u,bytes:(0,n.statSync)(r).size}},"countPeople",0,eh,"exportFileName",0,function(e=new Date){let t=e=>String(e).padStart(2,"0");return`Six Degrees backup ${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}.sixdegrees`},"referencedPhotos",0,eT,"sha256",0,eu,"sqlString",0,ef],92375);let em="/api/data/import",eE=Buffer.from("SQLite format 3\0","latin1");class ey extends Error{constructor(e,{status:t=400,...n}={}){super(e),this.status=t,this.extra=n}}function eS(e){let t=e/1024/1024;return`${t<10?t.toFixed(1):Math.round(t)} MB`}let eg=e=>String(e).slice(0,80);async function ew(e,t,{declared:n}){let r=await (0,l.open)(t,"wx",384),i=0;try{if(e)for await(let t of e){let e=t instanceof Uint8Array?t:new Uint8Array(t);if((i+=e.byteLength)>n)throw new ey("The file was bigger than the size it was sent with, so nothing was imported. Try again.");for(let t=0;t<e.byteLength;){let{bytesWritten:n}=await r.write(e,t,e.byteLength-t);t+=n}}}finally{await r.close()}if(i!==n)throw new ey(`The file didn't arrive whole (${i} of ${n} bytes), so nothing was imported. Try again.`);return i}function e_(e){return"string"!=typeof e?null:H.includes(e)?"file":V.test(e)?"social":e.startsWith("avatars/")&&q.test(e.slice(8))?"photo":null}let eA=["users","linkedin_connections",...Object.keys(ec)],eb=Object.freeze({tables:[],indexes:[],columns:{}}),eN=e=>{try{return(0,n.lstatSync)(e),!0}catch{return!1}};function eR(e){let t=Buffer.alloc(eE.length),r=(0,n.openSync)(e,"r");try{let e=(0,n.readSync)(r,t,0,t.length,0);return 0===e||e===t.length&&t.equals(eE)}finally{(0,n.closeSync)(r)}}function eI(e){try{return JSON.parse((0,n.readFileSync)(e,"utf8"))}catch{return null}}function eO(e,t){try{(0,n.renameSync)(e,t)}catch(r){if("EXDEV"!==r.code)throw r;(0,n.cpSync)(e,t,{recursive:!0}),(0,n.lstatSync)(t).isFile()&&w(t),(0,n.rmSync)(e,{recursive:!0,force:!0})}}function eL(e,t){let r=`${t}.partial`;(0,n.rmSync)(r,{force:!0});try{let a=new s.DatabaseSync(e);try{a.exec(`VACUUM INTO ${ef(r)}`)}finally{a.close()}w(r),(0,n.renameSync)(r,t),S(i.default.dirname(t))}catch(e){throw(0,n.rmSync)(r,{force:!0}),e}}function ex(e,t){let n=null,r=null;try{let i=(n=new s.DatabaseSync(t,{readOnly:!0})).prepare("PRAGMA quick_check").all();if(1!==i.length||"ok"!==i[0].quick_check)return!1;(r=new s.DatabaseSync(e)).exec("PRAGMA query_only = ON");let a=e=>e.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'").all().map(e=>e.name),o=(e,t)=>e.prepare(`SELECT count(*) AS n FROM "${t.replace(/"/g,'""')}"`).get().n,l=new Set(a(n));return a(r).every(e=>l.has(e)&&o(r,e)===o(n,e))}catch{return!1}finally{n?.close(),r?.close()}}function eD(e){let t=i.default.join(e,z);if(!eN(i.default.join(t,"READY")))return null;let r=eI(i.default.join(t,"READY"))||{},a=eI(i.default.join(t,"APPLYING")),o=null;try{o=(0,n.readFileSync)(i.default.join(t,"ERROR"),"utf8").trim()||null}catch{}let s=!!(a&&("start"!==a.phase||a.keptAsIs));return{...r,started:s,error:o}}function ek({dir:e,dbFile:t,now:r=new Date,copyDatabase:a=eL}){eo(e,{now:r.getTime()});let o=i.default.join(e,z);if(!eN(i.default.join(o,"READY")))return null;let l=eI(i.default.join(o,"READY"))||{},c=i.default.join(o,"APPLYING"),u=eI(c)||{stamp:r.toISOString().replace(/[:.]/g,"-"),phase:"start"},f=()=>g(c,JSON.stringify(u)),d=e=>{u.phase=e,f()},p=i.default.dirname(t),h=i.default.join(p,"backups"),T=i.default.join(h,`${Q}${u.stamp}.sqlite`),m=i.default.join(h,`${Q}${u.stamp}-files`),E=i.default.join(o,"data.sqlite"),y=["-wal","-shm","-journal"],_=()=>{for(let e of y)eN(`${t}${e}`)&&!eN(`${T}${e}`)&&eO(`${t}${e}`,`${T}${e}`);eN(t)&&!eN(T)&&eO(t,T),S(h),S(p)},A=!1,b=()=>{(0,n.mkdirSync)(h,{recursive:!0});try{if(!eR(t))throw Error("it is not a SQLite database");a(t,T),A=!0}catch(e){for(let e of["",...y])(0,n.rmSync)(`${T}${e}`,{force:!0});(0,n.rmSync)(`${T}.partial`,{force:!0}),u.keptAsIs=String(e.message||e).slice(0,200),f(),_()}};try{eN(c)||f();let r=["start","database-kept","files-kept"].includes(u.phase);if("start"===u.phase&&(!eN(E)||!function(e){let t=null;try{(t=new s.DatabaseSync(e)).exec("PRAGMA query_only = ON");let n=t.prepare("PRAGMA quick_check").all();return 1===n.length&&"ok"===n[0].quick_check&&1===t.prepare("SELECT count(*) AS n FROM sqlite_master WHERE type = 'table' AND name = 'linkedin_connections'").get().n}catch{return!1}finally{t?.close()}}(E)))throw Error("the imported network waiting here is damaged. Cancel the import and import the file again");if(r&&!u.keptAsIs&&eN(t)&&eR(t)&&function(e){let t=null;try{return(t=new s.DatabaseSync(e)).exec("PRAGMA locking_mode = EXCLUSIVE"),t.prepare("SELECT count(*) AS n FROM sqlite_master").get(),!1}catch(e){return 5===e.errcode||6===e.errcode||/database (table )?is locked/i.test(String(e.message))}finally{try{t?.close()}catch{}}}(t))throw Error("another copy of Six Degrees has this network open (one started with npx six-degrees or npm run dev, perhaps). Quit that copy, then restart this one");if(r&&u.keptAsIs&&_(),"start"===u.phase&&(!u.keptAsIs&&eN(t)&&b(),d("database-kept")),"database-kept"===u.phase){let t=()=>(0,n.mkdirSync)(m,{recursive:!0});for(let n of["avatars",...J]){let r=i.default.join(e,n);eN(r)&&(t(),eO(r,i.default.join(m,n)))}if(ei(i.default.join(o,"files")).some(e=>V.test(e)))for(let n of ei(e).filter(e=>V.test(e)))t(),eO(i.default.join(e,n),i.default.join(m,n));for(let r of K){let a=i.default.join(e,r);eN(a)&&(0,n.lstatSync)(a).isFile()&&(t(),(0,n.copyFileSync)(a,i.default.join(m,r)),w(i.default.join(m,r)))}eN(m)&&S(m),S(h),S(e),d("files-kept")}if("files-kept"===u.phase){if(eN(E)){if(!u.keptAsIs&&eN(t)){let e=A&&ex(t,T);if(e||(b(),e=!!u.keptAsIs||ex(t,T)),!e)throw Error("the copy of the network here couldn't be checked, so it wasn't replaced")}for(let e of y)(0,n.rmSync)(`${t}${e}`,{force:!0});(0,n.mkdirSync)(p,{recursive:!0}),eO(E,t),S(p)}d("database-placed")}if("database-placed"===u.phase){let t=i.default.join(o,"files"),r=i.default.join(t,"avatars");if(eN(r)){for(let t of((0,n.mkdirSync)(i.default.join(e,"avatars"),{recursive:!0}),ei(r)))eO(i.default.join(r,t),i.default.join(e,"avatars",t));S(i.default.join(e,"avatars"))}for(let n of J){let r=i.default.join(t,n);eN(r)&&eO(r,i.default.join(e,n))}for(let n of ei(t).filter(e=>V.test(e)))eO(i.default.join(t,n),i.default.join(e,n));P({dir:e,from:t}),S(e),d("done")}}catch(e){try{(0,n.writeFileSync)(i.default.join(o,"ERROR"),`${e.message}
169
+ `)}catch{}throw e}let N=`${o}.done-${u.stamp}`;(0,n.renameSync)(o,N),(0,n.rmSync)(N,{recursive:!0,force:!0});let R=t=>{let n=i.default.relative(e,t);return!n||n.startsWith("..")||i.default.isAbsolute(n)?t:n};return{appliedAt:r.toISOString(),stagedAt:l.stagedAt??null,exportedAt:l.exportedAt??null,fromVersion:l.fromVersion??null,people:l.people??null,photos:l.photos??null,replacedPeople:l.replacedPeople??null,keptDatabase:eN(T)?R(T):null,keptFiles:eN(m)?R(m):null,keptAsIs:u.keptAsIs??null}}function eF(e,t){e.prepare(`INSERT INTO app_meta (key, value) VALUES ('last_import', ?)
170
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(JSON.stringify(t))}function eX(){let e=process.env.SIX_DEGREES_HOME||i.default.join((0,r.homedir)(),".six-degrees");return(0,n.existsSync)(e)||(0,n.mkdirSync)(e,{recursive:!0}),e}e.s(["IMPORT_ROUTE",0,em,"ImportError",0,ey,"MAX_IMPORT_BYTES",0,0x10000000,"admitImport",0,function(e,{env:t,scanRunning:n,pending:r,currentPeople:i,max:a=0x10000000}){let o=h({method:e.method,pathname:em,headers:e.headers,env:t});if(o)return{refused:o};let s=Number(e.headers.get("x-six-degrees-size")),l=i(),c=function({scanRunning:e,pending:t,declared:n,currentPeople:r=0,confirmedPeople:i,max:a=0x10000000}){return e?new ey(`${E(e)}. Let it finish, or stop it on the Scan page, then import.`,{status:409}):t?new ey("An import is already waiting to finish. Restart Six Degrees to finish it, or cancel it first.",{status:409}):!Number.isSafeInteger(n)||n<=0?new ey("Choose a Six Degrees export (a .sixdegrees file) to import."):n>a?new ey(`That file is ${eS(n)}. This copy can import files up to ${eS(a)}.`,{status:413}):r>0&&i!==r?new ey(`This copy already has ${r.toLocaleString("en-US")} people. Confirm that the import replaces them.`,{status:409,needsConfirm:!0,people:r}):null}({scanRunning:n(),pending:r(),declared:s,currentPeople:l,confirmedPeople:Number(e.headers.get("x-six-degrees-replace")),max:a});return c?{refused:{status:c.status,error:c.message,...c.extra}}:{declared:s,currentPeople:l}},"applyPendingImport",0,ek,"cancelPendingImport",0,function(e){let t=eD(e);if(!t)return{cancelled:!1,reason:"none"};if(t.started)return{cancelled:!1,reason:"started"};let r=i.default.join(e,z),a=`${r}.cancelled-${Date.now()}`;return(0,n.renameSync)(r,a),(0,n.rmSync)(a,{recursive:!0,force:!0}),{cancelled:!0}},"lastImport",0,function(e){try{let t=e.prepare("SELECT value FROM app_meta WHERE key = 'last_import'").get()?.value,n=t?JSON.parse(t):null;return n&&"object"==typeof n?n:null}catch{return null}},"pendingImport",0,eD,"receiveUpload",0,ew,"recordImport",0,eF,"restartAdvice",0,function({kind:e,code:t,dataDir:n=null}){let r="It finishes the import as it starts.";if(t)return{canRestart:!0,how:"Click Restart now to finish it: Six Degrees restarts, which takes a few seconds, and finishes the import as it starts."};if("mac-app"===e)return{canRestart:!1,how:`Quit Six Degrees (⌘Q) and open it again. ${r}`};if("windows-app"===e||"linux-app"===e)return{canRestart:!1,how:`Quit Six Degrees (File → Exit) and open it again. ${r}`};if("npm"===e){let e=n?` --data-dir '${String(n).replace(/'/g,"'\\''")}'`:"";return{canRestart:!1,how:`Stop Six Degrees with Ctrl-C in its Terminal window, then start it again. ${r}`,command:`npx six-degrees${e}`}}return"source"===e?{canRestart:!1,how:`Stop Six Degrees with Ctrl-C in its Terminal window, then start it again. ${r}`,command:"npm run start:packaged"}:{canRestart:!1,how:`Stop the server with Ctrl-C and start it again the way you started it. ${r}`}},"restartCodeFrom",0,function(e=process.env){let t=Number(e.SIX_DEGREES_RESTART_CODE);return Number.isInteger(t)&&t>1&&t<126?t:null},"stageImport",0,function(e,{dir:t,applySchema:r,schemaSql:a,appVersion:o,replacedPeople:l=0,now:u=new Date,retired:f=eb}){let d=function(e,{applySchema:t,schemaSql:r,appVersion:i,retired:a=eb}){let o,l=Buffer.alloc(100),u=0,f=(0,n.openSync)(e,"r");try{u=(0,n.readSync)(f,l,0,100,0)}finally{(0,n.closeSync)(f)}if(u<100||!l.subarray(0,16).equals(eE))throw new ey("This isn't a Six Degrees export (a .sixdegrees file), so nothing was imported.");try{o=new s.DatabaseSync(e,{readOnly:!0})}catch(e){throw new ey(`This file couldn't be opened (${e.message}), so nothing was imported.`)}try{let e;o.exec("PRAGMA trusted_schema = OFF; PRAGMA query_only = ON; PRAGMA cell_size_check = ON;");try{e=o.prepare("PRAGMA integrity_check").all()}catch(t){e=[{integrity_check:t.message}]}if(1!==e.length||"ok"!==e[0].integrity_check)throw new ey("This file is damaged (its database fails SQLite's own check), so nothing was imported. Export it again on the other computer.");let n=function(e,t){let n=new s.DatabaseSync(":memory:");try{e(n),n.exec(`${Object.values(ec).join(";\n")};`);let r=new Map;for(let e of[...ed(t),...Object.keys(ec)]){let t=n.prepare(`PRAGMA table_info("${e}")`).all();r.set(e,{required:t.filter(e=>e.pk>0||e.notnull&&null===e.dflt_value).map(e=>e.name),allowed:new Set(t.map(e=>e.name))})}return{tables:r,indexes:new Set(ep(t))}}finally{n.close()}}(t,r),l=(e,t)=>new ey(`This file holds something a Six Degrees export never does (the ${eg(e)} “${eg(t)}”), so nothing was imported.`),u=new Map(o.prepare("PRAGMA main.table_list").all().map(e=>[e.name,e])),f=o.prepare("SELECT type, name, tbl_name FROM sqlite_master").all(),d=e=>n.tables.has(e)||a.tables.includes(e);for(let e of f){if("table"===e.type){let t=u.get(e.name)?.type;if("table"!==t)throw l(`${t||"unknown"} table`,e.name);if(d(e.name))continue}if(!("index"===e.type&&(n.indexes.has(e.name)||a.indexes.includes(e.name)||String(e.name).startsWith("sqlite_autoindex_")&&d(e.tbl_name))))throw l(e.type,e.name)}let p=new Set(f.filter(e=>"table"===e.type).map(e=>e.name));if(!p.has("sd_export_manifest")||!p.has("sd_export_files"))throw new ey("This is a database but not a Six Degrees export, so nothing was imported. Make one on the other computer with Settings → Your data → Save a copy.");for(let[e,{required:t,allowed:r}]of n.tables){if(!p.has(e)){if(!eA.includes(e))continue;throw new ey(`This export has no “${e}” table, so nothing was imported.`)}let n=o.prepare(`PRAGMA table_xinfo("${e}")`).all(),i=n.map(e=>e.name),s=a.columns[e]||[];if(!(0===u.get(e).wr&&n.every(e=>0===e.hidden&&(r.has(e.name)||s.includes(e.name)))&&t.every(e=>i.includes(e))))throw new ey(`This export's “${e}” table isn't laid out the way Six Degrees makes it, so nothing was imported.`)}let h=Object.fromEntries(o.prepare("SELECT key, value FROM sd_export_manifest").all().map(e=>[e.key,e.value])),T=Number(h.format);if(1!==T)throw new ey(Number.isInteger(T)&&T>1?"This export was made by a newer Six Degrees than this copy. Update this copy first, then import it.":"This file's export details aren't ones Six Degrees writes, so nothing was imported.");let m=String(h.app_version??"");if(!/^v?\d+\.\d+\.\d+/.test(m))throw new ey("This file doesn't say which version of Six Degrees made it, so nothing was imported.");if((0,c.compareVersions)(m,i)>0)throw new ey(`This file comes from Six Degrees ${eg(m)}, which is newer than this copy (${i}). Update this copy first, then import it.`);let E=null;try{E=JSON.parse(h.counts)}catch{}if(!E||"object"!=typeof E||Array.isArray(E))throw new ey("This file's export details aren't ones Six Degrees writes, so nothing was imported.");let y=(e,t,n)=>new ey(`This file's ${e} doesn't match its own export details (${t}, where they say ${eg(n)}), so nothing was imported. Export it again on the other computer.`);for(let e of p){if(Object.hasOwn(ec,e))continue;let t=o.prepare(`SELECT count(*) AS n FROM "${e}"`).get().n;if(!Object.hasOwn(E,e)||Number(E[e])!==t)throw y(`“${e}” table`,`${t} rows`,E[e]??"nothing")}for(let[e,t]of Object.entries(E))if(!p.has(e)&&0!==Number(t))throw y(`“${eg(e)}” table`,"no table",t);let S=0,g=0,w=o.prepare("SELECT bytes, sha256 FROM sd_export_files WHERE path = ?");for(let{path:e}of o.prepare("SELECT path FROM sd_export_files").all()){let t,n=e_(e);if(!n)throw new ey(`This file carries “${eg(e)}”, which an export never includes, so nothing was imported.`);let r=w.get(e);if(!(r?.bytes instanceof Uint8Array)||eu(r.bytes)!==r.sha256)throw new ey(`“${e}” inside this file is damaged (it doesn't match its checksum), so nothing was imported.`);if("photo"===n){S++;continue}try{t=JSON.parse(Buffer.from(r.bytes).toString("utf8"))}catch{t=void 0}if(!t||"object"!=typeof t||Array.isArray(t))throw new ey(`“${e}” inside this file can't be read, so nothing was imported.`);let i=K.includes(e)?v(e,t):null;if(i)throw new ey(`“${e}” inside this file can't be used (${i}), so nothing was imported.`);g++}if(Number(h.files)!==S+g)throw y("list of files",`${S+g} files`,h.files??"nothing");return{fromVersion:m,exportedAt:h.exported_at||null,people:eh(o),photos:S,files:g}}catch(e){if(e instanceof ey)throw e;throw new ey(`This file couldn't be read as a Six Degrees export (${eg(e.message)}), so nothing was imported.`)}finally{o.close()}}(e,{applySchema:r,schemaSql:a,appVersion:o,retired:f}),p=i.default.dirname(e),h=i.default.join(p,"files"),T=i.default.join(p,"data.sqlite"),m=[],E=new s.DatabaseSync(T);try{E.exec("PRAGMA trusted_schema = OFF; PRAGMA cell_size_check = ON;"),r(E),E.exec(`ATTACH DATABASE ${ef(e)} AS up`);try{for(let e of(E.exec("BEGIN"),ed(a))){let t=new Set(E.prepare(`PRAGMA main.table_info("${e}")`).all().map(e=>e.name)),n=E.prepare(`PRAGMA up.table_info("${e}")`).all().filter(e=>t.has(e.name)).map(e=>`"${e.name}"`).join(", ");n&&E.exec(`INSERT INTO main."${e}" (${n}) SELECT ${n} FROM up."${e}" ORDER BY rowid`)}E.exec("COMMIT")}catch(e){try{E.exec("ROLLBACK")}catch{}throw new ey(`This export's network doesn't fit this copy's database (${e.message}), so nothing was imported.`)}(0,n.mkdirSync)(i.default.join(h,"avatars"),{recursive:!0});let t=E.prepare("SELECT bytes, sha256 FROM up.sd_export_files WHERE path = ?");for(let{path:e}of E.prepare("SELECT path FROM up.sd_export_files").all()){let r=t.get(e),a=e_(e);if(!a||!(r?.bytes instanceof Uint8Array)||eu(r.bytes)!==r.sha256)throw new ey(`“${eg(e)}” inside this file is damaged, so nothing was imported.`);(0,n.writeFileSync)(i.default.join(h,e),r.bytes,{flag:"wx"}),("file"===a||"social"===a)&&m.push(i.default.join(h,e))}}finally{E.close()}(0,n.rmSync)(e,{force:!0});let y={stagedAt:u.toISOString(),exportedAt:d.exportedAt,fromVersion:d.fromVersion,people:d.people,photos:d.photos,replacedPeople:l};for(let e of((0,n.writeFileSync)(i.default.join(p,"READY"),`${JSON.stringify(y,null,2)}
171
+ `),[T,...m,i.default.join(p,"READY")]))w(e);for(let e of[i.default.join(h,"avatars"),h,p])S(e);return(0,n.renameSync)(p,i.default.join(t,z)),S(t),y}],19041);let e$={users:["sectors","goals","company_prestige_config"],user_profile:["sectors","goals","company_prestige_config"],linkedin_connections:["influence_signals"],notifications:["data"],queue_items:[],user_stats:[]},ej={linkedin_connections:["is_catalyst"],notifications:["seen"],users:[],user_profile:[],queue_items:[],user_stats:[]},ev=null,eU=Symbol.for("six-degrees.db-opened");function eC(){return process.env.SIX_DEGREES_DB||i.default.join(eX(),"six-degrees.sqlite")}function eM(e){e.exec(a),function(e){for(let[t,n,r]of eP)e.prepare(`PRAGMA table_info(${t})`).all().some(e=>e.name===n)||e.exec(`ALTER TABLE ${t} ADD COLUMN ${n} ${r}`)}(e)}let eP=[["linkedin_connections","score_why","TEXT"],["linkedin_connections","mutual_count","INTEGER"]],eG="auto-before-";e.s(["AUTO_BACKUP_PREFIX",0,eG,"applySchema",0,eM,"dataDir",0,eX,"dbFile",0,eC,"decodeRow",0,function(e,t){if(!t)return t;let n={...t};for(let t of e$[e]||[])if("string"==typeof n[t])try{n[t]=JSON.parse(n[t])}catch{}for(let t of ej[e]||[])(0===n[t]||1===n[t])&&(n[t]=!!n[t]);return n},"encodeValue",0,function(e,t,n){return void 0===n?null:(e$[e]||[]).includes(t)?null===n?null:JSON.stringify(n):(ej[e]||[]).includes(t)?null===n?null:+!!n:"boolean"==typeof n?+!!n:null!==n&&"object"==typeof n?JSON.stringify(n):n},"getDb",0,function(){if(ev)return ev;let e=eC(),r=null;if(!globalThis[eU])try{(r=ek({dir:eX(),dbFile:e}))&&console.log(`Six Degrees: finished the import (${r.people} people). What was here before: ${r.keptDatabase||"nothing to keep"}.`)}catch(e){console.error(`Six Degrees: could not finish the import (will try again next start): ${e.message}`)}globalThis[eU]=!0,ev=new t.DatabaseSync(e);try{let t=function(e,{dir:t,version:r,keep:a=5,now:o=new Date}){let s=i.default.join(t,"app-version"),l=null;try{l=(0,n.readFileSync)(s,"utf8").trim()}catch{}if(l===r)return null;let c=null;if(e.prepare("SELECT count(*) AS n FROM sqlite_master WHERE type = 'table' AND name = 'linkedin_connections'").get().n>0){let s=i.default.join(t,"backups");(0,n.mkdirSync)(s,{recursive:!0});let l=o.toISOString().replace(/[:.]/g,"-");for(let{f:t}of(c=i.default.join(s,`${eG}${r}-${l}.sqlite`),e.exec(`VACUUM INTO '${c.replace(/'/g,"''")}'`),(0,n.readdirSync)(s).filter(e=>e.startsWith(eG)&&e.endsWith(".sqlite")).map(e=>({f:e,at:(0,n.statSync)(i.default.join(s,e)).mtimeMs})).sort((e,t)=>t.at-e.at||t.f.localeCompare(e.f)).slice(a)))(0,n.rmSync)(i.default.join(s,t),{force:!0})}return(0,n.writeFileSync)(s,`${r}
172
+ `),c}(ev,{dir:i.default.dirname(e),version:o});t&&console.log(`Six Degrees ${o}: backed up your data first → ${t}`)}catch(e){console.error(`Six Degrees: could not back up your data before ${o} (will try again next start): ${e.message}`)}if(eM(ev),r)try{eF(ev,r)}catch{}return ev},"newId",0,function(){return crypto.randomUUID()},"nowIso",0,function(){return new Date().toISOString()}],88431)}];
173
173
 
174
174
  //# sourceMappingURL=lib_db-client_15le7cw.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[9272,a=>{a.v({className:"geist_2ae47f08-module__h69qWW__className",variable:"geist_2ae47f08-module__h69qWW__variable"})},79474,a=>{a.v({className:"geist_mono_eb58308d-module__w_p2Lq__className",variable:"geist_mono_eb58308d-module__w_p2Lq__variable"})},26230,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/app/components/ScanStatusBar.js from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/app/components/ScanStatusBar.js","default")},21043,a=>{"use strict";var b=a.i(26230);a.n(b)},88999,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/app/components/SocialAutoSync.js from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/app/components/SocialAutoSync.js","default")},25493,a=>{"use strict";var b=a.i(88999);a.n(b)},61143,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/app/components/StaleServerBanner.js from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/app/components/StaleServerBanner.js","default")},42041,a=>{"use strict";var b=a.i(61143);a.n(b)},7164,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/app/components/ThemeLoader.js from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/app/components/ThemeLoader.js","default")},73699,a=>{"use strict";var b=a.i(7164);a.n(b)},62925,a=>{"use strict";var b=a.i(7997),c=a.i(9272);let d={className:c.default.className,style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"}};null!=c.default.variable&&(d.variable=c.default.variable);var e=a.i(79474);let f={className:e.default.className,style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"}};null!=e.default.variable&&(f.variable=e.default.variable);var g=a.i(68354),h=a.i(42041),i=a.i(21043),j=a.i(25493),k=a.i(73699);a.s(["default",0,function({children:a}){return(0,b.jsxs)("html",{lang:"en","data-backdrop":"none",className:`${d.variable} ${f.variable}`,suppressHydrationWarning:!0,children:[(0,b.jsx)("head",{children:(0,b.jsx)("script",{dangerouslySetInnerHTML:{__html:"try{var t=JSON.parse(localStorage.getItem('six-degrees-theme-vars')||'null');if(t&&t.vars){var r=document.documentElement;for(var k in t.vars){var v=String(t.vars[k]);if(/^--sd-[a-z0-9-]+$/.test(k)&&!/[;{}<>]/.test(v))r.style.setProperty(k,v)}var a=t.attrs||{};if(/^[a-z]+$/.test(a.theme||''))r.dataset.theme=a.theme;if(/^[a-z]+$/.test(a.backdrop||''))r.dataset.backdrop=a.backdrop}}catch(e){}"}})}),(0,b.jsxs)("body",{style:{margin:0,padding:0,background:"var(--sd-bg, #0a0a1a)"},children:[(0,b.jsx)(k.default,{}),(0,b.jsxs)(g.default,{children:[a,(0,b.jsx)(h.default,{}),(0,b.jsx)(i.default,{}),(0,b.jsx)(j.default,{})]})]})]})},"metadata",0,{title:"Six Degrees",description:"Maps your LinkedIn network: who you know, who they know, and the shortest path to someone you haven't met. Runs on your own computer; nothing is uploaded.",viewport:"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}],62925)},19325,function(a){a.n(a.i(62925))},69067,a=>{"use strict";a.s(["default",()=>c,"useUser",()=>d]);var b=a.i(11857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/app/components/UserProvider.js from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/app/components/UserProvider.js","default"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call useUser() from the server but useUser is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/app/components/UserProvider.js","useUser")},68354,a=>{"use strict";var b=a.i(69067);a.n(b)}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__08oxiqh._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[16874,a=>{"use strict";var b=a.i(87924);let c="1px solid rgba(255,255,255,0.1)";function d({children:a,style:c}){return(0,b.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...c},children:a})}a.s(["Body",0,d,"Btn",0,function({children:a,onClick:d,disabled:e,primary:f,tone:g,type:h="button"}){return(0,b.jsx)("button",{type:h,onClick:d,disabled:e,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:e?"#667":"#fff",border:c,background:e?"rgba(255,255,255,0.05)":"bad"===g?"rgba(255,80,80,0.15)":f?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:e?"not-allowed":"pointer"},children:a})},"FONT",0,'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',"LINE",0,c,"Mono",0,function({children:a}){return(0,b.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:a})},"Section",0,function({id:a,title:e,intro:f,children:g}){return(0,b.jsxs)("section",{id:a,style:{padding:"24px 0",borderBottom:c,scrollMarginTop:16},children:[(0,b.jsx)("h2",{style:{fontSize:16,fontWeight:650,margin:"0 0 6px"},children:e}),f&&(0,b.jsx)(d,{style:{marginTop:0,marginBottom:12},children:f}),g]})},"Status",0,function({children:a,tone:c}){return(0,b.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:"ok"===c?"#00ff88":"bad"===c?"#ff7676":"#e8e8ee",background:"ok"===c?"rgba(0,255,136,0.08)":"bad"===c?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"ok"===c?"rgba(0,255,136,0.3)":"bad"===c?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:["ok"===c&&"✓ ",a]})}])},9282,a=>{"use strict";var b=a.i(30889);function c(a){let c=(0,b.readTitle)(a);return{key:c.key,label:c.label,level:c.level}}function d(a){return(0,b.currentCompany)(a)}let e=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],f={key:"unknown",label:"Unclear",color:"#555c66"},g=Object.fromEntries([...e,f].map(a=>[a.key,a])),h=a=>g[a]||f;function i(a,b){for(let c of[a,b]){if(!c)continue;let a=e.find(a=>a.words.test(c));if(a)return a}return f}let j=(a,b)=>i(a,b).key,k=a=>c(a).level>=4;a.s(["INDUSTRIES",0,e,"UNKNOWN_INDUSTRY",0,f,"buildCompanyIndex",0,function(a=[]){let c=new Map,d=a=>(c.has(a)||c.set(a,(0,b.rolesWithCompanies)(a)),c.get(a)),{industries:e}=(0,b.networkCompanies)(a,{industryOf:j,rolesOf:d}),f=new Map;for(let b of a){let a=b.profile_url||`id:${b.id}`,c=f.get(a);(!c||(b.degree||9)<(c.degree||9))&&f.set(a,b)}let g=new Map;for(let a of f.values()){let b=d(a).find(a=>!a.former)?.company;if(!b)continue;let c=g.get(b);c||(c={name:b,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},g.set(b,c)),c.people.push(a),1===a.degree?c.d1++:2===a.degree?c.d2++:c.d3++,"S"===a.tier&&c.S++,"A"===a.tier&&c.A++,k(a.headline)&&c.senior++}for(let a of g.values())a.industry=h(e.get(a.name));return g},"companyLinks",0,function(a=[],b=[]){let c=new Map;for(let b of a){let a=d(b);a&&c.set(b.id,a)}let e=new Map;for(let a of b){let b=c.get(a.source_connection_id),f=d(a);if(!b||!f||b===f)continue;let[g,h]=b<f?[b,f]:[f,b],i=`${g}\u0000${h}`,j=e.get(i);j||(j={a:g,b:h,weight:0,via:new Set},e.set(i,j)),j.weight++,j.via.add(a.source_connection_id)}return[...e.values()]},"companyOf",0,d,"getSeniority",0,c,"industryByKey",0,h,"industryOf",0,i,"isSenior",0,k,"waysInto",0,function(a,b=[],c=[]){let e=b.filter(b=>d(b)===a),f=new Map;for(let b of c)d(b)===a&&f.set(b.source_connection_id,(f.get(b.source_connection_id)||0)+1);let g=new Map(b.map(a=>[a.id,a]));return{direct:e,bridges:[...f.entries()].map(([a,b])=>({bridge:g.get(a),n:b})).filter(a=>a.bridge).sort((a,b)=>b.n-a.n||(Number(b.bridge.power_score)||0)-(Number(a.bridge.power_score)||0))}}])},54919,a=>{"use strict";var b=a.i(9282);let c=new Map(b.INDUSTRIES.map(a=>[a.key,a.color])),d=new Map([...b.INDUSTRIES.map(a=>[a.key,Object.freeze({key:a.key,label:a.label,color:a.color,group:a.key,kind:"industry"})]),...Object.entries({software:["Software & SaaS","tech","function"],"ai-data":["AI & Data","tech","function"],cybersecurity:["Cybersecurity","tech","function"],telecom:["Telecom","tech","industry"],fintech:["Fintech & Payments","finance","industry"],banking:["Banking & Lending","finance","industry"],"vc-pe":["Venture Capital & Private Equity","finance","industry"],wealth:["Wealth & Asset Management","finance","industry"],insurance:["Insurance","finance","industry"],accounting:["Accounting & Tax","finance","function"],crypto:["Crypto & Web3","finance","industry"],hospitals:["Hospitals & Clinics","health","industry"],dental:["Dental","health","industry"],"pharma-biotech":["Pharma & Biotech","health","industry"],"medical-devices":["Medical Devices","health","industry"],"mental-health":["Mental Health","health","industry"],"fitness-wellness":["Fitness & Wellness","health","industry"],veterinary:["Veterinary & Animal Care","health","industry"],k12:["K-12 Education","education","industry"],"higher-ed":["Higher Education","education","industry"],"marketing-advertising":["Marketing & Advertising","media","function"],"pr-comms":["PR & Communications","media","function"],"media-publishing":["Media & Publishing","media","industry"],"creator-economy":["Creator Economy","media","industry"],"film-tv-music":["Film, TV & Music","entertainment","industry"],"gaming-esports":["Gaming & Esports","entertainment","industry"],sports:["Sports","entertainment","industry"],"ecommerce-retail":["E-commerce & Retail","consumer","industry"],"consumer-goods":["Consumer Goods","consumer","industry"],restaurants:["Restaurants & Food Service","consumer","industry"],"hospitality-travel":["Hospitality & Travel","consumer","industry"],"beauty-personal-care":["Beauty & Personal Care","consumer","industry"],logistics:["Logistics & Supply Chain","industry","industry"],manufacturing:["Manufacturing","industry","industry"],energy:["Energy & Utilities","industry","industry"],automotive:["Automotive","industry","industry"],agriculture:["Agriculture & Farming","industry","industry"],"aerospace-defense":["Aerospace & Defense","defense","industry"],military:["Military","defense","industry"],government:["Government & Public Sector","defense","industry"],legal:["Legal","consulting","function"],"management-consulting":["Management Consulting","consulting","function"],"hr-recruiting":["HR & Recruiting","consulting","function"],"security-services":["Security Services","consulting","function"],"real-estate":["Real Estate","realestate","industry"],"construction-trades":["Construction & Trades","realestate","industry"],charities:["Nonprofits & Charities","nonprofit","industry"],"social-work":["Social Work & Human Services","nonprofit","industry"],faith:["Faith & Ministry","nonprofit","industry"]}).map(([a,[d,e,f]])=>[a,Object.freeze({key:a,label:d,color:c.get(e)||b.UNKNOWN_INDUSTRY.color,group:e,kind:f})])]);a.s(["sectorByKey",0,function(a){return d.get(a)||{key:a,label:b.UNKNOWN_INDUSTRY.label,color:b.UNKNOWN_INDUSTRY.color,group:null,kind:null}}])}];
1
+ module.exports=[16874,a=>{"use strict";var b=a.i(87924);let c="1px solid rgba(255,255,255,0.1)";function d({children:a,style:c}){return(0,b.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...c},children:a})}a.s(["Body",0,d,"Btn",0,function({children:a,onClick:d,disabled:e,primary:f,tone:g,type:h="button"}){return(0,b.jsx)("button",{type:h,onClick:d,disabled:e,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:e?"#667":"#fff",border:c,background:e?"rgba(255,255,255,0.05)":"bad"===g?"rgba(255,80,80,0.15)":f?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:e?"not-allowed":"pointer"},children:a})},"FONT",0,"var(--sd-font)","LINE",0,c,"Mono",0,function({children:a}){return(0,b.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:a})},"Section",0,function({id:a,title:e,intro:f,children:g}){return(0,b.jsxs)("section",{id:a,style:{padding:"24px 0",borderBottom:c,scrollMarginTop:16},children:[(0,b.jsx)("h2",{style:{fontSize:16,fontWeight:650,margin:"0 0 6px"},children:e}),f&&(0,b.jsx)(d,{style:{marginTop:0,marginBottom:12},children:f}),g]})},"Status",0,function({children:a,tone:c}){return(0,b.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:"ok"===c?"#00ff88":"bad"===c?"#ff7676":"#e8e8ee",background:"ok"===c?"rgba(0,255,136,0.08)":"bad"===c?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"ok"===c?"rgba(0,255,136,0.3)":"bad"===c?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:["ok"===c&&"✓ ",a]})}])},9282,a=>{"use strict";var b=a.i(30889);function c(a){let c=(0,b.readTitle)(a);return{key:c.key,label:c.label,level:c.level}}function d(a){return(0,b.currentCompany)(a)}let e=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],f={key:"unknown",label:"Unclear",color:"#555c66"},g=Object.fromEntries([...e,f].map(a=>[a.key,a])),h=a=>g[a]||f;function i(a,b){for(let c of[a,b]){if(!c)continue;let a=e.find(a=>a.words.test(c));if(a)return a}return f}let j=(a,b)=>i(a,b).key,k=a=>c(a).level>=4;a.s(["INDUSTRIES",0,e,"UNKNOWN_INDUSTRY",0,f,"buildCompanyIndex",0,function(a=[]){let c=new Map,d=a=>(c.has(a)||c.set(a,(0,b.rolesWithCompanies)(a)),c.get(a)),{industries:e}=(0,b.networkCompanies)(a,{industryOf:j,rolesOf:d}),f=new Map;for(let b of a){let a=b.profile_url||`id:${b.id}`,c=f.get(a);(!c||(b.degree||9)<(c.degree||9))&&f.set(a,b)}let g=new Map;for(let a of f.values()){let b=d(a).find(a=>!a.former)?.company;if(!b)continue;let c=g.get(b);c||(c={name:b,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},g.set(b,c)),c.people.push(a),1===a.degree?c.d1++:2===a.degree?c.d2++:c.d3++,"S"===a.tier&&c.S++,"A"===a.tier&&c.A++,k(a.headline)&&c.senior++}for(let a of g.values())a.industry=h(e.get(a.name));return g},"companyLinks",0,function(a=[],b=[]){let c=new Map;for(let b of a){let a=d(b);a&&c.set(b.id,a)}let e=new Map;for(let a of b){let b=c.get(a.source_connection_id),f=d(a);if(!b||!f||b===f)continue;let[g,h]=b<f?[b,f]:[f,b],i=`${g}\u0000${h}`,j=e.get(i);j||(j={a:g,b:h,weight:0,via:new Set},e.set(i,j)),j.weight++,j.via.add(a.source_connection_id)}return[...e.values()]},"companyOf",0,d,"getSeniority",0,c,"industryByKey",0,h,"industryOf",0,i,"isSenior",0,k,"waysInto",0,function(a,b=[],c=[]){let e=b.filter(b=>d(b)===a),f=new Map;for(let b of c)d(b)===a&&f.set(b.source_connection_id,(f.get(b.source_connection_id)||0)+1);let g=new Map(b.map(a=>[a.id,a]));return{direct:e,bridges:[...f.entries()].map(([a,b])=>({bridge:g.get(a),n:b})).filter(a=>a.bridge).sort((a,b)=>b.n-a.n||(Number(b.bridge.power_score)||0)-(Number(a.bridge.power_score)||0))}}])},54919,a=>{"use strict";var b=a.i(9282);let c=new Map(b.INDUSTRIES.map(a=>[a.key,a.color])),d=new Map([...b.INDUSTRIES.map(a=>[a.key,Object.freeze({key:a.key,label:a.label,color:a.color,group:a.key,kind:"industry"})]),...Object.entries({software:["Software & SaaS","tech","function"],"ai-data":["AI & Data","tech","function"],cybersecurity:["Cybersecurity","tech","function"],telecom:["Telecom","tech","industry"],fintech:["Fintech & Payments","finance","industry"],banking:["Banking & Lending","finance","industry"],"vc-pe":["Venture Capital & Private Equity","finance","industry"],wealth:["Wealth & Asset Management","finance","industry"],insurance:["Insurance","finance","industry"],accounting:["Accounting & Tax","finance","function"],crypto:["Crypto & Web3","finance","industry"],hospitals:["Hospitals & Clinics","health","industry"],dental:["Dental","health","industry"],"pharma-biotech":["Pharma & Biotech","health","industry"],"medical-devices":["Medical Devices","health","industry"],"mental-health":["Mental Health","health","industry"],"fitness-wellness":["Fitness & Wellness","health","industry"],veterinary:["Veterinary & Animal Care","health","industry"],k12:["K-12 Education","education","industry"],"higher-ed":["Higher Education","education","industry"],"marketing-advertising":["Marketing & Advertising","media","function"],"pr-comms":["PR & Communications","media","function"],"media-publishing":["Media & Publishing","media","industry"],"creator-economy":["Creator Economy","media","industry"],"film-tv-music":["Film, TV & Music","entertainment","industry"],"gaming-esports":["Gaming & Esports","entertainment","industry"],sports:["Sports","entertainment","industry"],"ecommerce-retail":["E-commerce & Retail","consumer","industry"],"consumer-goods":["Consumer Goods","consumer","industry"],restaurants:["Restaurants & Food Service","consumer","industry"],"hospitality-travel":["Hospitality & Travel","consumer","industry"],"beauty-personal-care":["Beauty & Personal Care","consumer","industry"],logistics:["Logistics & Supply Chain","industry","industry"],manufacturing:["Manufacturing","industry","industry"],energy:["Energy & Utilities","industry","industry"],automotive:["Automotive","industry","industry"],agriculture:["Agriculture & Farming","industry","industry"],"aerospace-defense":["Aerospace & Defense","defense","industry"],military:["Military","defense","industry"],government:["Government & Public Sector","defense","industry"],legal:["Legal","consulting","function"],"management-consulting":["Management Consulting","consulting","function"],"hr-recruiting":["HR & Recruiting","consulting","function"],"security-services":["Security Services","consulting","function"],"real-estate":["Real Estate","realestate","industry"],"construction-trades":["Construction & Trades","realestate","industry"],charities:["Nonprofits & Charities","nonprofit","industry"],"social-work":["Social Work & Human Services","nonprofit","industry"],faith:["Faith & Ministry","nonprofit","industry"]}).map(([a,[d,e,f]])=>[a,Object.freeze({key:a,label:d,color:c.get(e)||b.UNKNOWN_INDUSTRY.color,group:e,kind:f})])]);a.s(["sectorByKey",0,function(a){return d.get(a)||{key:a,label:b.UNKNOWN_INDUSTRY.label,color:b.UNKNOWN_INDUSTRY.color,group:null,kind:null}}])}];
2
2
 
3
3
  //# sourceMappingURL=_03l7vge._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[36839,a=>{"use strict";var b=a.i(87924),c=a.i(75857);a.s(["default",0,function({children:a}){let{userId:d,ready:e}=(0,c.useUser)();return e&&d?a:(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:e?(0,b.jsxs)("div",{style:{maxWidth:420},children:[(0,b.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,b.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,b.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},9282,a=>{"use strict";var b=a.i(30889);function c(a){let c=(0,b.readTitle)(a);return{key:c.key,label:c.label,level:c.level}}function d(a){return(0,b.currentCompany)(a)}let e=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],f={key:"unknown",label:"Unclear",color:"#555c66"},g=Object.fromEntries([...e,f].map(a=>[a.key,a])),h=a=>g[a]||f;function i(a,b){for(let c of[a,b]){if(!c)continue;let a=e.find(a=>a.words.test(c));if(a)return a}return f}let j=(a,b)=>i(a,b).key,k=a=>c(a).level>=4;a.s(["INDUSTRIES",0,e,"UNKNOWN_INDUSTRY",0,f,"buildCompanyIndex",0,function(a=[]){let c=new Map,d=a=>(c.has(a)||c.set(a,(0,b.rolesWithCompanies)(a)),c.get(a)),{industries:e}=(0,b.networkCompanies)(a,{industryOf:j,rolesOf:d}),f=new Map;for(let b of a){let a=b.profile_url||`id:${b.id}`,c=f.get(a);(!c||(b.degree||9)<(c.degree||9))&&f.set(a,b)}let g=new Map;for(let a of f.values()){let b=d(a).find(a=>!a.former)?.company;if(!b)continue;let c=g.get(b);c||(c={name:b,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},g.set(b,c)),c.people.push(a),1===a.degree?c.d1++:2===a.degree?c.d2++:c.d3++,"S"===a.tier&&c.S++,"A"===a.tier&&c.A++,k(a.headline)&&c.senior++}for(let a of g.values())a.industry=h(e.get(a.name));return g},"companyLinks",0,function(a=[],b=[]){let c=new Map;for(let b of a){let a=d(b);a&&c.set(b.id,a)}let e=new Map;for(let a of b){let b=c.get(a.source_connection_id),f=d(a);if(!b||!f||b===f)continue;let[g,h]=b<f?[b,f]:[f,b],i=`${g}\u0000${h}`,j=e.get(i);j||(j={a:g,b:h,weight:0,via:new Set},e.set(i,j)),j.weight++,j.via.add(a.source_connection_id)}return[...e.values()]},"companyOf",0,d,"getSeniority",0,c,"industryByKey",0,h,"industryOf",0,i,"isSenior",0,k,"waysInto",0,function(a,b=[],c=[]){let e=b.filter(b=>d(b)===a),f=new Map;for(let b of c)d(b)===a&&f.set(b.source_connection_id,(f.get(b.source_connection_id)||0)+1);let g=new Map(b.map(a=>[a.id,a]));return{direct:e,bridges:[...f.entries()].map(([a,b])=>({bridge:g.get(a),n:b})).filter(a=>a.bridge).sort((a,b)=>b.n-a.n||(Number(b.bridge.power_score)||0)-(Number(a.bridge.power_score)||0))}}])},54031,a=>{"use strict";function b(a=[],c=[]){let d={S:0,A:0,B:0,C:0,D:0};for(let b of a)d[b.tier]=(d[b.tier]||0)+1;let e=0;for(let a of c)"S"===a.tier&&(e+=1);let f=new Set(c.map(a=>a.source_connection_id).filter(Boolean)).size,g=a.filter(a=>a.is_catalyst).length;return 100*d.S+40*d.A+15*d.B+5*d.C+ +d.D+200*f+150*g+50*e+a.length}let c=a=>Math.floor(Math.sqrt(Math.max(0,a)/10)),d="six-degrees-level",e={},f=new Set;function g(a="own"){if(!(a in e))try{let b=sessionStorage.getItem(`${d}:${a}`),c=null==b?NaN:Number(b);e[a]=Number.isFinite(c)?c:null}catch{e[a]=null}return e[a]}a.s(["levelNow",0,g,"levelOf",0,c,"networkLevel",0,(a,d)=>c(b(a,d)),"networkPower",0,b,"rememberLevel",0,function(a,b="own"){if(g(b)!==a){e[b]=a;try{sessionStorage.setItem(`${d}:${b}`,String(a))}catch{}f.forEach(a=>a())}},"watchLevel",0,function(a){return f.add(a),()=>f.delete(a)}])},23310,a=>{"use strict";async function b(a){let b=a?`/api/network?userId=${encodeURIComponent(a)}`:"/api/network",c=await fetch(b);if(!c.ok)throw Error(`Failed to load network (${c.status})`);let d=await c.json();return{degree1:d.degree1||[],degree2:d.degree2||[],degree3:d.degree3||[],ties:Number(d.ties)||0}}a.s(["loadNetwork",0,b])},90231,56377,a=>{"use strict";let b=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,c="/avatars/";function d(a){return"string"==typeof a&&a.startsWith(c)&&b.test(a.slice(c.length))?a:null}a.s(["localPhoto",0,d],56377);let e={S:0,A:1,B:2,C:3,D:4};function f(a){let b=parseFloat(a?.power_score);return Number.isFinite(b)?b:0}function g(a){return Math.round(10*f(a))/10}function h(a){return String(a?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${a?.id}`}let i=(a,b)=>String(a??"").localeCompare(String(b??""),void 0,{numeric:!0});function j(a,b){return(e[a.tier]??9)-(e[b.tier]??9)||f(b)-f(a)||String(a.name||"").localeCompare(String(b.name||""))||i(a.id,b.id)}function k(a,b){return a.bridge&&b.bridge?j(a.bridge,b.bridge):a.bridge?-1:b.bridge?1:i(a.id,b.id)}function l(a,b){return b.score-a.score||b.waysIn-a.waysIn||k(a.routes[0]||m,b.routes[0]||m)||String(a.person.name||"").localeCompare(String(b.person.name||""))||(a.key<b.key?-1:+(a.key>b.key))}let m={id:null,bridge:null};function n(a){let b=String(a||"").trim().split(/\s+/).filter(Boolean);return b.length<2?b[0]||"":`${b[0]} ${b[b.length-1].charAt(0)}.`}function o(a,b){let c=String(a||"");return b<=1?c?"…":"":c.length>b?`${c.slice(0,b-1)}…`:c}a.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,j,"comparePower",0,l,"convergeLayout",0,function(a,b=800,c=!1,{cards:d=!1,mutuals:e=0}={}){let f=d?46:c?40:34,g=Math.round(b*(c?.44:.36)),h=Math.round(b*(c?.8:d?.6:.62)),i=[],j=null;for(let b of a?.routes||[])b.bridge?i.push({id:b.id,bridge:b.bridge,unresolved:!1,count:1}):j?j.count++:i.push(j={id:null,bridge:null,unresolved:!0,count:1});let k=Math.max(0,Math.floor(Number(e)||0)-(a?.waysIn||0)),l=Math.min(60,k),m=d?12:11,p=d?220:c?96:120,q=Math.max(1,Math.floor(p/m)+1),r=Math.ceil(l/q),s=l?40+r*m:0,t=Math.max(0,i.length-1)*f+s,u=Math.max(c?190:d?250:220,32+t+48),v=u/2,w=v-t/2,x=Math.max(4,Math.floor((g-10-42)/6)),y=i.map((a,b)=>{let c=a.unresolved?`can't be named (${a.count})`:a.bridge.name||"";return{...a,x:g,y:w+b*f,r:6,primary:0===b&&!a.unresolved,label:c.length<=x?c:o(a.unresolved?c:n(c),x)}}),z={x:h,y:v,r:17*!d,rings:d?[]:[32,50,70].filter(a=>a<=v-4)},A=y.map(b=>({key:a?.key,bridgeId:b.id,primary:b.primary,unresolved:b.unresolved,tier:b.bridge?.tier??null,x1:b.x,y1:b.y,x2:z.x,y2:z.y})),B={x:20,y:v,r:14},C=y.map(a=>({id:a.id,x1:B.x,y1:B.y,x2:a.x,y2:a.y})),D=a?[{key:a.key,p:a,x:z.x,y:z.y,r:z.r,rings:z.rings,big:!0,label:""}]:[],E=w+Math.max(0,i.length-1)*f+40,F=d?g-236+8:g-p,G=Array.from({length:l},(a,b)=>({x:F+b%q*m,y:E+Math.floor(b/q)*m})),H=a?.waysIn?a.waysIn/(a.waysIn+k):1;return{width:b,height:u,you:B,target:z,people:D,bridges:y,links:A,spokes:C,ghosts:G,unscanned:k,ghostLabel:l?{x:F,y:E-13}:null,drawn:H}},"keyFor",0,h,"mapCount",0,function(a,b=10){let c=Math.max(0,Math.min(100,Number(a)||0));return c<=50?b:Math.max(1,Math.round(b*(100-c)/50))},"mostMutuals",0,function(a=[],b=()=>0,c=7){return[...a].sort((a,c)=>Math.max(b(c)||0,c.waysIn)-Math.max(b(a)||0,a.waysIn)||c.waysIn-a.waysIn||l(a,c)).slice(0,c)},"routeIndex",0,function(a=[]){let b=new Map;for(let c of a||[]){let a=h(c),d=b.get(a);d||(d=new Set,b.set(a,d)),d.add(c.source_connection_id??null)}return b},"routesFor",0,function(a,b,c){return a?[...b?.get(h(a))??(null!=a.source_connection_id?new Set([a.source_connection_id]):new Set)].map(a=>({id:a,bridge:c?.get(a)??null})).sort(k):[]},"score",0,f,"score1",0,g,"separationPeople",0,function(a=[],b=[]){let c=new Map;for(let a of b||[])c.set(a.id,a);let e=new Map,f=new Map;for(let b of a||[]){let a=h(b);f.set(b.id,a);let c=e.get(a);c?function(a,b){let c=g(a)-g(b);if(c)return c>0;let e=!!d(a.profile_image_url);return!!d(b.profile_image_url)!==e?e:0>i(a.id,b.id)}(b,c.person)&&(c.person=b):(c={key:a,person:b,rowIds:[],routeIds:new Set},e.set(a,c)),c.rowIds.push(b.id),c.routeIds.add(b.source_connection_id??null)}let j={people:e.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},m=new Set,n=new Set,o=new Set,p=[];for(let a of e.values()){let b=[...a.routeIds].map(a=>({id:a,bridge:c.get(a)??null}));b.sort(k);let d=b.filter(a=>a.bridge);for(let a of b)(a.bridge?m:n).add(a.id);if(!d.length)for(let a of(j.peopleOnlyUnresolved++,b))o.add(a.id);let{person:e}=a,f=e.tier;void 0!==j.byTier[f]&&j.byTier[f]++,b.length>1&&j.multi++,p.push({key:a.key,person:e,score:g(e),tier:f,routes:b,waysIn:b.length,rowIds:a.rowIds,haystack:[e.name,e.headline,e.company,e.role,...d.map(a=>a.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return j.bridges=m.size,j.unresolvedIds=n.size,j.onlyUnresolvedVia=o.size,p.sort(l),function(a){for(let b=0;b<a.length;b++){let c=a[b],d=a[b-1],e=d&&d.score===c.score&&d.waysIn===c.waysIn;c.rank=e?d.rank:b+1,e&&(c.tied=!0,d.tied=!0)}}(p),{people:p,rowToKey:f,summary:j}},"shortName",0,n,"summitLayout",0,function(a=[],b=800,c=!1,{cards:d=!1}={}){let e=d?45:c?36:26,f=Math.round(.42*b),g=Math.round(.58*b),h=a.map((a,c)=>{var f;return{key:a.key,p:a,x:g,y:16+c*e,r:d?0:(f=a.waysIn)>=4?8.5:3===f?7:2===f?5.5:4,label:o(`#${a.rank}${a.tied?"=":""} ${a.person.name||""}`,Math.floor((b-g-60)/6.2))}}),i=new Map,k="\0unresolved";for(let a of h)for(let b of a.p.routes){let c=b.bridge?b.id:k,d=i.get(c);d||(d={id:b.bridge?b.id:null,bridge:b.bridge,unresolved:!b.bridge,ys:[],count:0},i.set(c,d)),d.count++,d.ys.push(a.y)}let l=[...i.values()].map(a=>({...a,bary:a.ys.reduce((a,b)=>a+b,0)/a.ys.length}));l.sort((a,b)=>a.bary-b.bary||a.unresolved-b.unresolved||(a.bridge&&b.bridge?j(a.bridge,b.bridge):0));let m=h.length?h[h.length-1].y:16,p=function(a=[],b=18,c=0){let d=[];a.forEach((a,c)=>{for(d.push({sum:a-c*b,count:1});d.length>1&&d[d.length-2].sum/d[d.length-2].count>d[d.length-1].sum/d[d.length-1].count;){let a=d.pop();d[d.length-1].sum+=a.sum,d[d.length-1].count+=a.count}});let e=d.flatMap(a=>Array(a.count).fill(a.sum/a.count)).map((a,c)=>a+c*b),f=e.length&&e[0]<c?c-e[0]:0;return e.map(a=>a+f)}(l.map(a=>a.bary),d?32:18,16),q=Math.max(4,Math.floor((f-10-42)/6));l.forEach((a,b)=>{if(a.x=f,a.y=p[b],a.r=5,a.unresolved)a.label=o(`can't be named (${a.count})`,q);else{let b=a.bridge.name||"";a.label=b.length<=q?b:o(n(b),q)}delete a.ys});let r=new Map(l.map(a=>[a.unresolved?k:a.id,a]));for(let a of l)a.onlyFor=0,a.bestFor=0;for(let a of h){let b=a.p.routes[0],c=b?r.get(b.bridge?b.id:k):null;c&&c.bestFor++,1===a.p.waysIn&&c&&c.onlyFor++}let s=[];for(let a of h){let b=new Set;a.p.routes.forEach((c,d)=>{let e=c.bridge?c.id:k;if(b.has(e))return;b.add(e);let f=r.get(e);s.push({key:a.key,bridgeId:f.id,primary:0===d&&!f.unresolved,unresolved:f.unresolved,tier:f.bridge?.tier??null,x1:f.x,y1:f.y,x2:a.x,y2:a.y})})}let t=Math.max(m,l.length?l[l.length-1].y:0),u=h.length?Math.ceil(t+16):0,v={x:20,y:h.length?(16+Math.max(m,t))/2:16,r:14},w=l.map(a=>({id:a.id,x1:v.x,y1:v.y,x2:a.x,y2:a.y}));return{width:b,height:u,you:v,people:h,bridges:l,links:s,spokes:w}}],90231)}];
2
+
3
+ //# sourceMappingURL=_08g31gm._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[66537,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(38246),f=a.i(37732),g=a.i(7846),h=a.i(63033);let i={full:"Scanning your network",refresh:"Checking for new connections",bridge:"Scanning a circle",resume:"Carrying on with a circle","resume-all":"Carrying on with circles","auto-bridge":"Auto-Bridge","auto-bridge-retry":"Auto-Bridge",rescrape:"Re-scanning a circle",login:"Signing in to LinkedIn",setup:"Setting up the scanner",company:"Scanning a company",photos:"Saving photos",messages:"Reading your messages list","messages-full":"Reading your whole messages history"};a.s(["default",0,function(){let a,j,[k,l]=(0,c.useState)(()=>(0,f.scannerNow)()),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(!1),[q,r]=(0,c.useState)(!1),s=(0,c.useSyncExternalStore)(g.watchAllDay,g.allDayNow,()=>!1),t=(0,c.useSyncExternalStore)(h.watchActivities,h.activitiesNow,h.noActivities),u=(0,c.useSyncExternalStore)(h.watchNotchTabs,h.notchTabsNow,h.noNotchTabs);(0,c.useEffect)(()=>(0,f.watchScanner)(()=>{let a=(0,f.scannerNow)();l(a),a.running||n(!1)}),[]);let v=(0,d.usePathname)(),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a=null,b=null,c=0,d=()=>{c=0;let d=document.querySelector("header");d!==a&&(b?.disconnect(),b=null,(a=d)&&(b=new ResizeObserver(e)).observe(a));let f=a?Math.round(a.getBoundingClientRect().bottom):null;x(a=>a===f?a:f);let g=document.getElementById("main-tabs")?.getBoundingClientRect(),h=g&&g.width?Math.round(g.left+g.width/2):null;z(a=>a===h?a:h)},e=()=>{c||(c=requestAnimationFrame(d))};e();let f=new MutationObserver(e);return f.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener("resize",e),()=>{cancelAnimationFrame(c),b?.disconnect(),f.disconnect(),window.removeEventListener("resize",e)}},[v]);let A=!!k?.running,B=t[t.length-1]||null,C=A||B||s,D=!!(C||u);if((0,c.useEffect)(()=>((0,h.setNotchShown)(D),()=>(0,h.setNotchShown)(!1)),[D]),!C&&!u)return null;let E=k?.progress,F=E?.kind==="batch"&&E.total?`${E.current||E.done||0} of ${E.total}`:E?.kind==="walk"&&E.total?`${(E.done||0).toLocaleString()} of ${E.total.toLocaleString()}`:E?.kind==="saving"?"saving":null,G=E?.total?Math.min(1,(E.current||E.done||0)/E.total):B?.progress??null,H=k?.budget,I=A?[...k.log||[]].reverse().find(a=>a&&a.trim())?.trim():null,J=o||q,K=A?"#00ff88":B?"warn"===B.tone?"#FFD700":"#3498DB":"#556",L=A?i[k.action]||"Scanning":B?B.label:"Auto scan",M=A?F:B?B.detail:null,N=null!=y?`clamp(170px, ${y}px, calc(100vw - 170px))`:"50%";return(0,b.jsxs)("div",{onMouseLeave:()=>p(!1),style:{position:"fixed",left:N,top:w??"var(--scan-bar-top, 94px)",transform:"translateX(-50%)",zIndex:60,maxWidth:"calc(100vw - 16px)",padding:J&&C?"4px 6px 10px":"4px 6px 5px",borderRadius:"0 0 14px 14px",border:`1px solid ${A?"rgba(0,255,136,0.25)":"rgba(255,255,255,0.1)"}`,borderTop:"none",background:"rgba(8,10,22,0.96)",color:"#cfd8d8",fontSize:12,opacity:u||A||B||J?1:.55,boxShadow:A?"0 6px 20px rgba(0,0,0,0.35)":"none",transition:"padding 0.18s ease, opacity 0.18s ease"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,overflowX:"auto"},children:[u&&(0,b.jsx)("div",{role:"tablist","aria-label":"View",style:{display:"flex",gap:2},children:u.items.map(a=>{let c=a.key===u.current;return(0,b.jsxs)("button",{role:"tab","aria-selected":c,title:a.title,onClick:()=>u.onPick(a.key),style:{display:"flex",alignItems:"center",gap:6,padding:"5px 11px",borderRadius:8,border:"none",cursor:"pointer",whiteSpace:"nowrap",fontSize:12,fontWeight:600,background:c?"rgba(52,152,219,0.22)":"transparent",color:c?"#cfe6f7":"#8b9aa8"},children:[a.icon&&(0,b.jsx)("span",{"aria-hidden":"true",children:a.icon}),a.label]},a.key)})}),u&&C&&(0,b.jsx)("span",{"aria-hidden":"true",style:{width:1,alignSelf:"stretch",margin:"3px 4px",background:"rgba(255,255,255,0.12)"}}),C&&(0,b.jsxs)("button",{onMouseEnter:()=>p(!0),onClick:()=>r(a=>!a),"aria-expanded":J,title:J?"Close":"Open",style:{display:"flex",alignItems:"center",gap:8,background:"none",border:"none",color:"inherit",font:"inherit",cursor:"pointer",padding:"5px 8px",whiteSpace:"nowrap"},children:[(0,b.jsx)("span",{className:A?"notch-pulse":void 0,style:{width:7,height:7,borderRadius:"50%",background:K,flexShrink:0}}),(0,b.jsxs)("span",{role:"status","aria-live":"polite",style:{display:"flex",alignItems:"center",gap:8},children:[(0,b.jsx)("b",{style:{color:A||B?"#fff":"#b8c4c4",fontWeight:600},children:L}),M&&(0,b.jsx)("span",{style:{color:"#8b9a9a"},children:M})]}),!A&&!B&&J&&(0,b.jsx)("span",{style:{color:"#8b9a9a"},children:"ready · press Auto scan beside Scan to start"})]})]}),C&&null!=G&&(0,b.jsx)("div",{style:{height:2,margin:"3px 6px 0",borderRadius:2,background:"rgba(255,255,255,0.08)",overflow:"hidden"},children:(0,b.jsx)("div",{style:{width:`${Math.round(100*G)}%`,height:"100%",background:A?"#00ff88":"#3498DB",transition:"width 0.4s ease"}})}),J&&A&&(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,margin:"8px 8px 0",flexWrap:"wrap"},children:[k.target?.name&&(0,b.jsx)("span",{children:k.target.name}),H&&(0,b.jsxs)("span",{style:{color:(a=H.searches,(j=H.cap)?a/j>=.9?"#ff6b6b":a/j>=.6?"#FFD700":"#00ff88":"#8b9a9a")},title:"Searches on your LinkedIn account in the last 24 hours, and your daily budget",children:[H.searches,H.cap?` of ${H.cap}`:""," searches today"]}),I&&(0,b.jsx)("span",{style:{color:"#667",maxWidth:280,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:I,children:I}),(0,b.jsx)(e.default,{href:"/setup",style:{color:"#3498DB",textDecoration:"none"},children:"Details"}),(0,b.jsx)("button",{onClick:async()=>{n(!0);try{await (0,f.stopScrape)()}catch{n(!1)}},disabled:m,title:"Stops after saving what's been read; Resume on the Scan page carries on from the same page",style:{padding:"3px 10px",borderRadius:8,fontSize:12,cursor:m?"default":"pointer",background:"rgba(255,107,107,0.12)",color:"#ff9b9b",border:"1px solid rgba(255,107,107,0.35)"},children:m?"Stopping…":"Stop"})]}),J&&!A&&B?.detail&&(0,b.jsx)("div",{style:{margin:"6px 8px 0",color:"#8b9a9a"},children:B.detail})]})}])},59617,a=>{"use strict";var b=a.i(72131),c=a.i(37732),d=a.i(58834);let e=!1;a.s(["default",0,function(){return(0,b.useEffect)(()=>{if(d.IS_DEMO||e)return;let a=()=>{};return fetch("/api/social").then(a=>a.json()).then(({social:b})=>{if(!b?.autoSync||e)return;let d=b.liveAt?Date.parse(b.liveAt):0,f=new Date().getHours();Date.now()-d<864e5||f<9||f>=19||(a=(0,c.watchScanner)(()=>{let b=(0,c.scannerNow)();b.known&&!e&&(e=!0,a(),b.running||(0,c.beginScrape)("messages").catch(()=>{}))}))}).catch(()=>{}),()=>a()},[]),null}])},17372,a=>{"use strict";var b=a.i(87924),c=a.i(72131);a.s(["default",0,function(){let[a,d]=(0,c.useState)(null);return((0,c.useEffect)(()=>{let a=!0;return fetch("/api/update").then(a=>a.json()).then(b=>{a&&b?.restartNeeded&&d(b)}).catch(()=>{}),()=>{a=!1}},[]),a)?(0,b.jsxs)("div",{role:"status",style:{position:"fixed",left:0,right:0,bottom:0,zIndex:9999,background:"linear-gradient(90deg, #FFD700, #FF6B35)",color:"#1a1200",padding:"9px 16px",fontSize:13,fontWeight:600,lineHeight:1.5,display:"flex",alignItems:"center",justifyContent:"center",gap:10,flexWrap:"wrap",textAlign:"center"},children:[(0,b.jsxs)("span",{children:["You have newer code on disk (",a.sha,") than this server is running (",a.bootSha,"). Restart it to see the changes — ",(0,b.jsx)("code",{style:{background:"rgba(0,0,0,0.16)",padding:"1px 6px",borderRadius:4},children:"Ctrl-C"})," in the terminal, then ",(0,b.jsx)("code",{style:{background:"rgba(0,0,0,0.16)",padding:"1px 6px",borderRadius:4},children:"npm run dev"}),"."]}),(0,b.jsx)("button",{onClick:()=>d(null),style:{border:"none",background:"rgba(0,0,0,0.18)",color:"#1a1200",borderRadius:6,padding:"3px 10px",fontWeight:700,cursor:"pointer"},children:"Dismiss"})]}):null}])},53938,a=>{"use strict";a.i(26338),a.s(["default",0,function(){return null}])},75857,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(73167),e=a.i(58834),f=a.i(42510);let g=(0,c.createContext)({userId:null,userName:null,userProfile:null,ready:!1});a.s(["default",0,function({children:a}){let[h,i]=(0,c.useState)(null),[j,k]=(0,c.useState)(null),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{if(e.IS_DEMO){i(e.DEMO_USER.id),k(e.DEMO_USER.name),m({name:e.DEMO_USER.name,headline:e.DEMO_USER.headline,role:"",company:"",industry:"",sectors:[],goals:[],linkedin_url:""}),o(!0);return}if((0,f.hasCsvNetwork)()){i(f.CSV_USER.id),k(f.CSV_USER.name),m({name:f.CSV_USER.name,headline:"Imported from your LinkedIn CSV",role:"",company:"",industry:"",sectors:[],goals:[],linkedin_url:""}),o(!0);return}fetch("/api/users?me=1").then(a=>a.json()).then(a=>{let b=a.user;if(!b)throw Error("no profile");(0,d.setUser)(b.id,b.name),i(b.id),k(b.name),m({name:b.name,headline:b.headline||"",role:b.role||"",company:b.company||"",industry:b.industry||"",sectors:b.sectors||[],goals:b.goals||[],linkedin_url:b.linkedin_url||""})}).catch(()=>{(0,d.hasUser)()&&(i((0,d.getUserId)()),k((0,d.getUserName)()))}).finally(()=>o(!0))},[]),(0,b.jsx)(g.Provider,{value:{userId:h,userName:j,userProfile:l,ready:n,login:(a,b)=>{(0,d.setUser)(a,b),i(a),k(b),fetch(`/api/users?id=${a}`).then(a=>a.json()).then(a=>{a.user&&m({name:a.user.name,headline:a.user.headline||"",role:a.user.role||"",company:a.user.company||"",industry:a.user.industry||"",sectors:a.user.sectors||[],goals:a.user.goals||[],linkedin_url:a.user.linkedin_url||""})}).catch(()=>{})}},children:a})},"useUser",0,function(){return(0,c.useContext)(g)}])},58834,a=>{"use strict";var b=a.i(42510);let c="true"===process.env.NEXT_PUBLIC_DEMO_MODE,d=null;async function e(){if(d)return d;let a=await fetch("/demo-data.json",{cache:"no-cache"});if(!a.ok)throw Error("demo-data.json not found — run: node scripts/gen-synthetic.mjs");let b=await a.json();return d={degree1:b.degree1||[],degree2:b.degree2||[]}}async function f(){let a=await e();return(0,b.saveSessionNetwork)({degree1:a.degree1,degree2:a.degree2,source:"sample"}),{degree1:a.degree1.length,degree2:a.degree2.length}}a.s(["DEMO_USER",0,{id:"synthetic-demo-user",name:"You",headline:"Sample network"},"IS_DEMO",0,c,"loadDemoNetwork",0,e,"loadSampleIntoSession",0,f])},7846,a=>{"use strict";var b=a.i(37732);let c=(a,b)=>{try{let c=localStorage.getItem(a);return null===c?b:JSON.parse(c)}catch{return b}};a.s(["allDayNow",0,function(){try{return"true"===localStorage.getItem("six-degrees-experimental-auto")}catch{return!1}},"startAutoScan",0,function(){let a=c("six-degrees-bridge-order","newest");return(0,b.beginScrape)("auto-bridge",{experimental:!0,maxBridges:10,order:a,tiers:"score"===a?["S","A"]:[],maxPages:c("six-degrees-bridge-pages-v2",100),deeper:c("six-degrees-bridge-finish",!0)})},"watchAllDay",0,function(a){return window.addEventListener("storage",a),window.addEventListener("six-degrees:experimental",a),()=>{window.removeEventListener("storage",a),window.removeEventListener("six-degrees:experimental",a)}}])},63033,a=>{"use strict";let b=new Set,c=[],d=[],e=new Set,f=null,g=new Set,h=!1;a.s(["activitiesNow",0,()=>c,"noActivities",0,()=>d,"noNotch",0,()=>!1,"noNotchTabs",0,()=>null,"notchShownNow",0,()=>h,"notchTabsNow",0,()=>f,"setNotchShown",0,function(a){!!a!==h&&(h=!!a,g.forEach(a=>a()))},"setNotchTabs",0,function(a){f=a&&Array.isArray(a.items)&&a.items.length>1?a:null,e.forEach(a=>a())},"showActivity",0,function(a){return a?.id?(c=[...c.filter(b=>b.id!==a.id),a],b.forEach(a=>a()),()=>{var d;return d=a.id,void(c.some(a=>a.id===d)&&(c=c.filter(a=>a.id!==d),b.forEach(a=>a())))}):()=>{}},"watchActivities",0,function(a){return b.add(a),()=>b.delete(a)},"watchNotchShown",0,function(a){return g.add(a),()=>g.delete(a)},"watchNotchTabs",0,function(a){return e.add(a),()=>e.delete(a)}])},37732,a=>{"use strict";async function b(){let a=await fetch("/api/scraper");if(!a.ok)throw Error("Could not reach the app.");return a.json()}Symbol.for("six-degrees.scan-state");let c="six-degrees-hide-chrome";function d(a,b={},e=function(a="u">typeof localStorage?localStorage:null){try{return!0===JSON.parse(a?.getItem(c)||"false")}catch{return!1}}()){return{action:a,...b,...e?{headless:!0}:{}}}async function e(a,b,c={}){let f=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d(a,{...b?{name:b}:{},...c}))}),g=await f.json().catch(()=>({}));if(!f.ok)throw Error(g.error||"Could not start the scanner.");return g}async function f(a){let b=await fetch(`/api/scraper?resume=${encodeURIComponent(a)}`);return b.ok?(await b.json()).resume??null:null}let g=Object.freeze({skips:[],read:[]});async function h(){try{let a=await fetch("/api/scraper?reach=1");if(!a.ok)return g;let b=await a.json();return{skips:Array.isArray(b.skips)?b.skips:[],read:Array.isArray(b.read)?b.read:[]}}catch{return g}}async function i(a){let b=await fetch(`/api/scraper?person=${encodeURIComponent(a)}`);return b.ok?b.json():{person:null}}async function j(){await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"cancel"})})}let k=Object.freeze({known:!1,running:!1,pending:!1,action:null,target:null,startedAt:null,progress:null,pages:0,log:[],finished:[]}),l=new Set,m=k,n=JSON.stringify(m),o=null,p=null,q=0,r=!1,s=new Set;function t(a){let b=JSON.stringify(a);if(b!==n)for(let c of(n=b,m=Object.freeze(a),[...l]))c()}async function u(){(!("u">typeof document&&document.hidden)||m.running)&&await function(){if(p&&p.epoch===q)return p.promise;let a=q,b=fetch("/api/scraper?job=1").then(a=>a.ok?a.json():null).then(b=>{a===q&&function(a){if(!a||"object"!=typeof a)return;let b=!0===a.running;b&&null!=a.startedAt&&s.add(a.startedAt);let c=(Array.isArray(a.recent)?a.recent:[]).filter(a=>s.has(a.startedAt)).map(c=>({...c,log:!b&&c.startedAt===a.startedAt&&Array.isArray(a.log)?a.log:[]}));t({known:!0,running:b||r,pending:r&&!b,action:b?a.action??null:r?m.action:null,target:b?a.target??null:r?m.target:null,startedAt:b?a.startedAt??null:null,progress:b?a.progress??null:null,pages:b&&Number(a.pages)||0,budget:b?a.budget??null:null,log:b&&Array.isArray(a.log)?a.log:[],finished:c})}(b)}).catch(()=>{}).finally(()=>{p?.promise===b&&(p=null)});return p={epoch:a,promise:b},b}(),clearTimeout(o),o=l.size?setTimeout(u,m.running?1500:5e3):null}function v(a){return l.add(a),1===l.size&&u(),()=>{l.delete(a),l.size||(clearTimeout(o),o=null)}}async function w(a,{name:b,id:c,onLog:d,...f}={}){let g;q++,r=!0,t({...m,known:!0,running:!0,pending:!0,action:a,target:b||c?{id:c??null,name:b??null}:null,startedAt:null,progress:null,log:[]});try{g=await e(a,b,{...c?{id:c}:{},...f})}catch(a){throw r=!1,q++,m.pending&&t({...m,running:!1,pending:!1,action:null,target:null,log:[]}),u(),a}r=!1,q++;let h=g?.startedAt??null;null!=h&&s.add(h);let i=new Promise(a=>{let b=v(()=>{m.running&&m.startedAt===h&&d?.(m.log);let c=null==h?m.running?null:{exitCode:null,failure:null,log:[]}:m.finished.find(a=>a.startedAt===h);c&&(b(),c.log.length&&d?.(c.log),a(c))});u()});return{startedAt:h,ended:i}}function x(a){return!!a?.target&&["bridge","rescrape","resume"].includes(a.action)}a.s(["HIDE_CHROME_KEY",0,c,"NO_SCAN_NOTES",0,g,"SCANNER_UNKNOWN",0,k,"beginScrape",0,w,"busyReason",0,function(a=m){if(!a?.running)return null;let b=a.target?.name;switch(a.action){case"bridge":case"rescrape":case"resume":return b?`${b}’s circle is being scanned`:"A circle is being scanned";case"company":return b?`${b} is being scanned`:"A company is being scanned";case"auto-bridge":case"auto-bridge-retry":case"resume-all":return"Your bridges are being mapped, one by one";case"full":case"refresh":return"Your own connections are being scanned";default:switch(a.action){case"install":return"The scanner's packages are being installed";case"setup":return"The scanner is being set up";case"login":return"The LinkedIn sign-in window is open";case"photos":return"Profile photos are being saved";default:return"A scan is running"}}},"isCircleScan",0,x,"loadScanNotes",0,h,"notReadyMessage",0,function(a){if(!a)return"Could not reach the app.";let b=a.checks||{};return b.scriptsFound?b.dependencies?b.chrome?null:"Google Chrome is not installed.":b.python||b.download?"The scanner is not set up yet — open Scan to set it up.":"No Python 3.10 to 3.14 is installed on this machine.":"The scanner files are missing from this install."},"pickedPerson",0,i,"resumePoint",0,f,"runScrape",0,function(a,b={}){return w(a,b).then(a=>a.ended)},"scanRequest",0,d,"scannerNow",0,function(){return m},"scansCircleOf",0,function(a,b){if(!x(a)||!b)return!1;let{id:c,name:d}=a.target;return c&&b.id?c===b.id:!!d&&d===b.name},"scraperStatus",0,b,"stopScrape",0,j,"watchScanner",0,v],37732)},26338,a=>{"use strict";var b=a.i(91621);let c=Object.freeze({base:"standard",custom:{}}),d=new Set,e=c;a.s(["serverTheme",0,()=>c,"setTheme",0,function(a){e=(0,b.cleanTheme)(a);try{localStorage.setItem("six-degrees-theme",JSON.stringify(e))}catch{}!function(a){let c=(0,b.resolveTheme)(a);if(Object.assign(b.TIER_COLORS,c.tiers),Object.assign(b.MAP_LOOK,{you:c.you,lines:c.lines,line:c.line,bg:c.bg}),"u"<typeof document)return;let d=(0,b.themeVars)(a),e=document.documentElement;for(let[a,b]of Object.entries(d))e.style.setProperty(a,b);Object.assign(e.dataset,(0,b.themeAttrs)(a));try{localStorage.setItem("six-degrees-theme-vars",JSON.stringify({vars:d,attrs:(0,b.themeAttrs)(a)}))}catch{}}(e),d.forEach(a=>a())},"themeNow",0,()=>e,"watchTheme",0,function(a){return d.add(a),()=>d.delete(a)}])},69789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
2
+
3
+ //# sourceMappingURL=_0gk_ofx._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[36839,a=>{"use strict";var b=a.i(87924),c=a.i(75857);a.s(["default",0,function({children:a}){let{userId:d,ready:e}=(0,c.useUser)();return e&&d?a:(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:e?(0,b.jsxs)("div",{style:{maxWidth:420},children:[(0,b.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,b.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,b.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},54031,a=>{"use strict";function b(a=[],c=[]){let d={S:0,A:0,B:0,C:0,D:0};for(let b of a)d[b.tier]=(d[b.tier]||0)+1;let e=0;for(let a of c)"S"===a.tier&&(e+=1);let f=new Set(c.map(a=>a.source_connection_id).filter(Boolean)).size,g=a.filter(a=>a.is_catalyst).length;return 100*d.S+40*d.A+15*d.B+5*d.C+ +d.D+200*f+150*g+50*e+a.length}let c=a=>Math.floor(Math.sqrt(Math.max(0,a)/10)),d="six-degrees-level",e={},f=new Set;function g(a="own"){if(!(a in e))try{let b=sessionStorage.getItem(`${d}:${a}`),c=null==b?NaN:Number(b);e[a]=Number.isFinite(c)?c:null}catch{e[a]=null}return e[a]}a.s(["levelNow",0,g,"levelOf",0,c,"networkLevel",0,(a,d)=>c(b(a,d)),"networkPower",0,b,"rememberLevel",0,function(a,b="own"){if(g(b)!==a){e[b]=a;try{sessionStorage.setItem(`${d}:${b}`,String(a))}catch{}f.forEach(a=>a())}},"watchLevel",0,function(a){return f.add(a),()=>f.delete(a)}])},23310,a=>{"use strict";async function b(a){let b=a?`/api/network?userId=${encodeURIComponent(a)}`:"/api/network",c=await fetch(b);if(!c.ok)throw Error(`Failed to load network (${c.status})`);let d=await c.json();return{degree1:d.degree1||[],degree2:d.degree2||[],degree3:d.degree3||[],ties:Number(d.ties)||0}}a.s(["loadNetwork",0,b])},91443,81273,a=>{"use strict";let b={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},c=a=>b[a]||b.fast;function d(a,b){let d=c(a),e=Math.max(0,Math.floor(Number(b)||0));return e*(6+d.pagePause)+Math.floor(e/10)*d.chunkCooldown}a.s(["PACES",0,b,"PACE_NAMES",0,["slow","medium","fast"],"durationText",0,function(a){if(!(a>=60))return"under a minute";let b=Math.round(a/60);if(b<60)return`about ${b} min`;let c=Math.floor(b/60),d=b%60;return`about ${c} h${d?` ${d} min`:""}`},"paceOf",0,c,"paceSeconds",0,d,"searchesPerHour",0,function(a){let b=c(a);return Math.round(3600/(6+b.pagePause+b.chunkCooldown/10))}],81273);var e=a.i(90231);function f(a,b){return a?b.scanned.has(a.id)||a.profile_url&&b.read?.has((0,e.keyFor)(a))?"scanned":a.profile_url&&b.hidden.has((0,e.keyFor)(a))?"hidden":"todo":"todo"}function g(a,b){if(!a||1!==a.degree||null==a.unlocked_from_bridge_id)return null;let c=f(a,b);return"todo"===c?"ready":c}a.s(["circleScanCost",0,function(a=100,b="fast"){let c=Math.max(1,Math.min(100,Math.round(a)||100)),e=b&&"fast"!==b?Math.max(5,Math.round(d(b,c)/60)):c>=100?55:Math.max(5,Math.round(.55*c));return{profileViews:1,searches:c,minutes:e}},"circleState",0,f,"reachIndex",0,function(a=[],b=[],c={}){let d=new Set;for(let a of b||[])a?.source_connection_id!=null&&d.add(a.source_connection_id);let f=new Set;for(let a of c?.skips||[])a?.profileUrl&&f.add((0,e.keyFor)({profile_url:a.profileUrl}));let g=new Set;for(let a of c?.read||[])a&&g.add((0,e.keyFor)({profile_url:a}));let h=new Map;for(let[a,b]of Object.entries(c?.lists||{}))a&&b&&h.set((0,e.keyFor)({profile_url:a}),b);let i=new Map;for(let b of a||[]){let a=b?.unlocked_from_bridge_id;if(null==a||1!==b.degree)continue;let c=i.get(a);c||i.set(a,c=[]),c.push(b)}return{scanned:d,read:g,hidden:f,reachedFrom:i,lists:h}},"reachState",0,g,"readyByCircle",0,function(a){let b=new Map;for(let[c,d]of a.reachedFrom){let e=d.filter(b=>"ready"===g(b,a)).length;e&&b.set(c,e)}return b},"readyToScan",0,function(a,b){return(a||[]).filter(a=>"ready"===g(a,b)).sort(e.compareBridges)},"scanBars",0,function(a,b){let c=f(a,b),d=a?.profile_url?b.lists?.get((0,e.keyFor)(a)):null;return"hidden"===c?null:d?d.more?d.total?Math.max(1,Math.min(4,Math.round(5*Math.min(1,10*d.pages/d.total)))):2:5:"scanned"===c?2:null}],91443)},90231,56377,a=>{"use strict";let b=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,c="/avatars/";function d(a){return"string"==typeof a&&a.startsWith(c)&&b.test(a.slice(c.length))?a:null}a.s(["localPhoto",0,d],56377);let e={S:0,A:1,B:2,C:3,D:4};function f(a){let b=parseFloat(a?.power_score);return Number.isFinite(b)?b:0}function g(a){return Math.round(10*f(a))/10}function h(a){return String(a?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${a?.id}`}let i=(a,b)=>String(a??"").localeCompare(String(b??""),void 0,{numeric:!0});function j(a,b){return(e[a.tier]??9)-(e[b.tier]??9)||f(b)-f(a)||String(a.name||"").localeCompare(String(b.name||""))||i(a.id,b.id)}function k(a,b){return a.bridge&&b.bridge?j(a.bridge,b.bridge):a.bridge?-1:b.bridge?1:i(a.id,b.id)}function l(a,b){return b.score-a.score||b.waysIn-a.waysIn||k(a.routes[0]||m,b.routes[0]||m)||String(a.person.name||"").localeCompare(String(b.person.name||""))||(a.key<b.key?-1:+(a.key>b.key))}let m={id:null,bridge:null};function n(a){let b=String(a||"").trim().split(/\s+/).filter(Boolean);return b.length<2?b[0]||"":`${b[0]} ${b[b.length-1].charAt(0)}.`}function o(a,b){let c=String(a||"");return b<=1?c?"…":"":c.length>b?`${c.slice(0,b-1)}…`:c}a.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,j,"comparePower",0,l,"convergeLayout",0,function(a,b=800,c=!1,{cards:d=!1,mutuals:e=0}={}){let f=d?46:c?40:34,g=Math.round(b*(c?.44:.36)),h=Math.round(b*(c?.8:d?.6:.62)),i=[],j=null;for(let b of a?.routes||[])b.bridge?i.push({id:b.id,bridge:b.bridge,unresolved:!1,count:1}):j?j.count++:i.push(j={id:null,bridge:null,unresolved:!0,count:1});let k=Math.max(0,Math.floor(Number(e)||0)-(a?.waysIn||0)),l=Math.min(60,k),m=d?12:11,p=d?220:c?96:120,q=Math.max(1,Math.floor(p/m)+1),r=Math.ceil(l/q),s=l?40+r*m:0,t=Math.max(0,i.length-1)*f+s,u=Math.max(c?190:d?250:220,32+t+48),v=u/2,w=v-t/2,x=Math.max(4,Math.floor((g-10-42)/6)),y=i.map((a,b)=>{let c=a.unresolved?`can't be named (${a.count})`:a.bridge.name||"";return{...a,x:g,y:w+b*f,r:6,primary:0===b&&!a.unresolved,label:c.length<=x?c:o(a.unresolved?c:n(c),x)}}),z={x:h,y:v,r:17*!d,rings:d?[]:[32,50,70].filter(a=>a<=v-4)},A=y.map(b=>({key:a?.key,bridgeId:b.id,primary:b.primary,unresolved:b.unresolved,tier:b.bridge?.tier??null,x1:b.x,y1:b.y,x2:z.x,y2:z.y})),B={x:20,y:v,r:14},C=y.map(a=>({id:a.id,x1:B.x,y1:B.y,x2:a.x,y2:a.y})),D=a?[{key:a.key,p:a,x:z.x,y:z.y,r:z.r,rings:z.rings,big:!0,label:""}]:[],E=w+Math.max(0,i.length-1)*f+40,F=d?g-236+8:g-p,G=Array.from({length:l},(a,b)=>({x:F+b%q*m,y:E+Math.floor(b/q)*m})),H=a?.waysIn?a.waysIn/(a.waysIn+k):1;return{width:b,height:u,you:B,target:z,people:D,bridges:y,links:A,spokes:C,ghosts:G,unscanned:k,ghostLabel:l?{x:F,y:E-13}:null,drawn:H}},"keyFor",0,h,"mapCount",0,function(a,b=10){let c=Math.max(0,Math.min(100,Number(a)||0));return c<=50?b:Math.max(1,Math.round(b*(100-c)/50))},"mostMutuals",0,function(a=[],b=()=>0,c=7){return[...a].sort((a,c)=>Math.max(b(c)||0,c.waysIn)-Math.max(b(a)||0,a.waysIn)||c.waysIn-a.waysIn||l(a,c)).slice(0,c)},"routeIndex",0,function(a=[]){let b=new Map;for(let c of a||[]){let a=h(c),d=b.get(a);d||(d=new Set,b.set(a,d)),d.add(c.source_connection_id??null)}return b},"routesFor",0,function(a,b,c){return a?[...b?.get(h(a))??(null!=a.source_connection_id?new Set([a.source_connection_id]):new Set)].map(a=>({id:a,bridge:c?.get(a)??null})).sort(k):[]},"score",0,f,"score1",0,g,"separationPeople",0,function(a=[],b=[]){let c=new Map;for(let a of b||[])c.set(a.id,a);let e=new Map,f=new Map;for(let b of a||[]){let a=h(b);f.set(b.id,a);let c=e.get(a);c?function(a,b){let c=g(a)-g(b);if(c)return c>0;let e=!!d(a.profile_image_url);return!!d(b.profile_image_url)!==e?e:0>i(a.id,b.id)}(b,c.person)&&(c.person=b):(c={key:a,person:b,rowIds:[],routeIds:new Set},e.set(a,c)),c.rowIds.push(b.id),c.routeIds.add(b.source_connection_id??null)}let j={people:e.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},m=new Set,n=new Set,o=new Set,p=[];for(let a of e.values()){let b=[...a.routeIds].map(a=>({id:a,bridge:c.get(a)??null}));b.sort(k);let d=b.filter(a=>a.bridge);for(let a of b)(a.bridge?m:n).add(a.id);if(!d.length)for(let a of(j.peopleOnlyUnresolved++,b))o.add(a.id);let{person:e}=a,f=e.tier;void 0!==j.byTier[f]&&j.byTier[f]++,b.length>1&&j.multi++,p.push({key:a.key,person:e,score:g(e),tier:f,routes:b,waysIn:b.length,rowIds:a.rowIds,haystack:[e.name,e.headline,e.company,e.role,...d.map(a=>a.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return j.bridges=m.size,j.unresolvedIds=n.size,j.onlyUnresolvedVia=o.size,p.sort(l),function(a){for(let b=0;b<a.length;b++){let c=a[b],d=a[b-1],e=d&&d.score===c.score&&d.waysIn===c.waysIn;c.rank=e?d.rank:b+1,e&&(c.tied=!0,d.tied=!0)}}(p),{people:p,rowToKey:f,summary:j}},"shortName",0,n,"summitLayout",0,function(a=[],b=800,c=!1,{cards:d=!1}={}){let e=d?45:c?36:26,f=Math.round(.42*b),g=Math.round(.58*b),h=a.map((a,c)=>{var f;return{key:a.key,p:a,x:g,y:16+c*e,r:d?0:(f=a.waysIn)>=4?8.5:3===f?7:2===f?5.5:4,label:o(`#${a.rank}${a.tied?"=":""} ${a.person.name||""}`,Math.floor((b-g-60)/6.2))}}),i=new Map,k="\0unresolved";for(let a of h)for(let b of a.p.routes){let c=b.bridge?b.id:k,d=i.get(c);d||(d={id:b.bridge?b.id:null,bridge:b.bridge,unresolved:!b.bridge,ys:[],count:0},i.set(c,d)),d.count++,d.ys.push(a.y)}let l=[...i.values()].map(a=>({...a,bary:a.ys.reduce((a,b)=>a+b,0)/a.ys.length}));l.sort((a,b)=>a.bary-b.bary||a.unresolved-b.unresolved||(a.bridge&&b.bridge?j(a.bridge,b.bridge):0));let m=h.length?h[h.length-1].y:16,p=function(a=[],b=18,c=0){let d=[];a.forEach((a,c)=>{for(d.push({sum:a-c*b,count:1});d.length>1&&d[d.length-2].sum/d[d.length-2].count>d[d.length-1].sum/d[d.length-1].count;){let a=d.pop();d[d.length-1].sum+=a.sum,d[d.length-1].count+=a.count}});let e=d.flatMap(a=>Array(a.count).fill(a.sum/a.count)).map((a,c)=>a+c*b),f=e.length&&e[0]<c?c-e[0]:0;return e.map(a=>a+f)}(l.map(a=>a.bary),d?32:18,16),q=Math.max(4,Math.floor((f-10-42)/6));l.forEach((a,b)=>{if(a.x=f,a.y=p[b],a.r=5,a.unresolved)a.label=o(`can't be named (${a.count})`,q);else{let b=a.bridge.name||"";a.label=b.length<=q?b:o(n(b),q)}delete a.ys});let r=new Map(l.map(a=>[a.unresolved?k:a.id,a]));for(let a of l)a.onlyFor=0,a.bestFor=0;for(let a of h){let b=a.p.routes[0],c=b?r.get(b.bridge?b.id:k):null;c&&c.bestFor++,1===a.p.waysIn&&c&&c.onlyFor++}let s=[];for(let a of h){let b=new Set;a.p.routes.forEach((c,d)=>{let e=c.bridge?c.id:k;if(b.has(e))return;b.add(e);let f=r.get(e);s.push({key:a.key,bridgeId:f.id,primary:0===d&&!f.unresolved,unresolved:f.unresolved,tier:f.bridge?.tier??null,x1:f.x,y1:f.y,x2:a.x,y2:a.y})})}let t=Math.max(m,l.length?l[l.length-1].y:0),u=h.length?Math.ceil(t+16):0,v={x:20,y:h.length?(16+Math.max(m,t))/2:16,r:14},w=l.map(a=>({id:a.id,x1:v.x,y1:v.y,x2:a.x,y2:a.y}));return{width:b,height:u,you:v,people:h,bridges:l,links:s,spokes:w}}],90231)},59943,a=>{"use strict";a.i(91621),a.s(["TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(a){let b=String(a||"").trim().split(/\s+/).filter(Boolean);return 0===b.length?"?":(b[0].charAt(0)+(b.length>1?b[b.length-1].charAt(0):"")).toUpperCase()}])}];
2
+
3
+ //# sourceMappingURL=_0nwsf93._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[36839,a=>{"use strict";var b=a.i(87924),c=a.i(75857);a.s(["default",0,function({children:a}){let{userId:d,ready:e}=(0,c.useUser)();return e&&d?a:(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:e?(0,b.jsxs)("div",{style:{maxWidth:420},children:[(0,b.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,b.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,b.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},54031,a=>{"use strict";function b(a=[],c=[]){let d={S:0,A:0,B:0,C:0,D:0};for(let b of a)d[b.tier]=(d[b.tier]||0)+1;let e=0;for(let a of c)"S"===a.tier&&(e+=1);let f=new Set(c.map(a=>a.source_connection_id).filter(Boolean)).size,g=a.filter(a=>a.is_catalyst).length;return 100*d.S+40*d.A+15*d.B+5*d.C+ +d.D+200*f+150*g+50*e+a.length}let c=a=>Math.floor(Math.sqrt(Math.max(0,a)/10)),d="six-degrees-level",e={},f=new Set;function g(a="own"){if(!(a in e))try{let b=sessionStorage.getItem(`${d}:${a}`),c=null==b?NaN:Number(b);e[a]=Number.isFinite(c)?c:null}catch{e[a]=null}return e[a]}a.s(["levelNow",0,g,"levelOf",0,c,"networkLevel",0,(a,d)=>c(b(a,d)),"networkPower",0,b,"rememberLevel",0,function(a,b="own"){if(g(b)!==a){e[b]=a;try{sessionStorage.setItem(`${d}:${b}`,String(a))}catch{}f.forEach(a=>a())}},"watchLevel",0,function(a){return f.add(a),()=>f.delete(a)}])},23310,a=>{"use strict";async function b(a){let b=a?`/api/network?userId=${encodeURIComponent(a)}`:"/api/network",c=await fetch(b);if(!c.ok)throw Error(`Failed to load network (${c.status})`);let d=await c.json();return{degree1:d.degree1||[],degree2:d.degree2||[],degree3:d.degree3||[],ties:Number(d.ties)||0}}a.s(["loadNetwork",0,b])},91443,81273,a=>{"use strict";let b={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},c=a=>b[a]||b.fast;function d(a,b){let d=c(a),e=Math.max(0,Math.floor(Number(b)||0));return e*(6+d.pagePause)+Math.floor(e/10)*d.chunkCooldown}a.s(["PACES",0,b,"PACE_NAMES",0,["slow","medium","fast"],"durationText",0,function(a){if(!(a>=60))return"under a minute";let b=Math.round(a/60);if(b<60)return`about ${b} min`;let c=Math.floor(b/60),d=b%60;return`about ${c} h${d?` ${d} min`:""}`},"paceOf",0,c,"paceSeconds",0,d,"searchesPerHour",0,function(a){let b=c(a);return Math.round(3600/(6+b.pagePause+b.chunkCooldown/10))}],81273);var e=a.i(90231);function f(a,b){return a?b.scanned.has(a.id)||a.profile_url&&b.read?.has((0,e.keyFor)(a))?"scanned":a.profile_url&&b.hidden.has((0,e.keyFor)(a))?"hidden":"todo":"todo"}function g(a,b){if(!a||1!==a.degree||null==a.unlocked_from_bridge_id)return null;let c=f(a,b);return"todo"===c?"ready":c}a.s(["circleScanCost",0,function(a=100,b="fast"){let c=Math.max(1,Math.min(100,Math.round(a)||100)),e=b&&"fast"!==b?Math.max(5,Math.round(d(b,c)/60)):c>=100?55:Math.max(5,Math.round(.55*c));return{profileViews:1,searches:c,minutes:e}},"circleState",0,f,"reachIndex",0,function(a=[],b=[],c={}){let d=new Set;for(let a of b||[])a?.source_connection_id!=null&&d.add(a.source_connection_id);let f=new Set;for(let a of c?.skips||[])a?.profileUrl&&f.add((0,e.keyFor)({profile_url:a.profileUrl}));let g=new Set;for(let a of c?.read||[])a&&g.add((0,e.keyFor)({profile_url:a}));let h=new Map;for(let[a,b]of Object.entries(c?.lists||{}))a&&b&&h.set((0,e.keyFor)({profile_url:a}),b);let i=new Map;for(let b of a||[]){let a=b?.unlocked_from_bridge_id;if(null==a||1!==b.degree)continue;let c=i.get(a);c||i.set(a,c=[]),c.push(b)}return{scanned:d,read:g,hidden:f,reachedFrom:i,lists:h}},"reachState",0,g,"readyByCircle",0,function(a){let b=new Map;for(let[c,d]of a.reachedFrom){let e=d.filter(b=>"ready"===g(b,a)).length;e&&b.set(c,e)}return b},"readyToScan",0,function(a,b){return(a||[]).filter(a=>"ready"===g(a,b)).sort(e.compareBridges)},"scanBars",0,function(a,b){let c=f(a,b),d=a?.profile_url?b.lists?.get((0,e.keyFor)(a)):null;return"hidden"===c?null:d?d.more?d.total?Math.max(1,Math.min(4,Math.round(5*Math.min(1,10*d.pages/d.total)))):2:5:"scanned"===c?2:null}],91443)},90231,56377,a=>{"use strict";let b=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,c="/avatars/";function d(a){return"string"==typeof a&&a.startsWith(c)&&b.test(a.slice(c.length))?a:null}a.s(["localPhoto",0,d],56377);let e={S:0,A:1,B:2,C:3,D:4};function f(a){let b=parseFloat(a?.power_score);return Number.isFinite(b)?b:0}function g(a){return Math.round(10*f(a))/10}function h(a){return String(a?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${a?.id}`}let i=(a,b)=>String(a??"").localeCompare(String(b??""),void 0,{numeric:!0});function j(a,b){return(e[a.tier]??9)-(e[b.tier]??9)||f(b)-f(a)||String(a.name||"").localeCompare(String(b.name||""))||i(a.id,b.id)}function k(a,b){return a.bridge&&b.bridge?j(a.bridge,b.bridge):a.bridge?-1:b.bridge?1:i(a.id,b.id)}function l(a,b){return b.score-a.score||b.waysIn-a.waysIn||k(a.routes[0]||m,b.routes[0]||m)||String(a.person.name||"").localeCompare(String(b.person.name||""))||(a.key<b.key?-1:+(a.key>b.key))}let m={id:null,bridge:null};function n(a){let b=String(a||"").trim().split(/\s+/).filter(Boolean);return b.length<2?b[0]||"":`${b[0]} ${b[b.length-1].charAt(0)}.`}function o(a,b){let c=String(a||"");return b<=1?c?"…":"":c.length>b?`${c.slice(0,b-1)}…`:c}a.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,j,"comparePower",0,l,"convergeLayout",0,function(a,b=800,c=!1,{cards:d=!1,mutuals:e=0}={}){let f=d?46:c?40:34,g=Math.round(b*(c?.44:.36)),h=Math.round(b*(c?.8:d?.6:.62)),i=[],j=null;for(let b of a?.routes||[])b.bridge?i.push({id:b.id,bridge:b.bridge,unresolved:!1,count:1}):j?j.count++:i.push(j={id:null,bridge:null,unresolved:!0,count:1});let k=Math.max(0,Math.floor(Number(e)||0)-(a?.waysIn||0)),l=Math.min(60,k),m=d?12:11,p=d?220:c?96:120,q=Math.max(1,Math.floor(p/m)+1),r=Math.ceil(l/q),s=l?40+r*m:0,t=Math.max(0,i.length-1)*f+s,u=Math.max(c?190:d?250:220,32+t+48),v=u/2,w=v-t/2,x=Math.max(4,Math.floor((g-10-42)/6)),y=i.map((a,b)=>{let c=a.unresolved?`can't be named (${a.count})`:a.bridge.name||"";return{...a,x:g,y:w+b*f,r:6,primary:0===b&&!a.unresolved,label:c.length<=x?c:o(a.unresolved?c:n(c),x)}}),z={x:h,y:v,r:17*!d,rings:d?[]:[32,50,70].filter(a=>a<=v-4)},A=y.map(b=>({key:a?.key,bridgeId:b.id,primary:b.primary,unresolved:b.unresolved,tier:b.bridge?.tier??null,x1:b.x,y1:b.y,x2:z.x,y2:z.y})),B={x:20,y:v,r:14},C=y.map(a=>({id:a.id,x1:B.x,y1:B.y,x2:a.x,y2:a.y})),D=a?[{key:a.key,p:a,x:z.x,y:z.y,r:z.r,rings:z.rings,big:!0,label:""}]:[],E=w+Math.max(0,i.length-1)*f+40,F=d?g-236+8:g-p,G=Array.from({length:l},(a,b)=>({x:F+b%q*m,y:E+Math.floor(b/q)*m})),H=a?.waysIn?a.waysIn/(a.waysIn+k):1;return{width:b,height:u,you:B,target:z,people:D,bridges:y,links:A,spokes:C,ghosts:G,unscanned:k,ghostLabel:l?{x:F,y:E-13}:null,drawn:H}},"keyFor",0,h,"mapCount",0,function(a,b=10){let c=Math.max(0,Math.min(100,Number(a)||0));return c<=50?b:Math.max(1,Math.round(b*(100-c)/50))},"mostMutuals",0,function(a=[],b=()=>0,c=7){return[...a].sort((a,c)=>Math.max(b(c)||0,c.waysIn)-Math.max(b(a)||0,a.waysIn)||c.waysIn-a.waysIn||l(a,c)).slice(0,c)},"routeIndex",0,function(a=[]){let b=new Map;for(let c of a||[]){let a=h(c),d=b.get(a);d||(d=new Set,b.set(a,d)),d.add(c.source_connection_id??null)}return b},"routesFor",0,function(a,b,c){return a?[...b?.get(h(a))??(null!=a.source_connection_id?new Set([a.source_connection_id]):new Set)].map(a=>({id:a,bridge:c?.get(a)??null})).sort(k):[]},"score",0,f,"score1",0,g,"separationPeople",0,function(a=[],b=[]){let c=new Map;for(let a of b||[])c.set(a.id,a);let e=new Map,f=new Map;for(let b of a||[]){let a=h(b);f.set(b.id,a);let c=e.get(a);c?function(a,b){let c=g(a)-g(b);if(c)return c>0;let e=!!d(a.profile_image_url);return!!d(b.profile_image_url)!==e?e:0>i(a.id,b.id)}(b,c.person)&&(c.person=b):(c={key:a,person:b,rowIds:[],routeIds:new Set},e.set(a,c)),c.rowIds.push(b.id),c.routeIds.add(b.source_connection_id??null)}let j={people:e.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},m=new Set,n=new Set,o=new Set,p=[];for(let a of e.values()){let b=[...a.routeIds].map(a=>({id:a,bridge:c.get(a)??null}));b.sort(k);let d=b.filter(a=>a.bridge);for(let a of b)(a.bridge?m:n).add(a.id);if(!d.length)for(let a of(j.peopleOnlyUnresolved++,b))o.add(a.id);let{person:e}=a,f=e.tier;void 0!==j.byTier[f]&&j.byTier[f]++,b.length>1&&j.multi++,p.push({key:a.key,person:e,score:g(e),tier:f,routes:b,waysIn:b.length,rowIds:a.rowIds,haystack:[e.name,e.headline,e.company,e.role,...d.map(a=>a.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return j.bridges=m.size,j.unresolvedIds=n.size,j.onlyUnresolvedVia=o.size,p.sort(l),function(a){for(let b=0;b<a.length;b++){let c=a[b],d=a[b-1],e=d&&d.score===c.score&&d.waysIn===c.waysIn;c.rank=e?d.rank:b+1,e&&(c.tied=!0,d.tied=!0)}}(p),{people:p,rowToKey:f,summary:j}},"shortName",0,n,"summitLayout",0,function(a=[],b=800,c=!1,{cards:d=!1}={}){let e=d?45:c?36:26,f=Math.round(.42*b),g=Math.round(.58*b),h=a.map((a,c)=>{var f;return{key:a.key,p:a,x:g,y:16+c*e,r:d?0:(f=a.waysIn)>=4?8.5:3===f?7:2===f?5.5:4,label:o(`#${a.rank}${a.tied?"=":""} ${a.person.name||""}`,Math.floor((b-g-60)/6.2))}}),i=new Map,k="\0unresolved";for(let a of h)for(let b of a.p.routes){let c=b.bridge?b.id:k,d=i.get(c);d||(d={id:b.bridge?b.id:null,bridge:b.bridge,unresolved:!b.bridge,ys:[],count:0},i.set(c,d)),d.count++,d.ys.push(a.y)}let l=[...i.values()].map(a=>({...a,bary:a.ys.reduce((a,b)=>a+b,0)/a.ys.length}));l.sort((a,b)=>a.bary-b.bary||a.unresolved-b.unresolved||(a.bridge&&b.bridge?j(a.bridge,b.bridge):0));let m=h.length?h[h.length-1].y:16,p=function(a=[],b=18,c=0){let d=[];a.forEach((a,c)=>{for(d.push({sum:a-c*b,count:1});d.length>1&&d[d.length-2].sum/d[d.length-2].count>d[d.length-1].sum/d[d.length-1].count;){let a=d.pop();d[d.length-1].sum+=a.sum,d[d.length-1].count+=a.count}});let e=d.flatMap(a=>Array(a.count).fill(a.sum/a.count)).map((a,c)=>a+c*b),f=e.length&&e[0]<c?c-e[0]:0;return e.map(a=>a+f)}(l.map(a=>a.bary),d?32:18,16),q=Math.max(4,Math.floor((f-10-42)/6));l.forEach((a,b)=>{if(a.x=f,a.y=p[b],a.r=5,a.unresolved)a.label=o(`can't be named (${a.count})`,q);else{let b=a.bridge.name||"";a.label=b.length<=q?b:o(n(b),q)}delete a.ys});let r=new Map(l.map(a=>[a.unresolved?k:a.id,a]));for(let a of l)a.onlyFor=0,a.bestFor=0;for(let a of h){let b=a.p.routes[0],c=b?r.get(b.bridge?b.id:k):null;c&&c.bestFor++,1===a.p.waysIn&&c&&c.onlyFor++}let s=[];for(let a of h){let b=new Set;a.p.routes.forEach((c,d)=>{let e=c.bridge?c.id:k;if(b.has(e))return;b.add(e);let f=r.get(e);s.push({key:a.key,bridgeId:f.id,primary:0===d&&!f.unresolved,unresolved:f.unresolved,tier:f.bridge?.tier??null,x1:f.x,y1:f.y,x2:a.x,y2:a.y})})}let t=Math.max(m,l.length?l[l.length-1].y:0),u=h.length?Math.ceil(t+16):0,v={x:20,y:h.length?(16+Math.max(m,t))/2:16,r:14},w=l.map(a=>({id:a.id,x1:v.x,y1:v.y,x2:a.x,y2:a.y}));return{width:b,height:u,you:v,people:h,bridges:l,links:s,spokes:w}}],90231)},59943,a=>{"use strict";a.i(91621),a.s(["TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(a){let b=String(a||"").trim().split(/\s+/).filter(Boolean);return 0===b.length?"?":(b[0].charAt(0)+(b.length>1?b[b.length-1].charAt(0):"")).toUpperCase()}])}];
2
+
3
+ //# sourceMappingURL=_0vho1lb._.js.map