@bobfrankston/mailx 1.0.466 → 1.0.500
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.
- package/.globalize.json5 +25 -0
- package/README.md +17 -420
- package/bin/mailx.js +87 -84
- package/bin/mailx.js.map +1 -1
- package/bin/mailx.ts +87 -84
- package/client/android.html +5 -5
- package/client/app.js +42 -38
- package/client/components/folder-tree.js +7 -5
- package/client/components/message-list.js +485 -448
- package/client/components/message-viewer.js +36 -41
- package/client/index.html +8 -8
- package/client/lib/message-state.js +46 -65
- package/index.js +59 -0
- package/package.json +12 -114
- package/packages/mailx-send/mailsend/{package-lock.json → node_modules/.package-lock.json} +0 -16
- package/packages/mailx-send/mailsend/node_modules/@types/node/LICENSE +21 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/README.md +15 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/assert/strict.d.ts +111 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/assert.d.ts +1078 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/async_hooks.d.ts +603 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/buffer.buffer.d.ts +472 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/buffer.d.ts +1934 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/child_process.d.ts +1476 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/cluster.d.ts +578 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/index.d.ts +9 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/console.d.ts +452 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/constants.d.ts +21 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/crypto.d.ts +4545 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/dgram.d.ts +600 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/dns/promises.d.ts +503 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/dns.d.ts +923 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/domain.d.ts +170 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/events.d.ts +976 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/fs/promises.d.ts +1295 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/fs.d.ts +4461 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/globals.d.ts +172 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/globals.typedarray.d.ts +38 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/http.d.ts +2089 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/http2.d.ts +2644 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/https.d.ts +579 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/index.d.ts +97 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/inspector.d.ts +253 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/inspector.generated.d.ts +4052 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/module.d.ts +891 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/net.d.ts +1057 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/os.d.ts +506 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/package.json +145 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/path.d.ts +200 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/perf_hooks.d.ts +968 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/process.d.ts +2084 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/punycode.d.ts +117 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/querystring.d.ts +152 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/readline/promises.d.ts +161 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/readline.d.ts +594 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/repl.d.ts +428 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/sea.d.ts +153 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/sqlite.d.ts +721 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/stream/consumers.d.ts +38 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/stream/promises.d.ts +90 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/stream/web.d.ts +622 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/stream.d.ts +1664 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/test.d.ts +2163 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/timers/promises.d.ts +108 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/timers.d.ts +287 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/tls.d.ts +1319 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/trace_events.d.ts +197 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/ts5.6/index.d.ts +97 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/tty.d.ts +208 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/url.d.ts +984 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/util.d.ts +2606 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/v8.d.ts +920 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/vm.d.ts +1000 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/wasi.d.ts +181 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/events.d.ts +97 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/navigator.d.ts +22 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/worker_threads.d.ts +784 -0
- package/packages/mailx-send/mailsend/node_modules/@types/node/zlib.d.ts +747 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/LICENSE +21 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/README.md +15 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/index.d.ts +82 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/addressparser/index.d.ts +31 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/base64/index.d.ts +22 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/index.d.ts +45 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/message-parser.d.ts +75 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/relaxed-body.d.ts +75 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/dkim/sign.d.ts +21 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/fetch/cookies.d.ts +54 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/fetch/index.d.ts +38 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/json-transport/index.d.ts +53 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mail-composer/index.d.ts +25 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mailer/index.d.ts +283 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts +32 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-funcs/index.d.ts +87 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-funcs/mime-types.d.ts +2 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-node/index.d.ts +224 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/mime-node/last-newline.d.ts +9 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/qp/index.d.ts +23 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts +53 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/sendmail-transport/le-unix.d.ts +7 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/sendmail-transport/le-windows.d.ts +7 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/ses-transport/index.d.ts +146 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/shared/index.d.ts +58 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-connection/data-stream.d.ts +11 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-connection/http-proxy-client.d.ts +16 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts +270 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts +93 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-pool/pool-resource.d.ts +66 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts +115 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/stream-transport/index.d.ts +59 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/well-known/index.d.ts +6 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/lib/xoauth2/index.d.ts +114 -0
- package/packages/mailx-send/mailsend/node_modules/@types/nodemailer/package.json +38 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/.ncurc.js +9 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/.prettierignore +8 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/.prettierrc +12 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/.prettierrc.js +10 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/.release-please-config.json +9 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/LICENSE +16 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/README.md +86 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/SECURITY.txt +22 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/eslint.config.js +88 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/addressparser/index.js +383 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/base64/index.js +139 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/index.js +253 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/message-parser.js +155 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/dkim/sign.js +117 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/fetch/cookies.js +281 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/fetch/index.js +280 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/json-transport/index.js +82 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mail-composer/index.js +629 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mailer/index.js +441 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mailer/mail-message.js +316 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-funcs/index.js +625 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2113 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/index.js +1316 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/le-unix.js +43 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/mime-node/le-windows.js +52 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/nodemailer.js +157 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/punycode/index.js +460 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/qp/index.js +227 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/sendmail-transport/index.js +210 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/ses-transport/index.js +234 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/shared/index.js +754 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-connection/data-stream.js +108 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +143 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-connection/index.js +1870 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-pool/index.js +652 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +259 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/smtp-transport/index.js +421 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/well-known/index.js +47 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/well-known/services.json +611 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/lib/xoauth2/index.js +427 -0
- package/packages/mailx-send/mailsend/node_modules/nodemailer/package.json +47 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/LICENSE +21 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/README.md +6 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/agent.d.ts +31 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/api.d.ts +43 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/balanced-pool.d.ts +29 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/cache.d.ts +36 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/client.d.ts +108 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/connector.d.ts +34 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/content-type.d.ts +21 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/cookies.d.ts +28 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/dispatcher.d.ts +256 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/errors.d.ts +149 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/eventsource.d.ts +61 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/fetch.d.ts +209 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/file.d.ts +39 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/filereader.d.ts +54 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/formdata.d.ts +108 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/global-origin.d.ts +7 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/handlers.d.ts +15 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/header.d.ts +4 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/index.d.ts +71 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/interceptors.d.ts +17 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/mock-agent.d.ts +50 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/mock-client.d.ts +25 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/mock-interceptor.d.ts +93 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/mock-pool.d.ts +25 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/package.json +55 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/patch.d.ts +33 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/pool.d.ts +39 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/proxy-agent.d.ts +28 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/readable.d.ts +65 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/retry-handler.d.ts +116 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/util.d.ts +18 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/webidl.d.ts +228 -0
- package/packages/mailx-send/mailsend/node_modules/undici-types/websocket.d.ts +150 -0
- package/packages/mailx-server/index.js +1 -1
- package/packages/mailx-settings/cloud.js +12 -7
- package/packages/mailx-settings/index.js +22 -1
- package/client/.gitattributes +0 -10
- package/client/app.js.map +0 -1
- package/client/app.ts +0 -3190
- package/client/components/address-book.js.map +0 -1
- package/client/components/address-book.ts +0 -204
- package/client/components/alarms.js.map +0 -1
- package/client/components/alarms.ts +0 -276
- package/client/components/calendar-sidebar.js.map +0 -1
- package/client/components/calendar-sidebar.ts +0 -474
- package/client/components/calendar.js.map +0 -1
- package/client/components/calendar.ts +0 -211
- package/client/components/context-menu.js.map +0 -1
- package/client/components/context-menu.ts +0 -95
- package/client/components/folder-picker.js.map +0 -1
- package/client/components/folder-picker.ts +0 -127
- package/client/components/folder-tree.js.map +0 -1
- package/client/components/folder-tree.ts +0 -1069
- package/client/components/message-list.js.map +0 -1
- package/client/components/message-list.ts +0 -1129
- package/client/components/message-viewer.js.map +0 -1
- package/client/components/message-viewer.ts +0 -1257
- package/client/components/outbox-view.js.map +0 -1
- package/client/components/outbox-view.ts +0 -102
- package/client/components/tasks.js.map +0 -1
- package/client/components/tasks.ts +0 -234
- package/client/compose/compose.js.map +0 -1
- package/client/compose/compose.ts +0 -1231
- package/client/compose/editor.js.map +0 -1
- package/client/compose/editor.ts +0 -599
- package/client/compose/ghost-text.js.map +0 -1
- package/client/compose/ghost-text.ts +0 -140
- package/client/lib/android-bootstrap.js.map +0 -1
- package/client/lib/android-bootstrap.ts +0 -9
- package/client/lib/api-client.js.map +0 -1
- package/client/lib/api-client.ts +0 -439
- package/client/lib/local-service.js.map +0 -1
- package/client/lib/local-service.ts +0 -646
- package/client/lib/local-store.js.map +0 -1
- package/client/lib/local-store.ts +0 -283
- package/client/lib/message-state.js.map +0 -1
- package/client/lib/message-state.ts +0 -160
- package/client/tsconfig.json +0 -19
- package/packages/mailx-api/.gitattributes +0 -10
- package/packages/mailx-api/index.d.ts.map +0 -1
- package/packages/mailx-api/index.js.map +0 -1
- package/packages/mailx-api/index.ts +0 -283
- package/packages/mailx-api/tsconfig.json +0 -9
- package/packages/mailx-compose/.gitattributes +0 -10
- package/packages/mailx-compose/index.d.ts.map +0 -1
- package/packages/mailx-compose/index.js.map +0 -1
- package/packages/mailx-compose/index.ts +0 -85
- package/packages/mailx-compose/tsconfig.json +0 -9
- package/packages/mailx-host/.gitattributes +0 -10
- package/packages/mailx-host/index.d.ts +0 -21
- package/packages/mailx-host/index.d.ts.map +0 -1
- package/packages/mailx-host/index.js +0 -29
- package/packages/mailx-host/index.js.map +0 -1
- package/packages/mailx-host/index.ts +0 -38
- package/packages/mailx-host/package.json +0 -23
- package/packages/mailx-host/tsconfig.json +0 -9
- package/packages/mailx-host/types-shim.d.ts +0 -14
- package/packages/mailx-imap/.gitattributes +0 -10
- package/packages/mailx-imap/index.d.ts +0 -442
- package/packages/mailx-imap/index.d.ts.map +0 -1
- package/packages/mailx-imap/index.js +0 -3684
- package/packages/mailx-imap/index.js.map +0 -1
- package/packages/mailx-imap/index.ts +0 -3652
- package/packages/mailx-imap/package-lock.json +0 -131
- package/packages/mailx-imap/package.json +0 -28
- package/packages/mailx-imap/providers/gmail-api.d.ts +0 -8
- package/packages/mailx-imap/providers/gmail-api.d.ts.map +0 -1
- package/packages/mailx-imap/providers/gmail-api.js +0 -8
- package/packages/mailx-imap/providers/gmail-api.js.map +0 -1
- package/packages/mailx-imap/providers/gmail-api.ts +0 -8
- package/packages/mailx-imap/providers/outlook-api.ts +0 -7
- package/packages/mailx-imap/providers/types.d.ts +0 -9
- package/packages/mailx-imap/providers/types.d.ts.map +0 -1
- package/packages/mailx-imap/providers/types.js +0 -9
- package/packages/mailx-imap/providers/types.js.map +0 -1
- package/packages/mailx-imap/providers/types.ts +0 -9
- package/packages/mailx-imap/tsconfig.json +0 -9
- package/packages/mailx-imap/tsconfig.tsbuildinfo +0 -1
- package/packages/mailx-send/.gitattributes +0 -10
- package/packages/mailx-send/cli-queue.d.ts.map +0 -1
- package/packages/mailx-send/cli-queue.js.map +0 -1
- package/packages/mailx-send/cli-queue.ts +0 -62
- package/packages/mailx-send/cli-send.d.ts.map +0 -1
- package/packages/mailx-send/cli-send.js.map +0 -1
- package/packages/mailx-send/cli-send.ts +0 -83
- package/packages/mailx-send/cli.d.ts.map +0 -1
- package/packages/mailx-send/cli.js.map +0 -1
- package/packages/mailx-send/cli.ts +0 -126
- package/packages/mailx-send/index.d.ts.map +0 -1
- package/packages/mailx-send/index.js.map +0 -1
- package/packages/mailx-send/index.ts +0 -333
- package/packages/mailx-send/mailsend/cli.d.ts.map +0 -1
- package/packages/mailx-send/mailsend/cli.js.map +0 -1
- package/packages/mailx-send/mailsend/cli.ts +0 -81
- package/packages/mailx-send/mailsend/index.d.ts.map +0 -1
- package/packages/mailx-send/mailsend/index.js.map +0 -1
- package/packages/mailx-send/mailsend/index.ts +0 -333
- package/packages/mailx-send/mailsend/tsconfig.json +0 -21
- package/packages/mailx-send/package-lock.json +0 -65
- package/packages/mailx-send/tsconfig.json +0 -21
- package/packages/mailx-server/.gitattributes +0 -10
- package/packages/mailx-server/index.d.ts.map +0 -1
- package/packages/mailx-server/index.js.map +0 -1
- package/packages/mailx-server/index.ts +0 -429
- package/packages/mailx-server/tsconfig.json +0 -9
- package/packages/mailx-settings/.gitattributes +0 -10
- package/packages/mailx-settings/cloud.d.ts.map +0 -1
- package/packages/mailx-settings/cloud.js.map +0 -1
- package/packages/mailx-settings/cloud.ts +0 -388
- package/packages/mailx-settings/index.d.ts.map +0 -1
- package/packages/mailx-settings/index.js.map +0 -1
- package/packages/mailx-settings/index.ts +0 -892
- package/packages/mailx-settings/tsconfig.json +0 -9
- package/packages/mailx-store/.gitattributes +0 -10
- package/packages/mailx-store/db.d.ts.map +0 -1
- package/packages/mailx-store/db.js.map +0 -1
- package/packages/mailx-store/db.ts +0 -2007
- package/packages/mailx-store/file-store.d.ts.map +0 -1
- package/packages/mailx-store/file-store.js.map +0 -1
- package/packages/mailx-store/file-store.ts +0 -82
- package/packages/mailx-store/index.d.ts.map +0 -1
- package/packages/mailx-store/index.js.map +0 -1
- package/packages/mailx-store/index.ts +0 -7
- package/packages/mailx-store/tsconfig.json +0 -9
- package/packages/mailx-types/.gitattributes +0 -10
- package/packages/mailx-types/index.d.ts.map +0 -1
- package/packages/mailx-types/index.js.map +0 -1
- package/packages/mailx-types/index.ts +0 -498
- package/packages/mailx-types/tsconfig.json +0 -9
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"address-book.js","sourceRoot":"","sources":["address-book.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Address book modal — list / search / edit / delete contacts.
|
|
3
|
-
* Sources: 'sent' (added on outgoing), 'received' (seeded from message senders),
|
|
4
|
-
* 'manual' (added directly here), 'google' (Google Contacts sync).
|
|
5
|
-
*/
|
|
6
|
-
import { listContacts, upsertContact, deleteContact } from "../lib/api-client.js";
|
|
7
|
-
|
|
8
|
-
interface Contact {
|
|
9
|
-
name: string;
|
|
10
|
-
email: string;
|
|
11
|
-
source: string;
|
|
12
|
-
useCount: number;
|
|
13
|
-
lastUsed: number;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
let isOpen = false;
|
|
17
|
-
|
|
18
|
-
export async function openAddressBook(): Promise<void> {
|
|
19
|
-
if (isOpen) return;
|
|
20
|
-
isOpen = true;
|
|
21
|
-
|
|
22
|
-
const backdrop = document.createElement("div");
|
|
23
|
-
backdrop.className = "mailx-modal-backdrop";
|
|
24
|
-
const panel = document.createElement("div");
|
|
25
|
-
panel.className = "mailx-modal mailx-modal-wide";
|
|
26
|
-
panel.innerHTML = `
|
|
27
|
-
<div class="mailx-modal-title">
|
|
28
|
-
<span class="mailx-modal-title-text">Address Book</span>
|
|
29
|
-
<button type="button" class="mailx-modal-close" id="ab-close" title="Close (Esc)" aria-label="Close">×</button>
|
|
30
|
-
</div>
|
|
31
|
-
<div class="ab-toolbar">
|
|
32
|
-
<input type="search" id="ab-search" class="mailx-modal-input" placeholder="Search name or email…" autocomplete="off">
|
|
33
|
-
<button type="button" class="mailx-modal-btn mailx-modal-btn-primary" id="ab-new">+ New contact</button>
|
|
34
|
-
</div>
|
|
35
|
-
<div class="ab-count" id="ab-count"></div>
|
|
36
|
-
<div class="ab-list" id="ab-list">Loading…</div>
|
|
37
|
-
<div class="mailx-modal-buttons">
|
|
38
|
-
<span class="mailx-modal-spacer"></span>
|
|
39
|
-
<button type="button" class="mailx-modal-btn" data-action="close">Close</button>
|
|
40
|
-
</div>`;
|
|
41
|
-
backdrop.appendChild(panel);
|
|
42
|
-
document.body.appendChild(backdrop);
|
|
43
|
-
|
|
44
|
-
const searchInput = panel.querySelector<HTMLInputElement>("#ab-search")!;
|
|
45
|
-
const listEl = panel.querySelector<HTMLElement>("#ab-list")!;
|
|
46
|
-
const countEl = panel.querySelector<HTMLElement>("#ab-count")!;
|
|
47
|
-
|
|
48
|
-
let editingEmail: string | null = null;
|
|
49
|
-
|
|
50
|
-
const render = (items: Contact[], total: number) => {
|
|
51
|
-
countEl.textContent = total === items.length
|
|
52
|
-
? `${total} contact${total === 1 ? "" : "s"}`
|
|
53
|
-
: `Showing ${items.length} of ${total}`;
|
|
54
|
-
if (items.length === 0) {
|
|
55
|
-
listEl.innerHTML = `<div class="ab-empty">No contacts match.</div>`;
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const fmtDate = (ms: number) => {
|
|
59
|
-
if (!ms) return "";
|
|
60
|
-
const d = new Date(ms);
|
|
61
|
-
const now = new Date();
|
|
62
|
-
return d.getFullYear() === now.getFullYear()
|
|
63
|
-
? d.toLocaleDateString(undefined, { month: "short", day: "numeric" })
|
|
64
|
-
: d.toLocaleDateString();
|
|
65
|
-
};
|
|
66
|
-
listEl.innerHTML = `
|
|
67
|
-
<div class="ab-row ab-header">
|
|
68
|
-
<span class="ab-name">Name</span>
|
|
69
|
-
<span class="ab-email">Email</span>
|
|
70
|
-
<span class="ab-source">Source</span>
|
|
71
|
-
<span class="ab-count-cell" title="Times sent to">×</span>
|
|
72
|
-
<span class="ab-last">Last</span>
|
|
73
|
-
<span class="ab-actions"></span>
|
|
74
|
-
</div>` + items.map(c => `
|
|
75
|
-
<div class="ab-row" data-email="${escapeAttr(c.email)}">
|
|
76
|
-
<span class="ab-name">${escapeHtml(c.name || "")}</span>
|
|
77
|
-
<span class="ab-email">${escapeHtml(c.email)}</span>
|
|
78
|
-
<span class="ab-source">${escapeHtml(c.source)}</span>
|
|
79
|
-
<span class="ab-count-cell">${c.useCount || 0}</span>
|
|
80
|
-
<span class="ab-last">${fmtDate(c.lastUsed)}</span>
|
|
81
|
-
<span class="ab-actions">
|
|
82
|
-
<button type="button" class="ab-edit" title="Edit name">✎</button>
|
|
83
|
-
<button type="button" class="ab-del" title="Delete">🗑</button>
|
|
84
|
-
<button type="button" class="ab-mail" title="Compose to">✉</button>
|
|
85
|
-
</span>
|
|
86
|
-
</div>`).join("");
|
|
87
|
-
listEl.querySelectorAll<HTMLElement>(".ab-row[data-email]").forEach(row => {
|
|
88
|
-
const email = row.dataset.email!;
|
|
89
|
-
const c = items.find(x => x.email === email)!;
|
|
90
|
-
row.querySelector(".ab-edit")?.addEventListener("click", () => beginEdit(row, c));
|
|
91
|
-
row.querySelector(".ab-del")?.addEventListener("click", () => doDelete(c));
|
|
92
|
-
row.querySelector(".ab-mail")?.addEventListener("click", () => composeTo(c));
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
const beginEdit = (row: HTMLElement, c: Contact) => {
|
|
97
|
-
if (editingEmail === c.email) return;
|
|
98
|
-
editingEmail = c.email;
|
|
99
|
-
const nameSpan = row.querySelector<HTMLElement>(".ab-name")!;
|
|
100
|
-
const original = c.name || "";
|
|
101
|
-
nameSpan.innerHTML = `<input type="text" value="${escapeAttr(original)}" class="ab-name-input">`;
|
|
102
|
-
const inp = nameSpan.querySelector<HTMLInputElement>("input")!;
|
|
103
|
-
inp.focus();
|
|
104
|
-
inp.select();
|
|
105
|
-
const commit = async () => {
|
|
106
|
-
const newName = inp.value.trim();
|
|
107
|
-
if (newName !== original) {
|
|
108
|
-
try {
|
|
109
|
-
await upsertContact(newName, c.email);
|
|
110
|
-
c.name = newName;
|
|
111
|
-
} catch (e: any) {
|
|
112
|
-
alert(`Update failed: ${e?.message || e}`);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
nameSpan.textContent = c.name || "";
|
|
116
|
-
editingEmail = null;
|
|
117
|
-
};
|
|
118
|
-
inp.addEventListener("blur", commit);
|
|
119
|
-
inp.addEventListener("keydown", (e) => {
|
|
120
|
-
if (e.key === "Enter") { e.preventDefault(); inp.blur(); }
|
|
121
|
-
else if (e.key === "Escape") { e.preventDefault(); inp.value = original; inp.blur(); }
|
|
122
|
-
});
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
const doDelete = async (c: Contact) => {
|
|
126
|
-
if (!confirm(`Delete contact "${c.name || c.email}"?`)) return;
|
|
127
|
-
try {
|
|
128
|
-
await deleteContact(c.email);
|
|
129
|
-
await reload();
|
|
130
|
-
} catch (e: any) {
|
|
131
|
-
alert(`Delete failed: ${e?.message || e}`);
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
const composeTo = (c: Contact) => {
|
|
136
|
-
const init: {
|
|
137
|
-
mode: string;
|
|
138
|
-
to: { name: string; address: string }[];
|
|
139
|
-
cc: { name: string; address: string }[];
|
|
140
|
-
bcc: { name: string; address: string }[];
|
|
141
|
-
subject: string;
|
|
142
|
-
bodyHtml: string;
|
|
143
|
-
inReplyTo: string;
|
|
144
|
-
references: string[];
|
|
145
|
-
accounts: { id: string; name: string; email: string }[];
|
|
146
|
-
} = {
|
|
147
|
-
mode: "new",
|
|
148
|
-
to: [{ name: c.name || "", address: c.email }],
|
|
149
|
-
cc: [], bcc: [], subject: "", bodyHtml: "",
|
|
150
|
-
inReplyTo: "", references: [], accounts: [],
|
|
151
|
-
};
|
|
152
|
-
try { sessionStorage.setItem("composeInit", JSON.stringify(init)); } catch { /* */ }
|
|
153
|
-
document.dispatchEvent(new CustomEvent("mailx-compose", { detail: { mode: "new" } }));
|
|
154
|
-
close();
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
let reloadDebounce: number | undefined;
|
|
158
|
-
const reload = async () => {
|
|
159
|
-
try {
|
|
160
|
-
const r = await listContacts(searchInput.value, 1, 200);
|
|
161
|
-
render(r.items, r.total);
|
|
162
|
-
} catch (e: any) {
|
|
163
|
-
listEl.innerHTML = `<div class="ab-empty">Load failed: ${escapeHtml(e?.message || String(e))}</div>`;
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
const scheduleReload = () => {
|
|
167
|
-
if (reloadDebounce) window.clearTimeout(reloadDebounce);
|
|
168
|
-
reloadDebounce = window.setTimeout(reload, 200);
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
panel.querySelector<HTMLButtonElement>("#ab-new")?.addEventListener("click", async () => {
|
|
172
|
-
const email = prompt("Email address:");
|
|
173
|
-
if (!email) return;
|
|
174
|
-
const name = prompt("Display name (optional):") || "";
|
|
175
|
-
try {
|
|
176
|
-
await upsertContact(name, email.trim());
|
|
177
|
-
await reload();
|
|
178
|
-
} catch (e: any) {
|
|
179
|
-
alert(`Add failed: ${e?.message || e}`);
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
searchInput.addEventListener("input", scheduleReload);
|
|
183
|
-
|
|
184
|
-
const close = () => {
|
|
185
|
-
if (reloadDebounce) window.clearTimeout(reloadDebounce);
|
|
186
|
-
backdrop.remove();
|
|
187
|
-
document.removeEventListener("keydown", onKey, true);
|
|
188
|
-
isOpen = false;
|
|
189
|
-
};
|
|
190
|
-
const onKey = (e: KeyboardEvent) => {
|
|
191
|
-
if (e.key === "Escape") { e.stopPropagation(); e.preventDefault(); close(); }
|
|
192
|
-
};
|
|
193
|
-
document.addEventListener("keydown", onKey, true);
|
|
194
|
-
panel.querySelector<HTMLButtonElement>("#ab-close")!.addEventListener("click", close);
|
|
195
|
-
panel.querySelector<HTMLButtonElement>('[data-action="close"]')!.addEventListener("click", close);
|
|
196
|
-
backdrop.addEventListener("mousedown", (e) => { if (e.target === backdrop) close(); });
|
|
197
|
-
|
|
198
|
-
await reload();
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
function escapeHtml(s: string): string {
|
|
202
|
-
return s.replace(/[&<>"']/g, c => ({ "&": "&", "<": "<", ">": ">", "\"": """, "'": "'" }[c]!));
|
|
203
|
-
}
|
|
204
|
-
function escapeAttr(s: string): string { return escapeHtml(s); }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alarms.js","sourceRoot":"","sources":["alarms.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Alarm subsystem — Thunderbird/Outlook-style reminder popups.
|
|
3
|
-
*
|
|
4
|
-
* Design decisions (2026-04-24):
|
|
5
|
-
* - One shared subsystem for calendar events + tasks (+ future mail reminders).
|
|
6
|
-
* - Popup shows item title, scheduled time, Snooze (5 / 15 / 30 min / 1 hr /
|
|
7
|
-
* custom), Dismiss. Snooze delays the alarm by the chosen interval; Dismiss
|
|
8
|
-
* suppresses it permanently.
|
|
9
|
-
* - Dismissed / snoozed state lives in localStorage (per-device). Google
|
|
10
|
-
* Calendar's own reminders aren't mutated by this — mailx's popup is a
|
|
11
|
-
* local convenience, not a reminder-authority replacement.
|
|
12
|
-
* - Default lead time: 10 min before calendar event start; at task due time
|
|
13
|
-
* for tasks. Per-event overrides from Google Calendar's `reminders.overrides`
|
|
14
|
-
* are a follow-up (we don't currently fetch that field).
|
|
15
|
-
*
|
|
16
|
-
* Check cadence: every 30 s while the tab/window is focused. No check when
|
|
17
|
-
* hidden — alarm won't fire until user returns, which matches Thunderbird's
|
|
18
|
-
* behavior (focus-gated). OS-level notifications are a separate follow-up.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
import { getCalendarEvents, getTasks } from "../lib/api-client.js";
|
|
22
|
-
|
|
23
|
-
const DISMISSED_KEY = "mailx-alarm-dismissed"; // { uuid: true }
|
|
24
|
-
const SNOOZED_KEY = "mailx-alarm-snoozed"; // { uuid: epoch-ms-end }
|
|
25
|
-
const CAL_LEAD_MS = 10 * 60 * 1000; // 10 min before cal event start
|
|
26
|
-
const LOOKBACK_MS = 60 * 60 * 1000; // fire past-due alarms from the last 60 min
|
|
27
|
-
const LOOKAHEAD_MS = 2 * 60 * 60 * 1000; // poll window: upcoming 2 hr
|
|
28
|
-
const POLL_INTERVAL_MS = 30_000;
|
|
29
|
-
|
|
30
|
-
interface AlarmItem {
|
|
31
|
-
uuid: string;
|
|
32
|
-
kind: "calendar" | "task";
|
|
33
|
-
title: string;
|
|
34
|
-
/** When the alarm should fire (epoch ms). */
|
|
35
|
-
alarmMs: number;
|
|
36
|
-
/** When the source event actually starts / is due (epoch ms) — shown in popup. */
|
|
37
|
-
whenMs: number;
|
|
38
|
-
/** Optional web link for "view in browser". */
|
|
39
|
-
htmlLink?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function loadDismissed(): Record<string, boolean> {
|
|
43
|
-
try { return JSON.parse(localStorage.getItem(DISMISSED_KEY) || "{}"); } catch { return {}; }
|
|
44
|
-
}
|
|
45
|
-
function saveDismissed(map: Record<string, boolean>): void {
|
|
46
|
-
try { localStorage.setItem(DISMISSED_KEY, JSON.stringify(map)); } catch { /* private mode */ }
|
|
47
|
-
}
|
|
48
|
-
function loadSnoozed(): Record<string, number> {
|
|
49
|
-
try { return JSON.parse(localStorage.getItem(SNOOZED_KEY) || "{}"); } catch { return {}; }
|
|
50
|
-
}
|
|
51
|
-
function saveSnoozed(map: Record<string, number>): void {
|
|
52
|
-
try { localStorage.setItem(SNOOZED_KEY, JSON.stringify(map)); } catch { /* */ }
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Prune expired entries so the maps don't grow forever. */
|
|
56
|
-
function pruneState(now: number): void {
|
|
57
|
-
const snoozed = loadSnoozed();
|
|
58
|
-
let changed = false;
|
|
59
|
-
for (const [uuid, until] of Object.entries(snoozed)) {
|
|
60
|
-
// Snoozed entries older than 7 days have been fired already (or the
|
|
61
|
-
// event is long past); drop them.
|
|
62
|
-
if (until < now - 7 * 86400_000) { delete snoozed[uuid]; changed = true; }
|
|
63
|
-
}
|
|
64
|
-
if (changed) saveSnoozed(snoozed);
|
|
65
|
-
// Dismissed is sparse — don't bother pruning aggressively.
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async function collectDueAlarms(now: number): Promise<AlarmItem[]> {
|
|
69
|
-
const dismissed = loadDismissed();
|
|
70
|
-
const snoozed = loadSnoozed();
|
|
71
|
-
const items: AlarmItem[] = [];
|
|
72
|
-
|
|
73
|
-
try {
|
|
74
|
-
const events = await getCalendarEvents(now - LOOKBACK_MS, now + LOOKAHEAD_MS);
|
|
75
|
-
for (const ev of events) {
|
|
76
|
-
if (!ev.uuid) continue;
|
|
77
|
-
if (dismissed[ev.uuid]) continue;
|
|
78
|
-
const alarm = (ev.start || 0) - CAL_LEAD_MS;
|
|
79
|
-
const effective = snoozed[ev.uuid] || alarm;
|
|
80
|
-
if (effective <= now && effective > now - LOOKBACK_MS) {
|
|
81
|
-
items.push({
|
|
82
|
-
uuid: ev.uuid, kind: "calendar",
|
|
83
|
-
title: ev.title || "(no title)",
|
|
84
|
-
alarmMs: effective, whenMs: ev.start || 0,
|
|
85
|
-
htmlLink: ev.htmlLink,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
} catch { /* sidebar will surface API errors; alarm path stays quiet */ }
|
|
90
|
-
|
|
91
|
-
try {
|
|
92
|
-
const tasks = await getTasks(false);
|
|
93
|
-
for (const t of tasks) {
|
|
94
|
-
if (!t.uuid || !t.dueMs) continue;
|
|
95
|
-
if (dismissed[t.uuid]) continue;
|
|
96
|
-
const effective = snoozed[t.uuid] || t.dueMs;
|
|
97
|
-
if (effective <= now && effective > now - LOOKBACK_MS) {
|
|
98
|
-
items.push({
|
|
99
|
-
uuid: t.uuid, kind: "task",
|
|
100
|
-
title: t.title || "(no title)",
|
|
101
|
-
alarmMs: effective, whenMs: t.dueMs,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
} catch { /* */ }
|
|
106
|
-
|
|
107
|
-
return items;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function formatWhen(ms: number): string {
|
|
111
|
-
if (!ms) return "";
|
|
112
|
-
const d = new Date(ms);
|
|
113
|
-
return d.toLocaleString(undefined, { weekday: "short", month: "short", day: "numeric", hour: "2-digit", minute: "2-digit" });
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
let currentPopup: HTMLElement | null = null;
|
|
117
|
-
let firedThisSession = new Set<string>();
|
|
118
|
-
|
|
119
|
-
function showPopup(items: AlarmItem[]): void {
|
|
120
|
-
if (currentPopup) return; // another popup already up
|
|
121
|
-
if (items.length === 0) return;
|
|
122
|
-
const overlay = document.createElement("div");
|
|
123
|
-
overlay.className = "alarm-overlay";
|
|
124
|
-
const panel = document.createElement("div");
|
|
125
|
-
panel.className = "alarm-panel";
|
|
126
|
-
panel.innerHTML = `
|
|
127
|
-
<div class="alarm-head">
|
|
128
|
-
<span class="alarm-icon">⏰</span>
|
|
129
|
-
<span class="alarm-title">${items.length} reminder${items.length > 1 ? "s" : ""}</span>
|
|
130
|
-
<button type="button" class="alarm-close" aria-label="Close">×</button>
|
|
131
|
-
</div>
|
|
132
|
-
<div class="alarm-list"></div>
|
|
133
|
-
<div class="alarm-foot">
|
|
134
|
-
<label class="alarm-snooze-label">Snooze for
|
|
135
|
-
<select class="alarm-snooze-sel">
|
|
136
|
-
<option value="5">5 minutes</option>
|
|
137
|
-
<option value="15" selected>15 minutes</option>
|
|
138
|
-
<option value="30">30 minutes</option>
|
|
139
|
-
<option value="60">1 hour</option>
|
|
140
|
-
<option value="240">4 hours</option>
|
|
141
|
-
<option value="1440">1 day</option>
|
|
142
|
-
<option value="custom">custom…</option>
|
|
143
|
-
</select>
|
|
144
|
-
</label>
|
|
145
|
-
<span style="flex:1"></span>
|
|
146
|
-
<button type="button" class="alarm-btn alarm-btn-snooze">Snooze all</button>
|
|
147
|
-
<button type="button" class="alarm-btn alarm-btn-primary alarm-btn-dismiss">Dismiss all</button>
|
|
148
|
-
</div>
|
|
149
|
-
`;
|
|
150
|
-
const list = panel.querySelector(".alarm-list")!;
|
|
151
|
-
for (const it of items) {
|
|
152
|
-
const row = document.createElement("div");
|
|
153
|
-
row.className = "alarm-row";
|
|
154
|
-
row.dataset.uuid = it.uuid;
|
|
155
|
-
row.innerHTML = `
|
|
156
|
-
<div class="alarm-row-main">
|
|
157
|
-
<span class="alarm-row-kind">${it.kind === "calendar" ? "📅" : "☑"}</span>
|
|
158
|
-
<span class="alarm-row-title"></span>
|
|
159
|
-
<span class="alarm-row-when"></span>
|
|
160
|
-
</div>
|
|
161
|
-
<div class="alarm-row-actions">
|
|
162
|
-
${it.htmlLink ? `<button type="button" class="alarm-row-link" data-link="${it.htmlLink}" title="View in browser">↗</button>` : ""}
|
|
163
|
-
<button type="button" class="alarm-row-dismiss" title="Dismiss this one">✕</button>
|
|
164
|
-
</div>
|
|
165
|
-
`;
|
|
166
|
-
(row.querySelector(".alarm-row-title") as HTMLElement).textContent = it.title;
|
|
167
|
-
(row.querySelector(".alarm-row-when") as HTMLElement).textContent = formatWhen(it.whenMs);
|
|
168
|
-
list.appendChild(row);
|
|
169
|
-
}
|
|
170
|
-
overlay.appendChild(panel);
|
|
171
|
-
document.body.appendChild(overlay);
|
|
172
|
-
currentPopup = overlay;
|
|
173
|
-
|
|
174
|
-
// Pin the mailx window above other apps while a reminder is showing —
|
|
175
|
-
// matches Thunderbird's reminder dialog behavior. Cleared on close so
|
|
176
|
-
// the window doesn't stay always-on-top once the user has acknowledged.
|
|
177
|
-
// No-op in browser fallback (msgapi only present in WebView2).
|
|
178
|
-
const msgapi: any = (window as any).msgapi;
|
|
179
|
-
try { msgapi?.setAlwaysOnTop?.(true); } catch { /* */ }
|
|
180
|
-
|
|
181
|
-
const snoozeMinutes = (): number | null => {
|
|
182
|
-
const sel = panel.querySelector<HTMLSelectElement>(".alarm-snooze-sel")!;
|
|
183
|
-
if (sel.value === "custom") {
|
|
184
|
-
const v = prompt("Snooze for how many minutes?", "30");
|
|
185
|
-
const n = parseInt(v || "", 10);
|
|
186
|
-
return Number.isFinite(n) && n > 0 ? n : null;
|
|
187
|
-
}
|
|
188
|
-
return parseInt(sel.value, 10);
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
const snoozeAll = (minutes: number): void => {
|
|
192
|
-
const now = Date.now();
|
|
193
|
-
const map = loadSnoozed();
|
|
194
|
-
for (const it of items) map[it.uuid] = now + minutes * 60_000;
|
|
195
|
-
saveSnoozed(map);
|
|
196
|
-
for (const it of items) firedThisSession.delete(it.uuid);
|
|
197
|
-
close();
|
|
198
|
-
};
|
|
199
|
-
const dismissAll = (): void => {
|
|
200
|
-
const map = loadDismissed();
|
|
201
|
-
for (const it of items) map[it.uuid] = true;
|
|
202
|
-
saveDismissed(map);
|
|
203
|
-
close();
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
const close = () => {
|
|
207
|
-
overlay.remove();
|
|
208
|
-
currentPopup = null;
|
|
209
|
-
try { msgapi?.setAlwaysOnTop?.(false); } catch { /* */ }
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
panel.querySelector(".alarm-close")?.addEventListener("click", close);
|
|
213
|
-
panel.querySelector(".alarm-btn-snooze")?.addEventListener("click", () => {
|
|
214
|
-
const n = snoozeMinutes();
|
|
215
|
-
if (n) snoozeAll(n);
|
|
216
|
-
});
|
|
217
|
-
panel.querySelector(".alarm-btn-dismiss")?.addEventListener("click", dismissAll);
|
|
218
|
-
|
|
219
|
-
panel.querySelectorAll<HTMLButtonElement>(".alarm-row-dismiss").forEach(btn => {
|
|
220
|
-
btn.addEventListener("click", () => {
|
|
221
|
-
const row = btn.closest<HTMLElement>(".alarm-row");
|
|
222
|
-
const uuid = row?.dataset.uuid;
|
|
223
|
-
if (!uuid) return;
|
|
224
|
-
const map = loadDismissed();
|
|
225
|
-
map[uuid] = true;
|
|
226
|
-
saveDismissed(map);
|
|
227
|
-
row!.remove();
|
|
228
|
-
if (panel.querySelector(".alarm-list")?.childElementCount === 0) close();
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
panel.querySelectorAll<HTMLButtonElement>(".alarm-row-link").forEach(btn => {
|
|
232
|
-
btn.addEventListener("click", () => {
|
|
233
|
-
const url = btn.dataset.link;
|
|
234
|
-
if (!url) return;
|
|
235
|
-
const api = (window as any).mailxapi;
|
|
236
|
-
if (api?.openExternal) api.openExternal(url);
|
|
237
|
-
else window.open(url, "_blank");
|
|
238
|
-
});
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
// Escape closes without action (same as X) — user can re-open with next
|
|
242
|
-
// poll tick by not acting on it.
|
|
243
|
-
const onKey = (e: KeyboardEvent) => {
|
|
244
|
-
if (e.key === "Escape") { e.stopPropagation(); close(); document.removeEventListener("keydown", onKey, true); }
|
|
245
|
-
};
|
|
246
|
-
document.addEventListener("keydown", onKey, true);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
async function pollAlarms(): Promise<void> {
|
|
250
|
-
if (document.hidden) return; // don't fire while tab hidden
|
|
251
|
-
if (currentPopup) return; // user hasn't acknowledged last one
|
|
252
|
-
const now = Date.now();
|
|
253
|
-
pruneState(now);
|
|
254
|
-
const due = await collectDueAlarms(now);
|
|
255
|
-
// Only show items we haven't already fired this session (prevents the
|
|
256
|
-
// popup from immediately re-appearing if the user closes it without
|
|
257
|
-
// dismissing — the item still matches the "due" filter next tick).
|
|
258
|
-
const fresh = due.filter(d => !firedThisSession.has(d.uuid));
|
|
259
|
-
if (fresh.length === 0) return;
|
|
260
|
-
for (const d of fresh) firedThisSession.add(d.uuid);
|
|
261
|
-
showPopup(fresh);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/** Start the alarm poller. Called from app.ts on startup. */
|
|
265
|
-
export function startAlarmPoller(): void {
|
|
266
|
-
if ((window as any).__mailxAlarmPollerRunning) return;
|
|
267
|
-
(window as any).__mailxAlarmPollerRunning = true;
|
|
268
|
-
// First check after 5 s so startup isn't jittered by a modal.
|
|
269
|
-
setTimeout(() => { pollAlarms().catch(() => { /* */ }); }, 5000);
|
|
270
|
-
setInterval(() => { pollAlarms().catch(() => { /* */ }); }, POLL_INTERVAL_MS);
|
|
271
|
-
// Re-check on visibility change — if the user comes back to the tab
|
|
272
|
-
// after an hour away, they should see anything they missed immediately.
|
|
273
|
-
document.addEventListener("visibilitychange", () => {
|
|
274
|
-
if (!document.hidden) pollAlarms().catch(() => { /* */ });
|
|
275
|
-
});
|
|
276
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-sidebar.js","sourceRoot":"","sources":["calendar-sidebar.ts"],"names":[],"mappings":"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"}
|