README.md (view raw)
1# About this repository:
2
3This repository contains PussTheCat.org-NoPaste, a fork of [NoPaste](https://github.com/bokub/nopaste) for [PussTheCat.org](https://pussthecat.org/) focused on removing [resources calls from CDNs](https://github.com/bokub/nopaste/issues/1).
4
5This project is maintained because the [NoPaste](https://github.com/bokub/nopaste)'s developer didn't want to upstream the changes because "the point of NoPaste is to be super light (only 5 files are needed to make it work), not to be a huge repo containing dozens of copies of external dependencies!".
6
7This project mostly exist for the [PussTheCat.org](https://pussthecat.org/) [instance](https://nopaste.pussthecat.org/), but others are free to use it.
8
9A massive thanks for the NoPaste developer for making NoPaste, and for [helping me make this fork](https://github.com/bokub/nopaste/issues/1#issuecomment-993593917).
10
11
12[![Intro](https://github.com/bokub/nopaste/raw/images/intro.png)][intro-img]
13
14# What is NoPaste?
15
16[NoPaste](https://nopaste.ml/) is an open-source website similar to Pastebin where you can store any piece of code, and generate links for easy sharing
17
18However, what makes NoPaste special is that it works with **no database**, and **no back-end code**. Instead, the data is compressed and **stored entirely in the link** that you share, nowhere else!
19
20### Because of this design:
21
22- 🗑️ Your data **cannot be deleted** from NoPaste
23- 🔞 Your data **cannot be censored**
24- 👁️ The server hosting NoPaste (or any clone of it) **cannot read or access** your data
25- ⏳ Your data will be accessible **forever** (as long as you have the link)
26- 🔀 You can access your data on **every NoPaste clone**, including [your own](https://github.com/bokub/nopaste/wiki/Deploy-your-own-version-of-NoPaste)
27- 🔍 Google **will not index** your data, even if your link is public
28
29> **Note:** This project is a copy of [Topaz's paste service][topaz-example], with a reworked design and a few additional features (syntax highlighting, line numbers, offline usage, embedding...)
30
31## How it works
32
33When you click on "Generate Link", NoPaste compresses the whole text using the
34[LZMA algorithm](https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Markov_chain_algorithm), encodes it in
35[Base64](https://en.wikipedia.org/wiki/Base64), and puts it in the optional URL fragment, after the first `#` symbol: `nopaste.ml/#<your data goes here>`
36
37When you open a link, NoPaste reads, decodes, and decompresses whatever is after the `#`, and displays the result in the editor.
38
39This process is done entirely **in your browser**, and the web server hosting NoPaste [never has access to the fragment](https://en.wikipedia.org/wiki/Fragment_identifier)
40
41For example, [this is the CSS code used by NoPaste][example]
42
43## Other features
44
45### Embedded NoPaste snippets
46
47You can include NoPaste code snippets into your own website by clicking the _Embed_ button and using the generated HTML code.
48
49Here is an example of generated code and how it looks (click on the screenshot to see the interactive version)
50
51```html
52<iframe
53 width="100%"
54 height="243"
55 frameborder="0"
56 src="https://nopaste.ml/?l=py#XQAAAQAbAQAAAAAAAAA0m0pnuFI8c+qagMoNTEcTIfyUWbZjtjmBYcmJSzoNwS5iVMWHzvowv3IPM0vOG5cjrtDRTSVP/0biTIrrahfmbkuMQBBeSiSGpaJOqYJiKmUDYn2Gp1RtWE6gm8fLHMB4eyZ3+rEbUQwWyMcmWqvZ7m96RUeFyZdYbE85JGvhghqF8cyPB0ZjV0OQWsDxn5O5ysMrIcL+pKPk89EtLjAHhA1LZL9F3hzAtTx7I+GlyrxhhXGxAN//CvtaAA=="
57></iframe>
58```
59
60[![iframe](https://raw.githubusercontent.com/bokub/nopaste/images/pagerank.png)](https://jsfiddle.net/cqr2kxf5/)
61
62Feel free to edit the `height` and `width` attributes, so they suit your needs
63
64### Offline usage
65
66When you visit NoPaste for the first time, its code is saved in your browser cache. After that, every NoPaste link you open
67will load really quick, even if your internet connexion is slow.
68
69What if you have no internet connexion at all? No problem, NoPaste will still work perfectly!
70
71### Editor features
72
73- Syntax highlighting (use the language selector)
74- Enable / disable line wrapping (use the button next to the language selector)
75- Delete line (`Ctrl+D`)
76- Multiple cursors (`Ctrl+Click`)
77- Usual keyboard shortuts (`Ctrl+A`, `Ctrl+Z`, `Ctrl+Y`...)
78
79## Maximum sizes for links
80
81NoPaste is great for sharing code snippets on various platforms.
82
83These are the maximum link lengths on some apps and browsers.
84
85| App | Max length |
86| ------- | ---------- |
87| Reddit | 10,000 |
88| Twitter | 4,088 |
89| Slack | 4,000 |
90| QR Code | 2,610 |
91| Bitly | 2,048 |
92
93| Browser | Max length | Notes |
94| --------------- | ------------------------- | --------------------------------------- |
95| Google Chrome | (win) 32,779 (mac) 10,000 | Will not display, but larger links work |
96| Firefox | >64,000 | |
97| Microsoft IE 11 | 4,043 | Will not show more than 2,083 |
98| Microsoft Edge | 2,083 | Anything over 2083 will fail |
99| Android | 8,192 | |
100| Safari | Lots | |
101
102## Generate NoPaste links
103
104NoPaste links can be created easily from your system's command line:
105
106```bash
107# Linux
108echo -n 'Hello World' | lzma | base64 -w0 | xargs -0 printf "https://nopaste.ml/#%s\n"
109
110# Mac
111echo -n 'Hello World' | lzma | base64 | xargs -0 printf "https://nopaste.ml/#%s\n"
112
113# Windows / WSL / Linux
114echo -n 'Hello World' | xz --format=lzma | base64 -w0 | printf "https://nopaste.ml/#%s\n" "$(cat -)"
115```
116
117## Deploy your own version of NoPaste
118
119NoPaste is just a bunch of static files, making it really easy to deploy on any kind of file server.
120
121Read [the wiki](https://github.com/bokub/nopaste/wiki/Deploy-your-own-version-of-NoPaste) to see how you can deploy your own version of NoPaste for free using Github Pages
122
123[intro-img]: https://nopaste.ml/?l=tcl#XQAAAQA6BAAAAAAAAAAFYH9MXlzSsUdj4vga48M86Ff/Bo1HzNmlXzjCWCN1Q/EliRJg00jhrYF9eDKWzDi+Su+Pv1o8yGz3V06CtGOt8u9dUN10KuOrmkUrjI/kUqitUUD34YXmq9twyrkxmOl5kaHPNqE2PWTRhnKWCEntngrOOlXC4kxxnXuGB2v4zJ75fIM0htURHr9ysHH+1nHvSRng4zpcYju3Y/RqpGTIowXGoUcIOeKKG8PpYf/9t33i
124[example]: https://nopaste.ml/?l=css#XQAAAQB2DQAAAAAAAAAXioAj/ZZaukKWizx++f8w08qY+xe+w0AeNB0EtEDMR1jPECOrMSz2rcy5XqUVTzusmFXo407ujwufsB1Va3cy02BV4Chx15I+SbM8Ei2WS8/MaZa0wIOjHf0s6B9Kcwi1J73qYeIcKm39PEWGnBM4Ym5aXFOF1Irrn1N95vEcl4YI+98rydudZHmsNCmt995GvCpLImwH7yj3SlMadWaQA0jHCrY1ZBvhjSJ9mAAdYjCJLduITZuXomgpqtr3sYI1WKeRGNmPSD8J8WRLtCx0BZl3yWZZrUxJbmVod8cYiPJnlO+CzQA03qA/GZnxhMYd9TPc2Xlq8UIhBX6gmvo/xhHJc/WHnuBFB32xJ37O5FZlZuXGy6wFE/lakVteoqEqgvyan4LfaiL0pMfYapWjV8YoPa/KyVGugANNjvtRw0hRr+Z1IgKoVL2a1xqvQiB65vIXkw68/ui82O1ko9HTbsLMHX/2/CgWZ8TkTEvgr0+dzVqQYIpaWpB3hDnUTHMkG2UehM5iJyJXAgODNqk8IiWCJn5k/j2FeFpchSTWdgi7AeaCowubmWnFTNgNFXLf5zzARWBUGQFT55TiC0ah4HL17jG3rY6fXvAXlm6CWc88ne7wF0opHkLnhfPslssDYo75hDmCfYwJ6asQ/YBkSuuLJjdCEXVjF7Pdw2FhsOiiB0gNXC6ehieM28M+PMGSDRqt0Q0KveMgE44YJ8zFOvpu2Gg41qDkrsYS7Xb/iMnHz66tt69I1rGzrHx88PuI2/CZx+kv+z7a+/Eiq4JC3KTDx4IbNUYptmrIOC2bxGrcjd8TBKGe+dNi8a/PEnXrUXc/OD7D680/Awo+scE8VKuRVN5R7OPg0tmKVQSQkyCf+I3//kGmREyhh6/bCv6tvbEc7hNPNE1js2svlVBF001JlLY7g1w6ls2pjxrKxuCLrkjba1n4s5WlfrbwcX18rqgbfL2tVibHggsy3Lgq4i7fXtuO3JifxfauO66YIRjEWFnACrHbZ14FbHDMylN7GMvo5TusxestU0s6+kiibWq2qZVpi7C5JVKURNQrGEabICn5nUDoOPMZSfNrdmlTOhu4qjKW09XdQPNazTMc83KjG1YOKNjRP23i1oav5muBFRGMDkSXt7wCgv5PCpLZM9w2jC5GCa5oHuH92IWJu5d80fvTRw3GxNQzfMRxgjzfH6xxrzu+EghhbzayUhb3U5aSRSxOtPTPfjT9mxgk7j3f1mRlbYheuhko4/LBIKYvfA5CnN2Yr3VyBYqoZ/ZgP871LU0ix8ZLeaecao0SDj6V35bZ6RB53mcU8BRPfcyZhj0H6BrFcrcfXKVwnNVro/cIrwnoG3GwlpCXGYJmDDeUdlbBj2HrVmvMncd3w8SzPtxw5RAWQP9YPJdE4Tc490BMX4zAkPqirRHLcxG/K5ECLtKtGsnCkg24+XwFo4XRcGfMsbkSSYD7oZ2HkD+1NXYqJKgk+7uee+yrYCZF6xbsb0ca/7r3w8nU9DueSa6XPiaCLSeJ+phw8iK1U4+FcCzqLW4LzgfcGjz64+HM+Xst0YuqzrAI2RU80H2Mr0FnC/qL+klbM+p0yNUBxBd4IQ64SJmh6Irgi7fZq2wfuTuVEAI1qKKwGwBQ6x9UDyY/OqkD63mtRL//oHeipA==
125[topaz-example]: https://topaz.github.io/paste/#XQAAAQADAQAAAAAAAAAFFgvDUiqpf8dDPleMqfsqtbQYE28suCtDTB9iyFgGByXgSRMepMuokjoACV4UPgBzwM3p+V/N2rCi8m90FkQfsRuMJ4LrZVFgr81wKDc2okcywbJBz7OGNPpc8xu2lAkpSekqRO+I/OYUUvgB2ckKBp+2avxmAKn6H73WV3t1D5Ip9hwthecGUnLwFSGpPFNI0zb4Ettx7QnIu6NiftBuencR3Bn/l3BNoh8M5NQL2MoInMQAnQ1gGwSQg6uEnIvK70ERxjllyP2v2fH/N5CRAA==