This commit is contained in:
		
							
								
								
									
										22
									
								
								.drone.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.drone.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| kind: pipeline | ||||
| type: docker | ||||
| name: updateASSETs | ||||
|  | ||||
| platform: | ||||
|   os: linux | ||||
|   arch: arm64 | ||||
|  | ||||
| trigger: | ||||
|   branch: | ||||
|     - master | ||||
|  | ||||
| steps: | ||||
|   - name: deploy | ||||
|     image: node:lts-alpine | ||||
|     environment: | ||||
|       RIPE_PASSWORD: | ||||
|         from_secret: ripe_password | ||||
|     commands: | ||||
|       - apk add bgpq4 --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing | ||||
|       - yarn | ||||
|       - yarn deploy | ||||
							
								
								
									
										130
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,130 @@ | ||||
| # Logs | ||||
| logs | ||||
| *.log | ||||
| npm-debug.log* | ||||
| yarn-debug.log* | ||||
| yarn-error.log* | ||||
| lerna-debug.log* | ||||
| .pnpm-debug.log* | ||||
|  | ||||
| # Diagnostic reports (https://nodejs.org/api/report.html) | ||||
| report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | ||||
|  | ||||
| # Runtime data | ||||
| pids | ||||
| *.pid | ||||
| *.seed | ||||
| *.pid.lock | ||||
|  | ||||
| # Directory for instrumented libs generated by jscoverage/JSCover | ||||
| lib-cov | ||||
|  | ||||
| # Coverage directory used by tools like istanbul | ||||
| coverage | ||||
| *.lcov | ||||
|  | ||||
| # nyc test coverage | ||||
| .nyc_output | ||||
|  | ||||
| # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) | ||||
| .grunt | ||||
|  | ||||
| # Bower dependency directory (https://bower.io/) | ||||
| bower_components | ||||
|  | ||||
| # node-waf configuration | ||||
| .lock-wscript | ||||
|  | ||||
| # Compiled binary addons (https://nodejs.org/api/addons.html) | ||||
| build/Release | ||||
|  | ||||
| # Dependency directories | ||||
| node_modules/ | ||||
| jspm_packages/ | ||||
|  | ||||
| # Snowpack dependency directory (https://snowpack.dev/) | ||||
| web_modules/ | ||||
|  | ||||
| # TypeScript cache | ||||
| *.tsbuildinfo | ||||
|  | ||||
| # Optional npm cache directory | ||||
| .npm | ||||
|  | ||||
| # Optional eslint cache | ||||
| .eslintcache | ||||
|  | ||||
| # Optional stylelint cache | ||||
| .stylelintcache | ||||
|  | ||||
| # Microbundle cache | ||||
| .rpt2_cache/ | ||||
| .rts2_cache_cjs/ | ||||
| .rts2_cache_es/ | ||||
| .rts2_cache_umd/ | ||||
|  | ||||
| # Optional REPL history | ||||
| .node_repl_history | ||||
|  | ||||
| # Output of 'npm pack' | ||||
| *.tgz | ||||
|  | ||||
| # Yarn Integrity file | ||||
| .yarn-integrity | ||||
|  | ||||
| # dotenv environment variable files | ||||
| .env | ||||
| .env.development.local | ||||
| .env.test.local | ||||
| .env.production.local | ||||
| .env.local | ||||
|  | ||||
| # parcel-bundler cache (https://parceljs.org/) | ||||
| .cache | ||||
| .parcel-cache | ||||
|  | ||||
| # Next.js build output | ||||
| .next | ||||
| out | ||||
|  | ||||
| # Nuxt.js build / generate output | ||||
| .nuxt | ||||
| dist | ||||
|  | ||||
| # Gatsby files | ||||
| .cache/ | ||||
| # Comment in the public line in if your project uses Gatsby and not Next.js | ||||
| # https://nextjs.org/blog/next-9-1#public-directory-support | ||||
| # public | ||||
|  | ||||
| # vuepress build output | ||||
| .vuepress/dist | ||||
|  | ||||
| # vuepress v2.x temp and cache directory | ||||
| .temp | ||||
| .cache | ||||
|  | ||||
| # Docusaurus cache and generated files | ||||
| .docusaurus | ||||
|  | ||||
| # Serverless directories | ||||
| .serverless/ | ||||
|  | ||||
| # FuseBox cache | ||||
| .fusebox/ | ||||
|  | ||||
| # DynamoDB Local files | ||||
| .dynamodb/ | ||||
|  | ||||
| # TernJS port file | ||||
| .tern-port | ||||
|  | ||||
| # Stores VSCode versions used for testing VSCode extensions | ||||
| .vscode-test | ||||
|  | ||||
| # yarn v2 | ||||
| .yarn/cache | ||||
| .yarn/unplugged | ||||
| .yarn/build-state.yml | ||||
| .yarn/install-state.gz | ||||
| .pnp.* | ||||
							
								
								
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| # MIT License | ||||
|  | ||||
| Copyright (c) 2022 186526 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										78
									
								
								config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								config.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,78 @@ | ||||
| MNT-BY: | ||||
|   - NET186-MNT | ||||
|   - real186526-MNT | ||||
|  | ||||
| TECH-C: | ||||
|   - NA7759-RIPE | ||||
|  | ||||
| ADMIN-C: | ||||
|   - NA7759-RIPE | ||||
|  | ||||
| AS-SETS: | ||||
|   "AS200536:AS-DOWNSTREAMS": | ||||
|     remarks: | ||||
|       - 186526 Network (AS200536) Downstream AS-SET. | ||||
|     group: | ||||
|       - "*" | ||||
|  | ||||
|   "AS200536:AS-DOWNSTREAMS-EMEA": | ||||
|     remarks: | ||||
|       - 186526 Network (AS200536) Downstream AS-SET (EMEA only). | ||||
|     include: | ||||
|       - "AS200536:AS-DOWNSTREAMS-SELF" | ||||
|     group: | ||||
|       - GLOBAL | ||||
|       - EMEA | ||||
|  | ||||
|   "AS200536:AS-DOWNSTREAMS-APAC": | ||||
|     remarks: | ||||
|       - 186526 Network (AS200536) Downstream AS-SET (APAC only). | ||||
|     include: | ||||
|       - "AS200536:AS-DOWNSTREAMS-SELF" | ||||
|     group: | ||||
|       - GLOBAL | ||||
|       - APAC | ||||
|  | ||||
|   "AS200536:AS-DOWNSTREAMS-AMER": | ||||
|     remarks: | ||||
|       - 186526 Network (AS200536) Downstream AS-SET (The Americas only). | ||||
|     include: | ||||
|       - "AS200536:AS-DOWNSTREAMS-SELF" | ||||
|     group: | ||||
|       - GLOBAL | ||||
|       - AMER | ||||
|  | ||||
|   "AS200536:AS-DOWNSTREAMS-SELF": | ||||
|     remarks: | ||||
|       - 186526 Network Self AS AS-SET. | ||||
|     group: | ||||
|       - SELF | ||||
|  | ||||
| members: | ||||
|   - AS200536: | ||||
|       - GLOBAL | ||||
|       - SELF | ||||
|   - AS140506: | ||||
|       - APAC | ||||
|       - SELF | ||||
|   - "RIPE::AS-WJY": | ||||
|       - GLOBAL | ||||
|       - "GLOBAL:CUSTOMER" | ||||
|   - "APNIC::AS-BLING": | ||||
|       - GLOBAL | ||||
|       - "GLOBAL:CUSTOMER" | ||||
|   - "AS200895:AS-GUA": | ||||
|       - APAC | ||||
|       - "APAC:CUSTOMER" | ||||
|   - "AS200592:AS-NETLGY": | ||||
|       - EMEA | ||||
|       - "EMEA:CUSTOMER" | ||||
|   - "APNIC::AS-MoeQing-EU": | ||||
|       - EMEA | ||||
|       - "EMEA:CUSTOMER" | ||||
|   - AS200907: | ||||
|       - APAC | ||||
|       - "APAC:CUSTOMER" | ||||
|   - "RIPE::AS-SET-N7DMR": | ||||
|       - AMER | ||||
|       - "AMER:CUSTOMER" | ||||
							
								
								
									
										19
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| { | ||||
|   "name": "net186-as-set", | ||||
|   "version": "1.0.0", | ||||
|   "main": "src/index.ts", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "axios": "^1.3.4", | ||||
|     "lru-cache": "^7.18.1", | ||||
|     "ts-node": "^10.9.1", | ||||
|     "typescript": "^4.9.5", | ||||
|     "yaml": "^2.2.1" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/node": "^18.14.6" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "deploy": "cd src && ts-node ./index.ts" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										10
									
								
								readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| # NET186 AS-SET | ||||
|  | ||||
| > This project aims to automatically maintain our AS-SET objects. | ||||
|  | ||||
| [](https://ci.186526.xyz/186526/net186-as-set) | ||||
|  | ||||
| ## Pull request | ||||
|  | ||||
| Anyone using our (AS200536) Transit can create a pull request to add your AS-SET. | ||||
| We also welcome pull requests for maintenance of the project. | ||||
							
								
								
									
										21
									
								
								src/bgpq4.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/bgpq4.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| import { execFile } from "node:child_process"; | ||||
| import LRUCache from "lru-cache"; | ||||
|  | ||||
| const cache = new LRUCache({ | ||||
| 	max: 500, | ||||
| 	ttl: 1000 * 60 * 5, | ||||
| }); | ||||
|  | ||||
| export default async function bgpq4(asSet: string): Promise<number[]> { | ||||
| 	if (cache.has(asSet)) return cache.get(asSet) as number[]; | ||||
| 	const answer: { as: number[] } = await new Promise((resolve) => { | ||||
| 		execFile("bgpq4", ["-tjl", "as", "-L", "6", asSet], (error, stdout) => { | ||||
| 			if (error) { | ||||
| 				throw error; | ||||
| 			} | ||||
| 			resolve(JSON.parse(stdout)); | ||||
| 		}); | ||||
| 	}); | ||||
| 	cache.set(asSet, answer.as); | ||||
| 	return answer.as; | ||||
| } | ||||
							
								
								
									
										116
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,116 @@ | ||||
| import bgpq4 from "./bgpq4"; | ||||
| import fs from "node:fs"; | ||||
| import YAML from "yaml"; | ||||
|  | ||||
| import axios from "axios"; | ||||
| import { env } from "node:process"; | ||||
|  | ||||
| const main = async () => { | ||||
| 	const config: { | ||||
| 		"MNT-BY": string[]; | ||||
| 		"TECH-C": string[]; | ||||
| 		"ADMIN-C": string[]; | ||||
| 		"AS-SETS": { | ||||
| 			[asSetsName: string]: { | ||||
| 				group: [groupName: string][]; | ||||
| 				expect: number[]; | ||||
| 				include: string[]; | ||||
| 				remarks: string[]; | ||||
| 			}; | ||||
| 		}; | ||||
| 		members: { | ||||
| 			[member: string]: [groupName: string][]; | ||||
| 		}[]; | ||||
| 	} = YAML.parse(fs.readFileSync("../config.yaml", "utf8")); | ||||
|  | ||||
| 	const asSets: { | ||||
| 		"AS-SET": string; | ||||
| 		"MNT-BY": string[]; | ||||
| 		"TECH-C": string[]; | ||||
| 		"ADMIN-C": string[]; | ||||
| 		members: number[]; | ||||
| 		remarks: string[]; | ||||
| 		include: string[]; | ||||
| 	}[] = []; | ||||
|  | ||||
| 	console.log("INFO: start AS-SETS generation."); | ||||
|  | ||||
| 	let i = 1; | ||||
|  | ||||
| 	for (let asSetName in config["AS-SETS"]) { | ||||
| 		console.log( | ||||
| 			`INFO: generating AS-SETS <${asSetName}>... (${i}/${ | ||||
| 				Object.keys(config["AS-SETS"]).length | ||||
| 			})\n` | ||||
| 		); | ||||
| 		let members = await Promise.all( | ||||
| 			config.members.map(async (member) => { | ||||
| 				const setName = Object.keys(member)[0]; | ||||
| 				const setGroup = Object.values(member)[0]; | ||||
|  | ||||
| 				if ( | ||||
| 					config["AS-SETS"][asSetName].group.filter( | ||||
| 						(e) => setGroup.includes(e) || (e as any) === "*" | ||||
| 					).length == 0 | ||||
| 				) | ||||
| 					return undefined; | ||||
|  | ||||
| 				const answer = await bgpq4(setName); | ||||
|  | ||||
| 				console.log("Add", setName, answer, "to", asSetName); | ||||
|  | ||||
| 				return answer.filter( | ||||
| 					(as) => !(config["AS-SETS"][asSetName].expect ?? [0]).includes(as) | ||||
| 				); | ||||
| 			}) | ||||
| 		); | ||||
|  | ||||
| 		config["AS-SETS"][asSetName].remarks.push( | ||||
| 			`Generated by git.186526.xyz/186526/net186-as-set.` | ||||
| 		); | ||||
| 		config["AS-SETS"][asSetName].remarks.push( | ||||
| 			`Updated on ${new Date().toISOString()}.` | ||||
| 		); | ||||
|  | ||||
| 		asSets.push({ | ||||
| 			"AS-SET": asSetName, | ||||
| 			"MNT-BY": config["MNT-BY"], | ||||
| 			"TECH-C": config["TECH-C"], | ||||
| 			"ADMIN-C": config["ADMIN-C"], | ||||
| 			remarks: config["AS-SETS"][asSetName].remarks, | ||||
| 			members: Array.from(new Set(members.flat(Infinity))).filter( | ||||
| 				Boolean | ||||
| 			) as number[], | ||||
| 			include: config["AS-SETS"][asSetName].include, | ||||
| 		}); | ||||
| 		i++; | ||||
| 		console.log(""); | ||||
| 	} | ||||
| 	const answer = asSets.map((k) => { | ||||
| 		return `as-set: ${k["AS-SET"]} | ||||
| ${k["MNT-BY"].map((k) => `mnt-by: ${k}`).join("\n")} | ||||
| ${k["TECH-C"].map((k) => `tech-c: ${k}`).join("\n")} | ||||
| ${k["ADMIN-C"].map((k) => `admin-c: ${k}`).join("\n")} | ||||
| ${k.remarks.map((k) => `remarks: ${k}`).join("\n")} | ||||
| ${k.members.map((k) => `members: AS${k}`).join("\n")}${(k.include ?? []).map( | ||||
| 			(k) => `\nmembers: ${k}` | ||||
| 		)} | ||||
| source: RIPE\npassword: ${env["RIPE_PASSWORD"]}\n | ||||
| `; | ||||
| 	}); | ||||
| 	console.log("INFO: sending update to RIPE Syncupdates..."); | ||||
| 	const update = await axios.post( | ||||
| 		"https://syncupdates.db.ripe.net", | ||||
| 		`DATA=${answer.join("\n")}`, | ||||
| 		{ | ||||
| 			headers: { | ||||
| 				"Content-Type": "application/x-www-form-urlencoded", | ||||
| 				"User-Agent": "net186-as-set/1.0.0 axios curl", | ||||
| 			}, | ||||
| 		} | ||||
| 	); | ||||
| 	console.log("INFO: Updates finished.\n"); | ||||
| 	console.log(update.data); | ||||
| }; | ||||
|  | ||||
| main(); | ||||
							
								
								
									
										28
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| { | ||||
|   "compilerOptions": { | ||||
|     "target": "es2017", | ||||
|     "module": "commonjs", | ||||
|     "lib": ["dom", "es6", "es2017", "esnext.asynciterable"], | ||||
|     "skipLibCheck": true, | ||||
|     "sourceMap": true, | ||||
|     "outDir": "./dist", | ||||
|     "moduleResolution": "node", | ||||
|     "removeComments": true, | ||||
|     "noImplicitAny": true, | ||||
|     "strictNullChecks": true, | ||||
|     "strictFunctionTypes": true, | ||||
|     "noImplicitThis": true, | ||||
|     "noUnusedLocals": true, | ||||
|     "noUnusedParameters": true, | ||||
|     "noImplicitReturns": true, | ||||
|     "noFallthroughCasesInSwitch": true, | ||||
|     "allowSyntheticDefaultImports": true, | ||||
|     "esModuleInterop": true, | ||||
|     "emitDecoratorMetadata": true, | ||||
|     "experimentalDecorators": true, | ||||
|     "resolveJsonModule": true, | ||||
|     "baseUrl": "." | ||||
|   }, | ||||
|   "exclude": ["node_modules"], | ||||
|   "include": ["./src/**/*.ts"] | ||||
| } | ||||
							
								
								
									
										184
									
								
								yarn.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										184
									
								
								yarn.lock
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,184 @@ | ||||
| # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. | ||||
| # yarn lockfile v1 | ||||
|  | ||||
|  | ||||
| "@cspotcode/source-map-support@^0.8.0": | ||||
|   version "0.8.1" | ||||
|   resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" | ||||
|   integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== | ||||
|   dependencies: | ||||
|     "@jridgewell/trace-mapping" "0.3.9" | ||||
|  | ||||
| "@jridgewell/resolve-uri@^3.0.3": | ||||
|   version "3.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" | ||||
|   integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== | ||||
|  | ||||
| "@jridgewell/sourcemap-codec@^1.4.10": | ||||
|   version "1.4.14" | ||||
|   resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" | ||||
|   integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== | ||||
|  | ||||
| "@jridgewell/trace-mapping@0.3.9": | ||||
|   version "0.3.9" | ||||
|   resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" | ||||
|   integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== | ||||
|   dependencies: | ||||
|     "@jridgewell/resolve-uri" "^3.0.3" | ||||
|     "@jridgewell/sourcemap-codec" "^1.4.10" | ||||
|  | ||||
| "@tsconfig/node10@^1.0.7": | ||||
|   version "1.0.9" | ||||
|   resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" | ||||
|   integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== | ||||
|  | ||||
| "@tsconfig/node12@^1.0.7": | ||||
|   version "1.0.11" | ||||
|   resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" | ||||
|   integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== | ||||
|  | ||||
| "@tsconfig/node14@^1.0.0": | ||||
|   version "1.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" | ||||
|   integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== | ||||
|  | ||||
| "@tsconfig/node16@^1.0.2": | ||||
|   version "1.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" | ||||
|   integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== | ||||
|  | ||||
| "@types/node@^18.14.6": | ||||
|   version "18.14.6" | ||||
|   resolved "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz" | ||||
|   integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== | ||||
|  | ||||
| acorn-walk@^8.1.1: | ||||
|   version "8.2.0" | ||||
|   resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" | ||||
|   integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== | ||||
|  | ||||
| acorn@^8.4.1: | ||||
|   version "8.8.2" | ||||
|   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" | ||||
|   integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== | ||||
|  | ||||
| arg@^4.1.0: | ||||
|   version "4.1.3" | ||||
|   resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" | ||||
|   integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== | ||||
|  | ||||
| asynckit@^0.4.0: | ||||
|   version "0.4.0" | ||||
|   resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" | ||||
|   integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== | ||||
|  | ||||
| axios@^1.3.4: | ||||
|   version "1.3.4" | ||||
|   resolved "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz" | ||||
|   integrity sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ== | ||||
|   dependencies: | ||||
|     follow-redirects "^1.15.0" | ||||
|     form-data "^4.0.0" | ||||
|     proxy-from-env "^1.1.0" | ||||
|  | ||||
| combined-stream@^1.0.8: | ||||
|   version "1.0.8" | ||||
|   resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" | ||||
|   integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== | ||||
|   dependencies: | ||||
|     delayed-stream "~1.0.0" | ||||
|  | ||||
| create-require@^1.1.0: | ||||
|   version "1.1.1" | ||||
|   resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" | ||||
|   integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== | ||||
|  | ||||
| delayed-stream@~1.0.0: | ||||
|   version "1.0.0" | ||||
|   resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" | ||||
|   integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== | ||||
|  | ||||
| diff@^4.0.1: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" | ||||
|   integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== | ||||
|  | ||||
| follow-redirects@^1.15.0: | ||||
|   version "1.15.2" | ||||
|   resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" | ||||
|   integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== | ||||
|  | ||||
| form-data@^4.0.0: | ||||
|   version "4.0.0" | ||||
|   resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" | ||||
|   integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== | ||||
|   dependencies: | ||||
|     asynckit "^0.4.0" | ||||
|     combined-stream "^1.0.8" | ||||
|     mime-types "^2.1.12" | ||||
|  | ||||
| lru-cache@^7.18.1: | ||||
|   version "7.18.1" | ||||
|   resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.1.tgz#4716408dec51d5d0104732647f584d1f6738b109" | ||||
|   integrity sha512-8/HcIENyQnfUTCDizRu9rrDyG6XG/21M4X7/YEGZeD76ZJilFPAUVb/2zysFf7VVO1LEjCDFyHp8pMMvozIrvg== | ||||
|  | ||||
| make-error@^1.1.1: | ||||
|   version "1.3.6" | ||||
|   resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" | ||||
|   integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== | ||||
|  | ||||
| mime-db@1.52.0: | ||||
|   version "1.52.0" | ||||
|   resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" | ||||
|   integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== | ||||
|  | ||||
| mime-types@^2.1.12: | ||||
|   version "2.1.35" | ||||
|   resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" | ||||
|   integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== | ||||
|   dependencies: | ||||
|     mime-db "1.52.0" | ||||
|  | ||||
| proxy-from-env@^1.1.0: | ||||
|   version "1.1.0" | ||||
|   resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" | ||||
|   integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== | ||||
|  | ||||
| ts-node@^10.9.1: | ||||
|   version "10.9.1" | ||||
|   resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" | ||||
|   integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== | ||||
|   dependencies: | ||||
|     "@cspotcode/source-map-support" "^0.8.0" | ||||
|     "@tsconfig/node10" "^1.0.7" | ||||
|     "@tsconfig/node12" "^1.0.7" | ||||
|     "@tsconfig/node14" "^1.0.0" | ||||
|     "@tsconfig/node16" "^1.0.2" | ||||
|     acorn "^8.4.1" | ||||
|     acorn-walk "^8.1.1" | ||||
|     arg "^4.1.0" | ||||
|     create-require "^1.1.0" | ||||
|     diff "^4.0.1" | ||||
|     make-error "^1.1.1" | ||||
|     v8-compile-cache-lib "^3.0.1" | ||||
|     yn "3.1.1" | ||||
|  | ||||
| typescript@^4.9.5: | ||||
|   version "4.9.5" | ||||
|   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" | ||||
|   integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== | ||||
|  | ||||
| v8-compile-cache-lib@^3.0.1: | ||||
|   version "3.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" | ||||
|   integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== | ||||
|  | ||||
| yaml@^2.2.1: | ||||
|   version "2.2.1" | ||||
|   resolved "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz" | ||||
|   integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== | ||||
|  | ||||
| yn@3.1.1: | ||||
|   version "3.1.1" | ||||
|   resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" | ||||
|   integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== | ||||
		Reference in New Issue
	
	Block a user