six-degrees 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +10 -0
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +39 -11
- package/.next/standalone/.next/required-server-files.json +4 -1
- package/.next/standalone/.next/routes-manifest.json +60 -0
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +10 -10
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +9 -9
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/admin-delete/route.js +3 -2
- package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/admin-update/route.js +3 -2
- package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/bridges/route.js +3 -2
- package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/bulk-import/route.js +3 -2
- package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js +9 -0
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/company-scores/route.js +3 -2
- package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/connections/route.js +3 -2
- package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/export/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/export/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/export/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/export/route.js +7 -0
- package/.next/standalone/.next/server/app/api/data/export/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/export/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/data/import/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/import/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/import/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/import/route.js +8 -0
- package/.next/standalone/.next/server/app/api/data/import/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/import/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/data/restart/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/restart/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/restart/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/restart/route.js +8 -0
- package/.next/standalone/.next/server/app/api/data/restart/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/restart/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route.js +7 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/data/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/route.js +7 -0
- package/.next/standalone/.next/server/app/api/data/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/delete-cluster/route.js +3 -2
- package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/route.js +2 -2
- package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/route.js +3 -2
- package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +3 -2
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/outreach/route.js +3 -2
- package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/queue/route.js +3 -2
- package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/scraper/route.js +3 -2
- package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/settings/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/settings/route.js +9 -0
- package/.next/standalone/.next/server/app/api/settings/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js +8 -0
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js +8 -0
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/setup-profile/route.js +3 -2
- package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/unlock/route.js +3 -2
- package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/update/route.js +1 -1
- package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/update-images/route.js +3 -2
- package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/users/route.js +3 -2
- package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/avatars/[file]/route.js +2 -1
- package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/favicon.ico/route.js +2 -1
- package/.next/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/import.html +1 -1
- package/.next/standalone/.next/server/app/import.rsc +12 -12
- package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +12 -12
- package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +12 -12
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +12 -12
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/launch.html +2 -2
- package/.next/standalone/.next/server/app/launch.rsc +12 -12
- package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +12 -12
- package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/paths.html +1 -1
- package/.next/standalone/.next/server/app/paths.rsc +12 -12
- package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +12 -12
- package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/profile.html +1 -1
- package/.next/standalone/.next/server/app/profile.rsc +12 -12
- package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +12 -12
- package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/queue.html +1 -1
- package/.next/standalone/.next/server/app/queue.rsc +12 -12
- package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +12 -12
- package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +11 -11
- package/.next/standalone/.next/server/app/settings/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +20 -0
- package/.next/standalone/.next/server/app/settings/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/settings/page.js +13 -0
- package/.next/standalone/.next/server/app/settings/page.js.map +5 -0
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/settings.html +1 -0
- package/.next/standalone/.next/server/app/settings.meta +26 -0
- package/.next/standalone/.next/server/app/settings.rsc +24 -0
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +24 -0
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +28 -0
- package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup.html +1 -1
- package/.next/standalone/.next/server/app/setup.rsc +12 -12
- package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +12 -12
- package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +11 -11
- package/.next/standalone/.next/server/app-paths-manifest.json +10 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0i5hdu4._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljcioj._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uag-k5._.js +8 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0um1uey._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +8 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1t3rugi._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +3 -0
- package/.next/standalone/.next/server/chunks/_072jl0y._.js +3 -0
- package/.next/standalone/.next/server/chunks/_0lw8_i0._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1_fynia._.js +21 -3
- package/.next/standalone/.next/server/chunks/_1fn30_l._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1itd1o_._.js +2 -1
- package/.next/standalone/.next/server/chunks/_1iwkh8t._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1mxn_lb._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_company-scores_legacy_route_actions_1ncspu_.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_export_route_actions_1lkimty.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_import_route_actions_1eji0kd.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_restart_route_actions_00_-u6o.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_reveal_route_actions_0-moqtn.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_route_actions_0j0w5ep.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_settings_sector-preview_route_actions_0w79454.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_settings_sector-suggestions_route_actions_1eoqugp.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +155 -0
- package/.next/standalone/.next/server/chunks/{lib_rpc_0mc73lk.js → lib_rpc_00tx2sm.js} +1 -1
- package/.next/standalone/.next/server/chunks/lib_rpc_02-qa4d.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_02ndsg2.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_08q5vp6.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0_8i3ft.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +5 -2
- package/.next/standalone/.next/server/chunks/lib_rpc_0huvw-3.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0ip2vdh.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0jzisgh.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0yi9xvd.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1jyhd0o.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1kn59-i.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1q2jkza.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1vpm1sk.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1x6p_31.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_1zc5q0a._.js +158 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0mocm6d._.js → [root-of-the-server]__0an6blh._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1m0255u._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0bipr5s._.js → [root-of-the-server]__1z1j3ek._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_07u8byv._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_08r_mlf._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0ggabjc._.js → _0942v8n._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_1djpk8t._.js → _0hl_t7r._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0tb83dw._.js +132 -0
- package/.next/standalone/.next/server/chunks/ssr/_1-87bs1._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_17gui6a._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_11x4dq5.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_launch_page_19t0dyd.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +4 -4
- package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +5 -5
- package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/lib_0i8v-s3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_1f8t_rp._.js +23 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_1nkgb45._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_01xbj_9._.js → node_modules_1wax83z._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_next_dist_00nap8h._.js → node_modules_next_dist_1bunoni._.js} +2 -2
- package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__0pco7a6._.js +2 -2
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/middleware-manifest.json +15 -7
- package/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.json +4 -0
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/prefetch-hints.json +14 -0
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/06x3jiiz96m5t.js +1 -0
- package/.next/standalone/.next/static/chunks/{34at5d2ifl62i.js → 0ngx9s6-zgshe.js} +5 -5
- package/.next/standalone/.next/static/chunks/0q-_khndfxubv.js +2 -0
- package/.next/standalone/.next/static/chunks/1c79veqedvubt.js +1 -0
- package/.next/standalone/.next/static/chunks/1chp3nx45meg5.js +44 -0
- package/.next/standalone/.next/static/chunks/1irqj0lf-fu3d.js +1 -0
- package/.next/standalone/.next/static/chunks/1uadqylrod5_v.js +1 -0
- package/.next/standalone/.next/static/chunks/23u0zclgwpc4d.js +1 -0
- package/.next/standalone/.next/static/chunks/289ktj97di6zg.js +1 -0
- package/.next/standalone/.next/static/chunks/2b3lmf8e6uj8m.js +16 -0
- package/.next/standalone/.next/static/chunks/2jz311xl1pp_8.js +1 -0
- package/.next/standalone/.next/static/chunks/3npq5yd7c4dmn.js +2 -0
- package/.next/standalone/.next/static/qqqcxvzBUizkECrT4swyK/_clientMiddlewareManifest.js +14 -0
- package/.next/standalone/CHANGELOG.md +298 -0
- package/.next/standalone/CONTRIBUTING.md +5 -2
- package/.next/standalone/README.md +138 -30
- package/.next/standalone/SECURITY.md +117 -10
- package/.next/standalone/app/api/company-scores/legacy/route.js +32 -0
- package/.next/standalone/app/api/company-scores/route.js +20 -11
- package/.next/standalone/app/api/data/export/route.js +49 -0
- package/.next/standalone/app/api/data/import/route.js +83 -0
- package/.next/standalone/app/api/data/restart/route.js +37 -0
- package/.next/standalone/app/api/data/reveal/route.js +14 -0
- package/.next/standalone/app/api/data/route.js +39 -0
- package/.next/standalone/app/api/ingest/route.js +15 -47
- package/.next/standalone/app/api/scraper/route.js +264 -125
- package/.next/standalone/app/api/settings/route.js +58 -0
- package/.next/standalone/app/api/settings/sector-preview/route.js +38 -0
- package/.next/standalone/app/api/settings/sector-suggestions/route.js +20 -0
- package/.next/standalone/app/api/update/route.js +188 -23
- package/.next/standalone/app/avatars/[file]/route.js +4 -2
- package/.next/standalone/app/components/CompanyScores.js +28 -7
- package/.next/standalone/app/components/EmptyState.js +8 -0
- package/.next/standalone/app/components/ForceGraph.js +39 -35
- package/.next/standalone/app/components/LegacyScoresCard.js +129 -0
- package/.next/standalone/app/components/Sidebar.js +11 -10
- package/.next/standalone/app/components/UpdatePanel.js +306 -119
- package/.next/standalone/app/components/UserProvider.js +4 -3
- package/.next/standalone/app/components/settings/DataSection.js +437 -0
- package/.next/standalone/app/components/settings/SectorSection.js +445 -0
- package/.next/standalone/app/components/ui.js +62 -0
- package/.next/standalone/app/launch/page.js +30 -20
- package/.next/standalone/app/page.js +13 -0
- package/.next/standalone/app/paths/page.js +12 -4
- package/.next/standalone/app/profile/page.js +41 -8
- package/.next/standalone/app/queue/page.js +8 -2
- package/.next/standalone/app/settings/page.js +96 -0
- package/.next/standalone/app/setup/page.js +32 -16
- package/.next/standalone/bin/args.mjs +44 -0
- package/.next/standalone/bin/six-degrees.mjs +9 -15
- package/.next/standalone/lib/companies.js +44 -119
- package/.next/standalone/lib/csv.js +8 -0
- package/.next/standalone/lib/data-export.js +170 -0
- package/.next/standalone/lib/data-folder.js +238 -0
- package/.next/standalone/lib/data-import.js +878 -0
- package/.next/standalone/lib/db-client.js +48 -3
- package/.next/standalone/lib/durable.js +73 -0
- package/.next/standalone/lib/gate.js +90 -1
- package/.next/standalone/lib/ingest.js +40 -0
- package/.next/standalone/lib/legacy-offer.js +185 -0
- package/.next/standalone/lib/legacy-scores.js +77 -0
- package/.next/standalone/lib/linkedin-limits.js +124 -1
- package/.next/standalone/lib/rpc.js +121 -13
- package/.next/standalone/lib/sample-stats.js +16 -0
- package/.next/standalone/lib/scan-progress.js +13 -0
- package/.next/standalone/lib/scan-state.js +53 -0
- package/.next/standalone/lib/scanner-python.js +685 -0
- package/.next/standalone/lib/scanner-setup.js +104 -0
- package/.next/standalone/lib/scoring.js +747 -138
- package/.next/standalone/lib/scraper-client.js +9 -5
- package/.next/standalone/lib/sector-directory.js +1532 -0
- package/.next/standalone/lib/sector-focus.js +163 -0
- package/.next/standalone/lib/sector-labels.js +81 -0
- package/.next/standalone/lib/settings-effects.js +59 -0
- package/.next/standalone/lib/settings.js +83 -0
- package/.next/standalone/lib/updater-job.js +838 -0
- package/.next/standalone/lib/updater.js +494 -0
- package/.next/standalone/middleware.js +25 -28
- package/.next/standalone/next.config.mjs +19 -3
- package/.next/standalone/package-lock.json +2 -2
- package/.next/standalone/package.json +1 -2
- package/.next/standalone/scripts/apply-update.sh +482 -0
- package/.next/standalone/scripts/build-app.mjs +251 -9
- package/.next/standalone/scripts/requirements.txt +106 -4
- package/.next/standalone/scripts/test-release-server.mjs +143 -0
- package/.next/standalone/server.js +1 -1
- package/.next/static/chunks/06x3jiiz96m5t.js +1 -0
- package/.next/static/chunks/{34at5d2ifl62i.js → 0ngx9s6-zgshe.js} +5 -5
- package/.next/static/chunks/0q-_khndfxubv.js +2 -0
- package/.next/static/chunks/1c79veqedvubt.js +1 -0
- package/.next/static/chunks/1chp3nx45meg5.js +44 -0
- package/.next/static/chunks/1irqj0lf-fu3d.js +1 -0
- package/.next/static/chunks/1uadqylrod5_v.js +1 -0
- package/.next/static/chunks/23u0zclgwpc4d.js +1 -0
- package/.next/static/chunks/289ktj97di6zg.js +1 -0
- package/.next/static/chunks/2b3lmf8e6uj8m.js +16 -0
- package/.next/static/chunks/2jz311xl1pp_8.js +1 -0
- package/.next/static/chunks/3npq5yd7c4dmn.js +2 -0
- package/.next/static/qqqcxvzBUizkECrT4swyK/_clientMiddlewareManifest.js +14 -0
- package/CHANGELOG.md +298 -0
- package/README.md +138 -30
- package/SECURITY.md +117 -10
- package/bin/args.mjs +44 -0
- package/bin/six-degrees.mjs +9 -15
- package/lib/companies.js +44 -119
- package/lib/csv.js +8 -0
- package/lib/data-export.js +170 -0
- package/lib/data-folder.js +238 -0
- package/lib/data-import.js +878 -0
- package/lib/db-client.js +48 -3
- package/lib/durable.js +73 -0
- package/lib/gate.js +90 -1
- package/lib/ingest.js +40 -0
- package/lib/legacy-offer.js +185 -0
- package/lib/legacy-scores.js +77 -0
- package/lib/linkedin-limits.js +124 -1
- package/lib/rpc.js +121 -13
- package/lib/sample-stats.js +16 -0
- package/lib/scan-progress.js +13 -0
- package/lib/scan-state.js +53 -0
- package/lib/scanner-python.js +685 -0
- package/lib/scanner-setup.js +104 -0
- package/lib/scoring.js +747 -138
- package/lib/scraper-client.js +9 -5
- package/lib/sector-directory.js +1532 -0
- package/lib/sector-focus.js +163 -0
- package/lib/sector-labels.js +81 -0
- package/lib/settings-effects.js +59 -0
- package/lib/settings.js +83 -0
- package/lib/updater-job.js +838 -0
- package/lib/updater.js +494 -0
- package/package.json +1 -2
- package/scripts/requirements.txt +106 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jrmmj-._.js +0 -150
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qx548g._.js +0 -151
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1an3leo._.js +0 -150
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1m8zedk._.js +0 -155
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1zor0ys._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0_rp-01._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0hzdk79._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0ow7u5r._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0t0zc2d._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0wa631d._.js +0 -3
- package/.next/standalone/.next/server/chunks/_13ccnao._.js +0 -3
- package/.next/standalone/.next/server/chunks/_13es063._.js +0 -3
- package/.next/standalone/.next/server/chunks/_142872j._.js +0 -3
- package/.next/standalone/.next/server/chunks/_18wsb_a._.js +0 -8
- package/.next/standalone/.next/server/chunks/_1e-4h5h._.js +0 -3
- package/.next/standalone/.next/server/chunks/_1gvvd7n._.js +0 -158
- package/.next/standalone/.next/server/chunks/_1moda66._.js +0 -3
- package/.next/standalone/.next/server/chunks/_1p6ghzv._.js +0 -3
- package/.next/standalone/.next/server/chunks/_1xmmi_v._.js +0 -3
- package/.next/standalone/.next/server/chunks/_1z-yrlf._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0bf3x4q._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +0 -4
- package/.next/standalone/.next/static/ZGTiDrZ5NHGETgGdlhssu/_clientMiddlewareManifest.js +0 -6
- package/.next/standalone/.next/static/chunks/0jk64vo17avsb.js +0 -1
- package/.next/standalone/.next/static/chunks/0s65dsrthylo6.js +0 -2
- package/.next/standalone/.next/static/chunks/0uyfdhi8dek85.js +0 -16
- package/.next/standalone/.next/static/chunks/220-ne82aus0c.js +0 -44
- package/.next/standalone/.next/static/chunks/229haorf0f19b.js +0 -2
- package/.next/standalone/.next/static/chunks/2g54uafnwuakc.js +0 -1
- package/.next/standalone/.next/static/chunks/2spwqs6b6dx13.js +0 -1
- package/.next/standalone/.next/static/chunks/38dlepuubiox0.js +0 -1
- package/.next/standalone/scripts/score-connections.sql +0 -80
- package/.next/standalone/scripts/score_new_connections.sql +0 -77
- package/.next/standalone/site/app.js +0 -84
- package/.next/standalone/site/index.html +0 -221
- package/.next/standalone/site/style.css +0 -155
- package/.next/standalone/site/video/install-mac-poster.jpg +0 -0
- package/.next/standalone/site/video/install-mac.mp4 +0 -0
- package/.next/standalone/site/video/linux-poster.jpg +0 -0
- package/.next/standalone/site/video/linux.mp4 +0 -0
- package/.next/standalone/site/video/scan-poster.jpg +0 -0
- package/.next/standalone/site/video/scan.mp4 +0 -0
- package/.next/static/ZGTiDrZ5NHGETgGdlhssu/_clientMiddlewareManifest.js +0 -6
- package/.next/static/chunks/0jk64vo17avsb.js +0 -1
- package/.next/static/chunks/0s65dsrthylo6.js +0 -2
- package/.next/static/chunks/0uyfdhi8dek85.js +0 -16
- package/.next/static/chunks/220-ne82aus0c.js +0 -44
- package/.next/static/chunks/229haorf0f19b.js +0 -2
- package/.next/static/chunks/2g54uafnwuakc.js +0 -1
- package/.next/static/chunks/2spwqs6b6dx13.js +0 -1
- package/.next/static/chunks/38dlepuubiox0.js +0 -1
- package/scripts/score_new_connections.sql +0 -77
- /package/.next/standalone/.next/static/{ZGTiDrZ5NHGETgGdlhssu → qqqcxvzBUizkECrT4swyK}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{ZGTiDrZ5NHGETgGdlhssu → qqqcxvzBUizkECrT4swyK}/_ssgManifest.js +0 -0
- /package/.next/static/{ZGTiDrZ5NHGETgGdlhssu → qqqcxvzBUizkECrT4swyK}/_buildManifest.js +0 -0
- /package/.next/static/{ZGTiDrZ5NHGETgGdlhssu → qqqcxvzBUizkECrT4swyK}/_ssgManifest.js +0 -0
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
-- RETIRED: the hosted-era scoring model, kept for history. The app scores with
|
|
2
|
-
-- lib/scoring.js (see its header for the model and why it changed).
|
|
3
|
-
-- CANONICAL SCORER — the scoring model this project's tiers are derived from.
|
|
4
|
-
--
|
|
5
|
-
-- This is the reference implementation: any other scorer in the codebase
|
|
6
|
-
-- (lib/csv.js for CSV imports, the inline scorer in app/api/ingest/route.js)
|
|
7
|
-
-- should be diffed against it. Written for Postgres; the local build ports the
|
|
8
|
-
-- same CASE ladders to SQLite.
|
|
9
|
-
--
|
|
10
|
-
-- Note it differs from the inline JS scorer in two ways the JS omits entirely:
|
|
11
|
-
-- the headline influence bonus (+2 / +1.5) and the 30-day recency bonus (+0.5).
|
|
12
|
-
--
|
|
13
|
-
-- Scores only rows WHERE tier IS NULL, so it is safe to re-run.
|
|
14
|
-
|
|
15
|
-
CREATE OR REPLACE FUNCTION public.score_new_connections()
|
|
16
|
-
RETURNS void
|
|
17
|
-
LANGUAGE plpgsql
|
|
18
|
-
AS $function$
|
|
19
|
-
BEGIN
|
|
20
|
-
-- Seniority score
|
|
21
|
-
UPDATE linkedin_connections SET seniority_score = CASE
|
|
22
|
-
WHEN role ~* '(CEO|Chief|Founder|President|Owner)' THEN 10
|
|
23
|
-
WHEN role ~* '(VP|Vice President|SVP|EVP|Managing Director|Global Head|Country Director)' THEN 9
|
|
24
|
-
WHEN role ~* '(Senior Director|Director|Head of|Country Lead)' THEN 8
|
|
25
|
-
WHEN role ~* '(Senior Manager|Manager,|Engineering Manager|Group Product)' THEN 7
|
|
26
|
-
WHEN role ~* '(Lead|Principal|Staff|Senior.*Engineer|Senior.*Designer|Senior.*Manager)' THEN 6
|
|
27
|
-
WHEN role ~* '(Partner|Client Partner|Account Manager|Strategist)' THEN 5
|
|
28
|
-
WHEN role ~* '(Engineer|Developer|Designer|Analyst|Coordinator)' THEN 4
|
|
29
|
-
WHEN role ~* '(Intern|Student|Undergraduate|Junior|Entry)' THEN 2
|
|
30
|
-
WHEN headline ~* '(Student|UCF|University)' AND role !~* '(Manager|Lead|Director|VP|CEO)' THEN 1
|
|
31
|
-
ELSE 3
|
|
32
|
-
END
|
|
33
|
-
WHERE tier IS NULL;
|
|
34
|
-
|
|
35
|
-
-- Company prestige score
|
|
36
|
-
UPDATE linkedin_connections SET company_prestige_score = CASE
|
|
37
|
-
WHEN company ~* '(^Google|^Meta |^Apple$|^Microsoft|^Amazon|^NVIDIA|^Tesla$)' THEN 10
|
|
38
|
-
WHEN company ~* '(Snap|Snapchat)' THEN 9
|
|
39
|
-
WHEN company ~* '(Goldman Sachs|BlackRock|Merrill Lynch|McKinsey|BCG|^Deloitte|Heidrick|Boies Schiller)' THEN 9
|
|
40
|
-
WHEN company ~* '(Polymarket|Anduril|CoreWeave|^Stripe$|Palantir)' THEN 9
|
|
41
|
-
WHEN company ~* '(Coca-Cola|The Coca-Cola)' THEN 9
|
|
42
|
-
WHEN company ~* '(Pinterest|TikTok|Roku|Netflix|Uber|Spotify|Databricks|Datadog|OpenAI|Anthropic)' THEN 8
|
|
43
|
-
WHEN company ~* '(SpaceX|Lockheed Martin|Northrop|Siemens|Boeing|Raytheon|Disney)' THEN 8
|
|
44
|
-
WHEN company ~* '(Nike|LVMH|Unilever|Danone|Beiersdorf|Starbucks|PepsiCo|Pepsico)' THEN 8
|
|
45
|
-
WHEN company ~* '(Whatnot|BNY|Bank of New York|ServiceNow|Salesforce|Visa|Oracle|IBM)' THEN 8
|
|
46
|
-
WHEN company ~* '(World Bank|Goodyear|Kellanova|Kellogg|Campbell)' THEN 8
|
|
47
|
-
WHEN company ~* '(U\.S\. Space Force|Space Force)' THEN 8
|
|
48
|
-
WHEN company ~* '(Mercury|Credit Karma|Capital One|PayPal|Plaid|Coinbase|Scale AI|Chick-fil-A)' THEN 7
|
|
49
|
-
WHEN company ~* '(WPP|Intel|AMD|Figma|Notion|Vercel)' THEN 7
|
|
50
|
-
WHEN company ~* '(Hard Rock Digital|Beam|Later|Vanta|Kaseya)' THEN 6
|
|
51
|
-
WHEN company = '' OR company IS NULL THEN 2
|
|
52
|
-
ELSE 4
|
|
53
|
-
END
|
|
54
|
-
WHERE tier IS NULL;
|
|
55
|
-
|
|
56
|
-
-- Power score
|
|
57
|
-
UPDATE linkedin_connections SET power_score =
|
|
58
|
-
(seniority_score * 0.5) + (company_prestige_score * 0.3) +
|
|
59
|
-
CASE
|
|
60
|
-
WHEN headline ~* '(billion|million|M\+|B\+|Forbes|YC|a16z|venture|investor|Wharton|MIT|Stanford)' THEN 2
|
|
61
|
-
WHEN headline ~* '(award|patent|speaker|author|TEDx|Board Member|Board Director)' THEN 1.5
|
|
62
|
-
ELSE 0
|
|
63
|
-
END +
|
|
64
|
-
CASE WHEN degree = 1 AND connected_date >= CURRENT_DATE - INTERVAL '30 days' THEN 0.5 ELSE 0 END
|
|
65
|
-
WHERE tier IS NULL;
|
|
66
|
-
|
|
67
|
-
-- Tier assignment
|
|
68
|
-
UPDATE linkedin_connections SET tier = CASE
|
|
69
|
-
WHEN power_score >= 7 THEN 'S'
|
|
70
|
-
WHEN power_score >= 5.5 THEN 'A'
|
|
71
|
-
WHEN power_score >= 4 THEN 'B'
|
|
72
|
-
WHEN power_score >= 2.5 THEN 'C'
|
|
73
|
-
ELSE 'D'
|
|
74
|
-
END
|
|
75
|
-
WHERE tier IS NULL;
|
|
76
|
-
END;
|
|
77
|
-
$function$;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
// The download page's small helpers. The page works fully without them.
|
|
2
|
-
// 1. Not on a Mac: say so plainly, with the Linux route.
|
|
3
|
-
// 2. A likely chip: if the graphics card name gives it away (Chrome shows
|
|
4
|
-
// "Apple M…", or "Intel"), point at that download. Safari hides it; then
|
|
5
|
-
// nothing is guessed and both buttons stay equal.
|
|
6
|
-
// 3. The latest version and its size, asked of GitHub once. If that fails,
|
|
7
|
-
// the page keeps its fallback line.
|
|
8
|
-
// 4. A Copy button for the Terminal line.
|
|
9
|
-
|
|
10
|
-
(() => {
|
|
11
|
-
const $ = (id) => document.getElementById(id);
|
|
12
|
-
const ua = navigator.userAgent || '';
|
|
13
|
-
// iPadOS Safari says "Macintosh", so an iPad is a "Mac" with a touch screen.
|
|
14
|
-
const isPhone = /iPhone|iPad|Android/.test(ua) || (/Macintosh/.test(ua) && navigator.maxTouchPoints > 1);
|
|
15
|
-
const isMac = /Macintosh|Mac OS X/.test(ua) && !isPhone;
|
|
16
|
-
let chip = null;
|
|
17
|
-
|
|
18
|
-
if (!isMac) {
|
|
19
|
-
if (isPhone) {
|
|
20
|
-
$('not-mac').textContent = "You're on a phone or tablet. Six Degrees is a Mac app: open this page on your Mac to download it.";
|
|
21
|
-
}
|
|
22
|
-
$('not-mac').hidden = false;
|
|
23
|
-
} else {
|
|
24
|
-
chip = guessChip();
|
|
25
|
-
if (chip) {
|
|
26
|
-
const pick = chip === 'silicon' ? $('dl-silicon') : $('dl-intel');
|
|
27
|
-
pick.classList.add('suggested');
|
|
28
|
-
$('chip-guess').textContent = chip === 'silicon'
|
|
29
|
-
? 'This looks like an Apple Silicon Mac: take the Apple Silicon download.'
|
|
30
|
-
: 'This looks like an Intel Mac: take the Intel download.';
|
|
31
|
-
$('chip-guess').hidden = false;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function guessChip() {
|
|
36
|
-
try {
|
|
37
|
-
const gl = document.createElement('canvas').getContext('webgl');
|
|
38
|
-
const info = gl && gl.getExtension('WEBGL_debug_renderer_info');
|
|
39
|
-
const name = info ? String(gl.getParameter(info.UNMASKED_RENDERER_WEBGL)) : '';
|
|
40
|
-
if (/Apple M\d/.test(name)) return 'silicon';
|
|
41
|
-
if (/Intel|AMD|Radeon/.test(name)) return 'intel';
|
|
42
|
-
} catch { /* no WebGL: no guess */ }
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
fetch('https://api.github.com/repos/blakeb056/six-degrees/releases/latest', { headers: { Accept: 'application/vnd.github+json' } })
|
|
47
|
-
.then((r) => (r.ok ? r.json() : Promise.reject(r.status)))
|
|
48
|
-
.then((release) => {
|
|
49
|
-
const version = String(release.tag_name || '').replace(/^v/, '');
|
|
50
|
-
if (!version) return;
|
|
51
|
-
const mb = (name) => {
|
|
52
|
-
const a = (release.assets || []).find((x) => x.name === name);
|
|
53
|
-
return a ? Math.round(a.size / 1e6) : null;
|
|
54
|
-
};
|
|
55
|
-
const silicon = mb('Six-Degrees-Mac-Apple-Silicon.dmg');
|
|
56
|
-
const intel = mb('Six-Degrees-Mac-Intel.dmg');
|
|
57
|
-
// The size of the download this Mac needs, when we know which; else both.
|
|
58
|
-
let size = '';
|
|
59
|
-
if (chip === 'silicon' && silicon) size = ` · ${silicon} MB`;
|
|
60
|
-
else if (chip === 'intel' && intel) size = ` · ${intel} MB`;
|
|
61
|
-
else if (silicon && intel) size = ` · ${silicon} MB (Apple Silicon), ${intel} MB (Intel)`;
|
|
62
|
-
$('version-line').textContent = `Version ${version} · macOS 13.5 or later${size} · free and open source`;
|
|
63
|
-
})
|
|
64
|
-
.catch(() => { /* keep the fallback line */ });
|
|
65
|
-
|
|
66
|
-
const copy = $('copy');
|
|
67
|
-
copy.addEventListener('click', async () => {
|
|
68
|
-
const text = $('cmd').textContent.trim();
|
|
69
|
-
try {
|
|
70
|
-
await navigator.clipboard.writeText(text);
|
|
71
|
-
copy.textContent = 'Copied';
|
|
72
|
-
$('copy-status').textContent = 'Install command copied.';
|
|
73
|
-
} catch {
|
|
74
|
-
const range = document.createRange();
|
|
75
|
-
range.selectNodeContents($('cmd'));
|
|
76
|
-
const sel = window.getSelection();
|
|
77
|
-
sel.removeAllRanges();
|
|
78
|
-
sel.addRange(range);
|
|
79
|
-
copy.textContent = 'Press ⌘C';
|
|
80
|
-
$('copy-status').textContent = 'Install command selected. Press Command C to copy it.';
|
|
81
|
-
}
|
|
82
|
-
setTimeout(() => { copy.textContent = 'Copy'; }, 1800);
|
|
83
|
-
});
|
|
84
|
-
})();
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<title>Six Degrees — see your LinkedIn network as a galaxy</title>
|
|
7
|
-
<meta name="description" content="A free Mac app that 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.">
|
|
8
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self'; style-src 'self'; script-src 'self'; connect-src https://api.github.com; base-uri 'none'; form-action 'none'">
|
|
9
|
-
<meta name="referrer" content="no-referrer">
|
|
10
|
-
<meta property="og:title" content="Six Degrees">
|
|
11
|
-
<meta property="og:description" content="A free Mac app that maps your LinkedIn network as a galaxy. Runs on your own computer.">
|
|
12
|
-
<meta property="og:image" content="https://blakeb056.github.io/six-degrees/img/app-window.png">
|
|
13
|
-
<meta name="theme-color" content="#0b0a1c">
|
|
14
|
-
<link rel="icon" href="img/icon.svg" type="image/svg+xml">
|
|
15
|
-
<link rel="stylesheet" href="style.css?v=2026-09-25">
|
|
16
|
-
<script src="app.js?v=2026-09-25" defer></script>
|
|
17
|
-
</head>
|
|
18
|
-
<body>
|
|
19
|
-
<header class="top">
|
|
20
|
-
<a class="brand" href="./"><img src="img/icon.svg" alt="" width="32" height="32"> Six Degrees</a>
|
|
21
|
-
<nav>
|
|
22
|
-
<a href="#install">Install</a>
|
|
23
|
-
<a href="#what">What it does</a>
|
|
24
|
-
<a href="#privacy">Privacy</a>
|
|
25
|
-
<a href="https://github.com/blakeb056/six-degrees">GitHub</a>
|
|
26
|
-
</nav>
|
|
27
|
-
</header>
|
|
28
|
-
|
|
29
|
-
<main>
|
|
30
|
-
<section class="hero">
|
|
31
|
-
<img class="app-icon" src="img/icon.svg" alt="" width="96" height="96">
|
|
32
|
-
<h1>See your LinkedIn network <br>as a galaxy.</h1>
|
|
33
|
-
<p class="lede">Who you know, who <em>they</em> know, and the shortest path to someone you haven't met.
|
|
34
|
-
A free Mac app that runs on your own computer. Nothing is uploaded.</p>
|
|
35
|
-
|
|
36
|
-
<p class="not-mac" id="not-mac" role="status" hidden>
|
|
37
|
-
Six Degrees is a Mac app. On Linux, run <code>npx six-degrees</code> (Node 22.13 or later;
|
|
38
|
-
<a href="#linux">details</a>).
|
|
39
|
-
Windows isn't supported yet.
|
|
40
|
-
</p>
|
|
41
|
-
|
|
42
|
-
<div class="downloads" id="download">
|
|
43
|
-
<a class="dl primary" id="dl-silicon" href="https://github.com/blakeb056/six-degrees/releases/latest/download/Six-Degrees-Mac-Apple-Silicon.dmg">
|
|
44
|
-
<span class="dl-title">Download for Mac</span>
|
|
45
|
-
<span class="dl-sub">Apple Silicon (M1 or newer)</span>
|
|
46
|
-
</a>
|
|
47
|
-
<a class="dl" id="dl-intel" href="https://github.com/blakeb056/six-degrees/releases/latest/download/Six-Degrees-Mac-Intel.dmg">
|
|
48
|
-
<span class="dl-title">Download for Mac</span>
|
|
49
|
-
<span class="dl-sub">Intel</span>
|
|
50
|
-
</a>
|
|
51
|
-
</div>
|
|
52
|
-
<p class="fine" id="version-line">macOS 13.5 or later · about 185–190 MB · free and open source</p>
|
|
53
|
-
<p class="guess" id="chip-guess" hidden></p>
|
|
54
|
-
<p class="fine watch"><a href="#install">New here? Watch how to install it (about a minute)</a></p>
|
|
55
|
-
|
|
56
|
-
<img class="shot" src="img/app-window.png" srcset="img/app-window-1200.png 1200w, img/app-window.png 3136w" sizes="(max-width: 1120px) calc(100vw - 32px), 1072px" alt="Six Degrees on a Mac: your network drawn as circles around you, the most powerful people closest" width="3136" height="2118">
|
|
57
|
-
<p class="caption">Every person shown on this page is invented.</p>
|
|
58
|
-
</section>
|
|
59
|
-
|
|
60
|
-
<section class="install" id="install">
|
|
61
|
-
<h2>Install it in a minute</h2>
|
|
62
|
-
<figure class="video">
|
|
63
|
-
<video controls muted playsinline preload="metadata" poster="video/install-mac-poster.jpg" width="1920" height="1080" aria-label="Video: installing Six Degrees on a Mac">
|
|
64
|
-
<source src="video/install-mac.mp4" type="video/mp4">
|
|
65
|
-
</video>
|
|
66
|
-
<figcaption><strong>Installing on a Mac, step by step</strong> (about a minute): the download, the one-time macOS
|
|
67
|
-
warning and Open Anyway, or the one-line Terminal install, then a first look.</figcaption>
|
|
68
|
-
</figure>
|
|
69
|
-
<div class="which">
|
|
70
|
-
<strong>Which download?</strong> Apple menu → <strong>About This Mac</strong>.
|
|
71
|
-
"Chip: Apple M…" means <strong>Apple Silicon</strong>. "Processor: …Intel…" means <strong>Intel</strong>.
|
|
72
|
-
</div>
|
|
73
|
-
|
|
74
|
-
<ol class="steps" role="list">
|
|
75
|
-
<li>
|
|
76
|
-
<h3>Drag it into Applications</h3>
|
|
77
|
-
<p>Open the file you downloaded (<strong>Six-Degrees-Mac-….dmg</strong>, in your Downloads folder).
|
|
78
|
-
In the window that opens, drag <strong>Six Degrees</strong> onto the <strong>Applications</strong> folder.</p>
|
|
79
|
-
</li>
|
|
80
|
-
<li>
|
|
81
|
-
<h3>Open it once, and close the warning</h3>
|
|
82
|
-
<p>Open <strong>Six Degrees</strong> from Applications. macOS says it can't check the app for malware,
|
|
83
|
-
because it isn't signed with a paid Apple certificate yet. Close that message with <strong>Done</strong>
|
|
84
|
-
(on macOS 13 or 14: <strong>OK</strong> or <strong>Cancel</strong>). Anything except <em>Move to Trash</em>.</p>
|
|
85
|
-
</li>
|
|
86
|
-
<li>
|
|
87
|
-
<h3>Allow it in System Settings</h3>
|
|
88
|
-
<p>Open <strong>System Settings → Privacy & Security</strong>, scroll down to
|
|
89
|
-
<em>"Six Degrees" was blocked</em>, and click <strong>Open Anyway</strong>. Confirm with
|
|
90
|
-
<strong>Open Anyway</strong> again (on macOS 13 or 14: <strong>Open</strong>), and your password if asked. That's once per download; after that it opens like any app.</p>
|
|
91
|
-
</li>
|
|
92
|
-
</ol>
|
|
93
|
-
|
|
94
|
-
<div class="terminal">
|
|
95
|
-
<h3>Or skip those steps with Terminal</h3>
|
|
96
|
-
<p>Press <kbd>⌘</kbd> <kbd>Space</kbd>, type <em>Terminal</em> and press Return. Paste this line and press Return:</p>
|
|
97
|
-
<div class="cmd">
|
|
98
|
-
<code id="cmd">curl -fsSL https://raw.githubusercontent.com/blakeb056/six-degrees/main/install.sh | bash</code>
|
|
99
|
-
<button type="button" id="copy" aria-label="Copy the install command">Copy</button>
|
|
100
|
-
</div>
|
|
101
|
-
<span id="copy-status" class="sr-only" role="status"></span>
|
|
102
|
-
<p class="fine">It downloads the right version for your Mac, checks the file is exactly the one published,
|
|
103
|
-
puts Six Degrees in Applications and opens it. Running it again updates the app.
|
|
104
|
-
<a href="https://github.com/blakeb056/six-degrees/blob/main/install.sh">Read the script</a>.</p>
|
|
105
|
-
</div>
|
|
106
|
-
</section>
|
|
107
|
-
|
|
108
|
-
<section class="linux" id="linux">
|
|
109
|
-
<h2>On Linux</h2>
|
|
110
|
-
<figure class="video">
|
|
111
|
-
<video controls muted playsinline preload="metadata" poster="video/linux-poster.jpg" width="1920" height="1080" aria-label="Video: running Six Degrees on Linux">
|
|
112
|
-
<source src="video/linux.mp4" type="video/mp4">
|
|
113
|
-
</video>
|
|
114
|
-
<figcaption><strong>Running it on Linux</strong> (half a minute): one command, then the same app in your browser.</figcaption>
|
|
115
|
-
</figure>
|
|
116
|
-
<div class="terminal">
|
|
117
|
-
<h3>One command</h3>
|
|
118
|
-
<p>Install <strong>Node 22.13 or later</strong> (from nodejs.org or nvm; Ubuntu's own <code>nodejs</code> package is
|
|
119
|
-
too old), then run:</p>
|
|
120
|
-
<div class="cmd"><code>npx six-degrees</code></div>
|
|
121
|
-
<p class="fine">It opens <code>http://127.0.0.1:6363</code> in your browser and keeps your data in
|
|
122
|
-
<code>~/.six-degrees</code>. Stop it with Ctrl-C; update it with <code>npx six-degrees@latest</code>. Scanning
|
|
123
|
-
also needs Google Chrome (not Chromium) and Python 3.9 or later with venv (on Ubuntu:
|
|
124
|
-
<code>sudo apt install python3-venv</code>). Windows isn't supported yet.</p>
|
|
125
|
-
</div>
|
|
126
|
-
</section>
|
|
127
|
-
|
|
128
|
-
<section class="what" id="what">
|
|
129
|
-
<h2>What it shows you</h2>
|
|
130
|
-
<div class="features">
|
|
131
|
-
<article>
|
|
132
|
-
<h3>Network Circle</h3>
|
|
133
|
-
<p>Everyone you know on rings by how much they can open up for you, the most powerful closest to you.</p>
|
|
134
|
-
</article>
|
|
135
|
-
<article>
|
|
136
|
-
<h3>Degrees</h3>
|
|
137
|
-
<p>The people two steps away, ranked, each with every way in: which of your connections can introduce you.
|
|
138
|
-
Needs a scan, or try it with the sample.</p>
|
|
139
|
-
</article>
|
|
140
|
-
<article>
|
|
141
|
-
<h3>Paths</h3>
|
|
142
|
-
<p>Your network by company and industry: who you know at each company, who you can reach, and the warmest way in.</p>
|
|
143
|
-
</article>
|
|
144
|
-
<article>
|
|
145
|
-
<h3>Outlink</h3>
|
|
146
|
-
<p>Getting introduced, as a game: work through each connection's circle five people at a time. Needs a scan.</p>
|
|
147
|
-
</article>
|
|
148
|
-
</div>
|
|
149
|
-
|
|
150
|
-
<figure>
|
|
151
|
-
<img src="img/degrees.png" srcset="img/degrees-1200.png 1200w, img/degrees.png 2880w" sizes="(max-width: 1120px) calc(100vw - 32px), 1072px" alt="Screenshot of the Degrees view" width="2880" height="1800" loading="lazy">
|
|
152
|
-
<figcaption><strong>Degrees.</strong> Everyone two steps away, ranked, with the connection who can introduce you.</figcaption>
|
|
153
|
-
</figure>
|
|
154
|
-
<figure>
|
|
155
|
-
<img src="img/paths.png" srcset="img/paths-1200.png 1200w, img/paths.png 2880w" sizes="(max-width: 1120px) calc(100vw - 32px), 1072px" alt="Screenshot of the Paths view" width="2880" height="1800" loading="lazy">
|
|
156
|
-
<figcaption><strong>Paths.</strong> Companies grouped by industry, and for any one of them, who's there and how to reach them.</figcaption>
|
|
157
|
-
</figure>
|
|
158
|
-
</section>
|
|
159
|
-
|
|
160
|
-
<section class="ways">
|
|
161
|
-
<h2>Three ways to bring your network in</h2>
|
|
162
|
-
<div class="cards">
|
|
163
|
-
<article>
|
|
164
|
-
<h3>Explore a sample</h3>
|
|
165
|
-
<p>150 invented connections and the 598 people they know. Every view except Outlink, which needs your own scan.</p>
|
|
166
|
-
</article>
|
|
167
|
-
<article>
|
|
168
|
-
<h3>Import LinkedIn's export</h3>
|
|
169
|
-
<p>LinkedIn's own <code>Connections.csv</code>, read on your Mac. It shows the people you know, not who they
|
|
170
|
-
know (so no Degrees or Outlink), and there's no risk to your LinkedIn account.</p>
|
|
171
|
-
</article>
|
|
172
|
-
<article>
|
|
173
|
-
<h3>Scan your LinkedIn</h3>
|
|
174
|
-
<p>The only way to see who <em>your connections</em> know. The app opens Google Chrome with a profile of its
|
|
175
|
-
own, you sign into LinkedIn there yourself, and it reads slowly with daily limits. Needs Google Chrome (in
|
|
176
|
-
Applications) and Python 3.9 or later.</p>
|
|
177
|
-
</article>
|
|
178
|
-
</div>
|
|
179
|
-
<p class="warning"><strong>Scanning uses your own LinkedIn account, and LinkedIn may restrict accounts that
|
|
180
|
-
automate it.</strong> Automating LinkedIn may break its User Agreement. It happened twice while building this
|
|
181
|
-
app. The scanner now reads slowly, keeps to a budget and stops at the first push-back, but the risk is yours.
|
|
182
|
-
The sample and the CSV import carry no LinkedIn risk at all.</p>
|
|
183
|
-
<figure class="video" id="scanning">
|
|
184
|
-
<video controls muted playsinline preload="metadata" poster="video/scan-poster.jpg" width="1920" height="1080" aria-label="Video: how scanning works">
|
|
185
|
-
<source src="video/scan.mp4" type="video/mp4">
|
|
186
|
-
</video>
|
|
187
|
-
<figcaption><strong>How scanning works</strong> (under a minute): install what it needs, sign into LinkedIn in the Chrome
|
|
188
|
-
window it opens, scan the people you know, then map who they know a few at a time.</figcaption>
|
|
189
|
-
</figure>
|
|
190
|
-
</section>
|
|
191
|
-
|
|
192
|
-
<section class="privacy" id="privacy">
|
|
193
|
-
<h2>Your network stays on your Mac</h2>
|
|
194
|
-
<ul role="list">
|
|
195
|
-
<li><strong>No account, no server.</strong> Everything stays on your computer: your network in a hidden
|
|
196
|
-
<code>.six-degrees</code> folder, and the app window's own storage (including an imported CSV) in
|
|
197
|
-
<code>~/Library/Application Support/Six Degrees</code>.</li>
|
|
198
|
-
<li><strong>Nothing is uploaded.</strong> No telemetry, no analytics, no crash reports.</li>
|
|
199
|
-
<li><strong>It only goes online when you act:</strong> LinkedIn while you scan (and for profile photos
|
|
200
|
-
until they're saved on your Mac), PyPI once to set up the scanner, and GitHub when you check for updates.</li>
|
|
201
|
-
<li><strong>Open source.</strong> Every line is on <a href="https://github.com/blakeb056/six-degrees">GitHub</a>,
|
|
202
|
-
under the MIT licence.</li>
|
|
203
|
-
</ul>
|
|
204
|
-
<p class="fine">This page has no trackers either. To show the latest version number, it asks GitHub once.</p>
|
|
205
|
-
</section>
|
|
206
|
-
|
|
207
|
-
<section class="again">
|
|
208
|
-
<a class="dl primary" href="#download">
|
|
209
|
-
<span class="dl-title">Get Six Degrees</span>
|
|
210
|
-
<span class="dl-sub">Free for Mac</span>
|
|
211
|
-
</a>
|
|
212
|
-
</section>
|
|
213
|
-
</main>
|
|
214
|
-
|
|
215
|
-
<footer>
|
|
216
|
-
<p>Six Degrees · MIT licence · <a href="https://github.com/blakeb056/six-degrees">Source on GitHub</a> ·
|
|
217
|
-
<a href="https://github.com/blakeb056/six-degrees/releases">All releases</a></p>
|
|
218
|
-
<p class="fine">It estimates network position, not what anyone is worth as a person.</p>
|
|
219
|
-
</footer>
|
|
220
|
-
</body>
|
|
221
|
-
</html>
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/* The Six Degrees download page. System fonts, no external requests. */
|
|
2
|
-
|
|
3
|
-
:root {
|
|
4
|
-
--bg: #0b0a1c;
|
|
5
|
-
--bg-2: #12102a;
|
|
6
|
-
--panel: rgba(255, 255, 255, 0.04);
|
|
7
|
-
--line: rgba(255, 255, 255, 0.1);
|
|
8
|
-
--text: #eef0f6;
|
|
9
|
-
--muted: #a9aec4;
|
|
10
|
-
--faint: #9297ad;
|
|
11
|
-
--green: #1a7f37;
|
|
12
|
-
--green-2: #238636;
|
|
13
|
-
--gold: #ffd700;
|
|
14
|
-
--purple: #9b59b6;
|
|
15
|
-
--blue: #3498db;
|
|
16
|
-
--orange: #ff8a3d;
|
|
17
|
-
--radius: 14px;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
* { box-sizing: border-box; }
|
|
21
|
-
html { scroll-behavior: smooth; }
|
|
22
|
-
body {
|
|
23
|
-
margin: 0;
|
|
24
|
-
background: radial-gradient(ellipse 120% 60% at 50% 0%, #2a2350 0%, var(--bg-2) 45%, var(--bg) 80%) no-repeat, var(--bg);
|
|
25
|
-
color: var(--text);
|
|
26
|
-
font: 17px/1.6 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif;
|
|
27
|
-
-webkit-font-smoothing: antialiased;
|
|
28
|
-
}
|
|
29
|
-
a { color: #8fc7ff; }
|
|
30
|
-
a:hover { color: #b9dcff; }
|
|
31
|
-
:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; border-radius: 6px; }
|
|
32
|
-
img, video { max-width: 100%; height: auto; }
|
|
33
|
-
code, kbd { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 0.92em; }
|
|
34
|
-
kbd { padding: 1px 7px; border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 6px; background: var(--panel); }
|
|
35
|
-
|
|
36
|
-
.top {
|
|
37
|
-
display: flex; align-items: center; justify-content: space-between; gap: 16px;
|
|
38
|
-
max-width: 1120px; margin: 0 auto; padding: 18px 24px;
|
|
39
|
-
}
|
|
40
|
-
.brand { display: inline-flex; align-items: center; gap: 10px; color: var(--text); text-decoration: none; font-weight: 700; font-size: 18px; }
|
|
41
|
-
.top nav { display: flex; gap: 22px; flex-wrap: wrap; }
|
|
42
|
-
.top nav a { color: var(--muted); text-decoration: none; font-size: 15px; }
|
|
43
|
-
.top nav a:hover { color: var(--text); }
|
|
44
|
-
|
|
45
|
-
main { max-width: 1120px; margin: 0 auto; padding: 0 24px; }
|
|
46
|
-
section { padding: 56px 0; }
|
|
47
|
-
h1, h2, h3 { line-height: 1.2; letter-spacing: -0.01em; }
|
|
48
|
-
h2 { font-size: clamp(26px, 4vw, 34px); margin: 0 0 20px; text-align: center; }
|
|
49
|
-
h3 { font-size: 19px; margin: 0 0 6px; }
|
|
50
|
-
.fine { color: var(--faint); font-size: 14px; }
|
|
51
|
-
|
|
52
|
-
/* hero */
|
|
53
|
-
.hero { text-align: center; padding-top: 32px; }
|
|
54
|
-
.app-icon { display: block; margin: 0 auto 18px; filter: drop-shadow(0 10px 30px rgba(155, 89, 182, 0.35)); }
|
|
55
|
-
.hero h1 { font-size: clamp(34px, 6vw, 58px); margin: 0 0 16px; font-weight: 800; }
|
|
56
|
-
.lede { font-size: clamp(17px, 2.2vw, 20px); color: var(--muted); max-width: 640px; margin: 0 auto 28px; }
|
|
57
|
-
|
|
58
|
-
.downloads { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
|
|
59
|
-
.dl {
|
|
60
|
-
display: inline-flex; flex-direction: column; align-items: center; min-width: 250px;
|
|
61
|
-
padding: 14px 26px; border-radius: 12px; text-decoration: none; color: var(--text);
|
|
62
|
-
background: rgba(255, 255, 255, 0.07); border: 1px solid var(--line);
|
|
63
|
-
transition: transform 0.12s ease, background 0.12s ease;
|
|
64
|
-
}
|
|
65
|
-
.dl:hover { transform: translateY(-1px); background: rgba(255, 255, 255, 0.11); color: var(--text); }
|
|
66
|
-
.dl.primary { background: linear-gradient(180deg, var(--green-2), var(--green)); border-color: transparent; color: #fff; box-shadow: 0 10px 30px rgba(46, 164, 79, 0.3); }
|
|
67
|
-
.dl.primary:hover { background: linear-gradient(180deg, #1f883d, #196c2e); }
|
|
68
|
-
.dl.primary .dl-sub { opacity: 1; }
|
|
69
|
-
.dl.suggested { outline: 2px solid var(--gold); outline-offset: 3px; }
|
|
70
|
-
.dl.suggested:focus-visible { outline: 3px solid #fff; outline-offset: 5px; }
|
|
71
|
-
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
|
|
72
|
-
.dl-title { font-weight: 700; font-size: 18px; }
|
|
73
|
-
.dl-sub { font-size: 14px; opacity: 0.85; }
|
|
74
|
-
.hero .fine { margin: 14px 0 0; }
|
|
75
|
-
.guess { color: var(--gold); font-size: 14px; margin: 6px 0 0; }
|
|
76
|
-
.not-mac { max-width: 560px; margin: 0 auto 18px; padding: 12px 16px; border-radius: 10px; background: rgba(255, 138, 61, 0.1); border: 1px solid rgba(255, 138, 61, 0.35); color: var(--text); font-size: 15px; }
|
|
77
|
-
.shot { display: block; margin: 44px auto 6px; border-radius: 12px; }
|
|
78
|
-
.caption { color: var(--faint); font-size: 13px; margin: 0; }
|
|
79
|
-
|
|
80
|
-
/* install */
|
|
81
|
-
.which { max-width: 760px; margin: 0 auto 24px; padding: 14px 18px; border-radius: 10px; background: var(--panel); border: 1px solid var(--line); text-align: center; color: var(--muted); }
|
|
82
|
-
.which strong { color: var(--text); }
|
|
83
|
-
.steps { list-style: none; counter-reset: step; display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; padding: 0; margin: 0 0 24px; }
|
|
84
|
-
.steps li { counter-increment: step; position: relative; padding: 22px 20px 18px; border-radius: var(--radius); background: var(--panel); border: 1px solid var(--line); }
|
|
85
|
-
.steps li::before {
|
|
86
|
-
content: counter(step); position: absolute; top: -14px; left: 18px; width: 30px; height: 30px; border-radius: 50%;
|
|
87
|
-
display: grid; place-items: center; font-weight: 800; font-size: 15px; color: #0b0a1c; background: var(--gold);
|
|
88
|
-
}
|
|
89
|
-
.steps p { margin: 0; color: var(--muted); font-size: 15.5px; }
|
|
90
|
-
.steps strong { color: var(--text); }
|
|
91
|
-
.terminal { max-width: 860px; margin: 0 auto; padding: 22px; border-radius: var(--radius); background: var(--panel); border: 1px solid var(--line); }
|
|
92
|
-
.terminal p { color: var(--muted); margin: 6px 0; }
|
|
93
|
-
.cmd { display: flex; gap: 10px; align-items: stretch; margin: 12px 0; }
|
|
94
|
-
.cmd code { flex: 1; min-width: 0; white-space: normal; overflow-wrap: anywhere; padding: 12px 14px; border-radius: 10px; background: #05040f; border: 1px solid var(--line); color: #d8f5dc; }
|
|
95
|
-
.cmd button {
|
|
96
|
-
flex: none; padding: 0 18px; border-radius: 10px; border: 1px solid var(--line); cursor: pointer;
|
|
97
|
-
background: rgba(255, 255, 255, 0.08); color: var(--text); font: inherit; font-weight: 600; font-size: 15px;
|
|
98
|
-
}
|
|
99
|
-
.cmd button:hover { background: rgba(255, 255, 255, 0.14); }
|
|
100
|
-
|
|
101
|
-
/* the tutorial videos (silent: the captions are in the picture). index.html asks for
|
|
102
|
-
this file by version (style.css?v=…): a browser holding the old copy drew them at
|
|
103
|
-
their full 1920px, off-centre. Bump the version whenever the page's layout changes. */
|
|
104
|
-
.watch { margin: 8px 0 0; }
|
|
105
|
-
.video { max-width: 860px; margin: 0 auto 32px; }
|
|
106
|
-
.video video { display: block; width: 100%; height: auto; border-radius: 12px; border: 1px solid var(--line); background: #05040f; }
|
|
107
|
-
.ways .video { margin: 32px auto 0; }
|
|
108
|
-
|
|
109
|
-
/* what it does */
|
|
110
|
-
.features { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 32px; }
|
|
111
|
-
.features article, .cards article { padding: 18px; border-radius: var(--radius); background: var(--panel); border: 1px solid var(--line); }
|
|
112
|
-
.features article:nth-child(1) h3 { color: var(--gold); }
|
|
113
|
-
.features article:nth-child(2) h3 { color: var(--orange); }
|
|
114
|
-
.features article:nth-child(3) h3 { color: #3ee08f; }
|
|
115
|
-
.features article:nth-child(4) h3 { color: #ff9f5a; }
|
|
116
|
-
.features p, .cards p { margin: 0; color: var(--muted); font-size: 15.5px; }
|
|
117
|
-
figure { margin: 0 0 28px; }
|
|
118
|
-
figure img { display: block; border-radius: 12px; border: 1px solid var(--line); }
|
|
119
|
-
figcaption { color: var(--muted); font-size: 15px; margin-top: 10px; text-align: center; }
|
|
120
|
-
figcaption strong { color: var(--text); }
|
|
121
|
-
|
|
122
|
-
/* ways in */
|
|
123
|
-
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
|
|
124
|
-
.warning { max-width: 860px; margin: 22px auto 0; padding: 14px 18px; border-radius: 10px; background: rgba(255, 215, 0, 0.07); border: 1px solid rgba(255, 215, 0, 0.3); color: var(--muted); font-size: 15px; }
|
|
125
|
-
.warning strong { color: var(--text); }
|
|
126
|
-
|
|
127
|
-
/* privacy */
|
|
128
|
-
.privacy ul { max-width: 760px; margin: 0 auto; padding: 0; list-style: none; display: grid; gap: 10px; }
|
|
129
|
-
.privacy li { padding: 14px 18px; border-radius: 10px; background: var(--panel); border: 1px solid var(--line); color: var(--muted); }
|
|
130
|
-
.privacy li strong { color: var(--text); }
|
|
131
|
-
.privacy .fine { text-align: center; }
|
|
132
|
-
|
|
133
|
-
.again { text-align: center; padding-top: 8px; }
|
|
134
|
-
|
|
135
|
-
footer { max-width: 1120px; margin: 0 auto; padding: 40px 24px 56px; text-align: center; color: var(--muted); font-size: 14px; border-top: 1px solid var(--line); }
|
|
136
|
-
|
|
137
|
-
@media (max-width: 860px) {
|
|
138
|
-
.steps, .features, .cards { grid-template-columns: 1fr; }
|
|
139
|
-
.steps { gap: 26px; }
|
|
140
|
-
section { padding: 40px 0; }
|
|
141
|
-
}
|
|
142
|
-
@media (max-width: 520px) {
|
|
143
|
-
body { font-size: 16px; }
|
|
144
|
-
.hero h1 br { display: none; }
|
|
145
|
-
.top nav { gap: 16px; }
|
|
146
|
-
.top nav a:not(:last-child) { display: none; }
|
|
147
|
-
.dl { min-width: 0; width: 100%; }
|
|
148
|
-
.cmd { flex-direction: column; }
|
|
149
|
-
.cmd button { padding: 10px; }
|
|
150
|
-
.top, main { padding-left: 16px; padding-right: 16px; }
|
|
151
|
-
}
|
|
152
|
-
@media (prefers-reduced-motion: reduce) {
|
|
153
|
-
html { scroll-behavior: auto; }
|
|
154
|
-
.dl { transition: none; }
|
|
155
|
-
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
self.__MIDDLEWARE_MATCHERS = [
|
|
2
|
-
{
|
|
3
|
-
"regexp": "^(?:\\/(_next\\/data\\/[^/]{1,}))?\\/api(?:\\/((?:[^\\/#\\?]+?)(?:\\/(?:[^\\/#\\?]+?))*))?(\\.json|\\.rsc|\\.segments\\/.+\\.segment\\.rsc)?[\\/#\\?]?$",
|
|
4
|
-
"originalSource": "/api/:path*"
|
|
5
|
-
}
|
|
6
|
-
];self.__MIDDLEWARE_MATCHERS_CB && self.__MIDDLEWARE_MATCHERS_CB()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2776,e=>{"use strict";var t=e.i(43476),r=e.i(15812);e.s(["default",0,function({children:e}){let{userId:n,ready:o}=(0,r.useUser)();return o&&n?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff",padding:24,textAlign:"center",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:o?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach 6 Degrees’ local server"}),(0,t.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,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},99201,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(19821),o=e.i(5258);let i={height:10,borderRadius:6},l={background:"rgba(52,152,219,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(52,152,219,0.2)"};function s({degree1:e=[],degree2:r=[],skips:n=[]}){let d=function(e=[],t=[],r=[]){let n=new Set(t.map(e=>e.source_connection_id).filter(Boolean)),o=new Set(r.map(e=>e.profileUrl).filter(Boolean)),i=e=>n.has(e.id)?"mapped":e.profile_url&&o.has(e.profile_url)?"hidden":"todo",l={mapped:0,hidden:0,todo:0},s={};for(let t of e){let e=i(t);l[e]+=1;let r=t.tier||"D";s[r]=s[r]||{mapped:0,hidden:0,todo:0,total:0},s[r][e]+=1,s[r].total+=1}let a=e.length,d=l.mapped+l.hidden;return{...l,total:a,resolved:d,percent:a?Math.round(d/a*100):0,batches:Math.ceil(l.todo/25),byTier:s}}(e,r,n);if(!d.total)return null;let c=e=>d.total?e/d.total*100:0,u=0===d.todo;return(0,t.jsxs)("div",{style:l,children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",marginBottom:10},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#3498DB"},children:"2nd-degree mapping"}),(0,t.jsx)("span",{style:{fontSize:12,color:u?"#00ff88":"#8b9a9a",fontWeight:600},children:u?"Everything reachable is mapped":`${d.percent}%`})]}),(0,t.jsxs)("div",{style:{...i,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,t.jsx)("div",{style:{width:`${c(d.mapped)}%`,background:"#00ff88"}}),(0,t.jsx)("div",{style:{width:`${c(d.hidden)}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:16,marginTop:10,fontSize:12,flexWrap:"wrap"},children:[(0,t.jsx)(a,{color:"#00ff88",label:"mapped",value:d.mapped}),(0,t.jsx)(a,{color:"rgba(255,255,255,0.35)",label:"hidden",value:d.hidden}),(0,t.jsx)(a,{color:"rgba(255,255,255,0.12)",label:"to go",value:d.todo}),(0,t.jsxs)("span",{style:{color:"#667",marginLeft:"auto"},children:["of ",d.total]})]}),d.hidden>0&&(0,t.jsx)("p",{style:{fontSize:11.5,color:"#667",margin:"10px 0 0",lineHeight:1.6},children:"Hidden means they keep their connections private — that will not change, and it does not count against you."}),!u&&(0,t.jsxs)("p",{style:{fontSize:11.5,color:"#8b9a9a",margin:"10px 0 0",lineHeight:1.6},children:[d.todo," left — about ",(0,t.jsxs)("b",{children:[d.batches," ",1===d.batches?"batch":"batches"]})," of ",25,". Run one, leave it a while, run another. Long unbroken runs are what gets an account restricted."]}),(0,t.jsx)("div",{style:{marginTop:16,display:"flex",flexDirection:"column",gap:7},children:["S","A","B","C","D"].filter(e=>d.byTier[e]?.total).map(e=>{let r=d.byTier[e];return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,fontSize:11},children:[(0,t.jsx)("span",{style:{width:14,color:o.TIER_COLORS_CLASSIC[e],fontWeight:700},children:e}),(0,t.jsxs)("div",{style:{flex:1,height:5,borderRadius:3,display:"flex",overflow:"hidden",background:"rgba(255,255,255,0.06)"},children:[(0,t.jsx)("div",{style:{width:`${r.mapped/r.total*100}%`,background:o.TIER_COLORS_CLASSIC[e]}}),(0,t.jsx)("div",{style:{width:`${r.hidden/r.total*100}%`,background:"rgba(255,255,255,0.22)"}})]}),(0,t.jsxs)("span",{style:{color:"#667",width:62,textAlign:"right"},children:[r.mapped,"/",r.total]})]},e)})})]})}function a({color:e,label:r,value:n}){return(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:6,color:"#8b9a9a"},children:[(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:2,background:e}}),(0,t.jsx)("b",{style:{color:"#e2e8f0"},children:n})," ",r]})}var d=e.i(64745),c=e.i(2776),u=e.i(15812),f=e.i(22016);let g={1:"Observer",11:"Connector",31:"Networker",51:"Strategist",76:"Architect"};function h(){let{userId:e,userName:o,userProfile:i}=(0,u.useUser)(),l=i||{name:o||"User",headline:"",sectors:[],goals:[]},[a,c]=(0,r.useState)(null),[h,y]=(0,r.useState)(!0),[x,b]=(0,r.useState)([]),[m,j]=(0,r.useState)({total:0,sent:0,accepted:0}),[v,S]=(0,r.useState)({degree1:[],degree2:[],skips:[]});if((0,r.useEffect)(()=>{!d.IS_DEMO&&e&&t();async function t(){let t=await (0,n.loadNetwork)(e),r=t.degree1,o=t.degree2,i={S:0,A:0,B:0,C:0,D:0};r.forEach(e=>{i[e.tier]=(i[e.tier]||0)+1});let l={S:0,A:0,B:0,C:0,D:0};o.forEach(e=>{l[e.tier]=(l[e.tier]||0)+1});let s=[...new Set(o.map(e=>e.source_connection_id).filter(Boolean))].length,a=r.filter(e=>e.is_catalyst).length,d={};r.forEach(e=>{e.company&&(d[e.company]=(d[e.company]||0)+1)});let u=Object.entries(d).sort((e,t)=>t[1]-e[1]).slice(0,10),f=100*i.S+40*i.A+15*i.B+5*i.C+ +i.D+200*s+150*a+50*l.S+r.length,g=Math.floor(Math.sqrt(f/10)),h=g*g*10,p=(g+1)*(g+1)*10;c({d1Count:r.length,d2Count:o.length,tiers:i,d2Tiers:l,clusters:s,catalysts:a,networkPower:f,level:g,xpProgress:(f-h)/(p-h)*100,topCompanies:u,unlockedPaths:0}),fetch("/api/scraper").then(e=>e.json()).then(e=>S({degree1:r,degree2:o,skips:e.skips||[]})).catch(()=>S({degree1:r,degree2:o,skips:[]})),fetch(`/api/notifications?userId=${e}`).then(e=>e.json()).then(e=>b(e.notifications||[])).catch(()=>{}),fetch("/api/queue").then(e=>e.json()).then(e=>{let t=e.items||[];j({total:t.length,sent:t.filter(e=>"sent"===e.status).length,accepted:t.filter(e=>"accepted"===e.status).length})}).catch(()=>{}),y(!1)}},[e]),d.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"rgba(255,255,255,0.7)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,textAlign:"center",padding:24,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[(0,t.jsx)("h2",{style:{margin:0,fontSize:20,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,t.jsx)("p",{style:{margin:0,fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(f.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});if(h)return(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff"},children:"Loading profile..."});let C={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},k=[{label:"First S-Tier",done:a.tiers.S>0,icon:"👑"},{label:"100 Connections",done:a.d1Count>=100,icon:"🔗"},{label:"500 Connections",done:a.d1Count>=500,icon:"🌐"},{label:"First Cluster",done:a.clusters>0,icon:"🔭"},{label:"10 Clusters",done:a.clusters>=10,icon:"🏰"},{label:"50 S-Tier",done:a.tiers.S>=50,icon:"💎"},{label:"Catalyst Found",done:a.catalysts>0,icon:"⚡"},{label:"Level 25",done:a.level>=25,icon:"🎯"},{label:"Level 50",done:a.level>=50,icon:"🚀"},{label:"D2 S-Tier > 50",done:a.d2Tiers.S>=50,icon:"🌟"}];return(0,t.jsxs)("div",{style:{height:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",display:"flex",alignItems:"center",gap:16},children:[(0,t.jsxs)(f.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.1)"},children:[(0,t.jsx)("span",{style:{fontSize:16},children:"←"})," Back to Map"]}),(0,t.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Profile"})]}),(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"30px 20px"},children:(0,t.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.05)",borderRadius:16,padding:32,marginBottom:24,border:"1px solid rgba(255,215,0,0.2)",textAlign:"center"},children:[(0,t.jsx)("div",{style:{width:100,height:100,borderRadius:"50%",margin:"0 auto 16px",background:"linear-gradient(135deg, #FFD700, #FF6B35)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:36,fontWeight:800,color:"#000",boxShadow:"0 0 30px rgba(255,215,0,0.3)"},children:a.level}),(0,t.jsx)("div",{style:{fontSize:24,fontWeight:700,marginBottom:4},children:l.name}),(0,t.jsx)("div",{style:{fontSize:14,color:"#888",marginBottom:4},children:l.headline}),(0,t.jsx)("div",{style:{display:"inline-block",padding:"4px 16px",borderRadius:20,background:"rgba(255,215,0,0.15)",border:"1px solid rgba(255,215,0,0.3)",color:"#FFD700",fontSize:13,fontWeight:700,marginBottom:16},children:function(e){let t="Observer";for(let[r,n]of Object.entries(g))e>=parseInt(r)&&(t=n);return t}(a.level)}),(0,t.jsxs)("div",{style:{maxWidth:300,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:10,color:"#666",marginBottom:4},children:[(0,t.jsxs)("span",{children:["Level ",a.level]}),(0,t.jsxs)("span",{children:["Level ",a.level+1]})]}),(0,t.jsx)("div",{style:{height:8,background:"rgba(255,255,255,0.1)",borderRadius:4},children:(0,t.jsx)("div",{style:{height:"100%",width:`${Math.min(a.xpProgress,100)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",borderRadius:4,transition:"width 1s ease"}})}),(0,t.jsxs)("div",{style:{fontSize:10,color:"#888",marginTop:4},children:["Network Power: ",a.networkPower.toLocaleString()]})]})]}),(0,t.jsx)(s,{degree1:v.degree1,degree2:v.degree2,skips:v.skips}),(0,t.jsxs)("div",{style:{background:"rgba(255,107,53,0.06)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,107,53,0.2)"},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,margin:0,color:"#FF6B35"},children:"Queue Progress"}),(0,t.jsx)(f.default,{href:"/queue",style:{fontSize:11,color:"#FF6B35",textDecoration:"none",fontWeight:600},children:"View Queue →"})]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12},children:[(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#FFA500"},children:m.total}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888"},children:"In Queue"})]}),(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#3498DB"},children:m.sent}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Sent"})]}),(0,t.jsxs)("div",{style:{textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:"#00ff88"},children:m.accepted}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888"},children:"Accepted"})]})]})]}),x.length>0&&(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Recent Activity (",x.filter(e=>!e.seen).length," new)"]}),(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6,maxHeight:200,overflowY:"auto"},children:x.slice(0,10).map(e=>(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",padding:"6px 8px",borderRadius:6,background:e.seen?"transparent":"rgba(255,215,0,0.05)",borderLeft:e.seen?"none":"2px solid #FFD700"},children:[(0,t.jsx)("span",{style:{fontSize:16},children:e.icon||"📌"}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:12,fontWeight:600,color:e.seen?"#888":"#fff"},children:e.title}),e.message&&(0,t.jsx)("div",{style:{fontSize:10,color:"#666"},children:e.message})]}),(0,t.jsx)("span",{style:{fontSize:9,color:"#555",flexShrink:0},children:new Date(e.created_at).toLocaleDateString()})]},e.id))})]}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:12,marginBottom:24},children:[(0,t.jsx)(p,{label:"Connections",value:a.d1Count}),(0,t.jsx)(p,{label:"Degree-2 Reach",value:a.d2Count}),(0,t.jsx)(p,{label:"Clusters",value:a.clusters}),(0,t.jsx)(p,{label:"S-Tier",value:a.tiers.S,color:"#FFD700"}),(0,t.jsx)(p,{label:"A-Tier",value:a.tiers.A,color:"#9B59B6"}),(0,t.jsx)(p,{label:"Catalysts",value:a.catalysts,color:"#00ff88"})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Tier Distribution"}),["S","A","B","C","D"].map(e=>{let r=a.tiers[e]||0,n=a.d1Count>0?r/a.d1Count*100:0;return(0,t.jsxs)("div",{style:{marginBottom:8},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:11,marginBottom:2},children:[(0,t.jsxs)("span",{style:{color:C[e],fontWeight:600},children:[e,"-Tier"]}),(0,t.jsxs)("span",{style:{color:"#888"},children:[r," (",n.toFixed(1),"%)"]})]}),(0,t.jsx)("div",{style:{height:6,background:"rgba(255,255,255,0.08)",borderRadius:3},children:(0,t.jsx)("div",{style:{height:"100%",width:`${n}%`,background:C[e],borderRadius:3}})})]},e)})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Degree-2 Reach"}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FF6B35"},children:a.d2Count}),(0,t.jsx)("div",{style:{fontSize:11,color:"#888"},children:"People reachable via bridges"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:24,fontWeight:700,color:"#FFD700"},children:a.d2Tiers.S}),(0,t.jsx)("div",{style:{fontSize:11,color:"#888"},children:"S-Tier degree-2"})]})]})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsxs)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:["Milestones (",k.filter(e=>e.done).length,"/",k.length,")"]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:k.map((e,r)=>(0,t.jsxs)("div",{style:{padding:"8px 10px",borderRadius:8,fontSize:12,background:e.done?"rgba(255,215,0,0.08)":"rgba(255,255,255,0.02)",border:`1px solid ${e.done?"rgba(255,215,0,0.2)":"rgba(255,255,255,0.05)"}`,color:e.done?"#FFD700":"#555",display:"flex",alignItems:"center",gap:6},children:[(0,t.jsx)("span",{style:{fontSize:16},children:e.done?e.icon:"🔒"}),(0,t.jsx)("span",{style:{fontWeight:e.done?600:400},children:e.label})]},r))})]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,marginBottom:24,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Top Companies in Your Network"}),a.topCompanies.map(([e,r],n)=>(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",padding:"4px 0",borderBottom:n<a.topCompanies.length-1?"1px solid rgba(255,255,255,0.04)":"none",fontSize:12},children:[(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{style:{color:"#888"},children:r})]},n))]}),(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:12,padding:20,border:"1px solid rgba(255,255,255,0.08)"},children:[(0,t.jsx)("h3",{style:{fontSize:14,fontWeight:700,marginTop:0,marginBottom:12},children:"Your Sectors"}),(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:l.sectors.map((e,r)=>(0,t.jsx)("span",{style:{padding:"4px 12px",borderRadius:20,fontSize:11,fontWeight:600,background:"rgba(52,152,219,0.15)",border:"1px solid rgba(52,152,219,0.3)",color:"#3498DB"},children:e},r))})]})]})})]})}function p({label:e,value:r,color:n}){return(0,t.jsxs)("div",{style:{background:"rgba(255,255,255,0.04)",borderRadius:10,padding:"14px 12px",border:"1px solid rgba(255,255,255,0.08)",textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:n||"#fff"},children:r}),(0,t.jsx)("div",{style:{fontSize:10,color:"#888",marginTop:2},children:e})]})}e.s(["default",0,function(){return(0,t.jsx)(c.default,{children:(0,t.jsx)(h,{})})}],99201)},19821,e=>{"use strict";async function t(e){let t=e?`/api/network?userId=${encodeURIComponent(e)}`:"/api/network",r=await fetch(t);if(!r.ok)throw Error(`Failed to load network (${r.status})`);let n=await r.json();return{degree1:n.degree1||[],degree2:n.degree2||[],degree3:n.degree3||[]}}e.s(["loadNetwork",0,t])},5258,e=>{"use strict";e.s(["TIER_COLORS",0,{S:"#f6c344",A:"#a78bfa",B:"#60a5fa",C:"#94a3b8",D:"#6b7280"},"TIER_COLORS_CLASSIC",0,{S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},"TIER_ORDER",0,["S","A","B","C","D"],"TIER_RING_RADIUS",0,{S:150,A:230,B:310,C:390,D:470},"initialsFor",0,function(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return 0===t.length?"?":(t[0].charAt(0)+(t.length>1?t[t.length-1].charAt(0):"")).toUpperCase()}])},22016,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return x},useLinkStatus:function(){return m}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=e.r(90809),l=e.r(43476),s=i._(e.r(71645)),a=e.r(95057),d=e.r(8372),c=e.r(18581),u=e.r(18967),f=e.r(5550),g=e.r(88540),h=e.r(91949),p=e.r(73668),y=e.r(9396);function x(t){var r;let n,o,i,[x,m]=(0,s.useOptimistic)(h.IDLE_LINK_STATUS),j=(0,s.useRef)(null),{href:v,as:S,children:C,prefetch:k=null,passHref:B,replace:w,shallow:R,scroll:T,onClick:D,onMouseEnter:F,onTouchStart:_,legacyBehavior:z=!1,onNavigate:A,transitionTypes:E,ref:I,unstable_dynamicOnHover:P,...O}=t;n=C,z&&("string"==typeof n||"number"==typeof n)&&(n=(0,l.jsx)("a",{children:n}));let W=s.default.useContext(d.AppRouterContext),L=!1!==k,N=!1===k?"none":!0===k?"full":"auto",M="none"!==N?"auto"===N?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,U="string"==typeof(r=S||v)?r:(0,a.formatUrl)(r);if(z){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});o=s.default.Children.only(n)}let $=z?o&&"object"==typeof o&&o.ref:I,K,H=s.default.useCallback(e=>(null!==W&&(j.current=(0,h.mountLinkInstance)(e,U,W,M,L,m,K)),()=>{j.current&&((0,h.unmountLinkForCurrentNavigation)(j.current),j.current=null),(0,h.unmountPrefetchableInstance)(e)}),[L,U,W,M,m,K]),Q={ref:(0,c.useMergedRef)(H,$),onClick(t){z||"function"!=typeof D||D(t),z&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!W||t.defaultPrevented||function(t,r,n,o,i,l,a,d="none"){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,p.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:f}=e.r(99781);s.default.startTransition(()=>{f(r,o?"replace":"push",!1===i?g.ScrollBehavior.NoScroll:g.ScrollBehavior.Default,n.current,a,d)})}}(t,U,j,w,T,A,E,N)},onMouseEnter(e){z||"function"!=typeof F||F(e),z&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),W&&L&&(0,h.onNavigationIntent)(e.currentTarget,!0===P)},onTouchStart:function(e){z||"function"!=typeof _||_(e),z&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),W&&L&&(0,h.onNavigationIntent)(e.currentTarget,!0===P)}};return(0,u.isAbsoluteUrl)(U)?Q.href=U:z&&!B&&("a"!==o.type||"href"in o.props)||(Q.href=(0,f.addBasePath)(U)),i=z?s.default.cloneElement(o,Q):(0,l.jsx)("a",{...O,...Q,children:n}),(0,l.jsx)(b.Provider,{value:x,children:i})}let b=(0,s.createContext)(h.IDLE_LINK_STATUS),m=()=>(0,s.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(71645);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=i(e,n)),t&&(o.current=i(t,n))},[e,t])}function i(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18967,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return x},MiddlewareNotFoundError:function(){return v},MissingStaticPage:function(){return j},NormalizeError:function(){return b},PageNotFoundError:function(){return m},SP:function(){return p},ST:function(){return y},WEB_VITALS:function(){return i},execOnce:function(){return l},getDisplayName:function(){return u},getLocationOrigin:function(){return d},getURL:function(){return c},isAbsoluteUrl:function(){return a},isResSent:function(){return f},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return g},stringifyError:function(){return S}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=["CLS","FCP","FID","INP","LCP","TTFB"];function l(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let s=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,a=e=>{let t=e.charCodeAt(0);return!!(t>=65&&t<=90||t>=97&&t<=122)&&s.test(e)};function d(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=d();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function g(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let p="u">typeof performance,y=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class x extends Error{}class b extends Error{}class m extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class j extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class v extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function S(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return i}});let n=e.r(18967),o=e.r(52817);function i(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return a},searchParamsToUrlQuery:function(){return i},urlQueryToSearchParams:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function i(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function l(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function s(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,l(e));else t.set(r,l(n));return t}function a(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},95057,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return s},formatWithValidation:function(){return d},urlObjectKeys:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=e.r(90809)._(e.r(98183)),l=/https?|ftp|gopher|file/;function s(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",s=e.hash||"",a=e.query||"",d=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?d=t+e.host:r&&(d=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(d+=":"+e.port)),a&&"object"==typeof a&&(a=String(i.urlQueryToSearchParams(a)));let c=e.search||a&&`?${a}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||l.test(n))&&!1!==d?(d="//"+(d||""),o&&"/"!==o[0]&&(o="/"+o)):d||(d=""),s&&"#"!==s[0]&&(s="#"+s),c&&"?"!==c[0]&&(c="?"+c),o=o.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${d}${o}${c}${s}`}let a=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function d(e){return s(e)}}]);
|