serverless-ircd 0.5.0 → 0.7.0

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 (394) hide show
  1. package/.github/workflows/ci.yml +40 -3
  2. package/.github/workflows/deploy-aws.yml +1 -2
  3. package/.github/workflows/deploy-cf-tcp.yml +1 -5
  4. package/.github/workflows/deploy-cf.yml +1 -2
  5. package/.gitmodules +3 -0
  6. package/CHANGELOG.md +474 -0
  7. package/README.md +219 -22
  8. package/apps/aws-stack/README.md +33 -0
  9. package/apps/aws-stack/package.json +1 -1
  10. package/apps/aws-stack/src/aws-stack.ts +74 -9
  11. package/apps/aws-stack/tests/coverage-command.test.ts +155 -0
  12. package/apps/aws-stack/tests/stack.test.ts +2 -2
  13. package/apps/aws-stack/tests/synth-no-bundle.test.ts +129 -0
  14. package/apps/aws-stack/tests/vitest.setup.ts +18 -0
  15. package/apps/aws-stack/vitest.config.ts +3 -0
  16. package/apps/cf-tcp-container/package.json +1 -1
  17. package/apps/cf-tcp-container/src/config-loader.ts +6 -7
  18. package/apps/cf-tcp-container/src/container-server.ts +3 -0
  19. package/apps/cf-tcp-container/tests/config-loader.test.ts +10 -3
  20. package/apps/cf-tcp-container/wrangler.toml +1 -1
  21. package/apps/cf-worker/package.json +2 -1
  22. package/apps/cf-worker/src/origin-allowlist.ts +99 -0
  23. package/apps/cf-worker/src/worker.ts +89 -9
  24. package/apps/cf-worker/tests/fixtures/web-dist/app/index.html +18 -0
  25. package/apps/cf-worker/tests/fixtures/web-dist/index.html +18 -0
  26. package/apps/cf-worker/tests/origin-allowlist.test.ts +101 -0
  27. package/apps/cf-worker/tests/smoke.test.ts +28 -2
  28. package/apps/cf-worker/tests/ws-origin.test.ts +89 -0
  29. package/apps/cf-worker/vitest.config.ts +1 -1
  30. package/apps/cf-worker/wrangler.test.toml +23 -0
  31. package/apps/cf-worker/wrangler.toml +59 -3
  32. package/apps/local-cli/package.json +1 -1
  33. package/apps/local-cli/src/config-loader.ts +6 -6
  34. package/apps/local-cli/src/main.ts +20 -0
  35. package/apps/local-cli/src/server.ts +9 -7
  36. package/apps/local-cli/tests/e2e.test.ts +112 -28
  37. package/apps/local-cli/tests/tcp.test.ts +71 -19
  38. package/apps/local-cli/tests/ws-subprotocol.test.ts +12 -7
  39. package/apps/web/landing/index.html +217 -0
  40. package/apps/web/package.json +28 -0
  41. package/apps/web/scripts/build.mjs +125 -0
  42. package/apps/web/src/build-env.ts +43 -0
  43. package/apps/web/src/config-schema.ts +138 -0
  44. package/apps/web/static/config.json +28 -0
  45. package/apps/web/static/config.prod.json +28 -0
  46. package/apps/web/static/config.staging.json +28 -0
  47. package/apps/web/tests/build-env.test.ts +63 -0
  48. package/apps/web/tests/build-smoke.test.ts +103 -0
  49. package/apps/web/tests/config-schema.test.ts +432 -0
  50. package/apps/web/tests/workspace.test.ts +12 -0
  51. package/apps/web/tsconfig.json +10 -0
  52. package/apps/web/upstream/.browserslistrc +3 -0
  53. package/apps/web/upstream/.editorconfig +9 -0
  54. package/apps/web/upstream/.eslintignore +3 -0
  55. package/apps/web/upstream/.eslintrc.js +90 -0
  56. package/apps/web/upstream/.github/FUNDING.yml +12 -0
  57. package/apps/web/upstream/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  58. package/apps/web/upstream/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  59. package/apps/web/upstream/.github/workflows/push.yml +26 -0
  60. package/apps/web/upstream/.github/workflows/release.yml +33 -0
  61. package/apps/web/upstream/.github/workflows/release_manual.yml +55 -0
  62. package/apps/web/upstream/.prettierrc.js +9 -0
  63. package/apps/web/upstream/.stylelintignore +5 -0
  64. package/apps/web/upstream/.stylelintrc.js +21 -0
  65. package/apps/web/upstream/LICENSE +201 -0
  66. package/apps/web/upstream/README.md +76 -0
  67. package/apps/web/upstream/babel.config.js +25 -0
  68. package/apps/web/upstream/crowdin.yml +3 -0
  69. package/apps/web/upstream/index.html +35 -0
  70. package/apps/web/upstream/jest.config.js +7 -0
  71. package/apps/web/upstream/jsdoc.json +22 -0
  72. package/apps/web/upstream/package.json +80 -0
  73. package/apps/web/upstream/scripts/pre-commit +43 -0
  74. package/apps/web/upstream/src/components/App.vue +516 -0
  75. package/apps/web/upstream/src/components/AppSettings.vue +587 -0
  76. package/apps/web/upstream/src/components/AutoComplete.vue +284 -0
  77. package/apps/web/upstream/src/components/Avatar.vue +105 -0
  78. package/apps/web/upstream/src/components/AwayStatusIndicator.vue +77 -0
  79. package/apps/web/upstream/src/components/BufferKey.vue +121 -0
  80. package/apps/web/upstream/src/components/BufferSettings.vue +97 -0
  81. package/apps/web/upstream/src/components/Captcha.vue +85 -0
  82. package/apps/web/upstream/src/components/ChannelBanlist.vue +96 -0
  83. package/apps/web/upstream/src/components/ChannelInfo.vue +159 -0
  84. package/apps/web/upstream/src/components/ChannelInvitelist.vue +276 -0
  85. package/apps/web/upstream/src/components/ChannelList.vue +345 -0
  86. package/apps/web/upstream/src/components/Container.vue +401 -0
  87. package/apps/web/upstream/src/components/ContainerHeader.vue +522 -0
  88. package/apps/web/upstream/src/components/ControlInput.vue +1016 -0
  89. package/apps/web/upstream/src/components/LoadingAnimation.vue +104 -0
  90. package/apps/web/upstream/src/components/MediaViewer.vue +199 -0
  91. package/apps/web/upstream/src/components/MessageInfo.vue +192 -0
  92. package/apps/web/upstream/src/components/MessageList.vue +1028 -0
  93. package/apps/web/upstream/src/components/MessageListAvatar.vue +20 -0
  94. package/apps/web/upstream/src/components/MessageListMessageCompact.vue +361 -0
  95. package/apps/web/upstream/src/components/MessageListMessageInline.vue +257 -0
  96. package/apps/web/upstream/src/components/MessageListMessageModern.vue +430 -0
  97. package/apps/web/upstream/src/components/NetworkSettings.vue +528 -0
  98. package/apps/web/upstream/src/components/Nicklist.vue +309 -0
  99. package/apps/web/upstream/src/components/NicklistUser.vue +181 -0
  100. package/apps/web/upstream/src/components/NotConnected.vue +271 -0
  101. package/apps/web/upstream/src/components/SelfUser.vue +283 -0
  102. package/apps/web/upstream/src/components/ServerSelector.vue +162 -0
  103. package/apps/web/upstream/src/components/ServerView.vue +126 -0
  104. package/apps/web/upstream/src/components/SettingsAdvanced.vue +232 -0
  105. package/apps/web/upstream/src/components/SettingsAliases.vue +121 -0
  106. package/apps/web/upstream/src/components/Sidebar.vue +429 -0
  107. package/apps/web/upstream/src/components/SidebarAboutBuffer.vue +288 -0
  108. package/apps/web/upstream/src/components/SidebarState.vue +145 -0
  109. package/apps/web/upstream/src/components/StartupError.vue +35 -0
  110. package/apps/web/upstream/src/components/StateBrowser.vue +420 -0
  111. package/apps/web/upstream/src/components/StateBrowserBuffer.vue +124 -0
  112. package/apps/web/upstream/src/components/StateBrowserNetwork.vue +823 -0
  113. package/apps/web/upstream/src/components/StateBrowserUsermenu.vue +162 -0
  114. package/apps/web/upstream/src/components/TypingStatusIndicator.vue +34 -0
  115. package/apps/web/upstream/src/components/TypingUsersList.vue +56 -0
  116. package/apps/web/upstream/src/components/UrlEmbed.vue +149 -0
  117. package/apps/web/upstream/src/components/UserBox.vue +728 -0
  118. package/apps/web/upstream/src/components/inputtools/Emoji.vue +67 -0
  119. package/apps/web/upstream/src/components/inputtools/TextStyle.vue +142 -0
  120. package/apps/web/upstream/src/components/startups/CommonLayout.vue +208 -0
  121. package/apps/web/upstream/src/components/startups/CustomServer.vue +495 -0
  122. package/apps/web/upstream/src/components/startups/KiwiBnc.vue +361 -0
  123. package/apps/web/upstream/src/components/startups/Personal.vue +317 -0
  124. package/apps/web/upstream/src/components/startups/Welcome.vue +544 -0
  125. package/apps/web/upstream/src/components/startups/ZncLogin.vue +229 -0
  126. package/apps/web/upstream/src/components/utils/InputConfirm.vue +68 -0
  127. package/apps/web/upstream/src/components/utils/InputPrompt.vue +118 -0
  128. package/apps/web/upstream/src/components/utils/InputText.vue +172 -0
  129. package/apps/web/upstream/src/components/utils/IrcInput.vue +579 -0
  130. package/apps/web/upstream/src/components/utils/PluginWrapper.vue +26 -0
  131. package/apps/web/upstream/src/components/utils/TabbedView.vue +149 -0
  132. package/apps/web/upstream/src/components/utils/TransitionExpand.vue +97 -0
  133. package/apps/web/upstream/src/helpers/Colours.js +128 -0
  134. package/apps/web/upstream/src/helpers/IrcdDiffs.js +26 -0
  135. package/apps/web/upstream/src/helpers/Md5.js +193 -0
  136. package/apps/web/upstream/src/helpers/Misc.js +401 -0
  137. package/apps/web/upstream/src/helpers/TextFormatting.js +237 -0
  138. package/apps/web/upstream/src/libs/AliasRewriter.js +157 -0
  139. package/apps/web/upstream/src/libs/AudioManager.js +60 -0
  140. package/apps/web/upstream/src/libs/BouncerMiddleware.js +247 -0
  141. package/apps/web/upstream/src/libs/BouncerProvider.js +551 -0
  142. package/apps/web/upstream/src/libs/ChathistoryMiddleware.js +153 -0
  143. package/apps/web/upstream/src/libs/ConfigLoader.js +94 -0
  144. package/apps/web/upstream/src/libs/EmojiProvider.js +46 -0
  145. package/apps/web/upstream/src/libs/GlobalApi.js +346 -0
  146. package/apps/web/upstream/src/libs/IPC.js +51 -0
  147. package/apps/web/upstream/src/libs/InputHandler.js +921 -0
  148. package/apps/web/upstream/src/libs/IrcClient.js +1506 -0
  149. package/apps/web/upstream/src/libs/Logger.js +71 -0
  150. package/apps/web/upstream/src/libs/Message.js +169 -0
  151. package/apps/web/upstream/src/libs/MessageFormatter.js +364 -0
  152. package/apps/web/upstream/src/libs/MessageParser.js +249 -0
  153. package/apps/web/upstream/src/libs/Notifications.js +78 -0
  154. package/apps/web/upstream/src/libs/ServerConnection.js +270 -0
  155. package/apps/web/upstream/src/libs/ServerSession.js +102 -0
  156. package/apps/web/upstream/src/libs/SoundBleep.js +20 -0
  157. package/apps/web/upstream/src/libs/StatePersistence.js +90 -0
  158. package/apps/web/upstream/src/libs/ThemeManager.js +128 -0
  159. package/apps/web/upstream/src/libs/TypingMiddleware.js +105 -0
  160. package/apps/web/upstream/src/libs/WindowTitle.js +63 -0
  161. package/apps/web/upstream/src/libs/batchedAdd.js +74 -0
  162. package/apps/web/upstream/src/libs/bufferTools.js +177 -0
  163. package/apps/web/upstream/src/libs/polyfill/Element.closest.js +18 -0
  164. package/apps/web/upstream/src/libs/renderers/Html.js +113 -0
  165. package/apps/web/upstream/src/libs/settingTools.js +31 -0
  166. package/apps/web/upstream/src/libs/state/BufferState.js +703 -0
  167. package/apps/web/upstream/src/libs/state/NetworkState.js +158 -0
  168. package/apps/web/upstream/src/libs/state/UserState.js +89 -0
  169. package/apps/web/upstream/src/libs/state/common.js +26 -0
  170. package/apps/web/upstream/src/libs/state.js +961 -0
  171. package/apps/web/upstream/src/libs/storage/Local.js +51 -0
  172. package/apps/web/upstream/src/main.js +566 -0
  173. package/apps/web/upstream/src/res/autocompleteCommands.js +31 -0
  174. package/apps/web/upstream/src/res/configTemplates.js +373 -0
  175. package/apps/web/upstream/src/res/globalStyle.css +277 -0
  176. package/apps/web/upstream/src/res/kiwiLoadingLogo.png +0 -0
  177. package/apps/web/upstream/src/res/locales/app.af-ZA.po +1145 -0
  178. package/apps/web/upstream/src/res/locales/app.ar-SA.po +1145 -0
  179. package/apps/web/upstream/src/res/locales/app.bg-BG.po +1145 -0
  180. package/apps/web/upstream/src/res/locales/app.bs-BA.po +1145 -0
  181. package/apps/web/upstream/src/res/locales/app.ca-ES.po +1145 -0
  182. package/apps/web/upstream/src/res/locales/app.cs-CZ.po +1145 -0
  183. package/apps/web/upstream/src/res/locales/app.da-DK.po +1145 -0
  184. package/apps/web/upstream/src/res/locales/app.de-DE.po +1145 -0
  185. package/apps/web/upstream/src/res/locales/app.dev.po +1246 -0
  186. package/apps/web/upstream/src/res/locales/app.el-GR.po +1145 -0
  187. package/apps/web/upstream/src/res/locales/app.en-US.po +1145 -0
  188. package/apps/web/upstream/src/res/locales/app.es-419.po +1145 -0
  189. package/apps/web/upstream/src/res/locales/app.es-AR.po +1145 -0
  190. package/apps/web/upstream/src/res/locales/app.es-EM.po +536 -0
  191. package/apps/web/upstream/src/res/locales/app.es-ES.po +1145 -0
  192. package/apps/web/upstream/src/res/locales/app.es-US.po +1145 -0
  193. package/apps/web/upstream/src/res/locales/app.eu-ES.po +1145 -0
  194. package/apps/web/upstream/src/res/locales/app.fi-FI.po +1145 -0
  195. package/apps/web/upstream/src/res/locales/app.fr-FR.po +1145 -0
  196. package/apps/web/upstream/src/res/locales/app.gl-ES.po +1145 -0
  197. package/apps/web/upstream/src/res/locales/app.he-IL.po +1145 -0
  198. package/apps/web/upstream/src/res/locales/app.hi-IN.po +1145 -0
  199. package/apps/web/upstream/src/res/locales/app.hu-HU.po +1145 -0
  200. package/apps/web/upstream/src/res/locales/app.id-ID.po +1145 -0
  201. package/apps/web/upstream/src/res/locales/app.it-IT.po +1145 -0
  202. package/apps/web/upstream/src/res/locales/app.ja-JP.po +1145 -0
  203. package/apps/web/upstream/src/res/locales/app.ko-KR.po +1145 -0
  204. package/apps/web/upstream/src/res/locales/app.nl-NL.po +1145 -0
  205. package/apps/web/upstream/src/res/locales/app.no-NO.po +1145 -0
  206. package/apps/web/upstream/src/res/locales/app.pl-PL.po +1145 -0
  207. package/apps/web/upstream/src/res/locales/app.pt-BR.po +1145 -0
  208. package/apps/web/upstream/src/res/locales/app.pt-PT.po +1145 -0
  209. package/apps/web/upstream/src/res/locales/app.ro-RO.po +1145 -0
  210. package/apps/web/upstream/src/res/locales/app.ru-RU.po +1145 -0
  211. package/apps/web/upstream/src/res/locales/app.sl-SI.po +1145 -0
  212. package/apps/web/upstream/src/res/locales/app.sq-AL.po +1145 -0
  213. package/apps/web/upstream/src/res/locales/app.sr-SP.po +1145 -0
  214. package/apps/web/upstream/src/res/locales/app.sv-SE.po +1145 -0
  215. package/apps/web/upstream/src/res/locales/app.tr-TR.po +1145 -0
  216. package/apps/web/upstream/src/res/locales/app.uk-UA.po +1145 -0
  217. package/apps/web/upstream/src/res/locales/app.vi-VN.po +1145 -0
  218. package/apps/web/upstream/src/res/locales/app.zh-CN.po +1145 -0
  219. package/apps/web/upstream/src/res/locales/app.zh-TW.po +1145 -0
  220. package/apps/web/upstream/src/res/localesList.json +27 -0
  221. package/apps/web/upstream/src/res/logo.png +0 -0
  222. package/apps/web/upstream/src/thirdparty/about.html +43 -0
  223. package/apps/web/upstream/src/thirdparty/index.js +5 -0
  224. package/apps/web/upstream/src/thirdparty/kiwiirccom.vue +185 -0
  225. package/apps/web/upstream/static/config.json +28 -0
  226. package/apps/web/upstream/static/emoticons/smile.png +0 -0
  227. package/apps/web/upstream/static/favicon.png +0 -0
  228. package/apps/web/upstream/static/highlight.mp3 +0 -0
  229. package/apps/web/upstream/static/highlight.ogg +0 -0
  230. package/apps/web/upstream/static/locales/.gitignore +2 -0
  231. package/apps/web/upstream/static/plugins/customise.html.example +10 -0
  232. package/apps/web/upstream/static/themes/coffee/theme.css +145 -0
  233. package/apps/web/upstream/static/themes/common/base.css +1064 -0
  234. package/apps/web/upstream/static/themes/dark/theme.css +196 -0
  235. package/apps/web/upstream/static/themes/default/theme.css +92 -0
  236. package/apps/web/upstream/static/themes/elite/theme.css +248 -0
  237. package/apps/web/upstream/static/themes/grayfox/theme.css +143 -0
  238. package/apps/web/upstream/static/themes/nightswatch/theme.css +367 -0
  239. package/apps/web/upstream/static/themes/osprey/theme.css +115 -0
  240. package/apps/web/upstream/static/themes/radioactive/theme.css +1211 -0
  241. package/apps/web/upstream/static/themes/sky/theme.css +107 -0
  242. package/apps/web/upstream/tests/unit/BatchAdd.spec.js +174 -0
  243. package/apps/web/upstream/tests/unit/MessageParser.spec.js +125 -0
  244. package/apps/web/upstream/tests/unit/Misc.spec.js +24 -0
  245. package/apps/web/upstream/tests/unit/NetworkState.spec.js +58 -0
  246. package/apps/web/upstream/tests/unit/StartupError.spec.js +20 -0
  247. package/apps/web/upstream/vue.config.js +150 -0
  248. package/apps/web/upstream/yarn.lock +9767 -0
  249. package/apps/web/vitest.config.ts +13 -0
  250. package/biome.json +2 -0
  251. package/docs/ADR-001-pure-reducers-and-effect-system.md +74 -0
  252. package/docs/ADR-002-location-of-authority.md +82 -0
  253. package/docs/ADR-003-durable-object-sharding.md +110 -0
  254. package/docs/ADR-004-dynamodb-schema.md +96 -0
  255. package/docs/ADR-005-wss-only-transport-v1.md +83 -0
  256. package/docs/ADR-006-sasl-mechanism-scope.md +96 -0
  257. package/docs/ADR-007-deterministic-ports.md +82 -0
  258. package/docs/ADR-008-monorepo-tooling.md +60 -0
  259. package/docs/ADR-009-dual-transport-wss-and-irc-tls.md +138 -0
  260. package/docs/ADR-Index.md +15 -0
  261. package/docs/AWS-Adapter-Architecture.md +496 -0
  262. package/docs/AWS-Deployment.md +1275 -0
  263. package/docs/AWS-TCP-Deployment.md +410 -0
  264. package/docs/Cloudflare-Deployment-Guide.md +719 -0
  265. package/docs/Cloudflare-TCP-Deployment.md +510 -0
  266. package/docs/Home.md +16 -0
  267. package/docs/Observability.md +87 -0
  268. package/docs/PlanExtensions.md +812 -0
  269. package/docs/PlanIRCv3Websocket.md +503 -0
  270. package/docs/PlanWebClient.md +451 -0
  271. package/docs/Release-Process.md +443 -0
  272. package/docs/WebClientGuide.md +535 -0
  273. package/package.json +2 -2
  274. package/packages/aws-adapter/package.json +1 -1
  275. package/packages/aws-adapter/src/handlers/default.ts +3 -0
  276. package/packages/aws-adapter/src/handlers/nlb-stream.ts +9 -0
  277. package/packages/aws-adapter/src/serialize.ts +29 -1
  278. package/packages/aws-adapter/tests/account-store-dynamo.test.ts +49 -8
  279. package/packages/aws-adapter/tests/account-store.test.ts +4 -7
  280. package/packages/aws-adapter/tests/aws-harness.ts +5 -2
  281. package/packages/aws-adapter/tests/aws-integration.test.ts +8 -4
  282. package/packages/aws-adapter/tests/aws-runtime.test.ts +79 -0
  283. package/packages/aws-adapter/tests/config-loader.test.ts +11 -2
  284. package/packages/aws-adapter/tests/connect.test.ts +9 -9
  285. package/packages/aws-adapter/tests/disconnect-fanout.test.ts +3 -4
  286. package/packages/aws-adapter/tests/global-setup.ts +55 -30
  287. package/packages/aws-adapter/tests/gone-exception.test.ts +4 -9
  288. package/packages/aws-adapter/tests/handlers.test.ts +90 -4
  289. package/packages/aws-adapter/tests/message-store.test.ts +6 -5
  290. package/packages/aws-adapter/tests/nlb-stream.test.ts +60 -8
  291. package/packages/cf-adapter/package.json +2 -1
  292. package/packages/cf-adapter/src/connection-do.ts +3 -0
  293. package/packages/cf-adapter/src/serialize.ts +25 -4
  294. package/packages/cf-adapter/tests/cf-harness.ts +12 -1
  295. package/packages/cf-adapter/tests/cf-runtime.test.ts +269 -0
  296. package/packages/cf-adapter/tests/channel-do.test.ts +117 -0
  297. package/packages/cf-adapter/tests/config-loader.test.ts +49 -0
  298. package/packages/cf-adapter/tests/connection-do-pure.test.ts +91 -0
  299. package/packages/cf-adapter/tests/d1-account-store.test.ts +48 -0
  300. package/packages/cf-adapter/tests/registry-do.test.ts +104 -0
  301. package/packages/cf-adapter/tests/serialize.test.ts +308 -0
  302. package/packages/cf-adapter/vitest.config.ts +1 -1
  303. package/packages/in-memory-runtime/package.json +1 -1
  304. package/packages/irc-core/package.json +1 -1
  305. package/packages/irc-core/reports/mutation/mutation.html +342 -0
  306. package/packages/irc-core/src/caps/capabilities.ts +37 -3
  307. package/packages/irc-core/src/caps/index.ts +1 -0
  308. package/packages/irc-core/src/caps/sts.ts +84 -0
  309. package/packages/irc-core/src/commands/account-notify.ts +53 -0
  310. package/packages/irc-core/src/commands/away.ts +9 -3
  311. package/packages/irc-core/src/commands/cap.ts +23 -5
  312. package/packages/irc-core/src/commands/chathistory.ts +40 -11
  313. package/packages/irc-core/src/commands/index.ts +34 -0
  314. package/packages/irc-core/src/commands/isupport.ts +53 -0
  315. package/packages/irc-core/src/commands/mode.ts +8 -1
  316. package/packages/irc-core/src/commands/monitor.ts +327 -0
  317. package/packages/irc-core/src/commands/multiline.ts +256 -0
  318. package/packages/irc-core/src/commands/pre-away.ts +112 -0
  319. package/packages/irc-core/src/commands/privmsg.ts +19 -12
  320. package/packages/irc-core/src/commands/read-marker.ts +108 -0
  321. package/packages/irc-core/src/commands/registration.ts +8 -0
  322. package/packages/irc-core/src/commands/sasl.ts +24 -1
  323. package/packages/irc-core/src/commands/tagmsg.ts +71 -1
  324. package/packages/irc-core/src/commands/whois.ts +5 -0
  325. package/packages/irc-core/src/config.ts +65 -10
  326. package/packages/irc-core/src/effects.ts +14 -0
  327. package/packages/irc-core/src/ports.ts +389 -0
  328. package/packages/irc-core/src/protocol/index.ts +14 -0
  329. package/packages/irc-core/src/protocol/labeled-response.ts +133 -0
  330. package/packages/irc-core/src/protocol/numerics.ts +15 -0
  331. package/packages/irc-core/src/protocol/outbound.ts +16 -1
  332. package/packages/irc-core/src/protocol/standard-replies.ts +277 -0
  333. package/packages/irc-core/src/state/connection.ts +32 -1
  334. package/packages/irc-core/src/types.ts +112 -0
  335. package/packages/irc-core/stryker.commands.conf.json +1 -2
  336. package/packages/irc-core/tests/away-store.test.ts +73 -0
  337. package/packages/irc-core/tests/batch.test.ts +15 -0
  338. package/packages/irc-core/tests/caps/capabilities.test.ts +119 -2
  339. package/packages/irc-core/tests/caps/sts.test.ts +123 -0
  340. package/packages/irc-core/tests/commands/account-notify.test.ts +171 -0
  341. package/packages/irc-core/tests/commands/away.test.ts +85 -2
  342. package/packages/irc-core/tests/commands/cap.test.ts +165 -0
  343. package/packages/irc-core/tests/commands/chathistory.test.ts +148 -1
  344. package/packages/irc-core/tests/commands/echo-message.test.ts +9 -3
  345. package/packages/irc-core/tests/commands/isupport.test.ts +80 -0
  346. package/packages/irc-core/tests/commands/mode.test.ts +72 -0
  347. package/packages/irc-core/tests/commands/monitor.test.ts +411 -0
  348. package/packages/irc-core/tests/commands/multiline.test.ts +428 -0
  349. package/packages/irc-core/tests/commands/pre-away.test.ts +241 -0
  350. package/packages/irc-core/tests/commands/privmsg.test.ts +154 -3
  351. package/packages/irc-core/tests/commands/read-marker.test.ts +211 -0
  352. package/packages/irc-core/tests/commands/registration.test.ts +64 -0
  353. package/packages/irc-core/tests/commands/sasl.test.ts +116 -2
  354. package/packages/irc-core/tests/commands/tagmsg.test.ts +357 -0
  355. package/packages/irc-core/tests/commands/whois.test.ts +34 -0
  356. package/packages/irc-core/tests/config.test.ts +103 -13
  357. package/packages/irc-core/tests/labeled-response.test.ts +181 -0
  358. package/packages/irc-core/tests/message-tags.test.ts +114 -0
  359. package/packages/irc-core/tests/monitor-store.test.ts +200 -0
  360. package/packages/irc-core/tests/numerics.test.ts +13 -0
  361. package/packages/irc-core/tests/parser.test.ts +109 -0
  362. package/packages/irc-core/tests/read-marker-store.test.ts +108 -0
  363. package/packages/irc-core/tests/standard-replies.test.ts +412 -0
  364. package/packages/irc-core/tests/types.test.ts +27 -0
  365. package/packages/irc-server/package.json +1 -1
  366. package/packages/irc-server/src/actor.ts +450 -3
  367. package/packages/irc-server/src/dispatch.ts +108 -16
  368. package/packages/irc-server/tests/actor.test.ts +1432 -39
  369. package/packages/irc-server/tests/dispatch.test.ts +263 -2
  370. package/packages/irc-test-support/package.json +1 -1
  371. package/packages/irc-test-support/src/index.ts +6 -0
  372. package/packages/irc-test-support/src/scenarios.ts +24 -2
  373. package/packages/irc-test-support/src/test-config.ts +54 -0
  374. package/packages/irc-test-support/tests/test-config.test.ts +51 -0
  375. package/tools/ci-hardening/package.json +1 -1
  376. package/tools/ci-hardening/tests/ddb-local.test.ts +82 -0
  377. package/tools/load-test/package.json +33 -0
  378. package/tools/load-test/src/client.ts +351 -0
  379. package/tools/load-test/src/config.ts +313 -0
  380. package/tools/load-test/src/harness.ts +116 -0
  381. package/tools/load-test/src/main.ts +120 -0
  382. package/tools/load-test/src/metrics.ts +168 -0
  383. package/tools/load-test/src/report.ts +106 -0
  384. package/tools/load-test/tests/client.test.ts +212 -0
  385. package/tools/load-test/tests/config.test.ts +152 -0
  386. package/tools/load-test/tests/framing.test.ts +37 -0
  387. package/tools/load-test/tests/harness.test.ts +165 -0
  388. package/tools/load-test/tests/metrics.test.ts +174 -0
  389. package/tools/load-test/tests/report.test.ts +161 -0
  390. package/tools/load-test/tests/smoke.test.ts +67 -0
  391. package/tools/load-test/tsconfig.build.json +12 -0
  392. package/tools/load-test/tsconfig.test.json +10 -0
  393. package/tools/load-test/vitest.config.ts +29 -0
  394. package/tools/tcp-ws-forwarder/package.json +1 -1
@@ -0,0 +1,1145 @@
1
+ msgid ""
2
+ msgstr ""
3
+ "MIME-Version: 1.0\n"
4
+ "Content-Type: text/plain; charset=UTF-8\n"
5
+ "Content-Transfer-Encoding: 8bit\n"
6
+ "X-Crowdin-SourceKey: msgstr\n"
7
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
8
+ "X-Crowdin-Project: kiwiirc\n"
9
+ "X-Crowdin-Project-ID: 275818\n"
10
+ "X-Crowdin-Language: fr\n"
11
+ "X-Crowdin-File: /[kiwiirc.kiwiirc] master/src/res/locales/app.dev.po\n"
12
+ "X-Crowdin-File-ID: 21\n"
13
+ "Project-Id-Version: kiwiirc\n"
14
+ "Language-Team: French\n"
15
+ "Language: fr_FR\n"
16
+ "PO-Revision-Date: 2023-06-14 23:55\n"
17
+
18
+ #: Start
19
+ msgid "start_button"
20
+ msgstr "Démarrer"
21
+
22
+ #: Welcome to Kiwi IRC!
23
+ msgid "start_greeting"
24
+ msgstr "Bienvenue sur Kiwi IRC !"
25
+
26
+ #: Close
27
+ msgid "close"
28
+ msgstr "Fermer"
29
+
30
+ #: Connect
31
+ msgid "connect"
32
+ msgstr "Connexion"
33
+
34
+ #: Connecting...
35
+ msgid "connecting"
36
+ msgstr "Connexion en cours"
37
+
38
+ #: Connected
39
+ msgid "connected"
40
+ msgstr "Connecté"
41
+
42
+ #: Settings
43
+ msgid "settings"
44
+ msgstr "Paramètres"
45
+
46
+ #: Kiwi Settings
47
+ msgid "kiwi_settings"
48
+ msgstr "Paramètres Kiwi"
49
+
50
+ #: Channels
51
+ msgid "channels"
52
+ msgstr "Salons"
53
+
54
+ #: Access
55
+ msgid "access"
56
+ msgstr "Accès"
57
+
58
+ #: Banned Users
59
+ msgid "banned"
60
+ msgstr "Banni(s)"
61
+
62
+ #: Invited Users
63
+ msgid "invited"
64
+ msgstr "Utilisateurs invités"
65
+
66
+ #: Notifications
67
+ msgid "notifications"
68
+ msgstr "Notifications"
69
+
70
+ #: Username
71
+ msgid "username"
72
+ msgstr "Nom d'utilisateur"
73
+
74
+ #: Password
75
+ msgid "password"
76
+ msgstr "Mot de passe"
77
+
78
+ #: Server Password
79
+ msgid "server_password"
80
+ msgstr "Mot de passe serveur"
81
+
82
+ #: I have a password
83
+ msgid "password_have"
84
+ msgstr "J'ai un mot de passe"
85
+
86
+ #: Server
87
+ msgid "server"
88
+ msgstr "Serveur"
89
+
90
+ #: Nick
91
+ msgid "nick"
92
+ msgstr "Pseudo"
93
+
94
+ #: Channel
95
+ msgid "channel"
96
+ msgstr "Salon"
97
+
98
+ #: Messages
99
+ msgid "messages"
100
+ msgstr "Messages"
101
+
102
+ #: Network
103
+ msgid "network"
104
+ msgstr "Réseau"
105
+
106
+ #: ZNC
107
+ msgid "znc"
108
+ msgstr "ZNC"
109
+
110
+ #: Logging in...
111
+ msgid "logging_in"
112
+ msgstr "Connexion en cours..."
113
+
114
+ #: Invalid login
115
+ msgid "invalid_login"
116
+ msgstr "Pseudo invalide"
117
+
118
+ #: Login failed. Please try again or contact support
119
+ msgid "login_failed"
120
+ msgstr "Échec de la connexion. Veuillez réessayer ou contacter le support."
121
+
122
+ #: You are now logged in as '{{account}}'
123
+ msgid "logged_in"
124
+ msgstr "Vous êtes maintenant connecté en tant que '{{account}}'"
125
+
126
+ #: You have been logged out
127
+ msgid "logged_out"
128
+ msgstr "Vous avez été déconnecté"
129
+
130
+ #: Search...
131
+ msgid "do_search"
132
+ msgstr "Rechercher..."
133
+
134
+ #: OK
135
+ msgid "ok"
136
+ msgstr "OK"
137
+
138
+ #: Cancel
139
+ msgid "cancel"
140
+ msgstr "Annuler"
141
+
142
+ #: Yes
143
+ msgid "yes"
144
+ msgstr "Oui"
145
+
146
+ #: No
147
+ msgid "no"
148
+ msgstr "Non"
149
+
150
+ #: Not found.
151
+ msgid "not_found"
152
+ msgstr "Non trouvé."
153
+
154
+ #: Warning!
155
+ msgid "warning"
156
+ msgstr "Attention !"
157
+
158
+ #: This will close all Kiwi IRC conversations. Are you sure you want to close this window?
159
+ msgid "window_unload"
160
+ msgstr "Vous allez fermer toutes les conversations sur KiwiIRC. Voulez-vous vraiment fermer cette fenêtre ?"
161
+
162
+ #: Real name
163
+ msgid "whois_realname"
164
+ msgstr "Nom d'utilisateur dans le whois d'un utilisateur"
165
+
166
+ #: Status
167
+ msgid "whois_status"
168
+ msgstr "Statut"
169
+
170
+ #: Is available
171
+ msgid "whois_status_available"
172
+ msgstr "Disponible"
173
+
174
+ #: Send a message
175
+ msgid "send_a_message"
176
+ msgstr "Envoyer un message"
177
+
178
+ #: More information
179
+ msgid "more_information"
180
+ msgstr "Plus d'infos"
181
+
182
+ #: Ignore user
183
+ msgid "ignore_user"
184
+ msgstr "Bloquer l'utilisateur"
185
+
186
+ #: Channel
187
+ msgid "connection_channel"
188
+ msgstr "Salon"
189
+
190
+ #: Away
191
+ msgid "away"
192
+ msgstr "Absent"
193
+
194
+ #: {{count}} week
195
+ msgid "week"
196
+ msgstr "{{count}} semaine"
197
+
198
+ #: {{count}} weeks
199
+ msgid "week_plural"
200
+ msgstr "{{count}} semaines"
201
+
202
+ #: {{count}} day
203
+ msgid "day"
204
+ msgstr "{{count}} jour"
205
+
206
+ #: {{count}} days
207
+ msgid "day_plural"
208
+ msgstr "{{count}} jours"
209
+
210
+ #: {{count}} hour
211
+ msgid "hour"
212
+ msgstr "{{count}} heure"
213
+
214
+ #: {{count}} hours
215
+ msgid "hour_plural"
216
+ msgstr "{{count}} heures"
217
+
218
+ #: {{count}} minute
219
+ msgid "minute"
220
+ msgstr "{{count}} minute"
221
+
222
+ #: {{count}} minutes
223
+ msgid "minute_plural"
224
+ msgstr "{{count}} minutes"
225
+
226
+ #: {{count}} second
227
+ msgid "second"
228
+ msgstr "{{count}} seconde"
229
+
230
+ #: {{count}} seconds
231
+ msgid "second_plural"
232
+ msgstr "{{count}} secondes"
233
+
234
+ #: General
235
+ msgid "settings_general"
236
+ msgstr "Paramètres"
237
+
238
+ #: Language
239
+ msgid "settings_language"
240
+ msgstr "Langue"
241
+
242
+ #: Theme
243
+ msgid "settings_theme"
244
+ msgstr "Thème"
245
+
246
+ #: Refresh Theme
247
+ msgid "refresh_theme"
248
+ msgstr "Rafraichir le thème"
249
+
250
+ #: Theme URL
251
+ msgid "settings_themeurl"
252
+ msgstr "URL du thème"
253
+
254
+ #: Message Layout
255
+ msgid "settings_messagelayout"
256
+ msgstr "Disposition des messages"
257
+
258
+ #: Use monospace
259
+ msgid "settings_use_monospace"
260
+ msgstr "Caractères monospace"
261
+
262
+ #: Use Kiwi as my default IRC client
263
+ msgid "settings_default_handler"
264
+ msgstr "Utiliser Kiwi comme client IRC par défaut"
265
+
266
+ #: Traditional IRC layout
267
+ msgid "settings_layout_compact"
268
+ msgstr "Disposition IRC traditionnelle"
269
+
270
+ #: Show autocomplete list
271
+ msgid "settings_show_autocomplete"
272
+ msgstr "Afficher l'auto complétion"
273
+
274
+ #: Chat Messages
275
+ msgid "settings_messages_title"
276
+ msgstr "Messages du chat"
277
+
278
+ #: Show timestamps
279
+ msgid "settings_timestamps"
280
+ msgstr "Afficher l'heure des messages"
281
+
282
+ #: Use 24-hour timestamps
283
+ msgid "settings_24hour_timestamps"
284
+ msgstr "Afficher l'heure au format 24h"
285
+
286
+ #: Show emoticons
287
+ msgid "settings_emoticons"
288
+ msgstr "Afficher les émoticônes"
289
+
290
+ #: Block new Private messages
291
+ msgid "settings_block_private"
292
+ msgstr "Bloquer les privés"
293
+
294
+ #: Messages in scrollback
295
+ msgid "settings_scrollback"
296
+ msgstr "Messages dans l'historique"
297
+
298
+ #: Extra formatting
299
+ msgid "settings_formatting"
300
+ msgstr "Formatage supplémentaire"
301
+
302
+ #: Colour nicknames in messages
303
+ msgid "settings_nick_colouring"
304
+ msgstr "Coloriser les pseudos dans les messages"
305
+
306
+ #: Share when I'm typing a message
307
+ msgid "settings_share_typing"
308
+ msgstr "Indiquer quand je tape un message"
309
+
310
+ #: Show inline image previews
311
+ msgid "settings_show_inline_previews"
312
+ msgstr "Montrer l'aperçu des images en ligne"
313
+
314
+ #: Include join/part messages as activity
315
+ msgid "settings_show_joinpart"
316
+ msgstr "Notifications d'entrée / sortie"
317
+
318
+ #: Mute sound notifications
319
+ msgid "settings_mute_sound"
320
+ msgstr "Couper les alertes sonores"
321
+
322
+ #: Highlight on words (space seperated)
323
+ msgid "settings_highlight"
324
+ msgstr "Notifications sur mots clés (séparés par des espaces)"
325
+
326
+ #: Aliases
327
+ msgid "settings_aliases"
328
+ msgstr "Alias de commandes"
329
+
330
+ #: What are Aliases
331
+ msgid "what_are_aliases"
332
+ msgstr "C'est quoi, les Aliases ?"
333
+
334
+ #: Send Message
335
+ msgid "send_message"
336
+ msgstr "Envoyer message"
337
+
338
+ #: Enter Channel Key
339
+ msgid "bufferkey_input"
340
+ msgstr "Entrer le mot de passe du salon"
341
+
342
+ #: Rejoin {{channel}}
343
+ msgid "bufferkey_rejoin"
344
+ msgstr "Rejoindre {{channel}}"
345
+
346
+ #: Notify me when
347
+ msgid "settings_notify"
348
+ msgstr "Notifications :"
349
+
350
+ #: All messages
351
+ msgid "settings_notify_all"
352
+ msgstr "Tous messages"
353
+
354
+ #: I am mentioned
355
+ msgid "settings_notify_mentioned"
356
+ msgstr "Mentions"
357
+
358
+ #: Never
359
+ msgid "settings_notify_never"
360
+ msgstr "Jamais"
361
+
362
+ #: Mute sounds
363
+ msgid "settings_notify_mute"
364
+ msgstr "Désactiver son"
365
+
366
+ #: Hide unread message count
367
+ msgid "settings_show_message_counts"
368
+ msgstr "Cacher le compteur de messages non lus"
369
+
370
+ #: Operator tools
371
+ msgid "operator_tools"
372
+ msgstr "Outils de modération"
373
+
374
+ #: Default ban mask
375
+ msgid "settings_default_ban_mask"
376
+ msgstr "Masque de ban par défaut"
377
+
378
+ #: Default kick reason
379
+ msgid "settings_default_kick_reason"
380
+ msgstr "Motif d'éjection par défaut"
381
+
382
+ #: Advanced Settings
383
+ msgid "settings_advanced_title"
384
+ msgstr "Paramètres avancés"
385
+
386
+ #: Monsters be here, only click this button if you know what you are doing
387
+ msgid "settings_advanced_warning"
388
+ msgstr "Des monstres se cachent ici, cliquez sur ce bouton uniquement si vous savez ce que vous faite"
389
+
390
+ #: Enable Advanced Settings
391
+ msgid "settings_advanced_button"
392
+ msgstr "Activer les paramètres avancés"
393
+
394
+ #: Danger Zone: Changing some of these settings may break things!
395
+ msgid "settings_advanced_header"
396
+ msgstr "Zone dangereuse : Changer certains de ces paramètres peut casser des choses !"
397
+
398
+ #: Reset
399
+ msgid "settings_advanced_reset"
400
+ msgstr "Réinitialiser "
401
+
402
+ #: Filter
403
+ msgid "settings_advanced_filter"
404
+ msgstr "Filtre"
405
+
406
+ #: Refresh banlist
407
+ msgid "bans_refresh"
408
+ msgstr "Rafraichir la liste des bannis"
409
+
410
+ #: Banned user
411
+ msgid "bans_user"
412
+ msgstr "Utilisateur banni"
413
+
414
+ #: Banned by
415
+ msgid "bans_by"
416
+ msgstr "Banni par"
417
+
418
+ #: Refreshing banlist...
419
+ msgid "bans_refreshing"
420
+ msgstr "Actualisation de la liste des bannis..."
421
+
422
+ #: Nobody is banned!
423
+ msgid "bans_nobody"
424
+ msgstr "Personne n'est banni !"
425
+
426
+ #: Refresh invite list
427
+ msgid "invites_refresh"
428
+ msgstr "Rafraichir la liste des invités"
429
+
430
+ #: Invited user
431
+ msgid "invites_user"
432
+ msgstr "Utilisateurs invités"
433
+
434
+ #: Invited by
435
+ msgid "invites_by"
436
+ msgstr "Invité par"
437
+
438
+ #: Refreshing invite list...
439
+ msgid "invites_refreshing"
440
+ msgstr "Rafraichissement de la liste des invités..."
441
+
442
+ #: Nobody is invited!
443
+ msgid "invites_nobody"
444
+ msgstr "Personne n'est invité !"
445
+
446
+ #: This is a public channel.
447
+ msgid "invite_public_channel"
448
+ msgstr "C'est un salon public."
449
+
450
+ #: Only invited users can join.
451
+ msgid "invite_private_channel"
452
+ msgstr "Seuls les utilisateurs invités peuvent joindre ce salon."
453
+
454
+ #: Only allow invited users
455
+ msgid "invite_set_private"
456
+ msgstr "Autoriser uniquement les utilisateurs invités"
457
+
458
+ #: Allow anybody to join
459
+ msgid "invite_set_public"
460
+ msgstr "Autoriser tout le monde à joindre le salon"
461
+
462
+ #: Only registered users can join
463
+ msgid "invite_registered_only"
464
+ msgstr "Seul les utilisateurs enregistrés peuvent joindre le salon"
465
+
466
+ #: Add invite
467
+ msgid "invite_add_invite"
468
+ msgstr "Ajouter une invitation"
469
+
470
+ #: (Any registered user)
471
+ msgid "invite_any_registered"
472
+ msgstr "(Tout utilisateur enregistré)"
473
+
474
+ #: Topic
475
+ msgid "channel_topic"
476
+ msgstr "Thème"
477
+
478
+ #: Moderated chat
479
+ msgid "channel_moderated"
480
+ msgstr "Salon modéré"
481
+
482
+ #: Invite only
483
+ msgid "channel_invite"
484
+ msgstr "Sur invitation"
485
+
486
+ #: Hide this channel from lists
487
+ msgid "channel_secret"
488
+ msgstr "Cacher ce salon dans les listes"
489
+
490
+ #: Only moderators can change the topic
491
+ msgid "channel_moderated_topic"
492
+ msgstr "Seuls les modérateurs peuvent modifier le thème"
493
+
494
+ #: Block messages from outside this channel
495
+ msgid "channel_external"
496
+ msgstr "Bloquer les messages envoyés depuis l'extérieur"
497
+
498
+ #: Click the refresh button to update the channel list
499
+ msgid "channel_list_fetch"
500
+ msgstr "Cliquez sur le bouton rafraichir pour mettre à jour la liste des salons"
501
+
502
+ #: No channels found, try again later
503
+ msgid "channel_list_nonefound"
504
+ msgstr "Aucun salon trouvé, réessayez plus tard"
505
+
506
+ #: Welcome to Kiwi IRC! Select a channel on the left.
507
+ msgid "container_welcome"
508
+ msgstr "Bienvenue dans Kiwiirc ! Choisissez un salon sur la gauche."
509
+
510
+ #: Show statebrowser
511
+ msgid "container_statebrowser"
512
+ msgstr "Afficher le navigateur de statut"
513
+
514
+ #: Hide Topic
515
+ msgid "hide_topic"
516
+ msgstr "Cacher le thème"
517
+
518
+ #: Display Topic
519
+ msgid "display_topic"
520
+ msgstr "Montrer le thème"
521
+
522
+ #: Channel Settings
523
+ msgid "channel_settings"
524
+ msgstr "Paramètres du salon"
525
+
526
+ #: Join Channel
527
+ msgid "container_join"
528
+ msgstr "Rejoindre un salon"
529
+
530
+ #: Not Connected
531
+ msgid "container_notconnected"
532
+ msgstr "Déconnecté"
533
+
534
+ #: Private conversation with {{user}}
535
+ msgid "container_privmsg"
536
+ msgstr "Discussion privée avec {{user}}"
537
+
538
+ #: Send a message...
539
+ msgid "input_placeholder"
540
+ msgstr "Envoyer un message..."
541
+
542
+ #: Loading {{url}}...
543
+ msgid "media_loading"
544
+ msgstr "Chargement de {{url}}..."
545
+
546
+ #: Load previous messages
547
+ msgid "messages_load"
548
+ msgstr "Charger les messages précédents"
549
+
550
+ #: Loading previous messages...
551
+ msgid "messages_loading"
552
+ msgstr "Chargement des messages précédents..."
553
+
554
+ #: Unread Messages
555
+ msgid "unread_messages"
556
+ msgstr "Nouveaux messages"
557
+
558
+ #: Reply in private
559
+ msgid "reply_in_private"
560
+ msgstr "Répondre en privé"
561
+
562
+ #: Server details
563
+ msgid "settings_server_details"
564
+ msgstr "Paramètres du serveur"
565
+
566
+ #: Port
567
+ msgid "settings_port"
568
+ msgstr "Port"
569
+
570
+ #: Other networks on this ZNC account will be listed in the network list
571
+ msgid "settings_znc_other"
572
+ msgstr "Les autres réseaux de ce compte ZNC seront affichés dans la liste des réseaux"
573
+
574
+ #: Your details
575
+ msgid "settings_your_details"
576
+ msgstr "Vos infos"
577
+
578
+ #: Nickname
579
+ msgid "settings_nickname"
580
+ msgstr "Pseudo"
581
+
582
+ #: Advanced
583
+ msgid "settings_advanced"
584
+ msgstr "Avancé"
585
+
586
+ #: Encoding
587
+ msgid "settings_encoding"
588
+ msgstr "Encodage"
589
+
590
+ #: Show Raw
591
+ msgid "settings_show_raw"
592
+ msgstr "Messages de débug"
593
+
594
+ #: Direct websocket
595
+ msgid "settings_use_websocket"
596
+ msgstr "WebSocket direct"
597
+
598
+ #: Run commands when connected
599
+ msgid "settings_autorun"
600
+ msgstr "Commandes à exécuter à la connexion"
601
+
602
+ #: Danger Zone
603
+ msgid "settings_danger"
604
+ msgstr "Zone dangereuse"
605
+
606
+ #: Remove network
607
+ msgid "settings_remove"
608
+ msgstr "Supprimer le réseau"
609
+
610
+ #: {{count}} person here
611
+ msgid "person"
612
+ msgstr "{{count}} membre ici"
613
+
614
+ #: {{count}} people here
615
+ msgid "person_plural"
616
+ msgstr "{{count}} membres ici"
617
+
618
+ #: Filter users in channel
619
+ msgid "filter_users"
620
+ msgstr "Filtrer les utilisateurs du salon"
621
+
622
+ #: Reconnect to join {{channel}}
623
+ msgid "reconnect_channel"
624
+ msgstr "Reconnectez-vous pour rejoindre {{channel}}"
625
+
626
+ #: Reconnect to {{network}} to start talking
627
+ msgid "reconnect_network"
628
+ msgstr "Reconnectez-vous à {{network}} pour commencer à parler"
629
+
630
+ #: Reconnect to continue talking with {{user}}
631
+ msgid "reconnect_query"
632
+ msgstr "Reconnectez-vous pour parler à {{user}}"
633
+
634
+ #: You are not currently connected!
635
+ msgid "not_connected"
636
+ msgstr "Vous n'êtes pas connecté actuellement !"
637
+
638
+ #: Connection settings
639
+ msgid "reconnect_settings"
640
+ msgstr "Paramètres de connexion"
641
+
642
+ #: We couldn't connect to that server :(
643
+ msgid "network_noconnect"
644
+ msgstr "Nous ne pouvons pas nous connecter à ce serveur :("
645
+
646
+ #: Connect To Network
647
+ msgid "network_connect"
648
+ msgstr "Connexion au réseau"
649
+
650
+ #: Network Name
651
+ msgid "network_name"
652
+ msgstr "Nom du réseau"
653
+
654
+ #: Close options
655
+ msgid "side_close"
656
+ msgstr "Fermer les paramètres"
657
+
658
+ #: Channel options
659
+ msgid "side_options"
660
+ msgstr "Paramètres du salon"
661
+
662
+ #: Your settings
663
+ msgid "side_settings"
664
+ msgstr "Vos paramètres"
665
+
666
+ #: Show when people join
667
+ msgid "side_joins"
668
+ msgstr "Afficher les entrées/sorties"
669
+
670
+ #: Show when channel topic changes
671
+ msgid "side_topics"
672
+ msgstr "Afficher les changements de sujet"
673
+
674
+ #: Show when users change their nicks
675
+ msgid "side_nick_changes"
676
+ msgstr "Afficher les changements de pseudo"
677
+
678
+ #: Show when users change channel modes
679
+ msgid "side_mode_changes"
680
+ msgstr "Afficher les changements de mode"
681
+
682
+ #: Extra message formatting
683
+ msgid "side_formatting"
684
+ msgstr "Formatage enrichi des messages"
685
+
686
+ #: Nick colours in the list"
687
+ msgid "side_colours"
688
+ msgstr "Pseudos de couleur"
689
+
690
+ #: No buffer set
691
+ msgid "side_buffer"
692
+ msgstr "Pas de messages"
693
+
694
+ #: There is no topic for this channel
695
+ msgid "no_topic_set"
696
+ msgstr "Il n'y a pas de thème pour ce salon"
697
+
698
+ #: About
699
+ msgid "about"
700
+ msgstr "À propos"
701
+
702
+ #: Created at {{when}}
703
+ msgid "created_at"
704
+ msgstr "Créé le {{when}}"
705
+
706
+ #: Highlights
707
+ msgid "highlights"
708
+ msgstr "Signalements"
709
+
710
+ #: Nobody has mentioned you yet...
711
+ msgid "nobody_mentioned_you"
712
+ msgstr "Personne ne vous a mentionné pour le moment ..."
713
+
714
+ #: There was an error starting Kiwi IRC :(
715
+ msgid "error_starting"
716
+ msgstr "Oops, Kiwi IRC a rencontré une erreur au démarrage :("
717
+
718
+ #: Make sure you have installed Kiwi IRC correctly and the configurartion can be loaded
719
+ msgid "error_installed"
720
+ msgstr "Vérifiez que vous avez correctement installé Kiwi IRC et que la configuration peut être chargée"
721
+
722
+ #: Leave {{name}}
723
+ msgid "state_leave"
724
+ msgstr "Quitter {{name}}"
725
+
726
+ #: Your account
727
+ msgid "state_account"
728
+ msgstr "Votre compte"
729
+
730
+ #: Your settings and networks will be remembered on this computer.
731
+ msgid "state_remembered"
732
+ msgstr "Vos réglages et réseaux seront mémorisés sur cet ordinateur"
733
+
734
+ #: Forget me
735
+ msgid "state_forget"
736
+ msgstr "Oubliez moi"
737
+
738
+ #: No networks here yet.
739
+ msgid "state_network"
740
+ msgstr "Pas encore de réseaux ici."
741
+
742
+ #: Add one?
743
+ msgid "state_add"
744
+ msgstr "En ajouter un ?"
745
+
746
+ #: Available networks
747
+ msgid "state_available"
748
+ msgstr "Réseaux disponibles"
749
+
750
+ #: Add Network
751
+ msgid "add_network"
752
+ msgstr "Ajouter un réseau"
753
+
754
+ #: New Network
755
+ msgid "new_network"
756
+ msgstr "Nouveau réseau"
757
+
758
+ #: No Network
759
+ msgid "no_network"
760
+ msgstr "Aucun réseau"
761
+
762
+ #: Configure network
763
+ msgid "state_configure"
764
+ msgstr "Configurer le réseau"
765
+
766
+ #: Not connected.
767
+ msgid "state_disconnected"
768
+ msgstr "Déconnecté."
769
+
770
+ #: Join new #channel
771
+ msgid "state_join"
772
+ msgstr "Rejoindre #salon"
773
+
774
+ #: Filter Channels
775
+ msgid "filter_channels"
776
+ msgstr "Filtrer les salons"
777
+
778
+ #: Find More Channels
779
+ msgid "find_more_channels"
780
+ msgstr "Trouver plus de salons"
781
+
782
+ #: Really leave the channel?
783
+ msgid "prompt_leave_channel"
784
+ msgstr "Quitter le salon ?"
785
+
786
+ #: Really close all messages?
787
+ msgid "prompt_close_queries"
788
+ msgstr "Voulez-vous vraiment fermer tous les messages ?"
789
+
790
+ #: Really close this chat?
791
+ msgid "prompt_close_query"
792
+ msgstr "Voulez-vous vraiment fermer ce tchat ?"
793
+
794
+ #: Change nick
795
+ msgid "change_nick"
796
+ msgstr "Changer de pseudo"
797
+
798
+ #: Enter new nickname...
799
+ msgid "enter_new_nick"
800
+ msgstr "Entrer votre nouveau pseudo..."
801
+
802
+ #: This is you!
803
+ msgid "user_you"
804
+ msgstr "C'est vous !"
805
+
806
+ #: Account name: {{user}}
807
+ msgid "user_account"
808
+ msgstr "Nom du compte : {{user}}"
809
+
810
+ #: Real name: {{realname}}
811
+ msgid "user_realname"
812
+ msgstr "Nom : {{realname}}"
813
+
814
+ #: Is a bot
815
+ msgid "user_bot"
816
+ msgstr "Est un robot"
817
+
818
+ #: Is available for help
819
+ msgid "user_help"
820
+ msgstr "Est disponible pour aider"
821
+
822
+ #: Is an operator
823
+ msgid "user_op"
824
+ msgstr "Est un opérateur (IRCop)"
825
+
826
+ #: Connected to {{server}} {{info}}
827
+ msgid "user_server"
828
+ msgstr "Connecté au serveur {{server}} {{info}}"
829
+
830
+ #: Securely connected via SSL/TLS
831
+ msgid "user_secure"
832
+ msgstr "Connexion sécurisée via SSL/TLS"
833
+
834
+ #: In channels {{channels}}
835
+ msgid "user_channels"
836
+ msgstr "Également sur les salons {{channels}}"
837
+
838
+ #: Access level
839
+ msgid "user_access"
840
+ msgstr "Niveau d'accès"
841
+
842
+ #: Normal
843
+ msgid "user_normal"
844
+ msgstr "Normal"
845
+
846
+ #: Kick from the channel
847
+ msgid "user_kick"
848
+ msgstr "Éjecter du salon"
849
+
850
+ #: Ban from the channel
851
+ msgid "user_ban"
852
+ msgstr "Bannir du salon"
853
+
854
+ #: Ban and kick from the channel
855
+ msgid "user_kickban"
856
+ msgstr "Bannir et éjecter du salon"
857
+
858
+ #: Select a Channel
859
+ msgid "select_channel"
860
+ msgstr "Sélectionner un Salon"
861
+
862
+ #: Invite User
863
+ msgid "invite_user"
864
+ msgstr "Inviter un Utilisateur"
865
+
866
+ #: Please specify a channel to join. eg /join #example
867
+ msgid "error_no_channel_join"
868
+ msgstr "Merci de spécifier un salon à joindre. ex. /join #exemple"
869
+
870
+ #: The nickname '{{nick}}' is already in use!
871
+ msgid "error_nick_in_use"
872
+ msgstr "Le pseudo {{nick}} est déjà utilisé !"
873
+
874
+ #: The nickname '{{nick}}' is invalid!
875
+ msgid "error_nick_invalid"
876
+ msgstr "Le pseudo '{{nick}}' est invalide !"
877
+
878
+ #: You must enter a new nickname
879
+ msgid "error_empty_nick"
880
+ msgstr "Vous devez entrer un nouveau pseudo"
881
+
882
+ #: Nickname must not start with a number
883
+ msgid "error_no_number"
884
+ msgstr "Le pseudo ne doit pas commencer par un chiffre"
885
+
886
+ #: Unexpected error occurred
887
+ msgid "error_unexpected"
888
+ msgstr "Une erreur inattendue est survenue"
889
+
890
+ #: {{nick}} gives ops to {{target}}
891
+ msgid "modes_give_ops"
892
+ msgstr "{{nick}} donne le statut d'ops à {{target}}"
893
+
894
+ #: {{nick}} takes ops from {{target}}
895
+ msgid "modes_take_ops"
896
+ msgstr "{{nick}} retire le statut d'opérateur à {{target}}"
897
+
898
+ #: {{nick}} gives half-ops to {{target}}
899
+ msgid "modes_give_halfops"
900
+ msgstr "{{nick}} donne le statut de semi-opérateur à {{target}}"
901
+
902
+ #: {{nick}} takes half-ops from {{target}}
903
+ msgid "modes_take_halfops"
904
+ msgstr "{{nick}} retire le statut de semi-opérateur à {{target}}"
905
+
906
+ #: {{nick}} gives voice to {{target}}
907
+ msgid "modes_give_voice"
908
+ msgstr "{{nick}} donne le statut voice à {{target}}"
909
+
910
+ #: {{nick}} takes voice from {{target}}
911
+ msgid "modes_take_voice"
912
+ msgstr "{{nick}} retire le statut voice à {{target}}"
913
+
914
+ #: {{nick}} gives admin to {{target}}
915
+ msgid "modes_give_admin"
916
+ msgstr "{{nick}} donne le statut d'administrateur à {{target}}"
917
+
918
+ #: {{nick}} takes admin from {{target}}
919
+ msgid "modes_take_admin"
920
+ msgstr "{{nick}} retire le statut d'administrateur à {{target}}"
921
+
922
+ #: {{nick}} gives owner to {{target}}
923
+ msgid "modes_give_owner"
924
+ msgstr "{{nick}} donne le statut de propriétaire à {{target}}"
925
+
926
+ #: {{nick}} takes owner from {{target}}
927
+ msgid "modes_take_owner"
928
+ msgstr "{{nick}} retire le statut de propriétaire à {{target}}"
929
+
930
+ #: {{nick}} has banned {{target}}
931
+ msgid "modes_gives_ban"
932
+ msgstr "{{nick}} a banni {{target}}"
933
+
934
+ #: {{nick}} has unbanned {{target}}
935
+ msgid "modes_takes_ban"
936
+ msgstr "{{nick}} a débanni {{target}}"
937
+
938
+ #: {{nick}} sets {{mode}} on {{target}}
939
+ msgid "modes_other"
940
+ msgstr "{{nick}} défini {{mode}} à {{target}}"
941
+
942
+ #: Send a message
943
+ msgid "command_msg"
944
+ msgstr "Envoyer un message"
945
+
946
+ #: Do something physical
947
+ msgid "command_action"
948
+ msgstr "Faites quelque chose de physique"
949
+
950
+ #: Join a channel
951
+ msgid "command_join"
952
+ msgstr "Joindre un salon"
953
+
954
+ #: Leave a channel
955
+ msgid "command_part"
956
+ msgstr "Quitter un salon"
957
+
958
+ #: Leave, then re-join a channel
959
+ msgid "command_cycle"
960
+ msgstr "Quitter puis joindre à nouveau un salon"
961
+
962
+ #: Change your nickname
963
+ msgid "command_nick"
964
+ msgstr "Changer votre pseudo"
965
+
966
+ #: Start a private conversation with someone
967
+ msgid "command_query"
968
+ msgstr "Commencer un conversation privée avec quelqu'un"
969
+
970
+ #: Invite somebody into the channel
971
+ msgid "command_invite"
972
+ msgstr "Inviter quelqu'un sur le salon"
973
+
974
+ #: Set the topic for this channel
975
+ msgid "command_topic"
976
+ msgstr "Définir le thème pour ce salon"
977
+
978
+ #: Send a notice
979
+ msgid "command_notice"
980
+ msgstr "Envoyer une note"
981
+
982
+ #: Send a raw command to the IRC server
983
+ msgid "command_quote"
984
+ msgstr "Envoyer une commande brute au serveur IRC"
985
+
986
+ #: Kick somebody from the channel
987
+ msgid "command_kick"
988
+ msgstr "Éjecter quelqu'un du salon"
989
+
990
+ #: Clear all messages from this window
991
+ msgid "command_clear"
992
+ msgstr "Effacer tous les messages de cette fenêtre"
993
+
994
+ #: Send a CTCP command to somebody
995
+ msgid "command_ctcp"
996
+ msgstr "Envoyer une commande CTCP à quelqu'un"
997
+
998
+ #: Disconnect from the IRC server
999
+ msgid "command_quit"
1000
+ msgstr "Se déconnecter du serveur IRC"
1001
+
1002
+ #: Connect to a new IRC network
1003
+ msgid "command_server"
1004
+ msgstr "Se connecter à un nouveau réseau IRC"
1005
+
1006
+ #: Request information on somebody
1007
+ msgid "command_whois"
1008
+ msgstr "Demander des informations sur quelqu'un"
1009
+
1010
+ #: Request information on somebody that disconnected recently
1011
+ msgid "command_whowas"
1012
+ msgstr "Demander des informations sur quelqu'un qui s'est déconnecté récemment"
1013
+
1014
+ #: Set yourself as away
1015
+ msgid "command_away"
1016
+ msgstr "Vous définir comme absent"
1017
+
1018
+ #: Set yourself as active
1019
+ msgid "command_back"
1020
+ msgstr "Vous définir comme actif"
1021
+
1022
+ #: Change your connection encoding
1023
+ msgid "command_encoding"
1024
+ msgstr "Changer l'encodage de votre connexion"
1025
+
1026
+ #: Ignore messages from somebody
1027
+ msgid "command_ignore"
1028
+ msgstr "Ignorer les messages de quelqu'un"
1029
+
1030
+ #: Stop ignoring somebody
1031
+ msgid "command_unignore"
1032
+ msgstr "Ne plus ignorer quelqu'un"
1033
+
1034
+ #: Roll a Dice
1035
+ msgid "command_dice"
1036
+ msgstr "Lancer un dé"
1037
+
1038
+ #: Rolls a {{sides}} sided dice and gets {{number}}
1039
+ msgid "dice_roll"
1040
+ msgstr "Lancer un dé {{sides}} faces et obtenir {{number}}"
1041
+
1042
+ #: You were mentioned in {{channel}}
1043
+ msgid "notification_mentioned"
1044
+ msgstr "Vous avez été mentionné sur {{channel}}"
1045
+
1046
+ #: Your IRC client
1047
+ msgid "personal_client"
1048
+ msgstr "Votre client IRC."
1049
+
1050
+ #: Add your networks. Join your channels.
1051
+ msgid "personal_addjoin"
1052
+ msgstr "Ajoutez vos réseaux. Rejoignez vos salons."
1053
+
1054
+ #: They will be here when you come back.
1055
+ msgid "personal_return"
1056
+ msgstr "Ils seront ici à votre retour."
1057
+
1058
+ #: Add a Network
1059
+ msgid "personal_add"
1060
+ msgstr "Ajouter un réseau"
1061
+
1062
+ #: You are trying to connect to {{network}}
1063
+ msgid "personal_connect_to"
1064
+ msgstr "Vous essayez de vous connecter à {{network}}"
1065
+
1066
+ #: Network has been added to your existing Kiwi window.
1067
+ msgid "personal_added_to_existing"
1068
+ msgstr "Le réseau a été ajouter à votre fenêtre Kiwi existante."
1069
+
1070
+ #: Add network to existing Kiwi window
1071
+ msgid "personal_add_existing_tab"
1072
+ msgstr "Ajouter un réseau à votre fenêtre Kiwi existante."
1073
+
1074
+ #: Temporarily connect to this network
1075
+ msgid "personal_connect_temporary"
1076
+ msgstr "Se connecter temporairement à ce réseau"
1077
+
1078
+ #: Saved networks
1079
+ msgid "personal_saved"
1080
+ msgstr "Réseaux enregistrés"
1081
+
1082
+ #: Kiwi IRC (next gen) - Rizon preview
1083
+ msgid "rizon_title"
1084
+ msgstr "Kiwi IRC (nouvelle génération) - Preview Rizon"
1085
+
1086
+ #: Direct websockets. No Kiwi server or webirc involved.
1087
+ msgid "rizon_websockets"
1088
+ msgstr "Websockets directs. Pas de serveur Kiwi ou de webirc."
1089
+
1090
+ #: (Thanks to Adam @Rizon for the development websocket server support!)
1091
+ msgid "rizon_thanks"
1092
+ msgstr "(Merci à Adam @ Rizon pour le développement du support des websocket serveur)"
1093
+
1094
+ #: Give the developer version of Kiwi IRC a try!
1095
+ msgid "rizon_dev"
1096
+ msgstr "Essayer la version de développement de Kiwi IRC !"
1097
+
1098
+ #: Disconnected
1099
+ msgid "disconnected"
1100
+ msgstr "Déconnecté"
1101
+
1102
+ #: Connected to {{network}}!
1103
+ msgid "connected_to"
1104
+ msgstr "Connecté à {{network}} !"
1105
+
1106
+ #: {{nick}} has joined
1107
+ msgid "has_joined"
1108
+ msgstr "{{nick}} est entré"
1109
+
1110
+ #: {{nick}} kicked you from {{channel}}
1111
+ msgid "kicked_you_from"
1112
+ msgstr "{{nick}} vous a éjecté de {{channel}}"
1113
+
1114
+ #: {{nick}} was kicked from {{channel}} by {{chanop}}
1115
+ msgid "was_kicked_from"
1116
+ msgstr "{{nick}} a été éjecté de {{channel}} par {{chanop}}"
1117
+
1118
+ #: {{nick}} has left
1119
+ msgid "has_left"
1120
+ msgstr "{{nick}} est parti"
1121
+
1122
+ #: {{nick}} invited you to join {{channel}}
1123
+ msgid "invited_you"
1124
+ msgstr "{{nick}} vous a invité à joindre {{channel}}"
1125
+
1126
+ #: {{nick}} invited {{invited}} to join {{channel}}
1127
+ msgid "invited_other"
1128
+ msgstr "{{nick}} a invité {{invited}} à joindre {{channel}}"
1129
+
1130
+ #: You invited {{invited}} to join {{channel}}
1131
+ msgid "invited_inviter"
1132
+ msgstr "Vous avez invité {{invited}} à joindre {{channel}}"
1133
+
1134
+ #: Nickname {{nick}} is already in use. Trying {{newnick}}...
1135
+ msgid "nick_in_use_retrying"
1136
+ msgstr "Le pseudo {{nick}} est déjà utilisé. Essai avec {{newnick}}..."
1137
+
1138
+ #: {{nick}} is now known as {{newnick}}
1139
+ msgid "now_known_as"
1140
+ msgstr "{{nick}} est maintenant connu en tant que {{newnick}}"
1141
+
1142
+ #: {{nick}} changed the topic to: {{topic}}
1143
+ msgid "changed_topic_to"
1144
+ msgstr "{{nick}} a changé le thème : {{topic}}"
1145
+