discord-html-transcripts-v2 3.3.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.
Files changed (87) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +136 -0
  3. package/dist/downloader/images.d.ts +36 -0
  4. package/dist/downloader/images.js +114 -0
  5. package/dist/downloader/images.js.map +1 -0
  6. package/dist/generator/index.d.ts +18 -0
  7. package/dist/generator/index.js +78 -0
  8. package/dist/generator/index.js.map +1 -0
  9. package/dist/generator/renderers/attachment.d.ts +22 -0
  10. package/dist/generator/renderers/attachment.js +49 -0
  11. package/dist/generator/renderers/attachment.js.map +1 -0
  12. package/dist/generator/renderers/components/Button.d.ts +10 -0
  13. package/dist/generator/renderers/components/Button.js +24 -0
  14. package/dist/generator/renderers/components/Button.js.map +1 -0
  15. package/dist/generator/renderers/components/Container.d.ts +6 -0
  16. package/dist/generator/renderers/components/Container.js +26 -0
  17. package/dist/generator/renderers/components/Container.js.map +1 -0
  18. package/dist/generator/renderers/components/Media Gallery.d.ts +6 -0
  19. package/dist/generator/renderers/components/Media Gallery.js +40 -0
  20. package/dist/generator/renderers/components/Media Gallery.js.map +1 -0
  21. package/dist/generator/renderers/components/Select Menu.d.ts +9 -0
  22. package/dist/generator/renderers/components/Select Menu.js +41 -0
  23. package/dist/generator/renderers/components/Select Menu.js.map +1 -0
  24. package/dist/generator/renderers/components/Spacing.d.ts +7 -0
  25. package/dist/generator/renderers/components/Spacing.js +18 -0
  26. package/dist/generator/renderers/components/Spacing.js.map +1 -0
  27. package/dist/generator/renderers/components/Thumbnail.d.ts +5 -0
  28. package/dist/generator/renderers/components/Thumbnail.js +16 -0
  29. package/dist/generator/renderers/components/Thumbnail.js.map +1 -0
  30. package/dist/generator/renderers/components/section/Section.d.ts +9 -0
  31. package/dist/generator/renderers/components/section/Section.js +21 -0
  32. package/dist/generator/renderers/components/section/Section.js.map +1 -0
  33. package/dist/generator/renderers/components/section/SectionAccessory.d.ts +6 -0
  34. package/dist/generator/renderers/components/section/SectionAccessory.js +21 -0
  35. package/dist/generator/renderers/components/section/SectionAccessory.js.map +1 -0
  36. package/dist/generator/renderers/components/section/SectionContent.d.ts +6 -0
  37. package/dist/generator/renderers/components/section/SectionContent.js +17 -0
  38. package/dist/generator/renderers/components/section/SectionContent.js.map +1 -0
  39. package/dist/generator/renderers/components/styles.d.ts +21 -0
  40. package/dist/generator/renderers/components/styles.js +114 -0
  41. package/dist/generator/renderers/components/styles.js.map +1 -0
  42. package/dist/generator/renderers/components/utils.d.ts +42 -0
  43. package/dist/generator/renderers/components/utils.js +101 -0
  44. package/dist/generator/renderers/components/utils.js.map +1 -0
  45. package/dist/generator/renderers/components.d.ts +12 -0
  46. package/dist/generator/renderers/components.js +63 -0
  47. package/dist/generator/renderers/components.js.map +1 -0
  48. package/dist/generator/renderers/content.d.ts +32 -0
  49. package/dist/generator/renderers/content.js +180 -0
  50. package/dist/generator/renderers/content.js.map +1 -0
  51. package/dist/generator/renderers/embed.d.ts +12 -0
  52. package/dist/generator/renderers/embed.js +53 -0
  53. package/dist/generator/renderers/embed.js.map +1 -0
  54. package/dist/generator/renderers/message.d.ts +7 -0
  55. package/dist/generator/renderers/message.js +69 -0
  56. package/dist/generator/renderers/message.js.map +1 -0
  57. package/dist/generator/renderers/reply.d.ts +7 -0
  58. package/dist/generator/renderers/reply.js +58 -0
  59. package/dist/generator/renderers/reply.js.map +1 -0
  60. package/dist/generator/renderers/systemMessage.d.ts +13 -0
  61. package/dist/generator/renderers/systemMessage.js +133 -0
  62. package/dist/generator/renderers/systemMessage.js.map +1 -0
  63. package/dist/generator/transcript.d.ts +10 -0
  64. package/dist/generator/transcript.js +89 -0
  65. package/dist/generator/transcript.js.map +1 -0
  66. package/dist/index.d.ts +25 -0
  67. package/dist/index.js +137 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/static/client.d.ts +2 -0
  70. package/dist/static/client.js +30 -0
  71. package/dist/static/client.js.map +1 -0
  72. package/dist/types.d.ts +63 -0
  73. package/dist/types.js +10 -0
  74. package/dist/types.js.map +1 -0
  75. package/dist/utils/buildProfiles.d.ts +11 -0
  76. package/dist/utils/buildProfiles.js +42 -0
  77. package/dist/utils/buildProfiles.js.map +1 -0
  78. package/dist/utils/embeds.d.ts +2 -0
  79. package/dist/utils/embeds.js +17 -0
  80. package/dist/utils/embeds.js.map +1 -0
  81. package/dist/utils/extend.d.ts +8 -0
  82. package/dist/utils/extend.js +8 -0
  83. package/dist/utils/extend.js.map +1 -0
  84. package/dist/utils/utils.d.ts +9 -0
  85. package/dist/utils/utils.js +44 -0
  86. package/dist/utils/utils.js.map +1 -0
  87. package/package.json +87 -0
@@ -0,0 +1,11 @@
1
+ import { type Message } from 'discord.js';
2
+ export type Profile = {
3
+ author: string;
4
+ avatar?: string;
5
+ roleColor?: string;
6
+ roleIcon?: string;
7
+ roleName?: string;
8
+ bot?: boolean;
9
+ verified?: boolean;
10
+ };
11
+ export declare function buildProfiles(messages: Message[]): Promise<Record<string, Profile>>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildProfiles = buildProfiles;
4
+ const discord_js_1 = require("discord.js");
5
+ async function buildProfiles(messages) {
6
+ const profiles = {};
7
+ // loop through messages
8
+ for (const message of messages) {
9
+ // add all users
10
+ const author = message.author;
11
+ if (!profiles[author.id]) {
12
+ // add profile
13
+ profiles[author.id] = buildProfile(message.member, author);
14
+ }
15
+ // add interaction users
16
+ if (message.interaction) {
17
+ const user = message.interaction.user;
18
+ if (!profiles[user.id]) {
19
+ profiles[user.id] = buildProfile(null, user);
20
+ }
21
+ }
22
+ // threads
23
+ if (message.thread && message.thread.lastMessage) {
24
+ profiles[message.thread.lastMessage.author.id] = buildProfile(message.thread.lastMessage.member, message.thread.lastMessage.author);
25
+ }
26
+ }
27
+ // return as a JSON
28
+ return profiles;
29
+ }
30
+ function buildProfile(member, author) {
31
+ var _a, _b, _c, _d, _e, _f, _g, _h;
32
+ return {
33
+ author: (_b = (_a = member === null || member === void 0 ? void 0 : member.nickname) !== null && _a !== void 0 ? _a : author.displayName) !== null && _b !== void 0 ? _b : author.username,
34
+ avatar: (_c = member === null || member === void 0 ? void 0 : member.displayAvatarURL({ size: 64 })) !== null && _c !== void 0 ? _c : author.displayAvatarURL({ size: 64 }),
35
+ roleColor: member === null || member === void 0 ? void 0 : member.displayHexColor,
36
+ roleIcon: (_e = (_d = member === null || member === void 0 ? void 0 : member.roles.icon) === null || _d === void 0 ? void 0 : _d.iconURL()) !== null && _e !== void 0 ? _e : undefined,
37
+ roleName: (_g = (_f = member === null || member === void 0 ? void 0 : member.roles.hoist) === null || _f === void 0 ? void 0 : _f.name) !== null && _g !== void 0 ? _g : undefined,
38
+ bot: author.bot,
39
+ verified: (_h = author.flags) === null || _h === void 0 ? void 0 : _h.has(discord_js_1.UserFlags.VerifiedBot),
40
+ };
41
+ }
42
+ //# sourceMappingURL=buildProfiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildProfiles.js","sourceRoot":"","sources":["../../src/utils/buildProfiles.ts"],"names":[],"mappings":";;AAaA,sCA+BC;AA5CD,2CAAkF;AAa3E,KAAK,UAAU,aAAa,CAAC,QAAmB;IACrD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,wBAAwB;IACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,gBAAgB;QAChB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,cAAc;YACd,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,UAAU;QACV,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACjD,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAC3D,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EACjC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,MAA0B,EAAE,MAAY;;IAC5D,OAAO;QACL,MAAM,EAAE,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,MAAM,CAAC,WAAW,mCAAI,MAAM,CAAC,QAAQ;QACjE,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,mCAAI,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACvF,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe;QAClC,QAAQ,EAAE,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,IAAI,0CAAE,OAAO,EAAE,mCAAI,SAAS;QACpD,QAAQ,EAAE,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,KAAK,0CAAE,IAAI,mCAAI,SAAS;QAChD,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,MAAA,MAAM,CAAC,KAAK,0CAAE,GAAG,CAAC,sBAAS,CAAC,WAAW,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { APIEmbedField } from 'discord.js';
2
+ export declare function calculateInlineIndex(fields: APIEmbedField[], currentFieldIndex: number): number;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateInlineIndex = calculateInlineIndex;
4
+ function calculateInlineIndex(fields, currentFieldIndex) {
5
+ const startIndex = currentFieldIndex - 1;
6
+ for (let i = startIndex; i >= 0; i--) {
7
+ const field = fields[i];
8
+ if (!field)
9
+ continue;
10
+ if (field.inline === false) {
11
+ const amount = startIndex - i;
12
+ return (amount % 3) + 1;
13
+ }
14
+ }
15
+ return (currentFieldIndex % 3) + 1;
16
+ }
17
+ //# sourceMappingURL=embeds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeds.js","sourceRoot":"","sources":["../../src/utils/embeds.ts"],"names":[],"mappings":";;AAEA,oDAcC;AAdD,SAAgB,oBAAoB,CAAC,MAAuB,EAAE,iBAAyB;IACrF,MAAM,UAAU,GAAG,iBAAiB,GAAG,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC;YAC9B,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ASTNode, ParserRule } from 'simple-markdown';
3
+ import type { State } from './types';
4
+ type AdditionalRule = Partial<ParserRule> & {
5
+ react: (node: ASTNode, output: (node: ASTNode, state?: unknown) => string, state: State) => ReactNode;
6
+ };
7
+ export declare const extend: (additionalRules: AdditionalRule, defaultRule: ParserRule) => AdditionalRule;
8
+ export {};
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extend = void 0;
4
+ const extend = (additionalRules, defaultRule) => {
5
+ return Object.assign({}, defaultRule, additionalRules);
6
+ };
7
+ exports.extend = extend;
8
+ //# sourceMappingURL=extend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/utils/extend.ts"],"names":[],"mappings":";;;AAQO,MAAM,MAAM,GAAG,CAAC,eAA+B,EAAE,WAAuB,EAAkB,EAAE;IACjG,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AACzD,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB"}
@@ -0,0 +1,9 @@
1
+ import type { APIMessageComponentEmoji, Emoji } from 'discord.js';
2
+ export declare function isDefined<T>(value: T | undefined | null): value is T;
3
+ export declare function formatBytes(bytes: number, decimals?: number): string;
4
+ export declare function parseDiscordEmoji(emoji: Emoji | APIMessageComponentEmoji): string;
5
+ /**
6
+ * Converts a stream to a string
7
+ * @param stream - The stream to convert
8
+ */
9
+ export declare function streamToString(stream: NodeJS.ReadableStream): Promise<string>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isDefined = isDefined;
7
+ exports.formatBytes = formatBytes;
8
+ exports.parseDiscordEmoji = parseDiscordEmoji;
9
+ exports.streamToString = streamToString;
10
+ const twemoji_1 = __importDefault(require("twemoji"));
11
+ function isDefined(value) {
12
+ return value !== undefined && value !== null;
13
+ }
14
+ function formatBytes(bytes, decimals = 2) {
15
+ if (bytes === 0)
16
+ return '0 Bytes';
17
+ const k = 1024;
18
+ const dm = decimals < 0 ? 0 : decimals;
19
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
20
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
21
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
22
+ }
23
+ function parseDiscordEmoji(emoji) {
24
+ if (emoji.id) {
25
+ return `https://cdn.discordapp.com/emojis/${emoji.id}.${emoji.animated ? 'gif' : 'png'}`;
26
+ }
27
+ const codepoints = twemoji_1.default.convert
28
+ .toCodePoint(emoji.name.indexOf(String.fromCharCode(0x200d)) < 0 ? emoji.name.replace(/\uFE0F/g, '') : emoji.name)
29
+ .toLowerCase();
30
+ return `https://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/svg/${codepoints}.svg`;
31
+ }
32
+ /**
33
+ * Converts a stream to a string
34
+ * @param stream - The stream to convert
35
+ */
36
+ function streamToString(stream) {
37
+ const chunks = [];
38
+ return new Promise((resolve, reject) => {
39
+ stream.on('data', (chunk) => chunks.push(chunk));
40
+ stream.on('error', reject);
41
+ stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
42
+ });
43
+ }
44
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;;;AAGA,8BAEC;AAED,kCAUC;AAED,8CAYC;AAMD,wCAQC;AA5CD,sDAA8B;AAE9B,SAAgB,SAAS,CAAI,KAA2B;IACtD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/C,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC;IACrD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAExE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAuC;IACvE,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,qCAAqC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3F,CAAC;IAED,MAAM,UAAU,GAAG,iBAAO,CAAC,OAAO;SAC/B,WAAW,CACV,KAAK,CAAC,IAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAK,CACxG;SACA,WAAW,EAAE,CAAC;IAEjB,OAAO,6DAA6D,UAAU,MAAM,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAA6B;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json ADDED
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "discord-html-transcripts-v2",
3
+ "version": "3.3.1",
4
+ "description": "A nicely formatted html transcript generator for discord.js.",
5
+ "main": "dist/index.js",
6
+ "homepage": "https://github.com/Exodo0/discord-html-transcripts-v2",
7
+ "types": "./dist/index.d.ts",
8
+ "scripts": {
9
+ "test": "echo \"Error: no test specified\" && exit 1",
10
+ "build": "tsc -p tsconfig.json",
11
+ "prepack": "npm run build",
12
+ "test:typescript": "ts-node ./tests/generate.ts",
13
+ "test:send-components-v2": "ts-node ./tests/components-v2-send.ts",
14
+ "lint": "prettier --write --cache . && eslint --cache --fix .",
15
+ "typecheck": "tsc -p tsconfig.eslint.json"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/Exodo0/discord-html-transcripts-v2.git"
20
+ },
21
+ "keywords": [
22
+ "discord.js",
23
+ "discord.js-transcripts",
24
+ "discord.js-html-transcripts",
25
+ "html-transcripts",
26
+ "discord-html-transcripts",
27
+ "discord-html-transcripts-v2",
28
+ "discord-transcripts"
29
+ ],
30
+ "author": "Exodo0",
31
+ "license": "Apache-2.0",
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "files": [
36
+ "dist/**/*.js",
37
+ "dist/**/*.d.ts",
38
+ "dist/**/*.js.map"
39
+ ],
40
+ "devDependencies": {
41
+ "@eslint/eslintrc": "^3.3.3",
42
+ "@eslint/js": "^9.39.3",
43
+ "@types/debug": "^4.1.12",
44
+ "@types/node": "^24.10.13",
45
+ "@types/react": "^19.2.14",
46
+ "@types/react-dom": "^19.2.3",
47
+ "@typescript-eslint/eslint-plugin": "^8.56.0",
48
+ "@typescript-eslint/parser": "^8.56.0",
49
+ "debug": "^4.4.3",
50
+ "discord.js": "^14.25.1",
51
+ "dotenv": "^17.3.1",
52
+ "eslint": "^9.39.3",
53
+ "globals": "^16.5.0",
54
+ "husky": "^9.1.7",
55
+ "prettier": "^3.8.1",
56
+ "pretty-quick": "^4.2.2",
57
+ "sharp": "^0.34.5",
58
+ "ts-node": "^10.9.2",
59
+ "typescript": "^5.9.3"
60
+ },
61
+ "dependencies": {
62
+ "@derockdev/discord-components-core": "^3.6.1",
63
+ "@derockdev/discord-components-react": "^3.6.1",
64
+ "discord-markdown-parser": "~1.2.0",
65
+ "react": "19.1.1",
66
+ "react-dom": "19.1.1",
67
+ "simple-markdown": "^0.7.3",
68
+ "twemoji": "^14.0.2",
69
+ "undici": "^7.22.0"
70
+ },
71
+ "peerDependencies": {
72
+ "discord.js": "^14.0.0 || ^15.0.0"
73
+ },
74
+ "overrides": {
75
+ "react": "$react",
76
+ "react-dom": "$react-dom"
77
+ },
78
+ "pnpm": {
79
+ "peerDependencyRules": {
80
+ "allowedVersions": {
81
+ "react": "$react",
82
+ "react-dom": "$react-dom"
83
+ }
84
+ }
85
+ },
86
+ "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
87
+ }