Fork turndown for Discord-like link escaping
This commit is contained in:
		| @@ -4,7 +4,7 @@ const Ty = require("../../types") | |||||||
| const DiscordTypes = require("discord-api-types/v10") | const DiscordTypes = require("discord-api-types/v10") | ||||||
| const {Readable} = require("stream") | const {Readable} = require("stream") | ||||||
| const chunk = require("chunk-text") | const chunk = require("chunk-text") | ||||||
| const TurndownService = require("turndown") | const TurndownService = require("@cloudrac3r/turndown") | ||||||
| const domino = require("domino") | const domino = require("domino") | ||||||
| const assert = require("assert").strict | const assert = require("assert").strict | ||||||
| const entities = require("entities") | const entities = require("entities") | ||||||
|   | |||||||
| @@ -263,6 +263,45 @@ test("event2message: links in formatted body where the text & href are the same, | |||||||
| 	) | 	) | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | test("event2message: markdown in link text does not attempt to be escaped because that doesn't work", async t => { | ||||||
|  | 	t.deepEqual( | ||||||
|  | 		await eventToMessage({ | ||||||
|  | 			content: { | ||||||
|  | 				body: "hey mario sports mix [she/her], is it possible to listen on a unix socket?", | ||||||
|  | 				format: "org.matrix.custom.html", | ||||||
|  | 				formatted_body: "hey <a href=\"https://matrix.to/#/%40cadence%3Acadence.moe\">mario sports mix [she/her]</a>, is it possible to listen on a unix socket?", | ||||||
|  | 				"m.mentions": { | ||||||
|  | 					"user_ids": [ | ||||||
|  | 						"@cadence:cadence.moe" | ||||||
|  | 					] | ||||||
|  | 				}, | ||||||
|  | 				msgtype: "m.text" | ||||||
|  | 			}, | ||||||
|  | 			event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU", | ||||||
|  | 			origin_server_ts: 1688301929913, | ||||||
|  | 			room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe", | ||||||
|  | 			sender: "@cadence:cadence.moe", | ||||||
|  | 			type: "m.room.message", | ||||||
|  | 			unsigned: { | ||||||
|  | 				age: 405299 | ||||||
|  | 			} | ||||||
|  | 		}), | ||||||
|  | 		{ | ||||||
|  | 			ensureJoined: [], | ||||||
|  | 			messagesToDelete: [], | ||||||
|  | 			messagesToEdit: [], | ||||||
|  | 			messagesToSend: [{ | ||||||
|  | 				username: "cadence [they]", | ||||||
|  | 				content: "hey [mario sports mix [she/her]](<https://matrix.to/#/%40cadence%3Acadence.moe>), is it possible to listen on a unix socket?", | ||||||
|  | 				avatar_url: undefined, | ||||||
|  | 				allowed_mentions: { | ||||||
|  | 					parse: ["users", "roles"] | ||||||
|  | 				} | ||||||
|  | 			}] | ||||||
|  | 		} | ||||||
|  | 	) | ||||||
|  | }) | ||||||
|  |  | ||||||
| test("event2message: basic html is converted to markdown", async t => { | test("event2message: basic html is converted to markdown", async t => { | ||||||
| 	t.deepEqual( | 	t.deepEqual( | ||||||
| 		await eventToMessage({ | 		await eventToMessage({ | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										19
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -15,9 +15,11 @@ | |||||||
|         "@cloudrac3r/html-template-tag": "^5.0.1", |         "@cloudrac3r/html-template-tag": "^5.0.1", | ||||||
|         "@cloudrac3r/mixin-deep": "^3.0.0", |         "@cloudrac3r/mixin-deep": "^3.0.0", | ||||||
|         "@cloudrac3r/pngjs": "^7.0.3", |         "@cloudrac3r/pngjs": "^7.0.3", | ||||||
|  |         "@cloudrac3r/turndown": "^7.1.4", | ||||||
|         "better-sqlite3": "^9.0.0", |         "better-sqlite3": "^9.0.0", | ||||||
|         "chunk-text": "^2.0.1", |         "chunk-text": "^2.0.1", | ||||||
|         "cloudstorm": "^0.10.8", |         "cloudstorm": "^0.10.8", | ||||||
|  |         "domino": "^2.1.6", | ||||||
|         "entities": "^4.5.0", |         "entities": "^4.5.0", | ||||||
|         "get-stream": "^6.0.1", |         "get-stream": "^6.0.1", | ||||||
|         "heatsync": "^2.5.3", |         "heatsync": "^2.5.3", | ||||||
| @@ -30,7 +32,6 @@ | |||||||
|         "snowtransfer": "^0.10.5", |         "snowtransfer": "^0.10.5", | ||||||
|         "stream-mime-type": "^1.0.2", |         "stream-mime-type": "^1.0.2", | ||||||
|         "try-to-catch": "^3.0.1", |         "try-to-catch": "^3.0.1", | ||||||
|         "turndown": "^7.1.2", |  | ||||||
|         "xxhash-wasm": "^1.0.2" |         "xxhash-wasm": "^1.0.2" | ||||||
|       }, |       }, | ||||||
|       "devDependencies": { |       "devDependencies": { | ||||||
| @@ -213,6 +214,14 @@ | |||||||
|         "node": ">=8.0.0" |         "node": ">=8.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/@cloudrac3r/turndown": { | ||||||
|  |       "version": "7.1.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@cloudrac3r/turndown/-/turndown-7.1.4.tgz", | ||||||
|  |       "integrity": "sha512-bQAwcvcSqBTdEHPMt+IAZWIoDh+2eRuy9TgD0FUdxVurbvj3CUHTxLfzlmsO0UTi+GHpgYqDSsVdV7kYTNq5Qg==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "domino": "^2.1.6" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/@isaacs/cliui": { |     "node_modules/@isaacs/cliui": { | ||||||
|       "version": "8.0.2", |       "version": "8.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", |       "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", | ||||||
| @@ -3100,14 +3109,6 @@ | |||||||
|         "node": "*" |         "node": "*" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/turndown": { |  | ||||||
|       "version": "7.1.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.1.2.tgz", |  | ||||||
|       "integrity": "sha512-ntI9R7fcUKjqBP6QU8rBK2Ehyt8LAzt3UBT9JR9tgo6GtuKvyUzpayWmeMKJw1DPdXzktvtIT8m2mVXz+bL/Qg==", |  | ||||||
|       "dependencies": { |  | ||||||
|         "domino": "^2.1.6" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "node_modules/type-is": { |     "node_modules/type-is": { | ||||||
|       "version": "1.6.18", |       "version": "1.6.18", | ||||||
|       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", |       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||||||
|   | |||||||
| @@ -21,9 +21,11 @@ | |||||||
|     "@cloudrac3r/html-template-tag": "^5.0.1", |     "@cloudrac3r/html-template-tag": "^5.0.1", | ||||||
|     "@cloudrac3r/mixin-deep": "^3.0.0", |     "@cloudrac3r/mixin-deep": "^3.0.0", | ||||||
|     "@cloudrac3r/pngjs": "^7.0.3", |     "@cloudrac3r/pngjs": "^7.0.3", | ||||||
|  |     "@cloudrac3r/turndown": "^7.1.4", | ||||||
|     "better-sqlite3": "^9.0.0", |     "better-sqlite3": "^9.0.0", | ||||||
|     "chunk-text": "^2.0.1", |     "chunk-text": "^2.0.1", | ||||||
|     "cloudstorm": "^0.10.8", |     "cloudstorm": "^0.10.8", | ||||||
|  |     "domino": "^2.1.6", | ||||||
|     "entities": "^4.5.0", |     "entities": "^4.5.0", | ||||||
|     "get-stream": "^6.0.1", |     "get-stream": "^6.0.1", | ||||||
|     "heatsync": "^2.5.3", |     "heatsync": "^2.5.3", | ||||||
| @@ -36,7 +38,6 @@ | |||||||
|     "snowtransfer": "^0.10.5", |     "snowtransfer": "^0.10.5", | ||||||
|     "stream-mime-type": "^1.0.2", |     "stream-mime-type": "^1.0.2", | ||||||
|     "try-to-catch": "^3.0.1", |     "try-to-catch": "^3.0.1", | ||||||
|     "turndown": "^7.1.2", |  | ||||||
|     "xxhash-wasm": "^1.0.2" |     "xxhash-wasm": "^1.0.2" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Cadence Ember
					Cadence Ember