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=1; plural=0;\n"
8
+ "X-Crowdin-Project: kiwiirc\n"
9
+ "X-Crowdin-Project-ID: 275818\n"
10
+ "X-Crowdin-Language: id\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: Indonesian\n"
15
+ "Language: id_ID\n"
16
+ "PO-Revision-Date: 2023-06-14 17:21\n"
17
+
18
+ #: Start
19
+ msgid "start_button"
20
+ msgstr "Mulai"
21
+
22
+ #: Welcome to Kiwi IRC!
23
+ msgid "start_greeting"
24
+ msgstr "Selamat datang di Kiwi IRC!"
25
+
26
+ #: Close
27
+ msgid "close"
28
+ msgstr "Tutup"
29
+
30
+ #: Connect
31
+ msgid "connect"
32
+ msgstr "Sambung"
33
+
34
+ #: Connecting...
35
+ msgid "connecting"
36
+ msgstr "Menyambungkan..."
37
+
38
+ #: Connected
39
+ msgid "connected"
40
+ msgstr "Tersambung"
41
+
42
+ #: Settings
43
+ msgid "settings"
44
+ msgstr "Pengaturan"
45
+
46
+ #: Kiwi Settings
47
+ msgid "kiwi_settings"
48
+ msgstr "Kiwi Settings"
49
+
50
+ #: Channels
51
+ msgid "channels"
52
+ msgstr "Kanal"
53
+
54
+ #: Access
55
+ msgid "access"
56
+ msgstr "Access"
57
+
58
+ #: Banned Users
59
+ msgid "banned"
60
+ msgstr "Pemain yang Dilarang"
61
+
62
+ #: Invited Users
63
+ msgid "invited"
64
+ msgstr "Invited Users"
65
+
66
+ #: Notifications
67
+ msgid "notifications"
68
+ msgstr "Notifikasi"
69
+
70
+ #: Username
71
+ msgid "username"
72
+ msgstr "Nama pengguna"
73
+
74
+ #: Password
75
+ msgid "password"
76
+ msgstr "Kata sandi"
77
+
78
+ #: Server Password
79
+ msgid "server_password"
80
+ msgstr "Server Password"
81
+
82
+ #: I have a password
83
+ msgid "password_have"
84
+ msgstr "Saya punya kata sandi"
85
+
86
+ #: Server
87
+ msgid "server"
88
+ msgstr "Server"
89
+
90
+ #: Nick
91
+ msgid "nick"
92
+ msgstr "Nama panggilan"
93
+
94
+ #: Channel
95
+ msgid "channel"
96
+ msgstr "Kanal"
97
+
98
+ #: Messages
99
+ msgid "messages"
100
+ msgstr "Messages"
101
+
102
+ #: Network
103
+ msgid "network"
104
+ msgstr "Jejaring"
105
+
106
+ #: ZNC
107
+ msgid "znc"
108
+ msgstr "ZNZ"
109
+
110
+ #: Logging in...
111
+ msgid "logging_in"
112
+ msgstr "Masuk..."
113
+
114
+ #: Invalid login
115
+ msgid "invalid_login"
116
+ msgstr "Masuk tidak valid"
117
+
118
+ #: Login failed. Please try again or contact support
119
+ msgid "login_failed"
120
+ msgstr "Login failed. Please try again or contact support"
121
+
122
+ #: You are now logged in as '{{account}}'
123
+ msgid "logged_in"
124
+ msgstr "You are now logged in as '{{account}}'"
125
+
126
+ #: You have been logged out
127
+ msgid "logged_out"
128
+ msgstr "You have been logged out"
129
+
130
+ #: Search...
131
+ msgid "do_search"
132
+ msgstr "Cari..."
133
+
134
+ #: OK
135
+ msgid "ok"
136
+ msgstr "Oke"
137
+
138
+ #: Cancel
139
+ msgid "cancel"
140
+ msgstr "Batal"
141
+
142
+ #: Yes
143
+ msgid "yes"
144
+ msgstr "Yes"
145
+
146
+ #: No
147
+ msgid "no"
148
+ msgstr "No"
149
+
150
+ #: Not found.
151
+ msgid "not_found"
152
+ msgstr "Not found."
153
+
154
+ #: Warning!
155
+ msgid "warning"
156
+ msgstr "Warning!"
157
+
158
+ #: This will close all Kiwi IRC conversations. Are you sure you want to close this window?
159
+ msgid "window_unload"
160
+ msgstr "Ini akan menutup semua percakapan KiwiIRC. Yakin ingin menutup jendela ini?"
161
+
162
+ #: Real name
163
+ msgid "whois_realname"
164
+ msgstr "Nama asli"
165
+
166
+ #: Status
167
+ msgid "whois_status"
168
+ msgstr "Status"
169
+
170
+ #: Is available
171
+ msgid "whois_status_available"
172
+ msgstr "Tersedia"
173
+
174
+ #: Send a message
175
+ msgid "send_a_message"
176
+ msgstr "Kirim pesan"
177
+
178
+ #: More information
179
+ msgid "more_information"
180
+ msgstr "Informasi lebih"
181
+
182
+ #: Ignore user
183
+ msgid "ignore_user"
184
+ msgstr "Abaikan pengguna"
185
+
186
+ #: Channel
187
+ msgid "connection_channel"
188
+ msgstr "Kanal"
189
+
190
+ #: Away
191
+ msgid "away"
192
+ msgstr "Away"
193
+
194
+ #: {{count}} week
195
+ msgid "week"
196
+ msgstr "{{count}} week"
197
+
198
+ #: {{count}} weeks
199
+ msgid "week_plural"
200
+ msgstr "{{count}} weeks"
201
+
202
+ #: {{count}} day
203
+ msgid "day"
204
+ msgstr "{{count}} day"
205
+
206
+ #: {{count}} days
207
+ msgid "day_plural"
208
+ msgstr "{{count}} days"
209
+
210
+ #: {{count}} hour
211
+ msgid "hour"
212
+ msgstr "{{count}} hour"
213
+
214
+ #: {{count}} hours
215
+ msgid "hour_plural"
216
+ msgstr "{{count}} hours"
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}} second"
229
+
230
+ #: {{count}} seconds
231
+ msgid "second_plural"
232
+ msgstr "{{count}} seconds"
233
+
234
+ #: General
235
+ msgid "settings_general"
236
+ msgstr "Umum"
237
+
238
+ #: Language
239
+ msgid "settings_language"
240
+ msgstr "Language"
241
+
242
+ #: Theme
243
+ msgid "settings_theme"
244
+ msgstr "Tema"
245
+
246
+ #: Refresh Theme
247
+ msgid "refresh_theme"
248
+ msgstr "Refresh Theme"
249
+
250
+ #: Theme URL
251
+ msgid "settings_themeurl"
252
+ msgstr "URL Tema"
253
+
254
+ #: Message Layout
255
+ msgid "settings_messagelayout"
256
+ msgstr "Message Layout"
257
+
258
+ #: Use monospace
259
+ msgid "settings_use_monospace"
260
+ msgstr "Gunakan monospace"
261
+
262
+ #: Use Kiwi as my default IRC client
263
+ msgid "settings_default_handler"
264
+ msgstr "Use Kiwi as my default IRC client"
265
+
266
+ #: Traditional IRC layout
267
+ msgid "settings_layout_compact"
268
+ msgstr "Tata letak IRC lama"
269
+
270
+ #: Show autocomplete list
271
+ msgid "settings_show_autocomplete"
272
+ msgstr "Tampilkan daftar isi otomatis"
273
+
274
+ #: Chat Messages
275
+ msgid "settings_messages_title"
276
+ msgstr "Pesan Obrolan"
277
+
278
+ #: Show timestamps
279
+ msgid "settings_timestamps"
280
+ msgstr "Gunakan stempel waktu"
281
+
282
+ #: Use 24-hour timestamps
283
+ msgid "settings_24hour_timestamps"
284
+ msgstr "Gunakan stempel waktu 24-jam"
285
+
286
+ #: Show emoticons
287
+ msgid "settings_emoticons"
288
+ msgstr "Tampilkan emosikon"
289
+
290
+ #: Block new Private messages
291
+ msgid "settings_block_private"
292
+ msgstr "Blokir pesan pribadi baru"
293
+
294
+ #: Messages in scrollback
295
+ msgid "settings_scrollback"
296
+ msgstr "Pesan dalam gulir kembali"
297
+
298
+ #: Extra formatting
299
+ msgid "settings_formatting"
300
+ msgstr "Format ekstra"
301
+
302
+ #: Colour nicknames in messages
303
+ msgid "settings_nick_colouring"
304
+ msgstr "Warnai nama panggilan dalam pesan"
305
+
306
+ #: Share when I'm typing a message
307
+ msgid "settings_share_typing"
308
+ msgstr "Share when I'm typing a message"
309
+
310
+ #: Show inline image previews
311
+ msgid "settings_show_inline_previews"
312
+ msgstr "Show inline image previews"
313
+
314
+ #: Include join/part messages as activity
315
+ msgid "settings_show_joinpart"
316
+ msgstr "Sertakan pesan masuk/keluar sebagai aktivitas"
317
+
318
+ #: Mute sound notifications
319
+ msgid "settings_mute_sound"
320
+ msgstr "Senyapkan suara notifikasi"
321
+
322
+ #: Highlight on words (space seperated)
323
+ msgid "settings_highlight"
324
+ msgstr "Sorot kata-kata (dipisahkan spasi)"
325
+
326
+ #: Aliases
327
+ msgid "settings_aliases"
328
+ msgstr "Alias"
329
+
330
+ #: What are Aliases
331
+ msgid "what_are_aliases"
332
+ msgstr "What are aliases?"
333
+
334
+ #: Send Message
335
+ msgid "send_message"
336
+ msgstr "Kirim Pesan"
337
+
338
+ #: Enter Channel Key
339
+ msgid "bufferkey_input"
340
+ msgstr "Enter Channel Key"
341
+
342
+ #: Rejoin {{channel}}
343
+ msgid "bufferkey_rejoin"
344
+ msgstr "Rejoin {{channel}}"
345
+
346
+ #: Notify me when
347
+ msgid "settings_notify"
348
+ msgstr "Beritahu saya ketika"
349
+
350
+ #: All messages
351
+ msgid "settings_notify_all"
352
+ msgstr "Semua pesan"
353
+
354
+ #: I am mentioned
355
+ msgid "settings_notify_mentioned"
356
+ msgstr "Saya disebutkan"
357
+
358
+ #: Never
359
+ msgid "settings_notify_never"
360
+ msgstr "Tidak pernah"
361
+
362
+ #: Mute sounds
363
+ msgid "settings_notify_mute"
364
+ msgstr "Suara senyap"
365
+
366
+ #: Hide unread message count
367
+ msgid "settings_show_message_counts"
368
+ msgstr "Hide unread message count"
369
+
370
+ #: Operator tools
371
+ msgid "operator_tools"
372
+ msgstr "Alat Operator"
373
+
374
+ #: Default ban mask
375
+ msgid "settings_default_ban_mask"
376
+ msgstr "Dilarang topeng secara bawaan"
377
+
378
+ #: Default kick reason
379
+ msgid "settings_default_kick_reason"
380
+ msgstr "Alasan menendang secara standar"
381
+
382
+ #: Advanced Settings
383
+ msgid "settings_advanced_title"
384
+ msgstr "Advanced Settings"
385
+
386
+ #: Monsters be here, only click this button if you know what you are doing
387
+ msgid "settings_advanced_warning"
388
+ msgstr "Monsters be here, only click this button if you know what you are doing"
389
+
390
+ #: Enable Advanced Settings
391
+ msgid "settings_advanced_button"
392
+ msgstr "Enable Advanced Settings"
393
+
394
+ #: Danger Zone: Changing some of these settings may break things!
395
+ msgid "settings_advanced_header"
396
+ msgstr "Danger Zone: Changing some of these settings may break things!"
397
+
398
+ #: Reset
399
+ msgid "settings_advanced_reset"
400
+ msgstr "Reset"
401
+
402
+ #: Filter
403
+ msgid "settings_advanced_filter"
404
+ msgstr "Filter"
405
+
406
+ #: Refresh banlist
407
+ msgid "bans_refresh"
408
+ msgstr "Segarkan daftar dilarang"
409
+
410
+ #: Banned user
411
+ msgid "bans_user"
412
+ msgstr "Pengguna dilarang"
413
+
414
+ #: Banned by
415
+ msgid "bans_by"
416
+ msgstr "Dilarang oleh"
417
+
418
+ #: Refreshing banlist...
419
+ msgid "bans_refreshing"
420
+ msgstr "Segarkan daftar dilarang..."
421
+
422
+ #: Nobody is banned!
423
+ msgid "bans_nobody"
424
+ msgstr "Tidak ada yang dilarang!"
425
+
426
+ #: Refresh invite list
427
+ msgid "invites_refresh"
428
+ msgstr "Refresh invite list"
429
+
430
+ #: Invited user
431
+ msgid "invites_user"
432
+ msgstr "Invited user"
433
+
434
+ #: Invited by
435
+ msgid "invites_by"
436
+ msgstr "Invited by"
437
+
438
+ #: Refreshing invite list...
439
+ msgid "invites_refreshing"
440
+ msgstr "Refreshing invite list..."
441
+
442
+ #: Nobody is invited!
443
+ msgid "invites_nobody"
444
+ msgstr "Nobody is invited!"
445
+
446
+ #: This is a public channel.
447
+ msgid "invite_public_channel"
448
+ msgstr "This is a public channel."
449
+
450
+ #: Only invited users can join.
451
+ msgid "invite_private_channel"
452
+ msgstr "Only invited users can join."
453
+
454
+ #: Only allow invited users
455
+ msgid "invite_set_private"
456
+ msgstr "Only allow invited users"
457
+
458
+ #: Allow anybody to join
459
+ msgid "invite_set_public"
460
+ msgstr "Allow anybody to join"
461
+
462
+ #: Only registered users can join
463
+ msgid "invite_registered_only"
464
+ msgstr "Only registered users can join"
465
+
466
+ #: Add invite
467
+ msgid "invite_add_invite"
468
+ msgstr "Add invite"
469
+
470
+ #: (Any registered user)
471
+ msgid "invite_any_registered"
472
+ msgstr "(Any registered user)"
473
+
474
+ #: Topic
475
+ msgid "channel_topic"
476
+ msgstr "Topik"
477
+
478
+ #: Moderated chat
479
+ msgid "channel_moderated"
480
+ msgstr "Obrolan moderator"
481
+
482
+ #: Invite only
483
+ msgid "channel_invite"
484
+ msgstr "Hanya undangan"
485
+
486
+ #: Hide this channel from lists
487
+ msgid "channel_secret"
488
+ msgstr "Hide this channel from lists"
489
+
490
+ #: Only moderators can change the topic
491
+ msgid "channel_moderated_topic"
492
+ msgstr "Hanya moderator yang dapat mengganti topik"
493
+
494
+ #: Block messages from outside this channel
495
+ msgid "channel_external"
496
+ msgstr "Blokir pesan yang berasal dari luar saluran"
497
+
498
+ #: Click the refresh button to update the channel list
499
+ msgid "channel_list_fetch"
500
+ msgstr "Click the refresh button to update the channel list"
501
+
502
+ #: No channels found, try again later
503
+ msgid "channel_list_nonefound"
504
+ msgstr "No channels found, try again later"
505
+
506
+ #: Welcome to Kiwi IRC! Select a channel on the left.
507
+ msgid "container_welcome"
508
+ msgstr "Selamat datang di Kiwi IRC! Silakan memilih saluran pada bagian kiri."
509
+
510
+ #: Show statebrowser
511
+ msgid "container_statebrowser"
512
+ msgstr "Tampilkan status peramban"
513
+
514
+ #: Hide Topic
515
+ msgid "hide_topic"
516
+ msgstr "Hide Topic"
517
+
518
+ #: Display Topic
519
+ msgid "display_topic"
520
+ msgstr "Display Topic"
521
+
522
+ #: Channel Settings
523
+ msgid "channel_settings"
524
+ msgstr "Channel Settings"
525
+
526
+ #: Join Channel
527
+ msgid "container_join"
528
+ msgstr "Bergabung ke Saluran"
529
+
530
+ #: Not Connected
531
+ msgid "container_notconnected"
532
+ msgstr "Tidak Tersambung"
533
+
534
+ #: Private conversation with {{user}}
535
+ msgid "container_privmsg"
536
+ msgstr "Percakapan pribadi dengan {{user}}"
537
+
538
+ #: Send a message...
539
+ msgid "input_placeholder"
540
+ msgstr "Kirimkan pesan..."
541
+
542
+ #: Loading {{url}}...
543
+ msgid "media_loading"
544
+ msgstr "Memuat {{url}}..."
545
+
546
+ #: Load previous messages
547
+ msgid "messages_load"
548
+ msgstr "Muat pesan sebelumnya"
549
+
550
+ #: Loading previous messages...
551
+ msgid "messages_loading"
552
+ msgstr "Loading previous messages..."
553
+
554
+ #: Unread Messages
555
+ msgid "unread_messages"
556
+ msgstr "Pesan Belum Terbaca"
557
+
558
+ #: Reply in private
559
+ msgid "reply_in_private"
560
+ msgstr "Reply in private"
561
+
562
+ #: Server details
563
+ msgid "settings_server_details"
564
+ msgstr "Detail server"
565
+
566
+ #: Port
567
+ msgid "settings_port"
568
+ msgstr "Porta"
569
+
570
+ #: Other networks on this ZNC account will be listed in the network list
571
+ msgid "settings_znc_other"
572
+ msgstr "Jaringan lain pada akun ZNC ini akan tercantum dalam daftar jaringan"
573
+
574
+ #: Your details
575
+ msgid "settings_your_details"
576
+ msgstr "Detail Anda"
577
+
578
+ #: Nickname
579
+ msgid "settings_nickname"
580
+ msgstr "Nama panggilan"
581
+
582
+ #: Advanced
583
+ msgid "settings_advanced"
584
+ msgstr "Lanjutan"
585
+
586
+ #: Encoding
587
+ msgid "settings_encoding"
588
+ msgstr "Pengodean"
589
+
590
+ #: Show Raw
591
+ msgid "settings_show_raw"
592
+ msgstr "Tampilkan Pesan Mentah"
593
+
594
+ #: Direct websocket
595
+ msgid "settings_use_websocket"
596
+ msgstr "Direct websocket"
597
+
598
+ #: Run commands when connected
599
+ msgid "settings_autorun"
600
+ msgstr "Jalankan perintah saat tersambung"
601
+
602
+ #: Danger Zone
603
+ msgid "settings_danger"
604
+ msgstr "Zona Bahaya"
605
+
606
+ #: Remove network
607
+ msgid "settings_remove"
608
+ msgstr "Singkirkan jaringan"
609
+
610
+ #: {{count}} person here
611
+ msgid "person"
612
+ msgstr "{{count}} orang di sini"
613
+
614
+ #: {{count}} people here
615
+ msgid "person_plural"
616
+ msgstr "{{count}} orang di sini"
617
+
618
+ #: Filter users in channel
619
+ msgid "filter_users"
620
+ msgstr "Filter users in channel"
621
+
622
+ #: Reconnect to join {{channel}}
623
+ msgid "reconnect_channel"
624
+ msgstr "Sambungkan lagi untuk bergabung ke {{saluran}}"
625
+
626
+ #: Reconnect to {{network}} to start talking
627
+ msgid "reconnect_network"
628
+ msgstr "Sambungkan lagi ke {{saluran}} untuk memulai pembicaraan"
629
+
630
+ #: Reconnect to continue talking with {{user}}
631
+ msgid "reconnect_query"
632
+ msgstr "Sambungkan lagi untuk melanjutkan pembicaraan dengan {{user}}"
633
+
634
+ #: You are not currently connected!
635
+ msgid "not_connected"
636
+ msgstr "You are not currently connected!"
637
+
638
+ #: Connection settings
639
+ msgid "reconnect_settings"
640
+ msgstr "Pengaturan koneksi"
641
+
642
+ #: We couldn't connect to that server :(
643
+ msgid "network_noconnect"
644
+ msgstr "We couldn't connect to that server :("
645
+
646
+ #: Connect To Network
647
+ msgid "network_connect"
648
+ msgstr "Connect To Network"
649
+
650
+ #: Network Name
651
+ msgid "network_name"
652
+ msgstr "Network Name"
653
+
654
+ #: Close options
655
+ msgid "side_close"
656
+ msgstr "Tutup pilihan"
657
+
658
+ #: Channel options
659
+ msgid "side_options"
660
+ msgstr "Pilihan saluran"
661
+
662
+ #: Your settings
663
+ msgid "side_settings"
664
+ msgstr "Pengaturan Anda"
665
+
666
+ #: Show when people join
667
+ msgid "side_joins"
668
+ msgstr "Tampilkan kapan pengguna bergabung"
669
+
670
+ #: Show when channel topic changes
671
+ msgid "side_topics"
672
+ msgstr "Tampilkan kapan topik saluran diganti"
673
+
674
+ #: Show when users change their nicks
675
+ msgid "side_nick_changes"
676
+ msgstr "Tampilkan kapan pengguna mengganti nama panggilannya"
677
+
678
+ #: Show when users change channel modes
679
+ msgid "side_mode_changes"
680
+ msgstr "Tampilkan kapan pengguna mengubah mode saluran"
681
+
682
+ #: Extra message formatting
683
+ msgid "side_formatting"
684
+ msgstr "Format pesan ekstra"
685
+
686
+ #: Nick colours in the list"
687
+ msgid "side_colours"
688
+ msgstr "Nama panggilan berwarna dalam daftar"
689
+
690
+ #: No buffer set
691
+ msgid "side_buffer"
692
+ msgstr "Tanpa diatur penyangga"
693
+
694
+ #: There is no topic for this channel
695
+ msgid "no_topic_set"
696
+ msgstr "There is no topic for this channel"
697
+
698
+ #: About
699
+ msgid "about"
700
+ msgstr "About"
701
+
702
+ #: Created at {{when}}
703
+ msgid "created_at"
704
+ msgstr "Created at {{when}}"
705
+
706
+ #: Highlights
707
+ msgid "highlights"
708
+ msgstr "Highlights"
709
+
710
+ #: Nobody has mentioned you yet...
711
+ msgid "nobody_mentioned_you"
712
+ msgstr "Nobody has mentioned you yet..."
713
+
714
+ #: There was an error starting Kiwi IRC :(
715
+ msgid "error_starting"
716
+ msgstr "Terjadi eror saat memulai Kiwi IRC :("
717
+
718
+ #: Make sure you have installed Kiwi IRC correctly and the configurartion can be loaded
719
+ msgid "error_installed"
720
+ msgstr "Pastikan Anda telah menginstal Kiwi IRC dengan benar dan pengaturannya bisa dimuat"
721
+
722
+ #: Leave {{name}}
723
+ msgid "state_leave"
724
+ msgstr "{{name}} meninggalkan"
725
+
726
+ #: Your account
727
+ msgid "state_account"
728
+ msgstr "Akun Anda"
729
+
730
+ #: Your settings and networks will be remembered on this computer.
731
+ msgid "state_remembered"
732
+ msgstr "Pengaturan dan jaringan Anda akan tersimpan dalam komputer ini."
733
+
734
+ #: Forget me
735
+ msgid "state_forget"
736
+ msgstr "Lupakan saya"
737
+
738
+ #: No networks here yet.
739
+ msgid "state_network"
740
+ msgstr "Tidak ada jaringan di sini"
741
+
742
+ #: Add one?
743
+ msgid "state_add"
744
+ msgstr "Tambahkan?"
745
+
746
+ #: Available networks
747
+ msgid "state_available"
748
+ msgstr "Jaringan yang tersedia"
749
+
750
+ #: Add Network
751
+ msgid "add_network"
752
+ msgstr "Add Network"
753
+
754
+ #: New Network
755
+ msgid "new_network"
756
+ msgstr "New Network"
757
+
758
+ #: No Network
759
+ msgid "no_network"
760
+ msgstr "No Network"
761
+
762
+ #: Configure network
763
+ msgid "state_configure"
764
+ msgstr "Konfigurasi jaringan"
765
+
766
+ #: Not connected.
767
+ msgid "state_disconnected"
768
+ msgstr "Tidak tersambung"
769
+
770
+ #: Join new #channel
771
+ msgid "state_join"
772
+ msgstr "Bergabung ke #saluran baru"
773
+
774
+ #: Filter Channels
775
+ msgid "filter_channels"
776
+ msgstr "Filter channels"
777
+
778
+ #: Find More Channels
779
+ msgid "find_more_channels"
780
+ msgstr "Find More Channels"
781
+
782
+ #: Really leave the channel?
783
+ msgid "prompt_leave_channel"
784
+ msgstr "Really leave the channel?"
785
+
786
+ #: Really close all messages?
787
+ msgid "prompt_close_queries"
788
+ msgstr "Really close all messages?"
789
+
790
+ #: Really close this chat?
791
+ msgid "prompt_close_query"
792
+ msgstr "Really close this chat?"
793
+
794
+ #: Change nick
795
+ msgid "change_nick"
796
+ msgstr "Ubah nama panggilan"
797
+
798
+ #: Enter new nickname...
799
+ msgid "enter_new_nick"
800
+ msgstr "Enter new nickname..."
801
+
802
+ #: This is you!
803
+ msgid "user_you"
804
+ msgstr "This is you!"
805
+
806
+ #: Account name: {{user}}
807
+ msgid "user_account"
808
+ msgstr "Nama akun: {{user}}"
809
+
810
+ #: Real name: {{realname}}
811
+ msgid "user_realname"
812
+ msgstr "Nama asli: {{realname}}"
813
+
814
+ #: Is a bot
815
+ msgid "user_bot"
816
+ msgstr "Adalah robot"
817
+
818
+ #: Is available for help
819
+ msgid "user_help"
820
+ msgstr "Tersedia untuk bantuan"
821
+
822
+ #: Is an operator
823
+ msgid "user_op"
824
+ msgstr "Adalah operator"
825
+
826
+ #: Connected to {{server}} {{info}}
827
+ msgid "user_server"
828
+ msgstr "Tersambung ke server {{server}} {{info}}"
829
+
830
+ #: Securely connected via SSL/TLS
831
+ msgid "user_secure"
832
+ msgstr "Amankan sambungan via SSL/TLS"
833
+
834
+ #: In channels {{channels}}
835
+ msgid "user_channels"
836
+ msgstr "Juga dalam saluran {{saluran}}"
837
+
838
+ #: Access level
839
+ msgid "user_access"
840
+ msgstr "Level akses"
841
+
842
+ #: Normal
843
+ msgid "user_normal"
844
+ msgstr "Normal"
845
+
846
+ #: Kick from the channel
847
+ msgid "user_kick"
848
+ msgstr "Tendang dari saluran"
849
+
850
+ #: Ban from the channel
851
+ msgid "user_ban"
852
+ msgstr "Dilarang dari saluran"
853
+
854
+ #: Ban and kick from the channel
855
+ msgid "user_kickban"
856
+ msgstr "Larang dan tendang dari saluran"
857
+
858
+ #: Select a Channel
859
+ msgid "select_channel"
860
+ msgstr "Select a Channel"
861
+
862
+ #: Invite User
863
+ msgid "invite_user"
864
+ msgstr "Invite User"
865
+
866
+ #: Please specify a channel to join. eg /join #example
867
+ msgid "error_no_channel_join"
868
+ msgstr "Please specify a channel to join. eg /join #example"
869
+
870
+ #: The nickname '{{nick}}' is already in use!
871
+ msgid "error_nick_in_use"
872
+ msgstr "The nickname '{{nick}}' is already in use!"
873
+
874
+ #: The nickname '{{nick}}' is invalid!
875
+ msgid "error_nick_invalid"
876
+ msgstr "The nickname '{{nick}}' is invalid!"
877
+
878
+ #: You must enter a new nickname
879
+ msgid "error_empty_nick"
880
+ msgstr "You must enter a new nickname"
881
+
882
+ #: Nickname must not start with a number
883
+ msgid "error_no_number"
884
+ msgstr "Nickname must not start with a number"
885
+
886
+ #: Unexpected error occurred
887
+ msgid "error_unexpected"
888
+ msgstr "Unexpected error occurred"
889
+
890
+ #: {{nick}} gives ops to {{target}}
891
+ msgid "modes_give_ops"
892
+ msgstr "{{nick}} gives ops to {{target}}"
893
+
894
+ #: {{nick}} takes ops from {{target}}
895
+ msgid "modes_take_ops"
896
+ msgstr "{{nick}} takes ops from {{target}}"
897
+
898
+ #: {{nick}} gives half-ops to {{target}}
899
+ msgid "modes_give_halfops"
900
+ msgstr "{{nick}} gives half-ops to {{target}}"
901
+
902
+ #: {{nick}} takes half-ops from {{target}}
903
+ msgid "modes_take_halfops"
904
+ msgstr "{{nick}} takes half-ops from {{target}}"
905
+
906
+ #: {{nick}} gives voice to {{target}}
907
+ msgid "modes_give_voice"
908
+ msgstr "{{nick}} gives voice to {{target}}"
909
+
910
+ #: {{nick}} takes voice from {{target}}
911
+ msgid "modes_take_voice"
912
+ msgstr "{{nick}} takes voice from {{target}}"
913
+
914
+ #: {{nick}} gives admin to {{target}}
915
+ msgid "modes_give_admin"
916
+ msgstr "{{nick}} gives admin to {{target}}"
917
+
918
+ #: {{nick}} takes admin from {{target}}
919
+ msgid "modes_take_admin"
920
+ msgstr "{{nick}} takes admin from {{target}}"
921
+
922
+ #: {{nick}} gives owner to {{target}}
923
+ msgid "modes_give_owner"
924
+ msgstr "{{nick}} gives owner to {{target}}"
925
+
926
+ #: {{nick}} takes owner from {{target}}
927
+ msgid "modes_take_owner"
928
+ msgstr "{{nick}} takes owner from {{target}}"
929
+
930
+ #: {{nick}} has banned {{target}}
931
+ msgid "modes_gives_ban"
932
+ msgstr "{{nick}} has banned {{target}}"
933
+
934
+ #: {{nick}} has unbanned {{target}}
935
+ msgid "modes_takes_ban"
936
+ msgstr "{{nick}} has unbanned {{target}}"
937
+
938
+ #: {{nick}} sets {{mode}} on {{target}}
939
+ msgid "modes_other"
940
+ msgstr "{{nick}} sets {{mode}} on {{target}}"
941
+
942
+ #: Send a message
943
+ msgid "command_msg"
944
+ msgstr "Kirim pesan"
945
+
946
+ #: Do something physical
947
+ msgid "command_action"
948
+ msgstr "Do something physical"
949
+
950
+ #: Join a channel
951
+ msgid "command_join"
952
+ msgstr "Join a channel"
953
+
954
+ #: Leave a channel
955
+ msgid "command_part"
956
+ msgstr "Leave a channel"
957
+
958
+ #: Leave, then re-join a channel
959
+ msgid "command_cycle"
960
+ msgstr "Leave, then re-join a channel"
961
+
962
+ #: Change your nickname
963
+ msgid "command_nick"
964
+ msgstr "Change your nickname"
965
+
966
+ #: Start a private conversation with someone
967
+ msgid "command_query"
968
+ msgstr "Start a private conversation with someone"
969
+
970
+ #: Invite somebody into the channel
971
+ msgid "command_invite"
972
+ msgstr "Invite somebody into the channel"
973
+
974
+ #: Set the topic for this channel
975
+ msgid "command_topic"
976
+ msgstr "Set the topic for this channel"
977
+
978
+ #: Send a notice
979
+ msgid "command_notice"
980
+ msgstr "Send a notice"
981
+
982
+ #: Send a raw command to the IRC server
983
+ msgid "command_quote"
984
+ msgstr "Send a raw command to the IRC server"
985
+
986
+ #: Kick somebody from the channel
987
+ msgid "command_kick"
988
+ msgstr "Kick somebody from the channel"
989
+
990
+ #: Clear all messages from this window
991
+ msgid "command_clear"
992
+ msgstr "Clear all messages from this window"
993
+
994
+ #: Send a CTCP command to somebody
995
+ msgid "command_ctcp"
996
+ msgstr "Send a CTCP command to somebody"
997
+
998
+ #: Disconnect from the IRC server
999
+ msgid "command_quit"
1000
+ msgstr "Disconnect from the IRC server"
1001
+
1002
+ #: Connect to a new IRC network
1003
+ msgid "command_server"
1004
+ msgstr "Connect to a new IRC network"
1005
+
1006
+ #: Request information on somebody
1007
+ msgid "command_whois"
1008
+ msgstr "Request information on somebody"
1009
+
1010
+ #: Request information on somebody that disconnected recently
1011
+ msgid "command_whowas"
1012
+ msgstr "Request information on somebody that disconnected recently"
1013
+
1014
+ #: Set yourself as away
1015
+ msgid "command_away"
1016
+ msgstr "Set yourself as away"
1017
+
1018
+ #: Set yourself as active
1019
+ msgid "command_back"
1020
+ msgstr "Set yourself as active"
1021
+
1022
+ #: Change your connection encoding
1023
+ msgid "command_encoding"
1024
+ msgstr "Change your connection encoding"
1025
+
1026
+ #: Ignore messages from somebody
1027
+ msgid "command_ignore"
1028
+ msgstr "Ignore messages from somebody"
1029
+
1030
+ #: Stop ignoring somebody
1031
+ msgid "command_unignore"
1032
+ msgstr "Stop ignoring somebody"
1033
+
1034
+ #: Roll a Dice
1035
+ msgid "command_dice"
1036
+ msgstr "Roll a Dice"
1037
+
1038
+ #: Rolls a {{sides}} sided dice and gets {{number}}
1039
+ msgid "dice_roll"
1040
+ msgstr "Rolls a {{sides}} sided dice and gets {{number}}"
1041
+
1042
+ #: You were mentioned in {{channel}}
1043
+ msgid "notification_mentioned"
1044
+ msgstr "You were mentioned in {{channel}}"
1045
+
1046
+ #: Your IRC client
1047
+ msgid "personal_client"
1048
+ msgstr "Klien IRC Anda."
1049
+
1050
+ #: Add your networks. Join your channels.
1051
+ msgid "personal_addjoin"
1052
+ msgstr "Tambahkan jaringan Anda. Bergabung ke saluran Anda."
1053
+
1054
+ #: They will be here when you come back.
1055
+ msgid "personal_return"
1056
+ msgstr "Mereka akan di sini ketika Anda kembali."
1057
+
1058
+ #: Add a Network
1059
+ msgid "personal_add"
1060
+ msgstr "Tambahkan Jaringan"
1061
+
1062
+ #: You are trying to connect to {{network}}
1063
+ msgid "personal_connect_to"
1064
+ msgstr "You are trying to connect to {{network}}"
1065
+
1066
+ #: Network has been added to your existing Kiwi window.
1067
+ msgid "personal_added_to_existing"
1068
+ msgstr "Network has been added to your existing Kiwi window."
1069
+
1070
+ #: Add network to existing Kiwi window
1071
+ msgid "personal_add_existing_tab"
1072
+ msgstr "Add network to existing Kiwi window"
1073
+
1074
+ #: Temporarily connect to this network
1075
+ msgid "personal_connect_temporary"
1076
+ msgstr "Temporarily connect to this network"
1077
+
1078
+ #: Saved networks
1079
+ msgid "personal_saved"
1080
+ msgstr "Simpan jaringan"
1081
+
1082
+ #: Kiwi IRC (next gen) - Rizon preview
1083
+ msgid "rizon_title"
1084
+ msgstr "Kiwi IRC (generasi selanjutnya) - pratinjau Rizon "
1085
+
1086
+ #: Direct websockets. No Kiwi server or webirc involved.
1087
+ msgid "rizon_websockets"
1088
+ msgstr "Langsung websocket. Tanpa terlibat server Kiwi atau webirc."
1089
+
1090
+ #: (Thanks to Adam @Rizon for the development websocket server support!)
1091
+ msgid "rizon_thanks"
1092
+ msgstr "(Terima kasih kepada Adam @Rizon untuk pengembangan dukungan server websocket!)"
1093
+
1094
+ #: Give the developer version of Kiwi IRC a try!
1095
+ msgid "rizon_dev"
1096
+ msgstr "Coba Kiwi IRC versi pengembang!"
1097
+
1098
+ #: Disconnected
1099
+ msgid "disconnected"
1100
+ msgstr "Disconnected"
1101
+
1102
+ #: Connected to {{network}}!
1103
+ msgid "connected_to"
1104
+ msgstr "Connected to {{network}}!"
1105
+
1106
+ #: {{nick}} has joined
1107
+ msgid "has_joined"
1108
+ msgstr "{{nick}} has joined"
1109
+
1110
+ #: {{nick}} kicked you from {{channel}}
1111
+ msgid "kicked_you_from"
1112
+ msgstr "{{nick}} kicked you from {{channel}}"
1113
+
1114
+ #: {{nick}} was kicked from {{channel}} by {{chanop}}
1115
+ msgid "was_kicked_from"
1116
+ msgstr "{{nick}} was kicked from {{channel}} by {{chanop}}"
1117
+
1118
+ #: {{nick}} has left
1119
+ msgid "has_left"
1120
+ msgstr "{{nick}} has left"
1121
+
1122
+ #: {{nick}} invited you to join {{channel}}
1123
+ msgid "invited_you"
1124
+ msgstr "{{nick}} invited you to join {{channel}}"
1125
+
1126
+ #: {{nick}} invited {{invited}} to join {{channel}}
1127
+ msgid "invited_other"
1128
+ msgstr "{{nick}} invited {{invited}} to join {{channel}}"
1129
+
1130
+ #: You invited {{invited}} to join {{channel}}
1131
+ msgid "invited_inviter"
1132
+ msgstr "You invited {{invited}} to join {{channel}}"
1133
+
1134
+ #: Nickname {{nick}} is already in use. Trying {{newnick}}...
1135
+ msgid "nick_in_use_retrying"
1136
+ msgstr "Nickname {{nick}} is already in use. Trying {{newnick}}..."
1137
+
1138
+ #: {{nick}} is now known as {{newnick}}
1139
+ msgid "now_known_as"
1140
+ msgstr "{{nick}} is now known as {{newnick}}"
1141
+
1142
+ #: {{nick}} changed the topic to: {{topic}}
1143
+ msgid "changed_topic_to"
1144
+ msgstr "{{nick}} changed the topic to: {{topic}}"
1145
+