upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/20.md
blob: 58529990fca453b390330daab24a8d034ff9c796 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
NIP-20
======

Web Comments
------------

`draft` `optional` `author:fiatjaf`

A special event with kind `34` is defined, meaning "web comment".

Events of this kind should have at least one `r` tag with the value set to the normalized URL of the webpage they're commenting in.

The content should be the plaintext of the comment.

For example:

```json
{
  "kind": 34,
  "tags": [
    ["r", "https://random.blog/article"]
  ],
  "content": "I didn't like this article.",
  ...other fields
```

URL Normalization
-----------------

Early prototypes have been using the following naïve URL normalization algorithm:

```js
export function normalizeURL(raw) {
  let url = new URL(raw)
  return (
    url.origin
      .replace('://m.', '://') // remove known 'mobile' subdomains
      .replace('://mobile.', '://')
      .replace('http://', 'https://') // default everything to https (maybe a terrible idea)
      .replace( /:\d+/, port => (port === ':443' || port === ':80' ? '' : port)) + // remove 443 and 80 ports
    url.pathname
      .replace(/\/+/g, '/') // remove duplicated slashes in the middle of the path
      .replace(/\/*$/, '') // remove slashes from the end of path

    // notice that only origin ("https://random.blog") and pathname ("/article") are used, all the rest is thrown away
  )
}
```

This is open for improvement, of course.