sauruspro-bail 0.0.0-stage → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +129 -2
  2. package/WAProto/GenerateStatics.sh +3 -0
  3. package/WAProto/WAProto.proto +6754 -0
  4. package/WAProto/fix-imports.js +85 -0
  5. package/WAProto/index.d.ts +79257 -0
  6. package/WAProto/index.js +242946 -0
  7. package/docs/CHANGELOG.md +22 -0
  8. package/docs/NEWSLETTER-STATUS.md +120 -0
  9. package/docs/SPR.md +51 -0
  10. package/engine-requirements.js +10 -0
  11. package/lib/Defaults/index.js +131 -0
  12. package/lib/Signal/Group/ciphertext-message.js +12 -0
  13. package/lib/Signal/Group/group-session-builder.js +30 -0
  14. package/lib/Signal/Group/group_cipher.js +82 -0
  15. package/lib/Signal/Group/index.js +12 -0
  16. package/lib/Signal/Group/keyhelper.js +18 -0
  17. package/lib/Signal/Group/sender-chain-key.js +26 -0
  18. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  19. package/lib/Signal/Group/sender-key-message.js +66 -0
  20. package/lib/Signal/Group/sender-key-name.js +48 -0
  21. package/lib/Signal/Group/sender-key-record.js +41 -0
  22. package/lib/Signal/Group/sender-key-state.js +84 -0
  23. package/lib/Signal/Group/sender-message-key.js +26 -0
  24. package/lib/Signal/libsignal.js +431 -0
  25. package/lib/Signal/lid-mapping.js +277 -0
  26. package/lib/Socket/Client/index.js +3 -0
  27. package/lib/Socket/Client/types.js +11 -0
  28. package/lib/Socket/Client/websocket.js +54 -0
  29. package/lib/Socket/MessageBuilder.js +3729 -0
  30. package/lib/Socket/business.js +379 -0
  31. package/lib/Socket/chats.js +1198 -0
  32. package/lib/Socket/communities.js +431 -0
  33. package/lib/Socket/graphql.js +716 -0
  34. package/lib/Socket/groups.js +374 -0
  35. package/lib/Socket/index.js +92 -0
  36. package/lib/Socket/interop.js +463 -0
  37. package/lib/Socket/luxu.js +387 -0
  38. package/lib/Socket/message-builder.js +556 -0
  39. package/lib/Socket/messages-recv.js +1916 -0
  40. package/lib/Socket/messages-send.js +1516 -0
  41. package/lib/Socket/mex.js +54 -0
  42. package/lib/Socket/newsletter.js +641 -0
  43. package/lib/Socket/privacy.js +318 -0
  44. package/lib/Socket/socket.js +1115 -0
  45. package/lib/Socket/username.js +236 -0
  46. package/lib/Store/index.js +10 -0
  47. package/lib/Store/keyed-db.js +108 -0
  48. package/lib/Store/make-cache-manager-store.js +85 -0
  49. package/lib/Store/make-in-memory-store.js +244 -0
  50. package/lib/Store/make-ordered-dictionary.js +75 -0
  51. package/lib/Store/object-repository.js +32 -0
  52. package/lib/Types/Auth.js +2 -0
  53. package/lib/Types/Bussines.js +2 -0
  54. package/lib/Types/Call.js +2 -0
  55. package/lib/Types/Chat.js +8 -0
  56. package/lib/Types/Contact.js +2 -0
  57. package/lib/Types/Events.js +2 -0
  58. package/lib/Types/GroupMetadata.js +2 -0
  59. package/lib/Types/Label.js +25 -0
  60. package/lib/Types/LabelAssociation.js +7 -0
  61. package/lib/Types/Message.js +11 -0
  62. package/lib/Types/Mex.js +111 -0
  63. package/lib/Types/Product.js +2 -0
  64. package/lib/Types/Signal.js +2 -0
  65. package/lib/Types/Socket.js +3 -0
  66. package/lib/Types/State.js +56 -0
  67. package/lib/Types/USync.js +2 -0
  68. package/lib/Types/index.js +26 -0
  69. package/lib/Utils/auth-utils.js +302 -0
  70. package/lib/Utils/browser-utils.js +48 -0
  71. package/lib/Utils/business.js +231 -0
  72. package/lib/Utils/chat-utils.js +872 -0
  73. package/lib/Utils/companion-reg-client-utils.js +35 -0
  74. package/lib/Utils/crypto.js +118 -0
  75. package/lib/Utils/decode-wa-message.js +350 -0
  76. package/lib/Utils/dinolith-spr.d.ts +26 -0
  77. package/lib/Utils/dinolith-spr.js +521 -0
  78. package/lib/Utils/event-buffer.js +622 -0
  79. package/lib/Utils/generics.js +403 -0
  80. package/lib/Utils/history.js +134 -0
  81. package/lib/Utils/identity-change-handler.js +50 -0
  82. package/lib/Utils/index.js +26 -0
  83. package/lib/Utils/link-preview.js +85 -0
  84. package/lib/Utils/logger.js +3 -0
  85. package/lib/Utils/lt-hash.js +8 -0
  86. package/lib/Utils/make-mutex.js +33 -0
  87. package/lib/Utils/message-composer.js +273 -0
  88. package/lib/Utils/message-retry-manager.js +265 -0
  89. package/lib/Utils/messages-media.js +870 -0
  90. package/lib/Utils/messages.js +1394 -0
  91. package/lib/Utils/newsletter-status.d.ts +163 -0
  92. package/lib/Utils/newsletter-status.js +738 -0
  93. package/lib/Utils/noise-handler.js +201 -0
  94. package/lib/Utils/offline-node-processor.js +40 -0
  95. package/lib/Utils/pre-key-manager.js +106 -0
  96. package/lib/Utils/process-message.js +630 -0
  97. package/lib/Utils/reporting-utils.js +258 -0
  98. package/lib/Utils/signal.js +201 -0
  99. package/lib/Utils/stanza-ack.js +38 -0
  100. package/lib/Utils/sticker.js +133 -0
  101. package/lib/Utils/sync-action-utils.js +49 -0
  102. package/lib/Utils/tc-token-utils.js +163 -0
  103. package/lib/Utils/use-multi-file-auth-state.js +121 -0
  104. package/lib/Utils/use-sqlite-auth-state.js +162 -0
  105. package/lib/Utils/validate-connection.js +203 -0
  106. package/lib/WABinary/constants.js +1301 -0
  107. package/lib/WABinary/decode.js +262 -0
  108. package/lib/WABinary/encode.js +220 -0
  109. package/lib/WABinary/generic-utils.js +204 -0
  110. package/lib/WABinary/index.js +6 -0
  111. package/lib/WABinary/jid-utils.js +98 -0
  112. package/lib/WABinary/types.js +2 -0
  113. package/lib/WAM/BinaryInfo.js +10 -0
  114. package/lib/WAM/constants.js +22853 -0
  115. package/lib/WAM/encode.js +150 -0
  116. package/lib/WAM/index.js +4 -0
  117. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
  118. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  119. package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
  120. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  121. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  122. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +58 -0
  123. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  124. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
  125. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +28 -0
  126. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
  127. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  128. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
  129. package/lib/WAUSync/Protocols/index.js +12 -0
  130. package/lib/WAUSync/USyncQuery.js +151 -0
  131. package/lib/WAUSync/USyncUser.js +56 -0
  132. package/lib/WAUSync/index.js +3 -0
  133. package/lib/index.js +67 -0
  134. package/package.json +147 -5
@@ -0,0 +1,151 @@
1
+ import { getBinaryNodeChild } from '../WABinary/index.js'
2
+ import { USyncBotProfileProtocol } from './Protocols/USyncBotProfileProtocol.js'
3
+ import { USyncLIDProtocol } from './Protocols/USyncLIDProtocol.js'
4
+ import { USyncBusinessProtocol } from './Protocols/USyncBusinessProtocol.js'
5
+ import { USyncPictureProtocol } from './Protocols/USyncPictureProtocol.js'
6
+ import { USyncTextStatusProtocol } from './Protocols/USyncTextStatusProtocol.js'
7
+ import { USyncSidelistProtocol } from './Protocols/USyncSidelistProtocol.js'
8
+ import { USyncFeatureProtocol } from './Protocols/USyncFeatureProtocol.js'
9
+ import {
10
+ USyncContactProtocol,
11
+ USyncDeviceProtocol,
12
+ USyncDisappearingModeProtocol,
13
+ USyncStatusProtocol,
14
+ USyncUsernameProtocol
15
+ } from './Protocols/index.js'
16
+
17
+ export class USyncQuery {
18
+ constructor() {
19
+ this.protocols = []
20
+ this.users = []
21
+ this.context = 'interactive'
22
+ this.mode = 'query'
23
+ }
24
+
25
+ withMode(mode) {
26
+ this.mode = mode
27
+ return this
28
+ }
29
+
30
+ withContext(context) {
31
+ this.context = context
32
+ return this
33
+ }
34
+
35
+ withUser(user) {
36
+ this.users.push(user)
37
+ return this
38
+ }
39
+
40
+ parseUSyncQueryResult(result) {
41
+ if (result?.attrs.type !== 'result') {
42
+ return
43
+ }
44
+ const protocolMap = Object.fromEntries(
45
+ this.protocols.map(protocol => [protocol.name, protocol.parser])
46
+ )
47
+ const queryResult = {
48
+ list: [],
49
+ sideList: []
50
+ }
51
+ const usyncNode = getBinaryNodeChild(result, 'usync')
52
+
53
+ const parseUserNodes = nodes => {
54
+ return nodes.reduce((acc, node) => {
55
+ const id = node?.attrs.jid
56
+ if (id) {
57
+ const data = Array.isArray(node?.content)
58
+ ? Object.fromEntries(
59
+ node.content.map(content => {
60
+ const protocol = content.tag
61
+ const parser = protocolMap[protocol]
62
+ if (!parser) {
63
+ return [protocol, null]
64
+ }
65
+ try {
66
+ return [protocol, parser(content)]
67
+ } catch (err) {
68
+ return [protocol, null]
69
+ }
70
+ })
71
+ )
72
+ : {}
73
+ acc.push({ ...data, id })
74
+ }
75
+ return acc
76
+ }, [])
77
+ }
78
+
79
+ const listNode = usyncNode ? getBinaryNodeChild(usyncNode, 'list') : undefined
80
+ if (listNode?.content && Array.isArray(listNode.content)) {
81
+ queryResult.list = parseUserNodes(listNode.content)
82
+ }
83
+
84
+ const sideListNode = usyncNode ? getBinaryNodeChild(usyncNode, 'side_list') : undefined
85
+ if (sideListNode?.content && Array.isArray(sideListNode.content)) {
86
+ queryResult.sideList = parseUserNodes(sideListNode.content)
87
+ }
88
+
89
+ return queryResult
90
+ }
91
+
92
+ withDeviceProtocol() {
93
+ this.protocols.push(new USyncDeviceProtocol())
94
+ return this
95
+ }
96
+
97
+ withContactProtocol() {
98
+ this.protocols.push(new USyncContactProtocol())
99
+ return this
100
+ }
101
+
102
+ withStatusProtocol() {
103
+ this.protocols.push(new USyncStatusProtocol())
104
+ return this
105
+ }
106
+
107
+ withDisappearingModeProtocol() {
108
+ this.protocols.push(new USyncDisappearingModeProtocol())
109
+ return this
110
+ }
111
+
112
+ withBotProfileProtocol() {
113
+ this.protocols.push(new USyncBotProfileProtocol())
114
+ return this
115
+ }
116
+
117
+ withLIDProtocol() {
118
+ this.protocols.push(new USyncLIDProtocol())
119
+ return this
120
+ }
121
+
122
+ withUsernameProtocol() {
123
+ this.protocols.push(new USyncUsernameProtocol())
124
+ return this
125
+ }
126
+
127
+ withBusinessProtocol(profileVersion) {
128
+ this.protocols.push(new USyncBusinessProtocol(profileVersion))
129
+ return this
130
+ }
131
+
132
+ withPictureProtocol(type) {
133
+ this.protocols.push(new USyncPictureProtocol(type))
134
+ return this
135
+ }
136
+
137
+ withTextStatusProtocol() {
138
+ this.protocols.push(new USyncTextStatusProtocol())
139
+ return this
140
+ }
141
+
142
+ withSidelistProtocol(useLidAddressing) {
143
+ this.protocols.push(new USyncSidelistProtocol(useLidAddressing))
144
+ return this
145
+ }
146
+
147
+ withFeatureProtocol(features) {
148
+ this.protocols.push(new USyncFeatureProtocol(features))
149
+ return this
150
+ }
151
+ }
@@ -0,0 +1,56 @@
1
+ export class USyncUser {
2
+ withId(id) {
3
+ this.id = id
4
+ return this
5
+ }
6
+
7
+ withLid(lid) {
8
+ this.lid = lid
9
+ return this
10
+ }
11
+
12
+ withPhone(phone) {
13
+ this.phone = phone
14
+ return this
15
+ }
16
+
17
+ withUsername(username) {
18
+ this.username = username
19
+ return this
20
+ }
21
+
22
+ withUsernameKey(usernameKey) {
23
+ this.usernameKey = usernameKey
24
+ return this
25
+ }
26
+
27
+ withType(type) {
28
+ this.type = type
29
+ return this
30
+ }
31
+
32
+ withPersonaId(personaId) {
33
+ this.personaId = personaId
34
+ return this
35
+ }
36
+
37
+ withPictureId(pictureId) {
38
+ this.pictureId = pictureId
39
+ return this
40
+ }
41
+
42
+ withVerifiedNameSerial(serial) {
43
+ this.verifiedNameSerial = serial
44
+ return this
45
+ }
46
+
47
+ withBusinessProfileTag(tag) {
48
+ this.businessProfileTag = tag
49
+ return this
50
+ }
51
+
52
+ withSidelistDelete(del = true) {
53
+ this.sidelistDelete = del
54
+ return this
55
+ }
56
+ }
@@ -0,0 +1,3 @@
1
+ export * from './Protocols/index.js'
2
+ export * from './USyncQuery.js'
3
+ export * from './USyncUser.js'
package/lib/index.js ADDED
@@ -0,0 +1,67 @@
1
+ import makeWASocket from './Socket/index.js';
2
+ import chalk from "chalk";
3
+
4
+ const ascii = [
5
+ "⠀⠀⠀⠀⢀⡠⠤⠔⢲⢶⡖⠒⠤⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
6
+ "⠀⠀⣠⡚⠁⢀⠀⠀⢄⢻⣿⠀⠀⠀⡙⣷⢤⡀⠀⠀⠀⠀⠀⠀",
7
+ "⠀⡜⢱⣇⠀⣧⢣⡀⠀⡀⢻⡇⠀⡄⢰⣿⣷⡌⣢⡀⠀⠀⠀⠀",
8
+ "⠸⡇⡎⡿⣆⠹⣷⡹⣄⠙⣽⣿⢸⣧⣼⣿⣿⣿⣶⣼⣆⠀⠀⠀",
9
+ "⣷⡇⣷⡇⢹⢳⡽⣿⡽⣷⡜⣿⣾⢸⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀",
10
+ "⣿⡇⡿⣿⠀⠣⠹⣾⣿⣮⠿⣞⣿⢸⣿⣛⢿⣿⡟⠯⠉⠙⠛⠓",
11
+ "⣿⣇⣷⠙⡇⠀⠁⠀⠉⣽⣷⣾⢿⢸⣿⠀⢸⣿⢿⠀⠀⠀⠀⠀",
12
+ "⡟⢿⣿⣷⣾⣆⠀⠀⠘⠘⠿⠛⢸⣼⣿⢖⣼⣿⠘⡆⠀⠀⠀⠀",
13
+ "⠃⢸⣿⣿⡘⠋⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⡆⠇⠀⠀⠀⠀",
14
+ "⠀⢸⡿⣿⣇⠀⠈⠀⠤⠀⠀⢀⣿⣿⣿⣿⣿⣿⣧⢸⠀⠀⠀⠀",
15
+ "⠀⠈⡇⣿⣿⣷⣤⣀⠀⣀⠔⠋⣿⣿⣿⣿⣿⡟⣿⡞⡄⠀⠀⠀",
16
+ "⠀⠀⢿⢸⣿⣿⣿⣿⣿⡇⠀⢠⣿⡏⢿⣿⣿⡇⢸⣇⠇⠀⠀⠀",
17
+ "⠀⠀⢸⡏⣿⣿⣿⠟⠋⣀⠠⣾⣿⠡⠀⢉⢟⠷⢼⣿⣿⠀⠀⠀",
18
+ "⠀⠀⠈⣷⡏⡱⠁⠀⠊⠀⠀⣿⣏⣀⡠⢣⠃⠀⠀⢹⣿⡄⠀⠀",
19
+ "⠀⠀⠘⢼⣿⠀⢠⣤⣀⠉⣹⡿⠀⠁⠀⡸⠀⠀⠀⠈⣿⡇⠀⠀"
20
+ ];
21
+
22
+ const info = [
23
+ { label: "", value: "Baileys Saurus Pro", title: true },
24
+ { label: "", value: "" },
25
+ { label: "✦", value: "Custom Baileys Socket" },
26
+ { label: "✦", value: "Custom Pairing Support" },
27
+ { label: "✦", value: "Rich Message Support" },
28
+ { label: "✦", value: "SPR (Selective Relay)" },
29
+ { label: "✦", value: "Newsletter Status" },
30
+ { label: "", value: "" },
31
+ { label: "Version", value: "v5.0.0" },
32
+ { label: "Owner", value: "Saurus / Dinolith" },
33
+ { label: "Telegram", value: "t.me/lordsaurus" },
34
+ { label: "WA Owner", value: "+62 895-6390-43495" }
35
+ ];
36
+
37
+ const purple = chalk.hex("#8b5cf6");
38
+
39
+ const infoLines = info.map(({ label, value, title }) => {
40
+ if (title) return chalk.bold.hex("#c084fc")(value);
41
+ if (!label && !value) return "";
42
+ if (!label) return chalk.white(value);
43
+ if (label === "✦") return chalk.white(`${label} ${value}`);
44
+ return chalk.gray(`${label}: `) + chalk.cyan(value);
45
+ });
46
+
47
+ const rows = Math.max(ascii.length, infoLines.length);
48
+ console.log("\n");
49
+ for (let i = 0; i < rows; i++) {
50
+ const art = ascii[i] || "".padEnd(24);
51
+ const text = infoLines[i] || "";
52
+ console.log(" " + purple(art) + " " + text);
53
+ }
54
+ console.log("\n");
55
+ export * from '../WAProto/index.js';
56
+ export * from './Utils/index.js';
57
+ export * from './Types/index.js';
58
+ export * from './Defaults/index.js';
59
+ export * from './WABinary/index.js';
60
+ export * from './WAM/index.js';
61
+ export * from './WAUSync/index.js';
62
+ export * from './Store/index.js';
63
+ export { makeWASocket };
64
+ export default makeWASocket;
65
+ //# sourceMappingURL=index.js.map
66
+ export * as MessageBuilder from './Socket/MessageBuilder.js';
67
+ export { default as MB } from './Socket/MessageBuilder.js';
package/package.json CHANGED
@@ -1,6 +1,148 @@
1
1
  {
2
- "name": "sauruspro-bail",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
2
+ "name": "sauruspro-bail",
3
+ "version": "5.0.0",
4
+ "description": "Sauruspro Baileys - Custom WhatsApp Web API with SPR (Selective Relay), Newsletter Status, Rich Messages and pairing support.",
5
+ "keywords": [
6
+ "baileys",
7
+ "whatsapp",
8
+ "whatsapp-baileys",
9
+ "Sauruspro",
10
+ "dinolith",
11
+ "newsletter-status"
12
+ ],
13
+ "homepage": "https://www.npmjs.com/package/sauruspro-bail",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://www.npmjs.com/package/sauruspro-bail"
17
+ },
18
+ "license": "MIT",
19
+ "author": "Saurus / Dinolith",
20
+ "contributors": [
21
+ "Saurus",
22
+ "Dinolith"
23
+ ],
24
+ "type": "module",
25
+ "main": "lib/index.js",
26
+ "files": [
27
+ "lib/**/*",
28
+ "WAProto/**/*",
29
+ "docs/**/*",
30
+ "engine-requirements.js"
31
+ ],
32
+ "scripts": {
33
+ "build:all": "tsc && typedoc",
34
+ "build:docs": "typedoc",
35
+ "build:tsc": "tsc",
36
+ "changelog:last": "conventional-changelog -p angular -r 2",
37
+ "changelog:preview": "conventional-changelog -p angular -u",
38
+ "gen:protobuf": "sh WAProto/GenerateStatics.sh",
39
+ "lint": "eslint src --ext .js,.ts,.jsx,.tsx",
40
+ "lint:fix": "eslint src --fix --ext .js,.ts,.jsx,.tsx",
41
+ "prepack": "",
42
+ "prepare": "",
43
+ "preinstall": "node ./engine-requirements.js",
44
+ "release": "release-it",
45
+ "test": "jest"
46
+ },
47
+ "dependencies": {
48
+ "@cacheable/node-cache": "^1.4.0",
49
+ "@hapi/boom": "^9.1.3",
50
+ "async-mutex": "^0.5.0",
51
+ "cache-manager": "^7.2.8",
52
+ "chalk": "^4.1.2",
53
+ "fluent-ffmpeg": "^2.1.3",
54
+ "libsignal": "^6.0.0",
55
+ "lru-cache": "^11.1.0",
56
+ "music-metadata": "^11.12.3",
57
+ "p-queue": "^9.0.0",
58
+ "pino": "^9.6",
59
+ "protobufjs": "^7.5.6",
60
+ "whatsapp-rust-bridge": "0.5.4",
61
+ "ws": "^8.13.0"
62
+ },
63
+ "devDependencies": {
64
+ "@eslint/eslintrc": "^3.3.1",
65
+ "@eslint/js": "^9.31.0",
66
+ "@types/jest": "^30.0.0",
67
+ "@types/node": "^20.9.0",
68
+ "@types/ws": "^8.0.0",
69
+ "@typescript-eslint/eslint-plugin": "^8",
70
+ "@typescript-eslint/parser": "^8",
71
+ "@whiskeysockets/eslint-config": "^1.0.0",
72
+ "conventional-changelog": "^7.1.1",
73
+ "conventional-changelog-angular": "^8.0.0",
74
+ "esbuild-register": "^3.6.0",
75
+ "eslint": "^9",
76
+ "eslint-config-prettier": "^10.1.2",
77
+ "eslint-plugin-prettier": "^5.4.0",
78
+ "jest": "^30.0.5",
79
+ "jimp": "^1.6.1",
80
+ "jiti": "^2.4.2",
81
+ "json": "^11.0.0",
82
+ "link-preview-js": "^3.0.0",
83
+ "open": "^8.4.2",
84
+ "pino-pretty": "^13.1.1",
85
+ "prettier": "^3.5.3",
86
+ "protobufjs-cli": "^1.1.3",
87
+ "release-it": "^20.0.1",
88
+ "ts-jest": "^29.4.0",
89
+ "tsc-esm-fix": "^3.1.2",
90
+ "tsx": "^4.20.3",
91
+ "typedoc": "^0.27.9",
92
+ "typedoc-plugin-markdown": "4.4.2",
93
+ "typescript": "^5.8.2"
94
+ },
95
+ "peerDependencies": {
96
+ "audio-decode": "^2.1.3",
97
+ "jimp": "^1.6.1",
98
+ "link-preview-js": "^3.0.0",
99
+ "sharp": "*"
100
+ },
101
+ "resolutions": {
102
+ "ajv@npm:^6.12.4": "^6.14.0",
103
+ "basic-ftp": "^5.2.4",
104
+ "brace-expansion@npm:^1.1.7": "^1.1.13",
105
+ "brace-expansion@npm:^2.0.1": "^2.0.3",
106
+ "flatted": "^3.4.2",
107
+ "glob@npm:^10.2.2": "^10.5.0",
108
+ "glob@npm:^10.3.10": "^10.5.0",
109
+ "glob@npm:^10.5.0": "^10.5.0",
110
+ "handlebars": "^4.7.9",
111
+ "ip-address": "^10.1.1",
112
+ "js-yaml@npm:^3.13.1": "^3.14.2",
113
+ "js-yaml@npm:^4.1.0": "^4.1.1",
114
+ "markdown-it": "^14.1.1",
115
+ "minimatch@npm:^3.0.4": "^3.1.5",
116
+ "minimatch@npm:^3.1.2": "^3.1.5",
117
+ "minimatch@npm:^5.0.1": "^5.1.8",
118
+ "minimatch@npm:^9.0.4": "^9.0.9",
119
+ "minimatch@npm:^9.0.5": "^9.0.9",
120
+ "picomatch@npm:^2.0.4": "^2.3.2",
121
+ "picomatch@npm:^2.3.1": "^2.3.2",
122
+ "picomatch@npm:^4.0.0": "^4.0.4",
123
+ "picomatch@npm:^4.0.2": "^4.0.4",
124
+ "socks": "^2.8.8",
125
+ "tar": "^7.5.11",
126
+ "tmp": "^0.2.5",
127
+ "underscore": "^1.13.8",
128
+ "yaml@npm:^2.6.1": "^2.8.4"
129
+ },
130
+ "peerDependenciesMeta": {
131
+ "audio-decode": {
132
+ "optional": true
133
+ },
134
+ "jimp": {
135
+ "optional": true
136
+ },
137
+ "link-preview-js": {
138
+ "optional": true
139
+ }
140
+ },
141
+ "packageManager": "yarn@4.9.2",
142
+ "engines": {
143
+ "node": ">=20.0.0"
144
+ },
145
+ "publishConfig": {
146
+ "access": "public"
147
+ }
148
+ }