+4
-4
package.json
+4
-4
package.json
···
9
"serve": "vite preview"
10
},
11
"devDependencies": {
12
-
"@iconify-json/lucide": "^1.2.70",
13
"@iconify/tailwind4": "^1.0.6",
14
"@tailwindcss/vite": "^4.1.16",
15
"prettier": "^3.6.2",
···
29
"@atcute/identity": "^1.1.1",
30
"@atcute/identity-resolver": "^1.1.4",
31
"@atcute/leaflet": "^1.0.11",
32
-
"@atcute/lexicon-doc": "^1.1.3",
33
"@atcute/lexicon-resolver": "^0.1.3",
34
"@atcute/lexicons": "^1.2.2",
35
-
"@atcute/oauth-browser-client": "^1.0.27",
36
"@atcute/repo": "^0.1.0",
37
"@atcute/tangled": "^1.0.10",
38
"@atcute/tid": "^1.0.3",
···
48
"@solidjs/meta": "^0.29.4",
49
"@solidjs/router": "^0.15.3",
50
"codemirror": "^6.0.2",
51
-
"solid-js": "^1.9.9"
52
},
53
"packageManager": "pnpm@10.17.1+sha512.17c560fca4867ae9473a3899ad84a88334914f379be46d455cbf92e5cf4b39d34985d452d2583baf19967fa76cb5c17bc9e245529d0b98745721aa7200ecaf7a"
54
}
···
9
"serve": "vite preview"
10
},
11
"devDependencies": {
12
+
"@iconify-json/lucide": "^1.2.71",
13
"@iconify/tailwind4": "^1.0.6",
14
"@tailwindcss/vite": "^4.1.16",
15
"prettier": "^3.6.2",
···
29
"@atcute/identity": "^1.1.1",
30
"@atcute/identity-resolver": "^1.1.4",
31
"@atcute/leaflet": "^1.0.11",
32
+
"@atcute/lexicon-doc": "^1.1.4",
33
"@atcute/lexicon-resolver": "^0.1.3",
34
"@atcute/lexicons": "^1.2.2",
35
+
"@atcute/oauth-browser-client": "^2.0.1",
36
"@atcute/repo": "^0.1.0",
37
"@atcute/tangled": "^1.0.10",
38
"@atcute/tid": "^1.0.3",
···
48
"@solidjs/meta": "^0.29.4",
49
"@solidjs/router": "^0.15.3",
50
"codemirror": "^6.0.2",
51
+
"solid-js": "^1.9.10"
52
},
53
"packageManager": "pnpm@10.17.1+sha512.17c560fca4867ae9473a3899ad84a88334914f379be46d455cbf92e5cf4b39d34985d452d2583baf19967fa76cb5c17bc9e245529d0b98745721aa7200ecaf7a"
54
}
+67
-72
pnpm-lock.yaml
+67
-72
pnpm-lock.yaml
···
33
specifier: ^1.0.11
34
version: 1.0.11
35
'@atcute/lexicon-doc':
36
-
specifier: ^1.1.3
37
-
version: 1.1.3
38
'@atcute/lexicon-resolver':
39
specifier: ^0.1.3
40
version: 0.1.3(@atcute/identity-resolver@1.1.4(@atcute/identity@1.1.1))(@atcute/identity@1.1.1)
···
42
specifier: ^1.2.2
43
version: 1.2.2
44
'@atcute/oauth-browser-client':
45
-
specifier: ^1.0.27
46
-
version: 1.0.27
47
'@atcute/repo':
48
specifier: ^0.1.0
49
version: 0.1.0
···
70
version: 6.38.6
71
'@fsegurai/codemirror-theme-basic-dark':
72
specifier: ^6.2.2
73
-
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)
74
'@fsegurai/codemirror-theme-basic-light':
75
specifier: ^6.2.2
76
-
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)
77
'@mary/exif-rm':
78
specifier: jsr:^0.2.2
79
version: '@jsr/mary__exif-rm@0.2.2'
···
82
version: 0.5.2
83
'@solidjs/meta':
84
specifier: ^0.29.4
85
-
version: 0.29.4(solid-js@1.9.9)
86
'@solidjs/router':
87
specifier: ^0.15.3
88
-
version: 0.15.3(solid-js@1.9.9)
89
codemirror:
90
specifier: ^6.0.2
91
version: 6.0.2
92
solid-js:
93
-
specifier: ^1.9.9
94
-
version: 1.9.9
95
devDependencies:
96
'@iconify-json/lucide':
97
-
specifier: ^1.2.70
98
-
version: 1.2.70
99
'@iconify/tailwind4':
100
specifier: ^1.0.6
101
version: 1.0.6(tailwindcss@4.1.16)
···
122
version: 7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)
123
vite-plugin-solid:
124
specifier: ^2.11.10
125
-
version: 2.11.10(solid-js@1.9.9)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2))
126
127
packages:
128
···
170
'@atcute/leaflet@1.0.11':
171
resolution: {integrity: sha512-PmhBIltPD4DqR737J412ePwtfyBeC/Xr9R+s/d55Aq0kLPo4aBWt+JDb40Mh4JCGGxiz6gu9HFCCZeaVLrL4Dw==}
172
173
-
'@atcute/lexicon-doc@1.1.3':
174
-
resolution: {integrity: sha512-HlQBmB4NCZPzREyVzr7lzjRxSiRHook2xfa7DgA3dk3oYZ+KnnPEtS6M1sAmAAddtUdrOrJ+0xJPQHkfElZmpQ==}
175
176
'@atcute/lexicon-resolver@0.1.3':
177
resolution: {integrity: sha512-4AOS3KKm60GtBfl7ue/35xwZlylAuX5V2xmXnAmNoiN3vIauNkYawwRqgtni5q+EIV9R7p4D8tzkv58NaZ8fEQ==}
···
188
'@atcute/multibase@1.1.6':
189
resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==}
190
191
-
'@atcute/oauth-browser-client@1.0.27':
192
-
resolution: {integrity: sha512-Ng1tCOTMLgFHHoIHXTtCZR1/ND62an1qxPX2kBoUzkxxd7iCP7IBYYqOiKyJYT5n1R4zS+s29hFS4t9mxXa5kQ==}
193
194
'@atcute/repo@0.1.0':
195
resolution: {integrity: sha512-INiYAuma8dydBu7cqd2WVpcXh3mzhIepYBUqFWAK5MqMulPRLTRCc/9GW3G9pxYrOdlvLCVamG2Jf8XK0nuFEw==}
···
634
'@codemirror/view': ^6.0.0
635
'@lezer/highlight': ^1.0.0
636
637
-
'@iconify-json/lucide@1.2.70':
638
-
resolution: {integrity: sha512-56s9NdBKgshywVY1e4gOcxzAbU1J649e/jLHBJU1tyNqRs7mFLVEGwj2mmzHJ5YAZB5Tsngi4f/ocTBPlG06ZA==}
639
640
'@iconify/tailwind4@1.0.6':
641
resolution: {integrity: sha512-43ZXe+bC7CuE2LCgROdqbQeFYJi/J7L/k1UpSy8KDQlWVsWxPzLSWbWhlJx4uRYLOh1NRyw02YlDOgzBOFNd+A==}
···
670
'@lezer/common@1.3.0':
671
resolution: {integrity: sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==}
672
673
-
'@lezer/highlight@1.2.2':
674
-
resolution: {integrity: sha512-z8TQwaBXXQIvG6i2g3e9cgMwUUXu9Ib7jo2qRRggdhwKpM56Dw3PM3wmexn+EGaaOZ7az0K7sjc3/gcGW7sz7A==}
675
676
'@lezer/json@1.0.3':
677
resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==}
···
924
engines: {node: '>=0.4.0'}
925
hasBin: true
926
927
-
babel-plugin-jsx-dom-expressions@0.40.1:
928
-
resolution: {integrity: sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==}
929
peerDependencies:
930
'@babel/core': ^7.20.12
931
932
-
babel-preset-solid@1.9.9:
933
-
resolution: {integrity: sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw==}
934
peerDependencies:
935
'@babel/core': ^7.0.0
936
-
solid-js: ^1.9.8
937
peerDependenciesMeta:
938
solid-js:
939
optional: true
940
941
-
baseline-browser-mapping@2.8.20:
942
-
resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==}
943
hasBin: true
944
945
browserslist@4.27.0:
···
981
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
982
engines: {node: '>=8'}
983
984
-
electron-to-chromium@1.5.240:
985
-
resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==}
986
987
enhanced-resolve@5.18.3:
988
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
···
1171
engines: {node: ^18 || >=20}
1172
hasBin: true
1173
1174
-
node-releases@2.0.26:
1175
-
resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==}
1176
1177
package-manager-detector@1.5.0:
1178
resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
···
1295
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
1296
engines: {node: '>=10'}
1297
1298
-
solid-js@1.9.9:
1299
-
resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==}
1300
1301
solid-refresh@0.6.3:
1302
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
1346
peerDependencies:
1347
browserslist: '>= 4.21.0'
1348
1349
-
validate-html-nesting@1.2.3:
1350
-
resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==}
1351
-
1352
vite-plugin-solid@2.11.10:
1353
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
1354
peerDependencies:
···
1500
'@atcute/atproto': 3.1.8
1501
'@atcute/lexicons': 1.2.2
1502
1503
-
'@atcute/lexicon-doc@1.1.3':
1504
dependencies:
1505
'@badrap/valita': 0.4.6
1506
···
1512
'@atcute/crypto': 2.2.5
1513
'@atcute/identity': 1.1.1
1514
'@atcute/identity-resolver': 1.1.4(@atcute/identity@1.1.1)
1515
-
'@atcute/lexicon-doc': 1.1.3
1516
'@atcute/lexicons': 1.2.2
1517
'@atcute/repo': 0.1.0
1518
'@atcute/uint8array': 1.0.5
···
1534
dependencies:
1535
'@atcute/uint8array': 1.0.5
1536
1537
-
'@atcute/oauth-browser-client@1.0.27':
1538
dependencies:
1539
'@atcute/client': 4.0.5
1540
'@atcute/identity': 1.1.1
1541
'@atcute/lexicons': 1.2.2
1542
'@atcute/multibase': 1.1.6
1543
'@atcute/uint8array': 1.0.5
···
1705
'@codemirror/state': 6.5.2
1706
'@codemirror/view': 6.38.6
1707
'@lezer/common': 1.3.0
1708
-
'@lezer/highlight': 1.2.2
1709
'@lezer/lr': 1.4.2
1710
style-mod: 4.1.3
1711
···
1882
'@esbuild/win32-x64@0.25.11':
1883
optional: true
1884
1885
-
'@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)':
1886
dependencies:
1887
'@codemirror/language': 6.11.3
1888
'@codemirror/state': 6.5.2
1889
'@codemirror/view': 6.38.6
1890
-
'@lezer/highlight': 1.2.2
1891
1892
-
'@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.2)':
1893
dependencies:
1894
'@codemirror/language': 6.11.3
1895
'@codemirror/state': 6.5.2
1896
'@codemirror/view': 6.38.6
1897
-
'@lezer/highlight': 1.2.2
1898
1899
-
'@iconify-json/lucide@1.2.70':
1900
dependencies:
1901
'@iconify/types': 2.0.0
1902
···
1946
1947
'@lezer/common@1.3.0': {}
1948
1949
-
'@lezer/highlight@1.2.2':
1950
dependencies:
1951
'@lezer/common': 1.3.0
1952
1953
'@lezer/json@1.0.3':
1954
dependencies:
1955
'@lezer/common': 1.3.0
1956
-
'@lezer/highlight': 1.2.2
1957
'@lezer/lr': 1.4.2
1958
1959
'@lezer/lr@1.4.2':
···
2036
'@atcute/cbor': 2.2.7
2037
nanoevents: 9.1.0
2038
2039
-
'@solidjs/meta@0.29.4(solid-js@1.9.9)':
2040
dependencies:
2041
-
solid-js: 1.9.9
2042
2043
-
'@solidjs/router@0.15.3(solid-js@1.9.9)':
2044
dependencies:
2045
-
solid-js: 1.9.9
2046
2047
'@standard-schema/spec@1.0.0': {}
2048
···
2144
2145
acorn@8.15.0: {}
2146
2147
-
babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.5):
2148
dependencies:
2149
'@babel/core': 7.28.5
2150
'@babel/helper-module-imports': 7.18.6
···
2152
'@babel/types': 7.28.5
2153
html-entities: 2.3.3
2154
parse5: 7.3.0
2155
-
validate-html-nesting: 1.2.3
2156
2157
-
babel-preset-solid@1.9.9(@babel/core@7.28.5)(solid-js@1.9.9):
2158
dependencies:
2159
'@babel/core': 7.28.5
2160
-
babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.5)
2161
optionalDependencies:
2162
-
solid-js: 1.9.9
2163
2164
-
baseline-browser-mapping@2.8.20: {}
2165
2166
browserslist@4.27.0:
2167
dependencies:
2168
-
baseline-browser-mapping: 2.8.20
2169
caniuse-lite: 1.0.30001751
2170
-
electron-to-chromium: 1.5.240
2171
-
node-releases: 2.0.26
2172
update-browserslist-db: 1.1.4(browserslist@4.27.0)
2173
2174
caniuse-lite@1.0.30001751: {}
···
2199
2200
detect-libc@2.1.2: {}
2201
2202
-
electron-to-chromium@1.5.240: {}
2203
2204
enhanced-resolve@5.18.3:
2205
dependencies:
···
2385
2386
nanoid@5.1.6: {}
2387
2388
-
node-releases@2.0.26: {}
2389
2390
package-manager-detector@1.5.0: {}
2391
···
2471
2472
seroval@1.3.2: {}
2473
2474
-
solid-js@1.9.9:
2475
dependencies:
2476
csstype: 3.1.3
2477
seroval: 1.3.2
2478
seroval-plugins: 1.3.3(seroval@1.3.2)
2479
2480
-
solid-refresh@0.6.3(solid-js@1.9.9):
2481
dependencies:
2482
'@babel/generator': 7.28.5
2483
'@babel/helper-module-imports': 7.27.1
2484
'@babel/types': 7.28.5
2485
-
solid-js: 1.9.9
2486
transitivePeerDependencies:
2487
- supports-color
2488
···
2522
escalade: 3.2.0
2523
picocolors: 1.1.1
2524
2525
-
validate-html-nesting@1.2.3: {}
2526
-
2527
-
vite-plugin-solid@2.11.10(solid-js@1.9.9)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)):
2528
dependencies:
2529
'@babel/core': 7.28.5
2530
'@types/babel__core': 7.20.5
2531
-
babel-preset-solid: 1.9.9(@babel/core@7.28.5)(solid-js@1.9.9)
2532
merge-anything: 5.1.7
2533
-
solid-js: 1.9.9
2534
-
solid-refresh: 0.6.3(solid-js@1.9.9)
2535
vite: 7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)
2536
vitefu: 1.1.1(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2))
2537
transitivePeerDependencies:
···
33
specifier: ^1.0.11
34
version: 1.0.11
35
'@atcute/lexicon-doc':
36
+
specifier: ^1.1.4
37
+
version: 1.1.4
38
'@atcute/lexicon-resolver':
39
specifier: ^0.1.3
40
version: 0.1.3(@atcute/identity-resolver@1.1.4(@atcute/identity@1.1.1))(@atcute/identity@1.1.1)
···
42
specifier: ^1.2.2
43
version: 1.2.2
44
'@atcute/oauth-browser-client':
45
+
specifier: ^2.0.1
46
+
version: 2.0.1
47
'@atcute/repo':
48
specifier: ^0.1.0
49
version: 0.1.0
···
70
version: 6.38.6
71
'@fsegurai/codemirror-theme-basic-dark':
72
specifier: ^6.2.2
73
+
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)
74
'@fsegurai/codemirror-theme-basic-light':
75
specifier: ^6.2.2
76
+
version: 6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)
77
'@mary/exif-rm':
78
specifier: jsr:^0.2.2
79
version: '@jsr/mary__exif-rm@0.2.2'
···
82
version: 0.5.2
83
'@solidjs/meta':
84
specifier: ^0.29.4
85
+
version: 0.29.4(solid-js@1.9.10)
86
'@solidjs/router':
87
specifier: ^0.15.3
88
+
version: 0.15.3(solid-js@1.9.10)
89
codemirror:
90
specifier: ^6.0.2
91
version: 6.0.2
92
solid-js:
93
+
specifier: ^1.9.10
94
+
version: 1.9.10
95
devDependencies:
96
'@iconify-json/lucide':
97
+
specifier: ^1.2.71
98
+
version: 1.2.71
99
'@iconify/tailwind4':
100
specifier: ^1.0.6
101
version: 1.0.6(tailwindcss@4.1.16)
···
122
version: 7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)
123
vite-plugin-solid:
124
specifier: ^2.11.10
125
+
version: 2.11.10(solid-js@1.9.10)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2))
126
127
packages:
128
···
170
'@atcute/leaflet@1.0.11':
171
resolution: {integrity: sha512-PmhBIltPD4DqR737J412ePwtfyBeC/Xr9R+s/d55Aq0kLPo4aBWt+JDb40Mh4JCGGxiz6gu9HFCCZeaVLrL4Dw==}
172
173
+
'@atcute/lexicon-doc@1.1.4':
174
+
resolution: {integrity: sha512-OL0fsXtbnN/KwCq/L3nWGvOCdSHV0NWTatgLUIPt+T9AhcziFNaXAbbjvVHdflr3ZaLh3ksleHK0J789UBhlWQ==}
175
176
'@atcute/lexicon-resolver@0.1.3':
177
resolution: {integrity: sha512-4AOS3KKm60GtBfl7ue/35xwZlylAuX5V2xmXnAmNoiN3vIauNkYawwRqgtni5q+EIV9R7p4D8tzkv58NaZ8fEQ==}
···
188
'@atcute/multibase@1.1.6':
189
resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==}
190
191
+
'@atcute/oauth-browser-client@2.0.1':
192
+
resolution: {integrity: sha512-lG021GkeORG06zfFf4bH85egObjBEKHNgAWHvbtY/E2dX4wxo88hf370pJDx8acdnuUJLJ2VKPikJtZwo4Heeg==}
193
194
'@atcute/repo@0.1.0':
195
resolution: {integrity: sha512-INiYAuma8dydBu7cqd2WVpcXh3mzhIepYBUqFWAK5MqMulPRLTRCc/9GW3G9pxYrOdlvLCVamG2Jf8XK0nuFEw==}
···
634
'@codemirror/view': ^6.0.0
635
'@lezer/highlight': ^1.0.0
636
637
+
'@iconify-json/lucide@1.2.71':
638
+
resolution: {integrity: sha512-KL+3JHW+wN8QqT3CN+7e1SzTe+gIunFBuUICtVmdCmdVRx+MdGNkX4xJhXoYHfhYO2azrEhoGPG+It9k30aZkw==}
639
640
'@iconify/tailwind4@1.0.6':
641
resolution: {integrity: sha512-43ZXe+bC7CuE2LCgROdqbQeFYJi/J7L/k1UpSy8KDQlWVsWxPzLSWbWhlJx4uRYLOh1NRyw02YlDOgzBOFNd+A==}
···
670
'@lezer/common@1.3.0':
671
resolution: {integrity: sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==}
672
673
+
'@lezer/highlight@1.2.3':
674
+
resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==}
675
676
'@lezer/json@1.0.3':
677
resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==}
···
924
engines: {node: '>=0.4.0'}
925
hasBin: true
926
927
+
babel-plugin-jsx-dom-expressions@0.40.3:
928
+
resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==}
929
peerDependencies:
930
'@babel/core': ^7.20.12
931
932
+
babel-preset-solid@1.9.10:
933
+
resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==}
934
peerDependencies:
935
'@babel/core': ^7.0.0
936
+
solid-js: ^1.9.10
937
peerDependenciesMeta:
938
solid-js:
939
optional: true
940
941
+
baseline-browser-mapping@2.8.21:
942
+
resolution: {integrity: sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==}
943
hasBin: true
944
945
browserslist@4.27.0:
···
981
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
982
engines: {node: '>=8'}
983
984
+
electron-to-chromium@1.5.243:
985
+
resolution: {integrity: sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==}
986
987
enhanced-resolve@5.18.3:
988
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
···
1171
engines: {node: ^18 || >=20}
1172
hasBin: true
1173
1174
+
node-releases@2.0.27:
1175
+
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
1176
1177
package-manager-detector@1.5.0:
1178
resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
···
1295
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
1296
engines: {node: '>=10'}
1297
1298
+
solid-js@1.9.10:
1299
+
resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==}
1300
1301
solid-refresh@0.6.3:
1302
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
1346
peerDependencies:
1347
browserslist: '>= 4.21.0'
1348
1349
vite-plugin-solid@2.11.10:
1350
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
1351
peerDependencies:
···
1497
'@atcute/atproto': 3.1.8
1498
'@atcute/lexicons': 1.2.2
1499
1500
+
'@atcute/lexicon-doc@1.1.4':
1501
dependencies:
1502
'@badrap/valita': 0.4.6
1503
···
1509
'@atcute/crypto': 2.2.5
1510
'@atcute/identity': 1.1.1
1511
'@atcute/identity-resolver': 1.1.4(@atcute/identity@1.1.1)
1512
+
'@atcute/lexicon-doc': 1.1.4
1513
'@atcute/lexicons': 1.2.2
1514
'@atcute/repo': 0.1.0
1515
'@atcute/uint8array': 1.0.5
···
1531
dependencies:
1532
'@atcute/uint8array': 1.0.5
1533
1534
+
'@atcute/oauth-browser-client@2.0.1':
1535
dependencies:
1536
'@atcute/client': 4.0.5
1537
'@atcute/identity': 1.1.1
1538
+
'@atcute/identity-resolver': 1.1.4(@atcute/identity@1.1.1)
1539
'@atcute/lexicons': 1.2.2
1540
'@atcute/multibase': 1.1.6
1541
'@atcute/uint8array': 1.0.5
···
1703
'@codemirror/state': 6.5.2
1704
'@codemirror/view': 6.38.6
1705
'@lezer/common': 1.3.0
1706
+
'@lezer/highlight': 1.2.3
1707
'@lezer/lr': 1.4.2
1708
style-mod: 4.1.3
1709
···
1880
'@esbuild/win32-x64@0.25.11':
1881
optional: true
1882
1883
+
'@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)':
1884
dependencies:
1885
'@codemirror/language': 6.11.3
1886
'@codemirror/state': 6.5.2
1887
'@codemirror/view': 6.38.6
1888
+
'@lezer/highlight': 1.2.3
1889
1890
+
'@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.6)(@lezer/highlight@1.2.3)':
1891
dependencies:
1892
'@codemirror/language': 6.11.3
1893
'@codemirror/state': 6.5.2
1894
'@codemirror/view': 6.38.6
1895
+
'@lezer/highlight': 1.2.3
1896
1897
+
'@iconify-json/lucide@1.2.71':
1898
dependencies:
1899
'@iconify/types': 2.0.0
1900
···
1944
1945
'@lezer/common@1.3.0': {}
1946
1947
+
'@lezer/highlight@1.2.3':
1948
dependencies:
1949
'@lezer/common': 1.3.0
1950
1951
'@lezer/json@1.0.3':
1952
dependencies:
1953
'@lezer/common': 1.3.0
1954
+
'@lezer/highlight': 1.2.3
1955
'@lezer/lr': 1.4.2
1956
1957
'@lezer/lr@1.4.2':
···
2034
'@atcute/cbor': 2.2.7
2035
nanoevents: 9.1.0
2036
2037
+
'@solidjs/meta@0.29.4(solid-js@1.9.10)':
2038
dependencies:
2039
+
solid-js: 1.9.10
2040
2041
+
'@solidjs/router@0.15.3(solid-js@1.9.10)':
2042
dependencies:
2043
+
solid-js: 1.9.10
2044
2045
'@standard-schema/spec@1.0.0': {}
2046
···
2142
2143
acorn@8.15.0: {}
2144
2145
+
babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5):
2146
dependencies:
2147
'@babel/core': 7.28.5
2148
'@babel/helper-module-imports': 7.18.6
···
2150
'@babel/types': 7.28.5
2151
html-entities: 2.3.3
2152
parse5: 7.3.0
2153
2154
+
babel-preset-solid@1.9.10(@babel/core@7.28.5)(solid-js@1.9.10):
2155
dependencies:
2156
'@babel/core': 7.28.5
2157
+
babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.28.5)
2158
optionalDependencies:
2159
+
solid-js: 1.9.10
2160
2161
+
baseline-browser-mapping@2.8.21: {}
2162
2163
browserslist@4.27.0:
2164
dependencies:
2165
+
baseline-browser-mapping: 2.8.21
2166
caniuse-lite: 1.0.30001751
2167
+
electron-to-chromium: 1.5.243
2168
+
node-releases: 2.0.27
2169
update-browserslist-db: 1.1.4(browserslist@4.27.0)
2170
2171
caniuse-lite@1.0.30001751: {}
···
2196
2197
detect-libc@2.1.2: {}
2198
2199
+
electron-to-chromium@1.5.243: {}
2200
2201
enhanced-resolve@5.18.3:
2202
dependencies:
···
2382
2383
nanoid@5.1.6: {}
2384
2385
+
node-releases@2.0.27: {}
2386
2387
package-manager-detector@1.5.0: {}
2388
···
2468
2469
seroval@1.3.2: {}
2470
2471
+
solid-js@1.9.10:
2472
dependencies:
2473
csstype: 3.1.3
2474
seroval: 1.3.2
2475
seroval-plugins: 1.3.3(seroval@1.3.2)
2476
2477
+
solid-refresh@0.6.3(solid-js@1.9.10):
2478
dependencies:
2479
'@babel/generator': 7.28.5
2480
'@babel/helper-module-imports': 7.27.1
2481
'@babel/types': 7.28.5
2482
+
solid-js: 1.9.10
2483
transitivePeerDependencies:
2484
- supports-color
2485
···
2519
escalade: 3.2.0
2520
picocolors: 1.1.1
2521
2522
+
vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)):
2523
dependencies:
2524
'@babel/core': 7.28.5
2525
'@types/babel__core': 7.20.5
2526
+
babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10)
2527
merge-anything: 5.1.7
2528
+
solid-js: 1.9.10
2529
+
solid-refresh: 0.6.3(solid-js@1.9.10)
2530
vite: 7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2)
2531
vitefu: 1.1.1(vite@7.1.12(@types/node@22.13.1)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.19.2))
2532
transitivePeerDependencies:
+1
-3
src/components/account.tsx
+1
-3
src/components/account.tsx
···
5
deleteStoredSession,
6
getSession,
7
OAuthUserAgent,
8
-
resolveFromIdentity,
9
} from "@atcute/oauth-browser-client";
10
import { A } from "@solidjs/router";
11
import { createSignal, For, onMount, Show } from "solid-js";
···
53
localStorage.setItem("lastSignedIn", did);
54
await retrieveSession();
55
} catch {
56
-
const resolved = await resolveFromIdentity(did);
57
const authUrl = await createAuthorizationUrl({
58
scope: import.meta.env.VITE_OAUTH_SCOPE,
59
-
...resolved,
60
});
61
62
await new Promise((resolve) => setTimeout(resolve, 250));
···
5
deleteStoredSession,
6
getSession,
7
OAuthUserAgent,
8
} from "@atcute/oauth-browser-client";
9
import { A } from "@solidjs/router";
10
import { createSignal, For, onMount, Show } from "solid-js";
···
52
localStorage.setItem("lastSignedIn", did);
53
await retrieveSession();
54
} catch {
55
const authUrl = await createAuthorizationUrl({
56
scope: import.meta.env.VITE_OAUTH_SCOPE,
57
+
target: { type: "account", identifier: did },
58
});
59
60
await new Promise((resolve) => setTimeout(resolve, 250));
+14
-16
src/components/login.tsx
+14
-16
src/components/login.tsx
···
1
import { Client } from "@atcute/client";
2
import { Did } from "@atcute/lexicons";
3
-
import { isHandle } from "@atcute/lexicons/syntax";
4
import {
5
configureOAuth,
6
createAuthorizationUrl,
7
finalizeAuthorization,
8
getSession,
9
OAuthUserAgent,
10
-
resolveFromIdentity,
11
-
resolveFromService,
12
type Session,
13
} from "@atcute/oauth-browser-client";
14
import { createSignal, Show } from "solid-js";
15
16
configureOAuth({
17
metadata: {
18
client_id: import.meta.env.VITE_OAUTH_CLIENT_ID,
19
redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URL,
20
},
21
});
22
23
export const [agent, setAgent] = createSignal<OAuthUserAgent | undefined>();
···
37
try {
38
setNotice("");
39
if (!handle) return;
40
-
let resolved;
41
-
if (!isHandle(handle)) {
42
-
setNotice(`Resolving your service...`);
43
-
resolved = await resolveFromService(handle);
44
-
} else {
45
-
setNotice(`Resolving your identity...`);
46
-
resolved = await resolveFromIdentity(handle);
47
-
}
48
-
49
setNotice(`Contacting your data server...`);
50
const authUrl = await createAuthorizationUrl({
51
scope: import.meta.env.VITE_OAUTH_SCOPE,
52
-
...resolved,
53
});
54
55
setNotice(`Redirecting...`);
···
101
if (params.has("state") && (params.has("code") || params.has("error"))) {
102
history.replaceState(null, "", location.pathname + location.search);
103
104
-
const session = await finalizeAuthorization(params);
105
-
const did = session.info.sub;
106
107
localStorage.setItem("lastSignedIn", did);
108
···
110
const newSessions: Sessions = sessions ? JSON.parse(sessions) : { [did]: {} };
111
newSessions[did] = { signedIn: true };
112
localStorage.setItem("sessions", JSON.stringify(newSessions));
113
-
return session;
114
} else {
115
const lastSignedIn = localStorage.getItem("lastSignedIn");
116
···
1
import { Client } from "@atcute/client";
2
import { Did } from "@atcute/lexicons";
3
+
import { isDid, isHandle } from "@atcute/lexicons/syntax";
4
import {
5
configureOAuth,
6
createAuthorizationUrl,
7
+
defaultIdentityResolver,
8
finalizeAuthorization,
9
getSession,
10
OAuthUserAgent,
11
type Session,
12
} from "@atcute/oauth-browser-client";
13
import { createSignal, Show } from "solid-js";
14
+
import { didDocumentResolver, handleResolver } from "../utils/api";
15
16
configureOAuth({
17
metadata: {
18
client_id: import.meta.env.VITE_OAUTH_CLIENT_ID,
19
redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URL,
20
},
21
+
identityResolver: defaultIdentityResolver({
22
+
handleResolver: handleResolver,
23
+
didDocumentResolver: didDocumentResolver,
24
+
}),
25
});
26
27
export const [agent, setAgent] = createSignal<OAuthUserAgent | undefined>();
···
41
try {
42
setNotice("");
43
if (!handle) return;
44
setNotice(`Contacting your data server...`);
45
const authUrl = await createAuthorizationUrl({
46
scope: import.meta.env.VITE_OAUTH_SCOPE,
47
+
target:
48
+
isHandle(handle) || isDid(handle) ?
49
+
{ type: "account", identifier: handle }
50
+
: { type: "pds", serviceUrl: handle },
51
});
52
53
setNotice(`Redirecting...`);
···
99
if (params.has("state") && (params.has("code") || params.has("error"))) {
100
history.replaceState(null, "", location.pathname + location.search);
101
102
+
const auth = await finalizeAuthorization(params);
103
+
const did = auth.session.info.sub;
104
105
localStorage.setItem("lastSignedIn", did);
106
···
108
const newSessions: Sessions = sessions ? JSON.parse(sessions) : { [did]: {} };
109
newSessions[did] = { signedIn: true };
110
localStorage.setItem("sessions", JSON.stringify(newSessions));
111
+
return auth.session;
112
} else {
113
const lastSignedIn = localStorage.getItem("lastSignedIn");
114
+2
-2
src/utils/api.ts
+2
-2
src/utils/api.ts
···
19
import { createStore } from "solid-js/store";
20
import { setPDS } from "../components/navbar";
21
22
-
const didDocumentResolver = new CompositeDidDocumentResolver({
23
methods: {
24
plc: new PlcDidDocumentResolver({
25
apiUrl: localStorage.getItem("plcDirectory") ?? "https://plc.directory",
···
28
},
29
});
30
31
-
const handleResolver = new CompositeHandleResolver({
32
strategy: "dns-first",
33
methods: {
34
dns: new DohJsonHandleResolver({ dohUrl: "https://dns.google/resolve?" }),
···
19
import { createStore } from "solid-js/store";
20
import { setPDS } from "../components/navbar";
21
22
+
export const didDocumentResolver = new CompositeDidDocumentResolver({
23
methods: {
24
plc: new PlcDidDocumentResolver({
25
apiUrl: localStorage.getItem("plcDirectory") ?? "https://plc.directory",
···
28
},
29
});
30
31
+
export const handleResolver = new CompositeHandleResolver({
32
strategy: "dns-first",
33
methods: {
34
dns: new DohJsonHandleResolver({ dohUrl: "https://dns.google/resolve?" }),