@lordbex/thelounge 4.4.3-blowfish

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.
Files changed (148) hide show
  1. package/.thelounge_home +1 -0
  2. package/LICENSE +22 -0
  3. package/README.md +95 -0
  4. package/client/index.html.tpl +69 -0
  5. package/dist/defaults/config.js +465 -0
  6. package/dist/package.json +174 -0
  7. package/dist/server/client.js +678 -0
  8. package/dist/server/clientManager.js +220 -0
  9. package/dist/server/command-line/index.js +85 -0
  10. package/dist/server/command-line/install.js +123 -0
  11. package/dist/server/command-line/outdated.js +30 -0
  12. package/dist/server/command-line/start.js +34 -0
  13. package/dist/server/command-line/storage.js +103 -0
  14. package/dist/server/command-line/uninstall.js +40 -0
  15. package/dist/server/command-line/upgrade.js +64 -0
  16. package/dist/server/command-line/users/add.js +67 -0
  17. package/dist/server/command-line/users/edit.js +39 -0
  18. package/dist/server/command-line/users/index.js +17 -0
  19. package/dist/server/command-line/users/list.js +53 -0
  20. package/dist/server/command-line/users/remove.js +37 -0
  21. package/dist/server/command-line/users/reset.js +64 -0
  22. package/dist/server/command-line/utils.js +177 -0
  23. package/dist/server/config.js +138 -0
  24. package/dist/server/helper.js +161 -0
  25. package/dist/server/identification.js +139 -0
  26. package/dist/server/index.js +3 -0
  27. package/dist/server/log.js +35 -0
  28. package/dist/server/models/chan.js +275 -0
  29. package/dist/server/models/msg.js +92 -0
  30. package/dist/server/models/network.js +546 -0
  31. package/dist/server/models/prefix.js +31 -0
  32. package/dist/server/models/user.js +42 -0
  33. package/dist/server/plugins/auth/ldap.js +188 -0
  34. package/dist/server/plugins/auth/local.js +41 -0
  35. package/dist/server/plugins/auth.js +70 -0
  36. package/dist/server/plugins/changelog.js +103 -0
  37. package/dist/server/plugins/clientCertificate.js +115 -0
  38. package/dist/server/plugins/dev-server.js +33 -0
  39. package/dist/server/plugins/inputs/action.js +54 -0
  40. package/dist/server/plugins/inputs/away.js +20 -0
  41. package/dist/server/plugins/inputs/ban.js +45 -0
  42. package/dist/server/plugins/inputs/blow.js +44 -0
  43. package/dist/server/plugins/inputs/connect.js +41 -0
  44. package/dist/server/plugins/inputs/ctcp.js +29 -0
  45. package/dist/server/plugins/inputs/disconnect.js +15 -0
  46. package/dist/server/plugins/inputs/ignore.js +74 -0
  47. package/dist/server/plugins/inputs/ignorelist.js +50 -0
  48. package/dist/server/plugins/inputs/index.js +105 -0
  49. package/dist/server/plugins/inputs/invite.js +31 -0
  50. package/dist/server/plugins/inputs/kick.js +26 -0
  51. package/dist/server/plugins/inputs/kill.js +13 -0
  52. package/dist/server/plugins/inputs/list.js +12 -0
  53. package/dist/server/plugins/inputs/mode.js +55 -0
  54. package/dist/server/plugins/inputs/msg.js +106 -0
  55. package/dist/server/plugins/inputs/mute.js +56 -0
  56. package/dist/server/plugins/inputs/nick.js +55 -0
  57. package/dist/server/plugins/inputs/notice.js +42 -0
  58. package/dist/server/plugins/inputs/part.js +46 -0
  59. package/dist/server/plugins/inputs/quit.js +27 -0
  60. package/dist/server/plugins/inputs/raw.js +13 -0
  61. package/dist/server/plugins/inputs/rejoin.js +25 -0
  62. package/dist/server/plugins/inputs/topic.js +24 -0
  63. package/dist/server/plugins/inputs/whois.js +19 -0
  64. package/dist/server/plugins/irc-events/away.js +59 -0
  65. package/dist/server/plugins/irc-events/cap.js +62 -0
  66. package/dist/server/plugins/irc-events/chghost.js +29 -0
  67. package/dist/server/plugins/irc-events/connection.js +152 -0
  68. package/dist/server/plugins/irc-events/ctcp.js +72 -0
  69. package/dist/server/plugins/irc-events/error.js +80 -0
  70. package/dist/server/plugins/irc-events/help.js +21 -0
  71. package/dist/server/plugins/irc-events/info.js +21 -0
  72. package/dist/server/plugins/irc-events/invite.js +27 -0
  73. package/dist/server/plugins/irc-events/join.js +53 -0
  74. package/dist/server/plugins/irc-events/kick.js +39 -0
  75. package/dist/server/plugins/irc-events/link.js +442 -0
  76. package/dist/server/plugins/irc-events/list.js +47 -0
  77. package/dist/server/plugins/irc-events/message.js +187 -0
  78. package/dist/server/plugins/irc-events/mode.js +124 -0
  79. package/dist/server/plugins/irc-events/modelist.js +67 -0
  80. package/dist/server/plugins/irc-events/motd.js +29 -0
  81. package/dist/server/plugins/irc-events/names.js +21 -0
  82. package/dist/server/plugins/irc-events/nick.js +45 -0
  83. package/dist/server/plugins/irc-events/part.js +35 -0
  84. package/dist/server/plugins/irc-events/quit.js +32 -0
  85. package/dist/server/plugins/irc-events/sasl.js +26 -0
  86. package/dist/server/plugins/irc-events/topic.js +42 -0
  87. package/dist/server/plugins/irc-events/unhandled.js +31 -0
  88. package/dist/server/plugins/irc-events/welcome.js +22 -0
  89. package/dist/server/plugins/irc-events/whois.js +57 -0
  90. package/dist/server/plugins/messageStorage/sqlite.js +454 -0
  91. package/dist/server/plugins/messageStorage/text.js +124 -0
  92. package/dist/server/plugins/packages/index.js +200 -0
  93. package/dist/server/plugins/packages/publicClient.js +66 -0
  94. package/dist/server/plugins/packages/themes.js +61 -0
  95. package/dist/server/plugins/storage.js +88 -0
  96. package/dist/server/plugins/sts.js +85 -0
  97. package/dist/server/plugins/uploader.js +267 -0
  98. package/dist/server/plugins/webpush.js +99 -0
  99. package/dist/server/server.js +857 -0
  100. package/dist/server/storageCleaner.js +131 -0
  101. package/dist/server/utils/fish.js +432 -0
  102. package/dist/shared/irc.js +19 -0
  103. package/dist/shared/linkify.js +81 -0
  104. package/dist/shared/types/chan.js +22 -0
  105. package/dist/shared/types/changelog.js +2 -0
  106. package/dist/shared/types/config.js +2 -0
  107. package/dist/shared/types/mention.js +2 -0
  108. package/dist/shared/types/msg.js +34 -0
  109. package/dist/shared/types/network.js +2 -0
  110. package/dist/shared/types/storage.js +2 -0
  111. package/dist/shared/types/user.js +2 -0
  112. package/dist/webpack.config.js +224 -0
  113. package/index.js +38 -0
  114. package/package.json +174 -0
  115. package/public/audio/pop.wav +0 -0
  116. package/public/css/style.css +12 -0
  117. package/public/css/style.css.map +1 -0
  118. package/public/favicon.ico +0 -0
  119. package/public/fonts/fa-solid-900.woff +0 -0
  120. package/public/fonts/fa-solid-900.woff2 +0 -0
  121. package/public/img/favicon-alerted.ico +0 -0
  122. package/public/img/icon-alerted-black-transparent-bg-72x72px.png +0 -0
  123. package/public/img/icon-alerted-grey-bg-192x192px.png +0 -0
  124. package/public/img/icon-black-transparent-bg.svg +1 -0
  125. package/public/img/logo-grey-bg-120x120px.png +0 -0
  126. package/public/img/logo-grey-bg-152x152px.png +0 -0
  127. package/public/img/logo-grey-bg-167x167px.png +0 -0
  128. package/public/img/logo-grey-bg-180x180px.png +0 -0
  129. package/public/img/logo-grey-bg-192x192px.png +0 -0
  130. package/public/img/logo-grey-bg-512x512px.png +0 -0
  131. package/public/img/logo-grey-bg.svg +1 -0
  132. package/public/img/logo-horizontal-transparent-bg-inverted.svg +1 -0
  133. package/public/img/logo-horizontal-transparent-bg.svg +1 -0
  134. package/public/img/logo-transparent-bg-inverted.svg +1 -0
  135. package/public/img/logo-transparent-bg.svg +1 -0
  136. package/public/img/logo-vertical-transparent-bg-inverted.svg +1 -0
  137. package/public/img/logo-vertical-transparent-bg.svg +1 -0
  138. package/public/js/bundle.js +2 -0
  139. package/public/js/bundle.js.map +1 -0
  140. package/public/js/bundle.vendor.js +3 -0
  141. package/public/js/bundle.vendor.js.LICENSE.txt +18 -0
  142. package/public/js/bundle.vendor.js.map +1 -0
  143. package/public/js/loading-error-handlers.js +1 -0
  144. package/public/robots.txt +2 -0
  145. package/public/service-worker.js +1 -0
  146. package/public/thelounge.webmanifest +53 -0
  147. package/public/themes/default.css +35 -0
  148. package/public/themes/morning.css +183 -0
@@ -0,0 +1 @@
1
+ "use strict";!function(){const e=document.getElementById("loading-page-message");e&&(e.textContent="Loading the app…"),document.getElementById("loading-reload")?.addEventListener("click",(()=>location.reload()));const t=()=>{const e=document.getElementById("loading-reload");e&&(e.style.visibility="visible")},n=setTimeout((()=>{const e=document.getElementById("loading-slow");e&&(e.style.visibility="visible"),t()}),5e3),o=o=>{if(!e)return;e.textContent="An error has occurred that prevented the client from loading correctly.";const r=document.createElement("summary");r.textContent="More details";const i=document.createElement("pre");i.textContent=o.message;const s=document.createElement("p");s.textContent="Open the developer tools of your browser for more information.";const a=document.createElement("details");a.appendChild(r),a.appendChild(i),a.appendChild(s),e.parentNode?.insertBefore(a,e.nextSibling),window.clearTimeout(n),t()};window.addEventListener("error",o),window.g_TheLoungeRemoveLoading=()=>{delete window.g_TheLoungeRemoveLoading,window.clearTimeout(n),window.removeEventListener("error",o),document.getElementById("loading")?.remove()};try{const e=JSON.parse(localStorage.getItem("settings")||"{}"),t=document.getElementById("theme");if(!t)return;if("string"==typeof e.theme&&t?.dataset.serverTheme!==e.theme&&t.setAttribute("href",`themes/${e.theme}.css`),"string"==typeof e.userStyles&&!/[?&]nocss/.test(window.location.search)){const t=document.getElementById("user-specified-css");if(!t)return;t.innerHTML=e.userStyles}}catch(e){}if("serviceWorker"in navigator){navigator.serviceWorker.register("service-worker.js");const e=t=>{"fetch-error"===t.data.type&&(o({message:`Service worker failed to fetch an url: ${t.data.message}`}),navigator.serviceWorker.removeEventListener("message",e))};navigator.serviceWorker.addEventListener("message",e)}}();
@@ -0,0 +1,2 @@
1
+ User-agent: *
2
+ Disallow: /
@@ -0,0 +1 @@
1
+ "use strict";const cacheName="a81bce4c46",excludedPathsFromCache=/^(?:socket\.io|storage|uploads|cdn-cgi)\//;async function putInCache(e,t){const n=await caches.open(cacheName);await n.put(e,t)}async function cleanRedirect(e){const t="body"in e?Promise.resolve(e.body):e.blob(),n=await t;return new Response(n,{headers:e.headers,status:e.status,statusText:e.statusText})}async function networkOrCache(e){try{let t=await fetch(e.request,{cache:"no-cache",redirect:"follow"});if(t.redirected&&(t=await cleanRedirect(t.clone())),t.ok)return"dev"!==cacheName&&e.waitUntil(putInCache(e.request,t)),t.clone();throw new Error(`Request failed with HTTP ${t.status}`)}catch(t){if(console.error(t.message,e.request.url),e.clientId){const n=await clients.get(e.clientId);n&&n.postMessage({type:"fetch-error",message:t.message})}const n=await caches.open(cacheName);return await n.match(e.request)||Promise.reject("request-not-in-cache")}}function showNotification(e,t){"notification"===t.type&&e.waitUntil(self.registration.getNotifications({tag:`chan-${t.chanId}`}).then((e=>{for(const t of e)t.close();return self.registration.showNotification(t.title,{tag:`chan-${t.chanId}`,badge:"img/icon-alerted-black-transparent-bg-72x72px.png",icon:"img/icon-alerted-grey-bg-192x192px.png",body:t.body,timestamp:t.timestamp})})))}function findSuitableClient(e){for(let t=0;t<e.length;t++){const n=e[t];if(n.focused||"visible"===n.visibilityState)return n}return e[0]}self.addEventListener("install",(function(){self.skipWaiting()})),self.addEventListener("activate",(function(e){e.waitUntil(caches.keys().then((e=>Promise.all(e.filter((e=>e!==cacheName)).map((e=>caches.delete(e))))))),e.waitUntil(self.clients.claim())})),self.addEventListener("fetch",(function(e){if("GET"!==e.request.method)return;const t=e.request.url,n=self.registration.scope;if(!t.startsWith(n))return;const i=t.substring(n.length);excludedPathsFromCache.test(i)||e.respondWith(networkOrCache(e))})),self.addEventListener("message",(function(e){showNotification(e,e.data)})),self.addEventListener("push",(function(e){e.data&&showNotification(e,e.data.json())})),self.addEventListener("notificationclick",(function(e){e.notification.close(),e.waitUntil(clients.matchAll({includeUncontrolled:!0,type:"window"}).then((t=>{if(0===t.length)return clients.openWindow?clients.openWindow(`.#/${e.notification.tag}`):void 0;const n=findSuitableClient(t);n.postMessage({type:"open",channel:e.notification.tag}),"focus"in n&&n.focus()})))}));
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "The Lounge",
3
+ "short_name": "The Lounge",
4
+ "description": "Self-hosted web IRC client",
5
+ "start_url": ".",
6
+ "display": "standalone",
7
+ "theme_color": "#415364",
8
+ "background_color": "#415364",
9
+ "icons": [
10
+ {
11
+ "src": "img/logo-grey-bg-120x120px.png",
12
+ "type": "image/png",
13
+ "purpose": "maskable any",
14
+ "sizes": "120x120"
15
+ },
16
+ {
17
+ "src": "img/logo-grey-bg-152x152px.png",
18
+ "type": "image/png",
19
+ "purpose": "maskable any",
20
+ "sizes": "152x152"
21
+ },
22
+ {
23
+ "src": "img/logo-grey-bg-167x167px.png",
24
+ "type": "image/png",
25
+ "purpose": "maskable any",
26
+ "sizes": "167x167"
27
+ },
28
+ {
29
+ "src": "img/logo-grey-bg-180x180px.png",
30
+ "type": "image/png",
31
+ "purpose": "maskable any",
32
+ "sizes": "180x180"
33
+ },
34
+ {
35
+ "src": "img/logo-grey-bg-192x192px.png",
36
+ "type": "image/png",
37
+ "purpose": "maskable any",
38
+ "sizes": "192x192"
39
+ },
40
+ {
41
+ "src": "img/logo-grey-bg-512x512px.png",
42
+ "type": "image/png",
43
+ "purpose": "maskable any",
44
+ "sizes": "512x512"
45
+ },
46
+ {
47
+ "src": "img/logo-grey-bg.svg",
48
+ "type": "image/svg+xml",
49
+ "purpose": "maskable any",
50
+ "sizes": "513x513"
51
+ }
52
+ ]
53
+ }
@@ -0,0 +1,35 @@
1
+ #loading .window {
2
+ margin: 5px;
3
+ }
4
+
5
+ #viewport {
6
+ padding: 5px;
7
+ }
8
+
9
+ #viewport.menu-open {
10
+ padding-left: 0;
11
+ }
12
+
13
+ .window {
14
+ border-radius: 5px;
15
+ box-shadow: 0 0 25px rgb(0 0 0 / 50%);
16
+ }
17
+
18
+ @media (max-width: 768px) {
19
+ #loading .window {
20
+ margin: 0;
21
+ }
22
+
23
+ #viewport,
24
+ #viewport.menu-open {
25
+ padding: 0;
26
+ }
27
+
28
+ #footer .icon {
29
+ border-radius: 0;
30
+ }
31
+
32
+ .window {
33
+ border-radius: 0;
34
+ }
35
+ }
@@ -0,0 +1,183 @@
1
+ @import "default.css";
2
+
3
+ :root {
4
+ --body-color: #f3f3f3;
5
+ --body-color-muted: #b7c5d1;
6
+ --link-color: #77abd9;
7
+ --window-bg-color: #303e4a;
8
+ --window-heading-color: #b7c5d1;
9
+ --date-marker-color: #97ea70;
10
+ --unread-marker-color: #f92772;
11
+ --highlight-bg-color: #4d4332;
12
+ --highlight-border-color: #b08c4f;
13
+ }
14
+
15
+ body {
16
+ scrollbar-color: rgb(0 0 0 / 30%) rgb(0 0 0 / 5%);
17
+ }
18
+
19
+ #chat .chat-view[data-type="channel"] .msg.highlight .time {
20
+ color: white;
21
+ }
22
+
23
+ #loading .logo,
24
+ .window .logo {
25
+ display: none;
26
+ }
27
+
28
+ #loading .logo-inverted,
29
+ .window .logo-inverted {
30
+ display: inline-block;
31
+ }
32
+
33
+ #chat .userlist .count {
34
+ background-color: #28333d;
35
+ }
36
+
37
+ #chat .count::before {
38
+ color: #b7c5d1;
39
+ }
40
+
41
+ /* Borders */
42
+ #chat .content,
43
+ #chat .header,
44
+ #chat .user-mode::before,
45
+ #chat .userlist {
46
+ border-color: #28333d;
47
+ }
48
+
49
+ /* User list */
50
+ #chat .userlist .user.active {
51
+ background-color: #28333d;
52
+ }
53
+
54
+ /* Nicknames */
55
+ .user {
56
+ color: #b0bacf;
57
+ }
58
+
59
+ .user.color-1 { color: #f7adf7; }
60
+ .user.color-2 { color: #abf99f; }
61
+ .user.color-3 { color: #86efdc; }
62
+ .user.color-4 { color: #c890eb; }
63
+ .user.color-5 { color: #f9a4b3; }
64
+ .user.color-6 { color: #f7999a; }
65
+ .user.color-7 { color: #f497b9; }
66
+ .user.color-8 { color: #f9a9d7; }
67
+ .user.color-9 { color: #85a7e3; }
68
+ .user.color-10 { color: #a8b8ff; }
69
+ .user.color-11 { color: #b695fc; }
70
+ .user.color-12 { color: #f4aead; }
71
+ .user.color-13 { color: #fc7cb1; }
72
+ .user.color-14 { color: #ff72e0; }
73
+ .user.color-15 { color: #8cb6ea; }
74
+ .user.color-16 { color: #f9857c; }
75
+ .user.color-17 { color: #ed9b82; }
76
+ .user.color-18 { color: #8df484; }
77
+ .user.color-19 { color: #ffcce3; }
78
+ .user.color-20 { color: #efcc81; }
79
+ .user.color-21 { color: #92a2ed; }
80
+ .user.color-22 { color: #f4d484; }
81
+ .user.color-23 { color: #97ea70; }
82
+ .user.color-24 { color: #fcbbba; }
83
+ .user.color-25 { color: #eef975; }
84
+ .user.color-26 { color: #c7ff93; }
85
+ .user.color-27 { color: #ffade1; }
86
+ .user.color-28 { color: #98ecf2; }
87
+ .user.color-29 { color: #91a2f5; }
88
+ .user.color-30 { color: #b19aea; }
89
+ .user.color-31 { color: #f2a4eb; }
90
+ .user.color-32 { color: #85f27d; }
91
+
92
+ /* Increase contrast of some IRC colors */
93
+ .irc-fg2 { color: #0074d9; }
94
+ .irc-fg5 { color: #e969a7; }
95
+ .irc-fg12 { color: #50a8ff; }
96
+
97
+ /* Message form */
98
+ #form {
99
+ background-color: #28333d;
100
+ border-color: #28333d;
101
+ color: var(--body-color);
102
+ }
103
+
104
+ #form #nick {
105
+ background: #242a33;
106
+ color: #f3f3f3;
107
+ }
108
+
109
+ .window {
110
+ box-shadow: 0 0 25px rgb(0 0 0 / 75%);
111
+ }
112
+
113
+ #viewport .lt,
114
+ #viewport .rt,
115
+ #chat button.mentions,
116
+ #chat button.menu,
117
+ #chat button.close,
118
+ #form #submit {
119
+ color: #b7c5d1;
120
+ }
121
+
122
+ /* Search Form */
123
+ form.message-search input {
124
+ background-color: #28333d;
125
+ }
126
+
127
+ #chat form.message-search button {
128
+ color: #b7c5d1;
129
+ }
130
+
131
+ /* Setup text colors */
132
+ #chat .msg[data-type="error"],
133
+ #chat .msg[data-type="error"] .from {
134
+ color: #f92772;
135
+ }
136
+
137
+ #chat .msg[data-type="monospace_block"] .text,
138
+ code,
139
+ .irc-monospace {
140
+ background: #28333d;
141
+ color: #f3f3f3;
142
+ }
143
+
144
+ kbd {
145
+ color: #eee;
146
+ text-shadow: 0 -1px 0 #000;
147
+ border-color: #000;
148
+ background-color: #333;
149
+ background-image: linear-gradient(rgb(0 0 0 / 25%), transparent);
150
+ box-shadow: 0 2px 0 #000, inset 0 1px 1px #777, inset 0 -1px 3px #222;
151
+ }
152
+
153
+ /* Embeds */
154
+ #chat .toggle-content {
155
+ background: #28333d;
156
+ color: #f3f3f3;
157
+ }
158
+
159
+ #chat .toggle-content .body {
160
+ color: #99a2b4;
161
+ }
162
+
163
+ /* Form elements */
164
+ /* stylelint-disable selector-no-vendor-prefix */
165
+
166
+ #chat-container ::-moz-placeholder {
167
+ color: #b7c5d1;
168
+ opacity: 0.75;
169
+ }
170
+
171
+ #chat-container ::-webkit-input-placeholder {
172
+ color: #b7c5d1;
173
+ opacity: 0.75;
174
+ }
175
+
176
+ #chat-container :-ms-input-placeholder {
177
+ color: #b7c5d1;
178
+ opacity: 0.75;
179
+ }
180
+
181
+ /* stylelint-enable selector-no-vendor-prefix */
182
+
183
+ /* End form elements */