agent-messenger 2.5.0 → 2.6.1
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/.claude-plugin/plugin.json +1 -1
- package/.github/workflows/ci.yml +44 -0
- package/.oxlintrc.json +1 -1
- package/bun.lock +0 -27
- package/bunfig.toml +0 -3
- package/dist/package.json +1 -2
- package/dist/src/platforms/kakaotalk/client.d.ts +4 -1
- package/dist/src/platforms/kakaotalk/client.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/client.js +21 -7
- package/dist/src/platforms/kakaotalk/client.js.map +1 -1
- package/dist/src/platforms/kakaotalk/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/commands/auth.js +24 -55
- package/dist/src/platforms/kakaotalk/commands/auth.js.map +1 -1
- package/dist/src/platforms/kakaotalk/credential-manager.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/credential-manager.js +1 -0
- package/dist/src/platforms/kakaotalk/credential-manager.js.map +1 -1
- package/dist/src/platforms/kakaotalk/index.d.ts +1 -1
- package/dist/src/platforms/kakaotalk/index.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/index.js.map +1 -1
- package/dist/src/platforms/kakaotalk/listener.js +2 -2
- package/dist/src/platforms/kakaotalk/listener.js.map +1 -1
- package/dist/src/platforms/kakaotalk/protocol/config.d.ts +8 -2
- package/dist/src/platforms/kakaotalk/protocol/config.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/protocol/config.js +15 -2
- package/dist/src/platforms/kakaotalk/protocol/config.js.map +1 -1
- package/dist/src/platforms/kakaotalk/protocol/session.d.ts +3 -1
- package/dist/src/platforms/kakaotalk/protocol/session.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/protocol/session.js +13 -10
- package/dist/src/platforms/kakaotalk/protocol/session.js.map +1 -1
- package/dist/src/platforms/kakaotalk/types.d.ts +10 -0
- package/dist/src/platforms/kakaotalk/types.d.ts.map +1 -1
- package/dist/src/platforms/kakaotalk/types.js +1 -0
- package/dist/src/platforms/kakaotalk/types.js.map +1 -1
- package/dist/src/platforms/line/client.js +2 -2
- package/dist/src/platforms/line/client.js.map +1 -1
- package/dist/src/tui/adapters/kakaotalk-adapter.d.ts.map +1 -1
- package/dist/src/tui/adapters/kakaotalk-adapter.js +5 -2
- package/dist/src/tui/adapters/kakaotalk-adapter.js.map +1 -1
- package/dist/src/vendor/linejs/LICENSE +21 -0
- package/dist/src/vendor/linejs/README.md +89 -0
- package/dist/src/vendor/linejs/_dist/base/core/mod.d.ts +125 -0
- package/dist/src/vendor/linejs/_dist/base/core/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/core/typed-event-emitter/index.d.ts +13 -0
- package/dist/src/vendor/linejs/_dist/base/core/typed-event-emitter/index.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/continue.d.ts +10 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/continue.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/devices.d.ts +8 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/devices.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/error.d.ts +8 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/error.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/events.d.ts +22 -0
- package/dist/src/vendor/linejs/_dist/base/core/utils/events.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/e2ee/mod.d.ts +64 -0
- package/dist/src/vendor/linejs/_dist/base/e2ee/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/login/mod.d.ts +138 -0
- package/dist/src/vendor/linejs/_dist/base/login/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/mod.d.ts +6 -0
- package/dist/src/vendor/linejs/_dist/base/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/obs/mod.d.ts +100 -0
- package/dist/src/vendor/linejs/_dist/base/obs/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/polling/mod.d.ts +55 -0
- package/dist/src/vendor/linejs/_dist/base/polling/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/push/conn.d.ts +39 -0
- package/dist/src/vendor/linejs/_dist/base/push/conn.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/push/connData.d.ts +19 -0
- package/dist/src/vendor/linejs/_dist/base/push/connData.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/push/connManager.d.ts +43 -0
- package/dist/src/vendor/linejs/_dist/base/push/connManager.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/push/mod.d.ts +2 -0
- package/dist/src/vendor/linejs/_dist/base/push/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/request/mod.d.ts +45 -0
- package/dist/src/vendor/linejs/_dist/base/request/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/auth/mod.d.ts +32 -0
- package/dist/src/vendor/linejs/_dist/base/service/auth/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/call/mod.d.ts +29 -0
- package/dist/src/vendor/linejs/_dist/base/service/call/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/channel/mod.d.ts +28 -0
- package/dist/src/vendor/linejs/_dist/base/service/channel/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/liff/mod.d.ts +51 -0
- package/dist/src/vendor/linejs/_dist/base/service/liff/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/livetalk/mod.d.ts +38 -0
- package/dist/src/vendor/linejs/_dist/base/service/livetalk/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/mod.d.ts +9 -0
- package/dist/src/vendor/linejs/_dist/base/service/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/relation/mod.d.ts +30 -0
- package/dist/src/vendor/linejs/_dist/base/service/relation/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/square/mod.d.ts +162 -0
- package/dist/src/vendor/linejs/_dist/base/service/square/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/talk/mod.d.ts +194 -0
- package/dist/src/vendor/linejs/_dist/base/service/talk/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/service/types.d.ts +9 -0
- package/dist/src/vendor/linejs/_dist/base/service/types.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/storage/base.d.ts +34 -0
- package/dist/src/vendor/linejs/_dist/base/storage/base.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/storage/file.d.ts +20 -0
- package/dist/src/vendor/linejs/_dist/base/storage/file.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/storage/memory.d.ts +19 -0
- package/dist/src/vendor/linejs/_dist/base/storage/memory.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/storage/mod.d.ts +4 -0
- package/dist/src/vendor/linejs/_dist/base/storage/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/mod.d.ts +14 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/declares.d.ts +20 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/declares.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/read.d.ts +7 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/read.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/struct.d.ts +1109 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/struct.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/write.d.ts +3 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/readwrite/write.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/rename/parser.d.ts +7 -0
- package/dist/src/vendor/linejs/_dist/base/thrift/rename/parser.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/timeline/mod.d.ts +83 -0
- package/dist/src/vendor/linejs/_dist/base/timeline/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/base/types.d.ts +11 -0
- package/dist/src/vendor/linejs/_dist/base/types.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/client.d.ts +70 -0
- package/dist/src/vendor/linejs/_dist/client/client.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/chat/fetcher.d.ts +5 -0
- package/dist/src/vendor/linejs/_dist/client/features/chat/fetcher.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/chat/mod.d.ts +58 -0
- package/dist/src/vendor/linejs/_dist/client/features/chat/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/internal-types.d.ts +5 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/internal-types.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/mod.d.ts +3 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/square.d.ts +94 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/square.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/talk.d.ts +87 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/talk.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/types.d.ts +29 -0
- package/dist/src/vendor/linejs/_dist/client/features/message/types.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/square/mod.d.ts +65 -0
- package/dist/src/vendor/linejs/_dist/client/features/square/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/features/user/mod.d.ts +10 -0
- package/dist/src/vendor/linejs/_dist/client/features/user/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/login.d.ts +41 -0
- package/dist/src/vendor/linejs/_dist/client/login.d.ts.map +1 -0
- package/dist/src/vendor/linejs/_dist/client/mod.d.ts +3 -0
- package/dist/src/vendor/linejs/_dist/client/mod.d.ts.map +1 -0
- package/dist/src/vendor/linejs/base/core/mod.js +197 -0
- package/dist/src/vendor/linejs/base/core/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/core/typed-event-emitter/index.js +43 -0
- package/dist/src/vendor/linejs/base/core/typed-event-emitter/index.js.map +1 -0
- package/dist/src/vendor/linejs/base/core/utils/continue.js +42 -0
- package/dist/src/vendor/linejs/base/core/utils/continue.js.map +1 -0
- package/dist/src/vendor/linejs/base/core/utils/devices.js +67 -0
- package/dist/src/vendor/linejs/base/core/utils/devices.js.map +1 -0
- package/dist/src/vendor/linejs/base/core/utils/error.js +11 -0
- package/dist/src/vendor/linejs/base/core/utils/error.js.map +1 -0
- package/dist/src/vendor/linejs/base/core/utils/events.js +1 -0
- package/dist/src/vendor/linejs/base/core/utils/events.js.map +1 -0
- package/dist/src/vendor/linejs/base/e2ee/mod.js +817 -0
- package/dist/src/vendor/linejs/base/e2ee/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/login/mod.js +594 -0
- package/dist/src/vendor/linejs/base/login/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/login/regex.js +6 -0
- package/dist/src/vendor/linejs/base/login/regex.js.map +1 -0
- package/dist/src/vendor/linejs/base/login/rsa-verify.js +73 -0
- package/dist/src/vendor/linejs/base/login/rsa-verify.js.map +1 -0
- package/dist/src/vendor/linejs/base/mod.js +6 -0
- package/dist/src/vendor/linejs/base/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/obs/mime.js +138 -0
- package/dist/src/vendor/linejs/base/obs/mime.js.map +1 -0
- package/dist/src/vendor/linejs/base/obs/mod.js +309 -0
- package/dist/src/vendor/linejs/base/obs/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/polling/mod.js +153 -0
- package/dist/src/vendor/linejs/base/polling/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/push/conn.js +254 -0
- package/dist/src/vendor/linejs/base/push/conn.js.map +1 -0
- package/dist/src/vendor/linejs/base/push/connData.js +81 -0
- package/dist/src/vendor/linejs/base/push/connData.js.map +1 -0
- package/dist/src/vendor/linejs/base/push/connManager.js +422 -0
- package/dist/src/vendor/linejs/base/push/connManager.js.map +1 -0
- package/dist/src/vendor/linejs/base/push/mod.js +2 -0
- package/dist/src/vendor/linejs/base/push/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/request/mod.js +195 -0
- package/dist/src/vendor/linejs/base/request/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/auth/mod.js +83 -0
- package/dist/src/vendor/linejs/base/service/auth/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/call/mod.js +63 -0
- package/dist/src/vendor/linejs/base/service/call/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/channel/mod.js +52 -0
- package/dist/src/vendor/linejs/base/service/channel/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/liff/mod.js +240 -0
- package/dist/src/vendor/linejs/base/service/liff/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/livetalk/mod.js +90 -0
- package/dist/src/vendor/linejs/base/service/livetalk/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/mod.js +9 -0
- package/dist/src/vendor/linejs/base/service/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/relation/mod.js +86 -0
- package/dist/src/vendor/linejs/base/service/relation/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/square/mod.js +414 -0
- package/dist/src/vendor/linejs/base/service/square/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/talk/mod.js +525 -0
- package/dist/src/vendor/linejs/base/service/talk/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/service/types.js +1 -0
- package/dist/src/vendor/linejs/base/service/types.js.map +1 -0
- package/dist/src/vendor/linejs/base/storage/base.js +5 -0
- package/dist/src/vendor/linejs/base/storage/base.js.map +1 -0
- package/dist/src/vendor/linejs/base/storage/file.js +63 -0
- package/dist/src/vendor/linejs/base/storage/file.js.map +1 -0
- package/dist/src/vendor/linejs/base/storage/memory.js +46 -0
- package/dist/src/vendor/linejs/base/storage/memory.js.map +1 -0
- package/dist/src/vendor/linejs/base/storage/mod.js +4 -0
- package/dist/src/vendor/linejs/base/storage/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/thrift/README.md +53 -0
- package/dist/src/vendor/linejs/base/thrift/mod.js +22 -0
- package/dist/src/vendor/linejs/base/thrift/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/declares.js +54 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/declares.js.map +1 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/read.js +115 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/read.js.map +1 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/struct.js +14449 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/struct.js.map +1 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/tmc.js +460 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/tmc.js.map +1 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/write.js +234 -0
- package/dist/src/vendor/linejs/base/thrift/readwrite/write.js.map +1 -0
- package/dist/src/vendor/linejs/base/thrift/rename/parser.js +121 -0
- package/dist/src/vendor/linejs/base/thrift/rename/parser.js.map +1 -0
- package/dist/src/vendor/linejs/base/timeline/mod.js +360 -0
- package/dist/src/vendor/linejs/base/timeline/mod.js.map +1 -0
- package/dist/src/vendor/linejs/base/types.js +8 -0
- package/dist/src/vendor/linejs/base/types.js.map +1 -0
- package/dist/src/vendor/linejs/client/client.js +185 -0
- package/dist/src/vendor/linejs/client/client.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/chat/fetcher.js +29 -0
- package/dist/src/vendor/linejs/client/features/chat/fetcher.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/chat/mod.js +118 -0
- package/dist/src/vendor/linejs/client/features/chat/mod.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/message/internal-types.js +1 -0
- package/dist/src/vendor/linejs/client/features/message/internal-types.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/message/mod.js +5 -0
- package/dist/src/vendor/linejs/client/features/message/mod.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/message/square.js +464 -0
- package/dist/src/vendor/linejs/client/features/message/square.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/message/talk.js +340 -0
- package/dist/src/vendor/linejs/client/features/message/talk.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/message/types.js +1 -0
- package/dist/src/vendor/linejs/client/features/message/types.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/message/utils.js +83 -0
- package/dist/src/vendor/linejs/client/features/message/utils.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/square/mod.js +173 -0
- package/dist/src/vendor/linejs/client/features/square/mod.js.map +1 -0
- package/dist/src/vendor/linejs/client/features/user/mod.js +9 -0
- package/dist/src/vendor/linejs/client/features/user/mod.js.map +1 -0
- package/dist/src/vendor/linejs/client/login.js +36 -0
- package/dist/src/vendor/linejs/client/login.js.map +1 -0
- package/dist/src/vendor/linejs/client/mod.js +3 -0
- package/dist/src/vendor/linejs/client/mod.js.map +1 -0
- package/dist/src/vendor/linejs/deno.json +24 -0
- package/dist/src/vendor/linejs/package.json +35 -0
- package/dist/src/vendor/linejs-types/LICENSE +21 -0
- package/dist/src/vendor/linejs-types/README.md +11 -0
- package/dist/src/vendor/linejs-types/_dist/line_types.d.ts +11629 -0
- package/dist/src/vendor/linejs-types/_dist/line_types.d.ts.map +1 -0
- package/dist/src/vendor/linejs-types/_dist/thrift.d.ts +4 -0
- package/dist/src/vendor/linejs-types/_dist/thrift.d.ts.map +1 -0
- package/dist/src/vendor/linejs-types/deno.json +12 -0
- package/dist/src/vendor/linejs-types/line_types.js +2704 -0
- package/dist/src/vendor/linejs-types/line_types.js.map +1 -0
- package/dist/src/vendor/linejs-types/package.json +20 -0
- package/dist/src/vendor/linejs-types/thrift.js +37670 -0
- package/dist/src/vendor/linejs-types/thrift.js.map +1 -0
- package/dist/src/vendor/loose-types/LICENSE +21 -0
- package/dist/src/vendor/loose-types/README.md +30 -0
- package/dist/src/vendor/loose-types/_dist/mod.d.ts +23 -0
- package/dist/src/vendor/loose-types/_dist/mod.d.ts.map +1 -0
- package/dist/src/vendor/loose-types/deno.json +7 -0
- package/dist/src/vendor/loose-types/mod.js +7 -0
- package/dist/src/vendor/loose-types/mod.js.map +1 -0
- package/dist/src/vendor/loose-types/package.json +14 -0
- package/dist/src/vendor/runtime-shims.d.ts +13 -0
- package/docs/content/docs/cli/kakaotalk.mdx +3 -39
- package/e2e/config.ts +1 -1
- package/package.json +1 -2
- package/scripts/postbuild.ts +5 -1
- package/skills/agent-channeltalk/SKILL.md +1 -1
- package/skills/agent-channeltalkbot/SKILL.md +1 -1
- package/skills/agent-discord/SKILL.md +1 -1
- package/skills/agent-discordbot/SKILL.md +1 -1
- package/skills/agent-instagram/SKILL.md +1 -1
- package/skills/agent-kakaotalk/SKILL.md +11 -63
- package/skills/agent-kakaotalk/references/authentication.md +4 -69
- package/skills/agent-kakaotalk/references/common-patterns.md +13 -0
- package/skills/agent-line/SKILL.md +1 -1
- package/skills/agent-slack/SKILL.md +1 -1
- package/skills/agent-slackbot/SKILL.md +1 -1
- package/skills/agent-teams/SKILL.md +1 -1
- package/skills/agent-telegram/SKILL.md +1 -1
- package/skills/agent-webex/SKILL.md +1 -1
- package/skills/agent-wechatbot/SKILL.md +1 -1
- package/skills/agent-whatsapp/SKILL.md +1 -1
- package/skills/agent-whatsappbot/SKILL.md +1 -1
- package/src/platforms/kakaotalk/client.ts +25 -10
- package/src/platforms/kakaotalk/commands/auth.ts +22 -73
- package/src/platforms/kakaotalk/credential-manager.ts +1 -0
- package/src/platforms/kakaotalk/index.ts +1 -0
- package/src/platforms/kakaotalk/listener.test.ts +2 -2
- package/src/platforms/kakaotalk/listener.ts +2 -2
- package/src/platforms/kakaotalk/protocol/config.ts +26 -2
- package/src/platforms/kakaotalk/protocol/session.ts +16 -10
- package/src/platforms/kakaotalk/types.ts +4 -0
- package/src/platforms/line/client.ts +2 -2
- package/src/tui/adapters/kakaotalk-adapter.ts +5 -2
- package/src/vendor/linejs/LICENSE +21 -0
- package/src/vendor/linejs/README.md +89 -0
- package/src/vendor/linejs/_dist/base/core/mod.d.ts +125 -0
- package/src/vendor/linejs/_dist/base/core/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/core/typed-event-emitter/index.d.ts +13 -0
- package/src/vendor/linejs/_dist/base/core/typed-event-emitter/index.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/core/utils/continue.d.ts +10 -0
- package/src/vendor/linejs/_dist/base/core/utils/continue.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/core/utils/devices.d.ts +8 -0
- package/src/vendor/linejs/_dist/base/core/utils/devices.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/core/utils/error.d.ts +8 -0
- package/src/vendor/linejs/_dist/base/core/utils/error.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/core/utils/events.d.ts +22 -0
- package/src/vendor/linejs/_dist/base/core/utils/events.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/e2ee/mod.d.ts +64 -0
- package/src/vendor/linejs/_dist/base/e2ee/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/login/mod.d.ts +138 -0
- package/src/vendor/linejs/_dist/base/login/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/mod.d.ts +6 -0
- package/src/vendor/linejs/_dist/base/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/obs/mod.d.ts +100 -0
- package/src/vendor/linejs/_dist/base/obs/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/polling/mod.d.ts +55 -0
- package/src/vendor/linejs/_dist/base/polling/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/push/conn.d.ts +39 -0
- package/src/vendor/linejs/_dist/base/push/conn.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/push/connData.d.ts +19 -0
- package/src/vendor/linejs/_dist/base/push/connData.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/push/connManager.d.ts +43 -0
- package/src/vendor/linejs/_dist/base/push/connManager.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/push/mod.d.ts +2 -0
- package/src/vendor/linejs/_dist/base/push/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/request/mod.d.ts +45 -0
- package/src/vendor/linejs/_dist/base/request/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/auth/mod.d.ts +32 -0
- package/src/vendor/linejs/_dist/base/service/auth/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/call/mod.d.ts +29 -0
- package/src/vendor/linejs/_dist/base/service/call/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/channel/mod.d.ts +28 -0
- package/src/vendor/linejs/_dist/base/service/channel/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/liff/mod.d.ts +51 -0
- package/src/vendor/linejs/_dist/base/service/liff/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/livetalk/mod.d.ts +38 -0
- package/src/vendor/linejs/_dist/base/service/livetalk/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/mod.d.ts +9 -0
- package/src/vendor/linejs/_dist/base/service/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/relation/mod.d.ts +30 -0
- package/src/vendor/linejs/_dist/base/service/relation/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/square/mod.d.ts +162 -0
- package/src/vendor/linejs/_dist/base/service/square/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/talk/mod.d.ts +194 -0
- package/src/vendor/linejs/_dist/base/service/talk/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/service/types.d.ts +9 -0
- package/src/vendor/linejs/_dist/base/service/types.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/storage/base.d.ts +34 -0
- package/src/vendor/linejs/_dist/base/storage/base.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/storage/file.d.ts +20 -0
- package/src/vendor/linejs/_dist/base/storage/file.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/storage/memory.d.ts +19 -0
- package/src/vendor/linejs/_dist/base/storage/memory.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/storage/mod.d.ts +4 -0
- package/src/vendor/linejs/_dist/base/storage/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/thrift/mod.d.ts +14 -0
- package/src/vendor/linejs/_dist/base/thrift/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/declares.d.ts +20 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/declares.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/read.d.ts +7 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/read.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/struct.d.ts +1109 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/struct.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/write.d.ts +3 -0
- package/src/vendor/linejs/_dist/base/thrift/readwrite/write.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/thrift/rename/parser.d.ts +7 -0
- package/src/vendor/linejs/_dist/base/thrift/rename/parser.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/timeline/mod.d.ts +83 -0
- package/src/vendor/linejs/_dist/base/timeline/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/base/types.d.ts +11 -0
- package/src/vendor/linejs/_dist/base/types.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/client.d.ts +70 -0
- package/src/vendor/linejs/_dist/client/client.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/chat/fetcher.d.ts +5 -0
- package/src/vendor/linejs/_dist/client/features/chat/fetcher.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/chat/mod.d.ts +58 -0
- package/src/vendor/linejs/_dist/client/features/chat/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/message/internal-types.d.ts +5 -0
- package/src/vendor/linejs/_dist/client/features/message/internal-types.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/message/mod.d.ts +3 -0
- package/src/vendor/linejs/_dist/client/features/message/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/message/square.d.ts +94 -0
- package/src/vendor/linejs/_dist/client/features/message/square.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/message/talk.d.ts +87 -0
- package/src/vendor/linejs/_dist/client/features/message/talk.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/message/types.d.ts +29 -0
- package/src/vendor/linejs/_dist/client/features/message/types.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/square/mod.d.ts +65 -0
- package/src/vendor/linejs/_dist/client/features/square/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/features/user/mod.d.ts +10 -0
- package/src/vendor/linejs/_dist/client/features/user/mod.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/login.d.ts +41 -0
- package/src/vendor/linejs/_dist/client/login.d.ts.map +1 -0
- package/src/vendor/linejs/_dist/client/mod.d.ts +3 -0
- package/src/vendor/linejs/_dist/client/mod.d.ts.map +1 -0
- package/src/vendor/linejs/base/core/mod.js +197 -0
- package/src/vendor/linejs/base/core/mod.js.map +1 -0
- package/src/vendor/linejs/base/core/typed-event-emitter/index.js +43 -0
- package/src/vendor/linejs/base/core/typed-event-emitter/index.js.map +1 -0
- package/src/vendor/linejs/base/core/utils/continue.js +42 -0
- package/src/vendor/linejs/base/core/utils/continue.js.map +1 -0
- package/src/vendor/linejs/base/core/utils/devices.js +67 -0
- package/src/vendor/linejs/base/core/utils/devices.js.map +1 -0
- package/src/vendor/linejs/base/core/utils/error.js +11 -0
- package/src/vendor/linejs/base/core/utils/error.js.map +1 -0
- package/src/vendor/linejs/base/core/utils/events.js +1 -0
- package/src/vendor/linejs/base/core/utils/events.js.map +1 -0
- package/src/vendor/linejs/base/e2ee/mod.js +817 -0
- package/src/vendor/linejs/base/e2ee/mod.js.map +1 -0
- package/src/vendor/linejs/base/login/mod.js +594 -0
- package/src/vendor/linejs/base/login/mod.js.map +1 -0
- package/src/vendor/linejs/base/login/regex.js +6 -0
- package/src/vendor/linejs/base/login/regex.js.map +1 -0
- package/src/vendor/linejs/base/login/rsa-verify.js +73 -0
- package/src/vendor/linejs/base/login/rsa-verify.js.map +1 -0
- package/src/vendor/linejs/base/mod.js +6 -0
- package/src/vendor/linejs/base/mod.js.map +1 -0
- package/src/vendor/linejs/base/obs/mime.js +138 -0
- package/src/vendor/linejs/base/obs/mime.js.map +1 -0
- package/src/vendor/linejs/base/obs/mod.js +309 -0
- package/src/vendor/linejs/base/obs/mod.js.map +1 -0
- package/src/vendor/linejs/base/polling/mod.js +153 -0
- package/src/vendor/linejs/base/polling/mod.js.map +1 -0
- package/src/vendor/linejs/base/push/conn.js +254 -0
- package/src/vendor/linejs/base/push/conn.js.map +1 -0
- package/src/vendor/linejs/base/push/connData.js +81 -0
- package/src/vendor/linejs/base/push/connData.js.map +1 -0
- package/src/vendor/linejs/base/push/connManager.js +422 -0
- package/src/vendor/linejs/base/push/connManager.js.map +1 -0
- package/src/vendor/linejs/base/push/mod.js +2 -0
- package/src/vendor/linejs/base/push/mod.js.map +1 -0
- package/src/vendor/linejs/base/request/mod.js +195 -0
- package/src/vendor/linejs/base/request/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/auth/mod.js +83 -0
- package/src/vendor/linejs/base/service/auth/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/call/mod.js +63 -0
- package/src/vendor/linejs/base/service/call/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/channel/mod.js +52 -0
- package/src/vendor/linejs/base/service/channel/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/liff/mod.js +240 -0
- package/src/vendor/linejs/base/service/liff/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/livetalk/mod.js +90 -0
- package/src/vendor/linejs/base/service/livetalk/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/mod.js +9 -0
- package/src/vendor/linejs/base/service/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/relation/mod.js +86 -0
- package/src/vendor/linejs/base/service/relation/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/square/mod.js +414 -0
- package/src/vendor/linejs/base/service/square/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/talk/mod.js +525 -0
- package/src/vendor/linejs/base/service/talk/mod.js.map +1 -0
- package/src/vendor/linejs/base/service/types.js +1 -0
- package/src/vendor/linejs/base/service/types.js.map +1 -0
- package/src/vendor/linejs/base/storage/base.js +5 -0
- package/src/vendor/linejs/base/storage/base.js.map +1 -0
- package/src/vendor/linejs/base/storage/file.js +63 -0
- package/src/vendor/linejs/base/storage/file.js.map +1 -0
- package/src/vendor/linejs/base/storage/memory.js +46 -0
- package/src/vendor/linejs/base/storage/memory.js.map +1 -0
- package/src/vendor/linejs/base/storage/mod.js +4 -0
- package/src/vendor/linejs/base/storage/mod.js.map +1 -0
- package/src/vendor/linejs/base/thrift/README.md +53 -0
- package/src/vendor/linejs/base/thrift/mod.js +22 -0
- package/src/vendor/linejs/base/thrift/mod.js.map +1 -0
- package/src/vendor/linejs/base/thrift/readwrite/declares.js +54 -0
- package/src/vendor/linejs/base/thrift/readwrite/declares.js.map +1 -0
- package/src/vendor/linejs/base/thrift/readwrite/read.js +115 -0
- package/src/vendor/linejs/base/thrift/readwrite/read.js.map +1 -0
- package/src/vendor/linejs/base/thrift/readwrite/struct.js +14449 -0
- package/src/vendor/linejs/base/thrift/readwrite/struct.js.map +1 -0
- package/src/vendor/linejs/base/thrift/readwrite/tmc.js +460 -0
- package/src/vendor/linejs/base/thrift/readwrite/tmc.js.map +1 -0
- package/src/vendor/linejs/base/thrift/readwrite/write.js +234 -0
- package/src/vendor/linejs/base/thrift/readwrite/write.js.map +1 -0
- package/src/vendor/linejs/base/thrift/rename/parser.js +121 -0
- package/src/vendor/linejs/base/thrift/rename/parser.js.map +1 -0
- package/src/vendor/linejs/base/timeline/mod.js +360 -0
- package/src/vendor/linejs/base/timeline/mod.js.map +1 -0
- package/src/vendor/linejs/base/types.js +8 -0
- package/src/vendor/linejs/base/types.js.map +1 -0
- package/src/vendor/linejs/client/client.js +185 -0
- package/src/vendor/linejs/client/client.js.map +1 -0
- package/src/vendor/linejs/client/features/chat/fetcher.js +29 -0
- package/src/vendor/linejs/client/features/chat/fetcher.js.map +1 -0
- package/src/vendor/linejs/client/features/chat/mod.js +118 -0
- package/src/vendor/linejs/client/features/chat/mod.js.map +1 -0
- package/src/vendor/linejs/client/features/message/internal-types.js +1 -0
- package/src/vendor/linejs/client/features/message/internal-types.js.map +1 -0
- package/src/vendor/linejs/client/features/message/mod.js +5 -0
- package/src/vendor/linejs/client/features/message/mod.js.map +1 -0
- package/src/vendor/linejs/client/features/message/square.js +464 -0
- package/src/vendor/linejs/client/features/message/square.js.map +1 -0
- package/src/vendor/linejs/client/features/message/talk.js +340 -0
- package/src/vendor/linejs/client/features/message/talk.js.map +1 -0
- package/src/vendor/linejs/client/features/message/types.js +1 -0
- package/src/vendor/linejs/client/features/message/types.js.map +1 -0
- package/src/vendor/linejs/client/features/message/utils.js +83 -0
- package/src/vendor/linejs/client/features/message/utils.js.map +1 -0
- package/src/vendor/linejs/client/features/square/mod.js +173 -0
- package/src/vendor/linejs/client/features/square/mod.js.map +1 -0
- package/src/vendor/linejs/client/features/user/mod.js +9 -0
- package/src/vendor/linejs/client/features/user/mod.js.map +1 -0
- package/src/vendor/linejs/client/login.js +36 -0
- package/src/vendor/linejs/client/login.js.map +1 -0
- package/src/vendor/linejs/client/mod.js +3 -0
- package/src/vendor/linejs/client/mod.js.map +1 -0
- package/src/vendor/linejs/deno.json +24 -0
- package/src/vendor/linejs/package.json +35 -0
- package/src/vendor/linejs-types/LICENSE +21 -0
- package/src/vendor/linejs-types/README.md +11 -0
- package/src/vendor/linejs-types/_dist/line_types.d.ts +11629 -0
- package/src/vendor/linejs-types/_dist/line_types.d.ts.map +1 -0
- package/src/vendor/linejs-types/_dist/thrift.d.ts +4 -0
- package/src/vendor/linejs-types/_dist/thrift.d.ts.map +1 -0
- package/src/vendor/linejs-types/deno.json +12 -0
- package/src/vendor/linejs-types/line_types.js +2704 -0
- package/src/vendor/linejs-types/line_types.js.map +1 -0
- package/src/vendor/linejs-types/package.json +20 -0
- package/src/vendor/linejs-types/thrift.js +37670 -0
- package/src/vendor/linejs-types/thrift.js.map +1 -0
- package/src/vendor/loose-types/LICENSE +21 -0
- package/src/vendor/loose-types/README.md +30 -0
- package/src/vendor/loose-types/_dist/mod.d.ts +23 -0
- package/src/vendor/loose-types/_dist/mod.d.ts.map +1 -0
- package/src/vendor/loose-types/deno.json +7 -0
- package/src/vendor/loose-types/mod.js +7 -0
- package/src/vendor/loose-types/mod.js.map +1 -0
- package/src/vendor/loose-types/package.json +14 -0
- package/src/vendor/runtime-shims.d.ts +13 -0
- package/tsconfig.json +7 -1
|
@@ -6,10 +6,10 @@ import { join } from 'node:path'
|
|
|
6
6
|
|
|
7
7
|
import { warn } from '@/shared/utils/stderr'
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { LANG, PC_OS_NAME, getLocoDeviceConfig } from './protocol/config'
|
|
10
10
|
import { LocoSession } from './protocol/session'
|
|
11
11
|
import type { ChatListResponse, LoginListResponse, SyncState } from './protocol/types'
|
|
12
|
-
import type { KakaoChat, KakaoMessage, KakaoProfile, KakaoSendResult } from './types'
|
|
12
|
+
import type { KakaoChat, KakaoDeviceType, KakaoMessage, KakaoProfile, KakaoSendResult } from './types'
|
|
13
13
|
|
|
14
14
|
export class KakaoTalkError extends Error {
|
|
15
15
|
code: string
|
|
@@ -231,12 +231,13 @@ export class KakaoTalkClient {
|
|
|
231
231
|
private oauthToken: string | null = null
|
|
232
232
|
private userId: string | null = null
|
|
233
233
|
private deviceUuid: string | null = null
|
|
234
|
+
private deviceType: KakaoDeviceType = 'tablet'
|
|
234
235
|
private state: SessionState | null = null
|
|
235
236
|
private initPromise: Promise<SessionState> | null = null
|
|
236
237
|
private closed = false
|
|
237
238
|
|
|
238
239
|
async login(
|
|
239
|
-
credentials?: { oauthToken: string; userId: string; deviceUuid?: string },
|
|
240
|
+
credentials?: { oauthToken: string; userId: string; deviceUuid?: string; deviceType?: KakaoDeviceType },
|
|
240
241
|
accountId?: string,
|
|
241
242
|
): Promise<this> {
|
|
242
243
|
if (credentials) {
|
|
@@ -245,19 +246,26 @@ export class KakaoTalkClient {
|
|
|
245
246
|
this.oauthToken = credentials.oauthToken
|
|
246
247
|
this.userId = credentials.userId
|
|
247
248
|
this.deviceUuid = credentials.deviceUuid ?? `agent-messenger-${credentials.userId}`
|
|
249
|
+
this.deviceType = credentials.deviceType ?? 'tablet'
|
|
248
250
|
return this
|
|
249
251
|
}
|
|
250
252
|
const { ensureKakaoAuth } = await import('./ensure-auth')
|
|
251
253
|
const account = await ensureKakaoAuth(accountId)
|
|
252
|
-
return this.login({
|
|
254
|
+
return this.login({
|
|
255
|
+
oauthToken: account.oauth_token,
|
|
256
|
+
userId: account.user_id,
|
|
257
|
+
deviceUuid: account.device_uuid,
|
|
258
|
+
deviceType: account.device_type,
|
|
259
|
+
})
|
|
253
260
|
}
|
|
254
261
|
|
|
255
|
-
getCredentials(): { oauthToken: string; userId: string; deviceUuid: string } {
|
|
262
|
+
getCredentials(): { oauthToken: string; userId: string; deviceUuid: string; deviceType: KakaoDeviceType } {
|
|
256
263
|
this.ensureAuth()
|
|
257
264
|
return {
|
|
258
265
|
oauthToken: this.oauthToken!,
|
|
259
266
|
userId: this.userId!,
|
|
260
267
|
deviceUuid: this.deviceUuid!,
|
|
268
|
+
deviceType: this.deviceType,
|
|
261
269
|
}
|
|
262
270
|
}
|
|
263
271
|
|
|
@@ -315,7 +323,7 @@ export class KakaoTalkClient {
|
|
|
315
323
|
const session = new LocoSession()
|
|
316
324
|
try {
|
|
317
325
|
const syncState = await loadSyncState(this.deviceUuid!)
|
|
318
|
-
const loginResult = await session.login(this.oauthToken!, this.userId!, this.deviceUuid!, syncState)
|
|
326
|
+
const loginResult = await session.login(this.oauthToken!, this.userId!, this.deviceUuid!, syncState, this.deviceType)
|
|
319
327
|
|
|
320
328
|
const newSyncState = mergeSyncState(syncState, loginResult)
|
|
321
329
|
await saveSyncState(this.deviceUuid!, newSyncState)
|
|
@@ -500,17 +508,24 @@ export class KakaoTalkClient {
|
|
|
500
508
|
async getProfile(): Promise<KakaoProfile> {
|
|
501
509
|
this.ensureAuth()
|
|
502
510
|
try {
|
|
511
|
+
const deviceConfig = getLocoDeviceConfig(this.deviceType)
|
|
512
|
+
const isPC = deviceConfig.os !== 'android'
|
|
513
|
+
const apiPrefix = isPC ? 'mac' : 'android'
|
|
514
|
+
const userAgent = isPC
|
|
515
|
+
? `KT/${deviceConfig.appVersion} Md/${PC_OS_NAME} ${LANG}`
|
|
516
|
+
: `KT/${deviceConfig.appVersion} An/13 ${LANG}`
|
|
517
|
+
|
|
503
518
|
const headers = {
|
|
504
519
|
Authorization: `${this.oauthToken}-${this.deviceUuid}`,
|
|
505
|
-
A: `${
|
|
506
|
-
'User-Agent':
|
|
520
|
+
A: `${deviceConfig.os}/${deviceConfig.appVersion}/${LANG}`,
|
|
521
|
+
'User-Agent': userAgent,
|
|
507
522
|
Accept: '*/*',
|
|
508
523
|
'Accept-Language': LANG,
|
|
509
524
|
}
|
|
510
525
|
|
|
511
526
|
const [profileRes, settingsRes] = await Promise.all([
|
|
512
|
-
fetch(
|
|
513
|
-
fetch(
|
|
527
|
+
fetch(`https://katalk.kakao.com/${apiPrefix}/profile3/me.json`, { headers }),
|
|
528
|
+
fetch(`https://katalk.kakao.com/${apiPrefix}/account/more_settings.json?since=0&lang=ko`, { headers }),
|
|
514
529
|
])
|
|
515
530
|
|
|
516
531
|
if (!profileRes.ok) {
|
|
@@ -6,7 +6,7 @@ import { handleError } from '@/shared/utils/error-handler'
|
|
|
6
6
|
import { formatOutput } from '@/shared/utils/output'
|
|
7
7
|
import { info, error, debug } from '@/shared/utils/stderr'
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { loginFlow } from '../auth/kakao-login'
|
|
10
10
|
import { CredentialManager } from '../credential-manager'
|
|
11
11
|
import { KakaoTokenExtractor } from '../token-extractor'
|
|
12
12
|
import {
|
|
@@ -23,7 +23,9 @@ function isInteractiveSession(): boolean {
|
|
|
23
23
|
function hasTTY(): boolean {
|
|
24
24
|
try {
|
|
25
25
|
const { openSync, closeSync } = require('node:fs') as typeof import('node:fs')
|
|
26
|
-
|
|
26
|
+
// CONIN$ is the Windows console input device; /dev/tty is the Unix equivalent
|
|
27
|
+
const ttyDevice = process.platform === 'win32' ? 'CONIN$' : '/dev/tty'
|
|
28
|
+
const fd = openSync(ttyDevice, 'r')
|
|
27
29
|
closeSync(fd)
|
|
28
30
|
return true
|
|
29
31
|
} catch { return false }
|
|
@@ -178,6 +180,20 @@ async function promptHidden(message: string): Promise<string | undefined> {
|
|
|
178
180
|
}
|
|
179
181
|
|
|
180
182
|
async function promptHiddenTTY(message: string): Promise<string | undefined> {
|
|
183
|
+
if (process.platform === 'win32') {
|
|
184
|
+
const { execSync } = require('node:child_process') as typeof import('node:child_process')
|
|
185
|
+
try {
|
|
186
|
+
const escapedMessage = message.replace(/'/g, "''")
|
|
187
|
+
const ps = `$p = Read-Host '${escapedMessage}' -AsSecureString; [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($p))`
|
|
188
|
+
const result = execSync(`powershell -NoProfile -Command "${ps}"`, {
|
|
189
|
+
encoding: 'utf-8',
|
|
190
|
+
timeout: 120_000,
|
|
191
|
+
stdio: ['inherit', 'pipe', 'inherit'],
|
|
192
|
+
})
|
|
193
|
+
return result.trim() || undefined
|
|
194
|
+
} catch { return undefined }
|
|
195
|
+
}
|
|
196
|
+
|
|
181
197
|
const { createReadStream } = await import('node:fs')
|
|
182
198
|
const { createInterface } = await import('node:readline/promises')
|
|
183
199
|
const ttyIn = createReadStream('/dev/tty')
|
|
@@ -277,7 +293,8 @@ async function loginAction(options: KakaoAuthOptions): Promise<void> {
|
|
|
277
293
|
|
|
278
294
|
const existing = await credManager.getAccount()
|
|
279
295
|
const pendingState = await credManager.loadPendingLogin()
|
|
280
|
-
const
|
|
296
|
+
const existingUuid = existing?.auth_method === 'login' ? existing?.device_uuid : undefined
|
|
297
|
+
const savedDeviceUuid = pendingState?.device_uuid ?? existingUuid
|
|
281
298
|
|
|
282
299
|
const onPasscodeDisplay = (code: string) => {
|
|
283
300
|
if (interactive) {
|
|
@@ -355,6 +372,7 @@ async function handleLoginResult(
|
|
|
355
372
|
refresh_token: result.credentials.refresh_token,
|
|
356
373
|
device_uuid: result.credentials.device_uuid,
|
|
357
374
|
device_type: result.credentials.device_type,
|
|
375
|
+
auth_method: 'login',
|
|
358
376
|
created_at: now,
|
|
359
377
|
updated_at: now,
|
|
360
378
|
})
|
|
@@ -372,67 +390,6 @@ async function handleLoginResult(
|
|
|
372
390
|
}
|
|
373
391
|
}
|
|
374
392
|
|
|
375
|
-
async function extractAction(options: {
|
|
376
|
-
pretty?: boolean
|
|
377
|
-
debug?: boolean
|
|
378
|
-
unsafelyShowSecrets?: boolean
|
|
379
|
-
}): Promise<void> {
|
|
380
|
-
try {
|
|
381
|
-
if (options.unsafelyShowSecrets) {
|
|
382
|
-
options.debug = true
|
|
383
|
-
}
|
|
384
|
-
const debugLog = options.debug ? (msg: string) => debug(`[debug] ${msg}`) : undefined
|
|
385
|
-
const extractor = new KakaoTokenExtractor(undefined, debugLog)
|
|
386
|
-
|
|
387
|
-
const token = await extractor.extract()
|
|
388
|
-
|
|
389
|
-
if (!token) {
|
|
390
|
-
console.log(
|
|
391
|
-
formatOutput(
|
|
392
|
-
{
|
|
393
|
-
error: 'No credentials found. Make sure KakaoTalk desktop app is installed and logged in.',
|
|
394
|
-
hint: options.debug ? undefined : 'Run with --debug for more info.',
|
|
395
|
-
},
|
|
396
|
-
options.pretty,
|
|
397
|
-
),
|
|
398
|
-
)
|
|
399
|
-
process.exit(1)
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
if (options.debug) {
|
|
403
|
-
const display = options.unsafelyShowSecrets
|
|
404
|
-
? token.oauth_token
|
|
405
|
-
: `${token.oauth_token.substring(0, 12)}...`
|
|
406
|
-
debug(`[debug] oauth_token: ${display}`)
|
|
407
|
-
debug(`[debug] user_id: ${token.user_id}`)
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
const credManager = new CredentialManager()
|
|
411
|
-
const accountId = token.user_id || 'default'
|
|
412
|
-
const now = new Date().toISOString()
|
|
413
|
-
|
|
414
|
-
await credManager.setAccount({
|
|
415
|
-
account_id: accountId,
|
|
416
|
-
oauth_token: token.oauth_token,
|
|
417
|
-
user_id: token.user_id,
|
|
418
|
-
refresh_token: token.refresh_token,
|
|
419
|
-
device_uuid: token.device_uuid ?? generateDeviceUuid(),
|
|
420
|
-
device_type: 'tablet',
|
|
421
|
-
created_at: now,
|
|
422
|
-
updated_at: now,
|
|
423
|
-
})
|
|
424
|
-
|
|
425
|
-
const config = await credManager.load()
|
|
426
|
-
if (!config.current_account) {
|
|
427
|
-
await credManager.setCurrentAccount(accountId)
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
console.log(formatOutput({ account_id: accountId, user_id: token.user_id, extracted: true }, options.pretty))
|
|
431
|
-
} catch (error) {
|
|
432
|
-
handleError(error as Error)
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
393
|
async function listAction(options: { pretty?: boolean }): Promise<void> {
|
|
437
394
|
try {
|
|
438
395
|
const credManager = new CredentialManager()
|
|
@@ -483,7 +440,7 @@ async function statusAction(options: { account?: string; pretty?: boolean }): Pr
|
|
|
483
440
|
const account = await credManager.getAccount(options.account)
|
|
484
441
|
|
|
485
442
|
if (!account) {
|
|
486
|
-
console.log(formatOutput({ error: 'No account configured. Run "auth login"
|
|
443
|
+
console.log(formatOutput({ error: 'No account configured. Run "auth login" first.' }, options.pretty))
|
|
487
444
|
process.exit(1)
|
|
488
445
|
}
|
|
489
446
|
|
|
@@ -533,14 +490,6 @@ export const authCommand = new Command('auth')
|
|
|
533
490
|
.option('--debug', 'Show debug output')
|
|
534
491
|
.action(loginAction),
|
|
535
492
|
)
|
|
536
|
-
.addCommand(
|
|
537
|
-
new Command('extract')
|
|
538
|
-
.description('Extract credentials from KakaoTalk desktop app (kicks desktop session)')
|
|
539
|
-
.option('--pretty', 'Pretty print JSON output')
|
|
540
|
-
.option('--debug', 'Show debug output for troubleshooting')
|
|
541
|
-
.option('--unsafely-show-secrets', 'Show full token values in debug output')
|
|
542
|
-
.action(extractAction),
|
|
543
|
-
)
|
|
544
493
|
.addCommand(
|
|
545
494
|
new Command('list')
|
|
546
495
|
.description('List all authenticated KakaoTalk accounts')
|
|
@@ -34,6 +34,7 @@ export class KakaoCredentialManager {
|
|
|
34
34
|
|
|
35
35
|
async save(config: KakaoConfig): Promise<void> {
|
|
36
36
|
await mkdir(this.configDir, { recursive: true })
|
|
37
|
+
// TODO: Windows does not honor mode 0o600 — consider platform-specific credential storage
|
|
37
38
|
await writeFile(this.credentialsPath, JSON.stringify(config, null, 2))
|
|
38
39
|
await chmod(this.credentialsPath, 0o600)
|
|
39
40
|
}
|
|
@@ -45,7 +45,7 @@ mock.module('./protocol/session', () => ({ LocoSession: MockLocoSession }))
|
|
|
45
45
|
|
|
46
46
|
function createMockClient(overrides: Record<string, unknown> = {}) {
|
|
47
47
|
return {
|
|
48
|
-
getCredentials: mock(() => ({ oauthToken: 'token', userId: 'user1', deviceUuid: 'device1' })),
|
|
48
|
+
getCredentials: mock(() => ({ oauthToken: 'token', userId: 'user1', deviceUuid: 'device1', deviceType: 'tablet' as const })),
|
|
49
49
|
...overrides,
|
|
50
50
|
} as any
|
|
51
51
|
}
|
|
@@ -68,7 +68,7 @@ describe('KakaoTalkListener', () => {
|
|
|
68
68
|
await listener.start()
|
|
69
69
|
|
|
70
70
|
expect(mockLogin).toHaveBeenCalledTimes(1)
|
|
71
|
-
expect(mockLogin).toHaveBeenCalledWith('token', 'user1', 'device1')
|
|
71
|
+
expect(mockLogin).toHaveBeenCalledWith('token', 'user1', 'device1', undefined, 'tablet')
|
|
72
72
|
})
|
|
73
73
|
|
|
74
74
|
test('is idempotent', async () => {
|
|
@@ -72,7 +72,7 @@ export class KakaoTalkListener {
|
|
|
72
72
|
if (!this.running) return
|
|
73
73
|
|
|
74
74
|
try {
|
|
75
|
-
const { oauthToken, userId, deviceUuid } = this.client.getCredentials()
|
|
75
|
+
const { oauthToken, userId, deviceUuid, deviceType } = this.client.getCredentials()
|
|
76
76
|
if (!this.running) return
|
|
77
77
|
|
|
78
78
|
this.userId = userId
|
|
@@ -88,7 +88,7 @@ export class KakaoTalkListener {
|
|
|
88
88
|
}
|
|
89
89
|
})
|
|
90
90
|
|
|
91
|
-
await session.login(oauthToken, userId, deviceUuid)
|
|
91
|
+
await session.login(oauthToken, userId, deviceUuid, undefined, deviceType)
|
|
92
92
|
|
|
93
93
|
if (!this.running) {
|
|
94
94
|
session.close()
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Protocol constants for KakaoTalk LOCO.
|
|
2
2
|
// See protocol/NOTICE.md for attribution of protocol knowledge.
|
|
3
3
|
|
|
4
|
+
import type { KakaoDeviceType } from '../types'
|
|
5
|
+
|
|
4
6
|
// LOCO RSA public key (PKCS#1 DER, base64). RSA-2048, e=3.
|
|
5
7
|
// Source: openkakao (MIT) — extracted from KakaoTalk macOS binary.
|
|
6
8
|
export const LOCO_RSA_PUBLIC_KEY_DER_B64 =
|
|
@@ -17,8 +19,17 @@ export const BOOKING_PORT = 443
|
|
|
17
19
|
export const CHECKIN_HOST = 'ticket-loco.kakao.com'
|
|
18
20
|
export const CHECKIN_PORT = 995
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
// PC slot identity — platform-aware: 'win' on Windows, 'mac' on macOS
|
|
23
|
+
const PC_APP_VERSION = '26.2.0'
|
|
24
|
+
const PC_OS: string = process.platform === 'win32' ? 'win' : 'mac'
|
|
25
|
+
export const PC_OS_NAME: string = process.platform === 'win32' ? 'Windows' : 'macOS'
|
|
26
|
+
|
|
27
|
+
// Android (tablet slot) identity — must match the Android sub-device agent
|
|
28
|
+
// used in auth/kakao-login.ts so the server sees a consistent tablet session.
|
|
29
|
+
const ANDROID_APP_VERSION = '25.9.2'
|
|
30
|
+
const ANDROID_OS = 'android'
|
|
31
|
+
|
|
32
|
+
// dtype: 2 = sub-device, 1 = main device (ref: node-kakao config.ts)
|
|
22
33
|
export const DTYPE = 2
|
|
23
34
|
export const MCCMNC = '99999'
|
|
24
35
|
export const LANG = 'ko'
|
|
@@ -26,3 +37,16 @@ export const COUNTRY_ISO = 'KR'
|
|
|
26
37
|
export const PROTOCOL_VERSION = '1'
|
|
27
38
|
|
|
28
39
|
export const PING_INTERVAL_MS = 300_000
|
|
40
|
+
|
|
41
|
+
export interface LocoDeviceConfig {
|
|
42
|
+
os: string
|
|
43
|
+
appVersion: string
|
|
44
|
+
useSub: boolean
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function getLocoDeviceConfig(deviceType: KakaoDeviceType): LocoDeviceConfig {
|
|
48
|
+
if (deviceType === 'tablet') {
|
|
49
|
+
return { os: ANDROID_OS, appVersion: ANDROID_APP_VERSION, useSub: true }
|
|
50
|
+
}
|
|
51
|
+
return { os: PC_OS, appVersion: PC_APP_VERSION, useSub: false }
|
|
52
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Binary, Long } from 'bson'
|
|
2
2
|
|
|
3
|
+
import type { KakaoDeviceType } from '../types'
|
|
4
|
+
|
|
3
5
|
import {
|
|
4
|
-
APP_VERSION,
|
|
5
6
|
BOOKING_HOST,
|
|
6
7
|
BOOKING_PORT,
|
|
7
8
|
CHECKIN_HOST,
|
|
@@ -12,6 +13,7 @@ import {
|
|
|
12
13
|
MCCMNC,
|
|
13
14
|
PING_INTERVAL_MS,
|
|
14
15
|
PROTOCOL_VERSION,
|
|
16
|
+
getLocoDeviceConfig,
|
|
15
17
|
} from './config'
|
|
16
18
|
import { LocoConnection } from './connection'
|
|
17
19
|
import type { BookingResponse, CheckinResponse, LoginListResponse, LocoPacket, SyncState } from './types'
|
|
@@ -21,9 +23,13 @@ export class LocoSession {
|
|
|
21
23
|
private pingTimer: ReturnType<typeof setInterval> | null = null
|
|
22
24
|
private pushHandler: ((packet: LocoPacket) => void) | null = null
|
|
23
25
|
private closeHandler: (() => void) | null = null
|
|
26
|
+
private deviceType: KakaoDeviceType = 'tablet'
|
|
27
|
+
|
|
28
|
+
async login(oauthToken: string, userId: string, deviceUuid: string, syncState?: SyncState, deviceType?: KakaoDeviceType): Promise<LoginListResponse> {
|
|
29
|
+
this.deviceType = deviceType ?? 'tablet'
|
|
30
|
+
const deviceConfig = getLocoDeviceConfig(this.deviceType)
|
|
24
31
|
|
|
25
|
-
|
|
26
|
-
const { host, port } = await this.bookAndCheckin(userId)
|
|
32
|
+
const { host, port } = await this.bookAndCheckin(userId, deviceConfig)
|
|
27
33
|
|
|
28
34
|
this.connection = new LocoConnection()
|
|
29
35
|
await this.connection.connectSecure(host, port)
|
|
@@ -43,9 +49,9 @@ export class LocoSession {
|
|
|
43
49
|
const lbk = syncState?.lbk ?? 0
|
|
44
50
|
|
|
45
51
|
const response = await this.connection.sendPacket('LOGINLIST', {
|
|
46
|
-
appVer:
|
|
52
|
+
appVer: deviceConfig.appVersion,
|
|
47
53
|
prtVer: PROTOCOL_VERSION,
|
|
48
|
-
os:
|
|
54
|
+
os: deviceConfig.os,
|
|
49
55
|
lang: LANG,
|
|
50
56
|
dtype: DTYPE,
|
|
51
57
|
duuid: deviceUuid,
|
|
@@ -65,12 +71,12 @@ export class LocoSession {
|
|
|
65
71
|
return response.body as unknown as LoginListResponse
|
|
66
72
|
}
|
|
67
73
|
|
|
68
|
-
private async bookAndCheckin(userId: string): Promise<{ host: string; port: number }> {
|
|
74
|
+
private async bookAndCheckin(userId: string, deviceConfig: { os: string; appVersion: string; useSub: boolean }): Promise<{ host: string; port: number }> {
|
|
69
75
|
const bookingConn = new LocoConnection()
|
|
70
76
|
await bookingConn.connectTls(BOOKING_HOST, BOOKING_PORT)
|
|
71
77
|
|
|
72
78
|
const bookingResponse = await bookingConn.sendPacket('GETCONF', {
|
|
73
|
-
os:
|
|
79
|
+
os: deviceConfig.os,
|
|
74
80
|
model: '',
|
|
75
81
|
})
|
|
76
82
|
bookingConn.close()
|
|
@@ -86,13 +92,13 @@ export class LocoSession {
|
|
|
86
92
|
|
|
87
93
|
const checkinResponse = await checkinConn.sendPacket('CHECKIN', {
|
|
88
94
|
userId: Number(userId),
|
|
89
|
-
os:
|
|
95
|
+
os: deviceConfig.os,
|
|
90
96
|
ntype: 0,
|
|
91
|
-
appVer:
|
|
97
|
+
appVer: deviceConfig.appVersion,
|
|
92
98
|
MCCMNC: MCCMNC,
|
|
93
99
|
lang: LANG,
|
|
94
100
|
countryISO: COUNTRY_ISO,
|
|
95
|
-
useSub:
|
|
101
|
+
useSub: deviceConfig.useSub,
|
|
96
102
|
})
|
|
97
103
|
checkinConn.close()
|
|
98
104
|
|
|
@@ -11,6 +11,8 @@ export interface ExtractedKakaoToken {
|
|
|
11
11
|
login_form_body?: string
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
export type KakaoAuthMethod = 'login' | 'extract'
|
|
15
|
+
|
|
14
16
|
export interface KakaoAccountCredentials {
|
|
15
17
|
account_id: string
|
|
16
18
|
oauth_token: string
|
|
@@ -18,6 +20,7 @@ export interface KakaoAccountCredentials {
|
|
|
18
20
|
refresh_token?: string
|
|
19
21
|
device_uuid: string
|
|
20
22
|
device_type: KakaoDeviceType
|
|
23
|
+
auth_method?: KakaoAuthMethod
|
|
21
24
|
created_at: string
|
|
22
25
|
updated_at: string
|
|
23
26
|
}
|
|
@@ -162,6 +165,7 @@ export const KakaoAccountCredentialsSchema = z.object({
|
|
|
162
165
|
refresh_token: z.string().optional(),
|
|
163
166
|
device_uuid: z.string(),
|
|
164
167
|
device_type: z.enum(['pc', 'tablet']),
|
|
168
|
+
auth_method: z.enum(['login', 'extract']).optional(),
|
|
165
169
|
created_at: z.string(),
|
|
166
170
|
updated_at: z.string(),
|
|
167
171
|
})
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
loginWithPassword as linejsLoginWithPassword,
|
|
8
8
|
loginWithAuthToken as linejsLoginWithAuthToken,
|
|
9
9
|
type Client,
|
|
10
|
-
} from '
|
|
11
|
-
import { FileStorage } from '
|
|
10
|
+
} from '@/vendor/linejs/client/mod.js'
|
|
11
|
+
import { FileStorage } from '@/vendor/linejs/base/storage/mod.js'
|
|
12
12
|
|
|
13
13
|
import { LineCredentialManager } from './credential-manager'
|
|
14
14
|
import type {
|
|
@@ -64,7 +64,7 @@ export class KakaoTalkAdapter implements PlatformAdapter {
|
|
|
64
64
|
if (!creds) throw new Error(`Account ${accountId} not found`)
|
|
65
65
|
|
|
66
66
|
const client = new KakaoTalkClient()
|
|
67
|
-
await client.login({ oauthToken: creds.oauth_token, userId: creds.user_id, deviceUuid: creds.device_uuid })
|
|
67
|
+
await client.login({ oauthToken: creds.oauth_token, userId: creds.user_id, deviceUuid: creds.device_uuid, deviceType: creds.device_type })
|
|
68
68
|
this.client = client
|
|
69
69
|
this.currentAccount = { id: creds.account_id, name: creds.account_id }
|
|
70
70
|
}
|
|
@@ -86,7 +86,8 @@ export class KakaoTalkAdapter implements PlatformAdapter {
|
|
|
86
86
|
|
|
87
87
|
const existing = await this.credManager.getAccount()
|
|
88
88
|
const pendingState = await this.credManager.loadPendingLogin()
|
|
89
|
-
const
|
|
89
|
+
const existingUuid = existing?.auth_method === 'login' ? existing?.device_uuid : undefined
|
|
90
|
+
const savedDeviceUuid = pendingState?.device_uuid ?? existingUuid ?? generateDeviceUuid()
|
|
90
91
|
|
|
91
92
|
let email: string | undefined
|
|
92
93
|
let password: string | undefined
|
|
@@ -139,6 +140,7 @@ export class KakaoTalkAdapter implements PlatformAdapter {
|
|
|
139
140
|
refresh_token: result.credentials.refresh_token,
|
|
140
141
|
device_uuid: result.credentials.device_uuid,
|
|
141
142
|
device_type: result.credentials.device_type,
|
|
143
|
+
auth_method: 'login',
|
|
142
144
|
created_at: now,
|
|
143
145
|
updated_at: now,
|
|
144
146
|
})
|
|
@@ -149,6 +151,7 @@ export class KakaoTalkAdapter implements PlatformAdapter {
|
|
|
149
151
|
oauthToken: result.credentials.access_token,
|
|
150
152
|
userId: result.credentials.user_id,
|
|
151
153
|
deviceUuid: result.credentials.device_uuid,
|
|
154
|
+
deviceType: result.credentials.device_type,
|
|
152
155
|
})
|
|
153
156
|
this.client = client
|
|
154
157
|
this.currentAccount = { id: result.credentials.user_id, name: email }
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2026 Evex Developers
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# LINEJS
|
|
2
|
+
|
|
3
|
+
[](https://jsr.io/@evex/linejs)
|
|
4
|
+
[](https://jsr.io/@evex/linejs)
|
|
5
|
+
[](https://jsr.io/@evex)
|
|
6
|
+
\
|
|
7
|
+
[](https://discord.gg/evex)
|
|
8
|
+
|
|
9
|
+
<center>
|
|
10
|
+
<img src="https://raw.githubusercontent.com/evex-dev/linejs/main/.github/assets/icon.png" width="150" height="150" alt="LINEJS" />
|
|
11
|
+
</center>
|
|
12
|
+
|
|
13
|
+
<center> <b>LINEJS</b> is a JavaScript library for creating a LINE SelfBot. </center>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
##### <center>❓ Question: Join our [Discord community](https://discord.gg/evex)</center>
|
|
18
|
+
|
|
19
|
+
##### <center>📚 Documentation: [Check out the full documentation](https://linejs.evex.land)</center>
|
|
20
|
+
|
|
21
|
+
##### <center>🤖 AI Generated Documentation: [DeepWiki - LINEJS](https://deepwiki.com/evex-dev/linejs)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
Supports all runtimes (Node.js, Deno, and Bun) and Typescript.
|
|
28
|
+
|
|
29
|
+
```llvm
|
|
30
|
+
npx jsr add @evex/linejs
|
|
31
|
+
bunx --bun jsr add @evex/linejs
|
|
32
|
+
deno add @evex/linejs
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
You can use `git clone` to download the latest development version and use it in
|
|
36
|
+
Deno.
|
|
37
|
+
|
|
38
|
+
```llvm
|
|
39
|
+
git clone https://github.com/evex-dev/linejs.git
|
|
40
|
+
cd linejs
|
|
41
|
+
touch main.js
|
|
42
|
+
deno run main.js
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
##### Documentation is [https://linejs.evex.land](https://linejs.evex.land/)
|
|
46
|
+
|
|
47
|
+
## Browser Support
|
|
48
|
+
|
|
49
|
+
For now, please use "https://esm.sh/jsr/@evex/linejs".
|
|
50
|
+
|
|
51
|
+
Example is [here](./example/browser).
|
|
52
|
+
|
|
53
|
+
## LINEJS Types
|
|
54
|
+
|
|
55
|
+
Please see [@evex/linejs-types](https://jsr.io/@evex/linejs-types).\
|
|
56
|
+
In short, TypeScript types and enums (such as ReactionType (0, 1, 2, 3),
|
|
57
|
+
MessageType, etc.) are provided.
|
|
58
|
+
|
|
59
|
+
## Provided Packages
|
|
60
|
+
|
|
61
|
+
- client - (@evex/linejs) or (@evex/linejs/client)
|
|
62
|
+
- Client - LINE SelfBot Client
|
|
63
|
+
- base - (@evex/linejs/base)
|
|
64
|
+
- BaseClient - LINE SelfBot API Client
|
|
65
|
+
- thrift - (@evex/linejs/thrift)
|
|
66
|
+
- Thrift - Thrift read/write
|
|
67
|
+
- storage - (@evex/linejs/storage)
|
|
68
|
+
- BaseStorage - LINE Client Storage Type
|
|
69
|
+
- MemoryStorage - LINE Client Memory Storage
|
|
70
|
+
- FileStorage - LINE Client File Storage
|
|
71
|
+
- types - (@evex/linejs-types)
|
|
72
|
+
- All Types for LINE
|
|
73
|
+
|
|
74
|
+
## Authors
|
|
75
|
+
|
|
76
|
+
- Owner & Developer: [Piloking](https://github.com/piloking)
|
|
77
|
+
- Developer: [EdamAme-x](https://github.com/EdamAme-x)
|
|
78
|
+
- Developer: [MocA-Love](https://github.com/MocA-Love)
|
|
79
|
+
- Developer: [Hafusun](https://github.com/hafusun)
|
|
80
|
+
|
|
81
|
+
## References
|
|
82
|
+
|
|
83
|
+
- [DeachSword/CHRLINE](https://github.com/DeachSword/CHRLINE)
|
|
84
|
+
|
|
85
|
+
- [DeachSword/CHRLINE-Thrift](https://github.com/DeachSword/CHRLINE-Thrift/)
|
|
86
|
+
|
|
87
|
+
- [WEDeach/CHRLINE-Patch](https://github.com/WEDeach/CHRLINE-Patch)
|
|
88
|
+
|
|
89
|
+
- [discordjs/collection](https://www.npmjs.com/package/@discordjs/collection)
|