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