initial commit
This commit is contained in:
		
						commit
						70ccf22939
					
				
					 14 changed files with 1327 additions and 0 deletions
				
			
		
							
								
								
									
										31
									
								
								.devcontainer/devcontainer.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.devcontainer/devcontainer.json
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| // For format details, see https://aka.ms/devcontainer.json. For config options, see the | ||||
| // README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node | ||||
| { | ||||
| 	"name": "Node.js & TypeScript", | ||||
| 	// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile | ||||
| 	"image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bookworm", | ||||
| 
 | ||||
| 	// Features to add to the dev container. More info: https://containers.dev/features. | ||||
| 	"features": { | ||||
| 		"ghcr.io/devcontainers/features/git-lfs:1": {} | ||||
| 	}, | ||||
| 
 | ||||
| 	// Use 'forwardPorts' to make a list of ports inside the container available locally. | ||||
| 	// "forwardPorts": [], | ||||
| 
 | ||||
| 	// Use 'postCreateCommand' to run commands after the container is created. | ||||
| 	// "postCreateCommand": "yarn install", | ||||
| 	"postStartCommand": "yarn install", | ||||
| 
 | ||||
| 	// Configure tool-specific properties. | ||||
| 	"customizations": { | ||||
| 		"vscode": { | ||||
| 			"extensions": [ | ||||
| 				"esbenp.prettier-vscode" | ||||
| 			] | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. | ||||
| 	// "remoteUser": "root" | ||||
| } | ||||
							
								
								
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| *.png filter=lfs diff=lfs merge=lfs -text | ||||
| *.xcf filter=lfs diff=lfs merge=lfs -text | ||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| /node_modules/ | ||||
| /dist/ | ||||
							
								
								
									
										15
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| { | ||||
|   "editor.formatOnSave": true, | ||||
|   "[typescript]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "[javascript]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   }, | ||||
|   "editor.codeActionsOnSave": { | ||||
|     "source.organizeImports": "explicit" | ||||
|   }, | ||||
|   "git.closeDiffOnOperation": true, | ||||
|   "editor.tabSize": 2, | ||||
|   "prettier.trailingComma": "all", | ||||
| } | ||||
							
								
								
									
										16
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| { | ||||
| 	"version": "2.0.0", | ||||
| 	"tasks": [ | ||||
| 		{ | ||||
| 			"type": "npm", | ||||
| 			"script": "build", | ||||
| 			"group": { | ||||
| 				"kind": "build", | ||||
| 				"isDefault": true | ||||
| 			}, | ||||
| 			"problemMatcher": [], | ||||
| 			"label": "npm: build", | ||||
| 			"detail": "webpack --config webpack.config.js" | ||||
| 		} | ||||
| 	] | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								gfx/bttv.xcf
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gfx/bttv.xcf
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								gfx/bttv_original.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gfx/bttv_original.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| { | ||||
|   "name": "lmlfc-bttv", | ||||
|   "version": "0.0.1", | ||||
|   "author": "Jörn-Michael Miehe <joern-michael.miehe@lenaisten.de>", | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|     "build": "webpack --config webpack.config.js" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/chrome": "^0.0.254", | ||||
|     "copy-webpack-plugin": "^11.0.0", | ||||
|     "prettier": "^3.1.1", | ||||
|     "ts-loader": "^9.5.1", | ||||
|     "typescript": "^5.3.3", | ||||
|     "webpack": "^5.89.0", | ||||
|     "webpack-cli": "^5.1.4" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								public/bttv.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/bttv.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										18
									
								
								public/manifest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								public/manifest.json
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| { | ||||
|   "manifest_version": 3, | ||||
|   "name": "LMLFC-BTTV", | ||||
|   "version": "1.0", | ||||
|   "description": "Add the reading time to Chrome Extension documentation articles", | ||||
|   "content_scripts": [ | ||||
|     { | ||||
|       "js": ["main.js"], | ||||
|       "matches": ["*://*.lenameyerlandrut-fanclub.de/*"] | ||||
|     } | ||||
|   ], | ||||
|   "web_accessible_resources": [ | ||||
|     { | ||||
|       "resources": ["bttv.png"], | ||||
|       "matches": ["*://*.lenameyerlandrut-fanclub.de/*"] | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										47
									
								
								src/main.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/main.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | |||
| const emote_regex = /bttv:([^\s]+)/g; | ||||
| 
 | ||||
| async function bttv_get_url(code: string): Promise<string> { | ||||
|   return "changed from ext"; | ||||
| } | ||||
| 
 | ||||
| async function process_text(text: string): Promise<string> { | ||||
|   const emotes = text.matchAll(emote_regex); | ||||
| 
 | ||||
|   return text; | ||||
| } | ||||
| 
 | ||||
| (() => { | ||||
|   const cb_form = document.querySelector("#mgc_cb_evo_form"); | ||||
|   if (!(cb_form instanceof HTMLFormElement)) return; | ||||
| 
 | ||||
|   const bttv_btn = (() => { | ||||
|     const btn = document.createElement("a"); | ||||
|     btn.style.setProperty("cursor", "pointer"); | ||||
|     btn.style.setProperty("margin-right", "4px"); | ||||
| 
 | ||||
|     const img = document.createElement("img"); | ||||
|     img.setAttribute("src", chrome.runtime.getURL("bttv.png")); | ||||
|     img.style.setProperty("max-height", "25px"); | ||||
|     img.style.setProperty("max-width", "25px"); | ||||
|     img.style.setProperty("vertical-align", "middle"); | ||||
| 
 | ||||
|     btn.addEventListener("click", async (event) => { | ||||
|       const cb_input = document.querySelector("#mgc_cb_evo_input"); | ||||
|       if (!(cb_input instanceof HTMLInputElement)) return; | ||||
| 
 | ||||
|       cb_input.focus(); | ||||
|       cb_input.value += await bttv_get_url("foo bar"); | ||||
|       cb_input.focus(); | ||||
|     }); | ||||
| 
 | ||||
|     btn.appendChild(img); | ||||
|     return btn; | ||||
|   })(); | ||||
| 
 | ||||
|   cb_form.insertBefore( | ||||
|     bttv_btn, | ||||
|     document.querySelector("#mgc_cb_evo_form > input[type=image]:nth-child(2)"), | ||||
|   ); | ||||
| 
 | ||||
|   console.log("done."); | ||||
| })(); | ||||
							
								
								
									
										13
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| { | ||||
|   "compilerOptions": { | ||||
|     "strict": true, | ||||
|     "module": "commonjs", | ||||
|     "target": "es6", | ||||
|     "esModuleInterop": true, | ||||
|     "sourceMap": true, | ||||
|     "rootDir": "src", | ||||
|     "outDir": "dist/js", | ||||
|     "noEmitOnError": true, | ||||
|     "typeRoots": ["node_modules/@types"] | ||||
|   } | ||||
| } | ||||
							
								
								
									
										29
									
								
								webpack.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								webpack.config.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| const path = require("path"); | ||||
| const CopyPlugin = require("copy-webpack-plugin"); | ||||
| module.exports = { | ||||
|   mode: "production", | ||||
|   entry: { | ||||
|     main: path.join(__dirname, "src", "main.ts"), | ||||
|   }, | ||||
|   output: { | ||||
|     path: path.join(__dirname, "dist"), | ||||
|     filename: "[name].js", | ||||
|   }, | ||||
|   resolve: { | ||||
|     extensions: [".ts", ".js"], | ||||
|   }, | ||||
|   module: { | ||||
|     rules: [ | ||||
|       { | ||||
|         test: /\.tsx?$/, | ||||
|         loader: "ts-loader", | ||||
|         exclude: /node_modules/, | ||||
|       }, | ||||
|     ], | ||||
|   }, | ||||
|   plugins: [ | ||||
|     new CopyPlugin({ | ||||
|       patterns: [{ from: ".", to: ".", context: "public" }], | ||||
|     }), | ||||
|   ], | ||||
| }; | ||||
		Loading…
	
		Reference in a new issue