diff --git a/docs-src/spectrum-ts/providers/imessage/connection-and-routing.mdx.vel b/docs-src/spectrum-ts/providers/imessage/connection-and-routing.mdx.vel index 6ecdc24..47fe632 100644 --- a/docs-src/spectrum-ts/providers/imessage/connection-and-routing.mdx.vel +++ b/docs-src/spectrum-ts/providers/imessage/connection-and-routing.mdx.vel @@ -96,6 +96,32 @@ for await (const [space, message] of app.messages) { } ``` +## Sender identity + +When you narrow an iMessage message, the sender carries optional fields that describe how the sender reached you: + +| Field | Type | Description | +|---|---|---| +| `id` | `string` | The sender's address, used as the cross-provider identity key. | +| `address` | `string` (optional) | The raw address (phone number or email) the message came from. | +| `country` | `string` (optional) | Two-letter country code for the sender's address, when known. | +| `service` | `"iMessage" \| "SMS" \| "RCS" \| "unknown"` (optional) | Which service delivered the message. | + +Use `service` to tell whether a sender reached you over iMessage (blue bubble), SMS or RCS (green bubble), or an unknown transport: + +```ts +for await (const [space, message] of app.messages) { + if (message.platform !== "iMessage") continue; + const im = imessage(message); + + if (im.sender.service === "SMS") { + await space.send("You're on SMS — some features may be limited."); + } +} +``` + +All fields except `id` are optional. In local mode, only `address` is populated (from the participant identifier); `country` and `service` are unavailable. Actor-less events (e.g. a system notification) may have none of the optional fields. + ## Creating conversations Resolve users by phone number or email, then create a space with `space.create(...)`: diff --git a/package.json b/package.json index e51dd35..396ab27 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "eslint-plugin-format": "^2.0.1", "husky": "^9.1.7", "oxfmt": "^0.44.0", - "spectrum-ts": "4.2.0", + "spectrum-ts": "5.1.0", "tsx": "^4.21.0", "typescript": "^5.9.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ffc8499..06748c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,8 +57,8 @@ importers: specifier: ^0.44.0 version: 0.44.0 spectrum-ts: - specifier: 4.2.0 - version: 4.2.0(typescript@5.9.3) + specifier: 5.1.0 + version: 5.1.0(typescript@5.9.3) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -594,8 +594,8 @@ packages: '@microsoft/tsdoc@0.15.1': resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} - '@opentelemetry/api-logs@0.216.0': - resolution: {integrity: sha512-KmGTgvxTJ0J01d4mOeX1wMV5NUTNf9HebIuOOGDfIn0a/IrnXIQbOnlylDyl9tkDv4h0DUpdI/GqCdLzfTkUXg==} + '@opentelemetry/api-logs@0.218.0': + resolution: {integrity: sha512-fmEWp5kXlGEc3i/lR698Hz41DfGyN4Tbe4g7L1AxSc7fF8Xeh/FQ9Quqpa9dVA413Q1Ad43QOLzU4JoXgbFPWw==} engines: {node: '>=8.0.0'} '@opentelemetry/api@1.9.1': @@ -614,26 +614,26 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/exporter-logs-otlp-http@0.216.0': - resolution: {integrity: sha512-8SUzQY/aExKkz6Ab3vOf6gu690Xk4wHH90dGwXinejQzazn5HCIRR7yPVU/2fEuiZ73R92MU4qI3djHfYP7NJg==} + '@opentelemetry/exporter-logs-otlp-http@0.218.0': + resolution: {integrity: sha512-Qx+4rpVHzgg89dawcWRHyt+XRXeLnhFz/qBtvggmjkcgPUdr+NAB0/u/eIPA8yAeJV0J80Vz43JZCh/XFvZFGw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/exporter-trace-otlp-http@0.216.0': - resolution: {integrity: sha512-DhWjvj0PUPFwFnhOEivpum8sJzj6FTuyx88zff+oHVLUhfd6cLyw4AIai/F4j0PZqYZBFuMT/OTMUd9wdXnBEQ==} + '@opentelemetry/exporter-trace-otlp-http@0.218.0': + resolution: {integrity: sha512-8dqezsmPhtKitIK/eTipZhYl9EX2/gNQ5zUMhaz3uxEURwfkNf8IPvo6yNfrzbxdtpAOybS/+h7wmIWYqFSpiw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-exporter-base@0.216.0': - resolution: {integrity: sha512-sSnvb5f+FYa4mfYxj03rmmUh+aDwo3jok62dgIWUDw8ZCUPzEbgtv/YhZyKUSlKNNey7Uc5xmJgmtTLLIV6UDQ==} + '@opentelemetry/otlp-exporter-base@0.218.0': + resolution: {integrity: sha512-ZwqpkNL5W7RyGJPDZ9g06DvKp8KFTWPJPN12anpMQYSKpTSU0z3EIZuPq9vPGpS8siFyOqDYDAuCwlNO9FqgbA==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-transformer@0.216.0': - resolution: {integrity: sha512-g4Rb6sAsxQAo11eDjixfKxelruBsQFdJ8Wo23FCj7D6OXbidgXMu2xaRSYs4RdlomzAXSJuc86RcS3xmE8A6uA==} + '@opentelemetry/otlp-transformer@0.218.0': + resolution: {integrity: sha512-CFaKH87WAzjuJ4awowTTLzUvMfaRfiOFG5+qm5S5ncyalRtN4ecQ+YmuANJSCrVPuvZFEkUgKhBPBndxi3rHsQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -644,8 +644,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-logs@0.216.0': - resolution: {integrity: sha512-KB3rcwQuitq0JbbsCcNdqMhRJX3kArAYz/ovb0jGRaBQAIrt2roik3xQXuhYxS37zx0jSkUZcJu1z3Y2UCxbDA==} + '@opentelemetry/sdk-logs@0.218.0': + resolution: {integrity: sha512-QvnNdugatFTVCJXH0Mcu7GOOJSylA9j127kIezOE4YwTI4YbowRons2K4WZTv5FMS8T4q9P0NdaRHdkSmeAIag==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.4.0 <1.10.0' @@ -935,8 +935,8 @@ packages: resolution: {integrity: sha512-GGDETlRbrPXP5eaRvswaead7MCBGQkm8f7d3aVbx8+rXhB4GEyPiw7Q1/yz5ix53rmxqKRevWywOfG7n+kZDBw==} engines: {node: '>=20.0.0'} - '@photon-ai/otel@0.1.1': - resolution: {integrity: sha512-t/NVepO5+fHOLWDI+Eht+RC8PTik0wi7HQsKhU4yPqBjY5JncXmoBZLnWFvG+/qJ/pn6w+tveabKG9pykfkqKg==} + '@photon-ai/otel@1.0.0': + resolution: {integrity: sha512-5fACVHN7BtGS+phglVAxun5QLckNUSS4p750oCxR//m9JNVzFQMoLFWfC6DnWBP/W0/+B2yP75+3NMVLodEJEg==} engines: {node: '>=20'} peerDependencies: typescript: ^5 || ^6.0.0 @@ -1011,6 +1011,54 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@spectrum-ts/core@5.1.0': + resolution: {integrity: sha512-07ynd5YILbhxTLk5iGA3MJpMSt0rsl0ed5sSi4SRw65jXgzaRqY4aBIz2f6V+dGSyPKl8KTamMiw89jxgi2rSA==} + peerDependencies: + elysia: ^1 + express: ^4 || ^5 + ffmpeg-static: ^5 + hono: ^4 + typescript: ^5 || ^6.0.0 + peerDependenciesMeta: + elysia: + optional: true + express: + optional: true + ffmpeg-static: + optional: true + hono: + optional: true + + '@spectrum-ts/imessage@5.1.0': + resolution: {integrity: sha512-dsXVEjxqEHCffRK63gZKinoLebwrC0MawHfeVCOnuENrge6eJmm5+i3uv2B8G0RxlGImiQRUamk+kGOpK5v3NQ==} + peerDependencies: + '@spectrum-ts/core': ^5.0.0 + typescript: ^5 || ^6.0.0 + + '@spectrum-ts/slack@5.1.0': + resolution: {integrity: sha512-uOLqeJssAthGwNTqhfre8Z5SBCoQK4DSiEylzPc3WiNAvIOV47RzuE5PYfQy4UWU461sL/CmESFXrrGZ7Efl1A==} + peerDependencies: + '@spectrum-ts/core': ^5.0.0 + typescript: ^5 || ^6.0.0 + + '@spectrum-ts/telegram@5.1.0': + resolution: {integrity: sha512-+Y0xZt/6EYFSOGlEBMppUZY7QbhVrDzW8XUbss0zJzDtjcAO9M10nViwTaLWwfFR2OqviKRO9HoB3jKp2X40gQ==} + peerDependencies: + '@spectrum-ts/core': ^5.0.0 + typescript: ^5 || ^6.0.0 + + '@spectrum-ts/terminal@5.1.0': + resolution: {integrity: sha512-x3HsH2qAlU56cWYn/h9ALoGEDogHLYG9d5Xfc6lsNG1IE9A0rrsoz8ujjDlwNqwzJTMqYHrvbzIXEwzE2vyLiQ==} + peerDependencies: + '@spectrum-ts/core': ^5.0.0 + typescript: ^5 || ^6.0.0 + + '@spectrum-ts/whatsapp-business@5.1.0': + resolution: {integrity: sha512-EwUiCLuesGtL8o6I5iDeWNiKewNOHbNQy6zQngINfE7lCmTn9Yu7it/E0n5jIcui+8HUJrB+/dVnnNFkc5uQuQ==} + peerDependencies: + '@spectrum-ts/core': ^5.0.0 + typescript: ^5 || ^6.0.0 + '@stylistic/eslint-plugin@5.10.0': resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2293,8 +2341,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.13: - resolution: {integrity: sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==} + nanoid@3.3.14: + resolution: {integrity: sha512-U9kYi5bpVMEI31yC8iw4bJJp0avcHXA0W8/wNfLfnvJYzihQo2ZRPYPvpAAd570HAcCBjCTN7vnr+v4StKl1IQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2535,8 +2583,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.8.4: - resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} hasBin: true @@ -2582,23 +2630,8 @@ packages: spdx-license-ids@3.0.23: resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} - spectrum-ts@4.2.0: - resolution: {integrity: sha512-2oCHMX+YjeRNaYI+aGamrK16k2v6I5MN83xgTKf8z1ouK4RklNohl+MH7+May9ZxMchr10ZkpdnsyVdUQenDrA==} - peerDependencies: - elysia: ^1 - express: ^4 || ^5 - ffmpeg-static: ^5 - hono: ^4 - typescript: ^5 || ^6.0.0 - peerDependenciesMeta: - elysia: - optional: true - express: - optional: true - ffmpeg-static: - optional: true - hono: - optional: true + spectrum-ts@5.1.0: + resolution: {integrity: sha512-rgRemlXhCZLgGce+zO7/OE+pF5omv2Jx9hL+YU8kdFGBEhTq0FkAhJD6W8H2eSqYuF3Xk4q5hBPh+XqmyY3mGA==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -2631,10 +2664,6 @@ packages: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} - tagged-tag@1.0.0: - resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} - engines: {node: '>=20'} - tapable@2.3.2: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} @@ -2695,10 +2724,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@5.6.0: - resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} - engines: {node: '>=20'} - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -3243,7 +3268,7 @@ snapshots: '@microsoft/tsdoc@0.15.1': {} - '@opentelemetry/api-logs@0.216.0': + '@opentelemetry/api-logs@0.218.0': dependencies: '@opentelemetry/api': 1.9.1 @@ -3258,40 +3283,39 @@ snapshots: '@opentelemetry/api': 1.9.1 '@opentelemetry/semantic-conventions': 1.41.1 - '@opentelemetry/exporter-logs-otlp-http@0.216.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/exporter-logs-otlp-http@0.218.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.216.0 + '@opentelemetry/api-logs': 0.218.0 '@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-exporter-base': 0.216.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.216.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.216.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.218.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.218.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.218.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-http@0.216.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/exporter-trace-otlp-http@0.218.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-exporter-base': 0.216.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.216.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.218.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.218.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.7.1(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-exporter-base@0.216.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/otlp-exporter-base@0.218.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.216.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.218.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer@0.216.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/otlp-transformer@0.218.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.216.0 + '@opentelemetry/api-logs': 0.218.0 '@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.216.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.218.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-metrics': 2.7.1(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.7.1(@opentelemetry/api@1.9.1) - protobufjs: 8.0.1 '@opentelemetry/resources@2.7.1(@opentelemetry/api@1.9.1)': dependencies: @@ -3299,10 +3323,10 @@ snapshots: '@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.41.1 - '@opentelemetry/sdk-logs@0.216.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/sdk-logs@0.218.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.216.0 + '@opentelemetry/api-logs': 0.218.0 '@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.7.1(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.41.1 @@ -3477,15 +3501,15 @@ snapshots: optionalDependencies: better-sqlite3: 12.10.0 - '@photon-ai/otel@0.1.1(typescript@5.9.3)': + '@photon-ai/otel@1.0.0(typescript@5.9.3)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.216.0 + '@opentelemetry/api-logs': 0.218.0 '@opentelemetry/context-async-hooks': 2.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-logs-otlp-http': 0.216.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-http': 0.216.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-logs-otlp-http': 0.218.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-trace-otlp-http': 0.218.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.216.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.218.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.7.1(@opentelemetry/api@1.9.1) typescript: 5.9.3 @@ -3554,6 +3578,58 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} + '@spectrum-ts/core@5.1.0(typescript@5.9.3)': + dependencies: + '@photon-ai/otel': 1.0.0(typescript@5.9.3) + '@photon-ai/proto': 0.2.4 + '@repeaterjs/repeater': 3.0.6 + marked: 18.0.5 + mime-types: 3.0.2 + open-graph-scraper: 6.11.0 + typescript: 5.9.3 + vcf: 2.1.2 + zod: 4.4.3 + + '@spectrum-ts/imessage@5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@photon-ai/advanced-imessage': 0.11.2 + '@photon-ai/imessage-kit': 3.0.0 + '@photon-ai/otel': 1.0.0(typescript@5.9.3) + '@spectrum-ts/core': 5.1.0(typescript@5.9.3) + lru-cache: 11.5.1 + marked: 18.0.5 + typescript: 5.9.3 + zod: 4.4.3 + + '@spectrum-ts/slack@5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@photon-ai/slack': 0.2.0 + '@spectrum-ts/core': 5.1.0(typescript@5.9.3) + typescript: 5.9.3 + zod: 4.4.3 + + '@spectrum-ts/telegram@5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@photon-ai/telegram-ts': 10.0.0 + '@spectrum-ts/core': 5.1.0(typescript@5.9.3) + marked: 18.0.5 + typescript: 5.9.3 + zod: 4.4.3 + + '@spectrum-ts/terminal@5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@spectrum-ts/core': 5.1.0(typescript@5.9.3) + typescript: 5.9.3 + zod: 4.4.3 + + '@spectrum-ts/whatsapp-business@5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@photon-ai/whatsapp-business': 0.1.1 + '@spectrum-ts/core': 5.1.0(typescript@5.9.3) + mime-types: 3.0.2 + typescript: 5.9.3 + zod: 4.4.3 + '@stylistic/eslint-plugin@5.10.0(eslint@9.39.4(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) @@ -3628,8 +3704,8 @@ snapshots: '@typescript-eslint/project-service@8.58.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3) - '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@5.9.3) + '@typescript-eslint/types': 8.58.2 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -3653,7 +3729,7 @@ snapshots: eslint: 9.39.4(jiti@2.6.1) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - semver: 7.8.4 + semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript @@ -3700,7 +3776,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.58.1 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.8.4 + semver: 7.8.5 tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 @@ -5141,7 +5217,7 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.13: {} + nanoid@3.3.14: {} napi-build-utils@2.0.0: optional: true @@ -5328,7 +5404,7 @@ snapshots: postcss@8.5.15: dependencies: - nanoid: 3.3.13 + nanoid: 3.3.14 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -5464,7 +5540,7 @@ snapshots: semver@7.7.4: {} - semver@7.8.4: {} + semver@7.8.5: {} sharp@0.34.5: dependencies: @@ -5544,24 +5620,20 @@ snapshots: spdx-license-ids@3.0.23: {} - spectrum-ts@4.2.0(typescript@5.9.3): + spectrum-ts@5.1.0(typescript@5.9.3): dependencies: - '@photon-ai/advanced-imessage': 0.11.2 - '@photon-ai/imessage-kit': 3.0.0 - '@photon-ai/otel': 0.1.1(typescript@5.9.3) - '@photon-ai/proto': 0.2.4 - '@photon-ai/slack': 0.2.0 - '@photon-ai/telegram-ts': 10.0.0 - '@photon-ai/whatsapp-business': 0.1.1 - '@repeaterjs/repeater': 3.0.6 - lru-cache: 11.5.1 - marked: 18.0.5 - mime-types: 3.0.2 - open-graph-scraper: 6.11.0 - type-fest: 5.6.0 - typescript: 5.9.3 - vcf: 2.1.2 - zod: 4.4.3 + '@spectrum-ts/core': 5.1.0(typescript@5.9.3) + '@spectrum-ts/imessage': 5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3) + '@spectrum-ts/slack': 5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3) + '@spectrum-ts/telegram': 5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3) + '@spectrum-ts/terminal': 5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3) + '@spectrum-ts/whatsapp-business': 5.1.0(@spectrum-ts/core@5.1.0(typescript@5.9.3))(typescript@5.9.3) + transitivePeerDependencies: + - elysia + - express + - ffmpeg-static + - hono + - typescript string-width@4.2.3: dependencies: @@ -5593,8 +5665,6 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tagged-tag@1.0.0: {} - tapable@2.3.2: {} tar-fs@2.1.4: @@ -5662,10 +5732,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@5.6.0: - dependencies: - tagged-tag: 1.0.0 - typescript@5.9.3: {} ufo@1.6.3: {}