tangled
alpha
login
or
join now
tynanpurdy.com
/
contrail
0
fork
atom
Web clipper powered by the AT Protocol
0
fork
atom
overview
issues
pulls
pipelines
getting started
Tynan Purdy
6 months ago
eb5f0109
+126
6 changed files
expand all
collapse all
unified
split
.gitignore
manifest.json
package-lock.json
package.json
popup.ts
public
popup.html
+2
.gitignore
···
1
1
+
node_modules/
2
2
+
.env
+13
manifest.json
···
1
1
+
{
2
2
+
"manifest_version": 3,
3
3
+
4
4
+
"name": "Contrail",
5
5
+
"description": "Clip links with the AT Protocol",
6
6
+
"version": "0.0.1",
7
7
+
8
8
+
"action": {
9
9
+
"default_popup": "public/popup.html"
10
10
+
},
11
11
+
12
12
+
"permissions": ["activeTab"]
13
13
+
}
+98
package-lock.json
···
1
1
+
{
2
2
+
"name": "contrail",
3
3
+
"lockfileVersion": 3,
4
4
+
"requires": true,
5
5
+
"packages": {
6
6
+
"": {
7
7
+
"dependencies": {
8
8
+
"@lexicon-community/types": "^1.0.0"
9
9
+
}
10
10
+
},
11
11
+
"node_modules/@atproto/common-web": {
12
12
+
"version": "0.4.2",
13
13
+
"resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.4.2.tgz",
14
14
+
"integrity": "sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==",
15
15
+
"license": "MIT",
16
16
+
"dependencies": {
17
17
+
"graphemer": "^1.4.0",
18
18
+
"multiformats": "^9.9.0",
19
19
+
"uint8arrays": "3.0.0",
20
20
+
"zod": "^3.23.8"
21
21
+
}
22
22
+
},
23
23
+
"node_modules/@atproto/lexicon": {
24
24
+
"version": "0.4.14",
25
25
+
"resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.4.14.tgz",
26
26
+
"integrity": "sha512-jiKpmH1QER3Gvc7JVY5brwrfo+etFoe57tKPQX/SmPwjvUsFnJAow5xLIryuBaJgFAhnTZViXKs41t//pahGHQ==",
27
27
+
"license": "MIT",
28
28
+
"dependencies": {
29
29
+
"@atproto/common-web": "^0.4.2",
30
30
+
"@atproto/syntax": "^0.4.0",
31
31
+
"iso-datestring-validator": "^2.2.2",
32
32
+
"multiformats": "^9.9.0",
33
33
+
"zod": "^3.23.8"
34
34
+
}
35
35
+
},
36
36
+
"node_modules/@atproto/syntax": {
37
37
+
"version": "0.4.1",
38
38
+
"resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.4.1.tgz",
39
39
+
"integrity": "sha512-CJdImtLAiFO+0z3BWTtxwk6aY5w4t8orHTMVJgkf++QRJWTxPbIFko/0hrkADB7n2EruDxDSeAgfUGehpH6ngw==",
40
40
+
"license": "MIT"
41
41
+
},
42
42
+
"node_modules/@atproto/xrpc": {
43
43
+
"version": "0.6.12",
44
44
+
"resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.6.12.tgz",
45
45
+
"integrity": "sha512-Ut3iISNLujlmY9Gu8sNU+SPDJDvqlVzWddU8qUr0Yae5oD4SguaUFjjhireMGhQ3M5E0KljQgDbTmnBo1kIZ3w==",
46
46
+
"license": "MIT",
47
47
+
"dependencies": {
48
48
+
"@atproto/lexicon": "^0.4.10",
49
49
+
"zod": "^3.23.8"
50
50
+
}
51
51
+
},
52
52
+
"node_modules/@lexicon-community/types": {
53
53
+
"version": "1.0.0",
54
54
+
"resolved": "https://registry.npmjs.org/@lexicon-community/types/-/types-1.0.0.tgz",
55
55
+
"integrity": "sha512-y7zNrgjzgeKfhoG9K5DfN+mFG7G/vBUHus1OKe4pj4rc/XKO/15cI+slfzzNRYEZ3b9+9BE1Jl6/HVH/odARsg==",
56
56
+
"license": "MIT",
57
57
+
"dependencies": {
58
58
+
"@atproto/xrpc": "^0.6.5"
59
59
+
}
60
60
+
},
61
61
+
"node_modules/graphemer": {
62
62
+
"version": "1.4.0",
63
63
+
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
64
64
+
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
65
65
+
"license": "MIT"
66
66
+
},
67
67
+
"node_modules/iso-datestring-validator": {
68
68
+
"version": "2.2.2",
69
69
+
"resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz",
70
70
+
"integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==",
71
71
+
"license": "MIT"
72
72
+
},
73
73
+
"node_modules/multiformats": {
74
74
+
"version": "9.9.0",
75
75
+
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
76
76
+
"integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==",
77
77
+
"license": "(Apache-2.0 AND MIT)"
78
78
+
},
79
79
+
"node_modules/uint8arrays": {
80
80
+
"version": "3.0.0",
81
81
+
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz",
82
82
+
"integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==",
83
83
+
"license": "MIT",
84
84
+
"dependencies": {
85
85
+
"multiformats": "^9.4.2"
86
86
+
}
87
87
+
},
88
88
+
"node_modules/zod": {
89
89
+
"version": "3.25.76",
90
90
+
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
91
91
+
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
92
92
+
"license": "MIT",
93
93
+
"funding": {
94
94
+
"url": "https://github.com/sponsors/colinhacks"
95
95
+
}
96
96
+
}
97
97
+
}
98
98
+
}
+5
package.json
···
1
1
+
{
2
2
+
"dependencies": {
3
3
+
"@lexicon-community/types": "^1.0.0"
4
4
+
}
5
5
+
}
+1
popup.ts
···
1
1
+
import { CommunityLexiconBookmarksBookmark } from "@lexicon-community/types";
+7
public/popup.html
···
1
1
+
<html>
2
2
+
<body>
3
3
+
<h1>Contrail</h1>
4
4
+
<button id="Save">Save</button>
5
5
+
<button id="Cancel">Cancel</button>
6
6
+
</body>
7
7
+
</html>