Docker image support #18

Merged
Sirherobrine23 merged 6 commits from dockerImage into main 2023-03-29 16:19:56 +00:00
4 changed files with 228 additions and 168 deletions
Showing only changes of commit 2892b4270c - Show all commits

245
package-lock.json generated
View File

@ -9,11 +9,11 @@
"version": "1.0.0",
"license": "GPL-2.0",
"dependencies": {
"@sirherobrine23/cloud": "^3.5.0",
"@sirherobrine23/debian": "^3.5.0",
"@sirherobrine23/docker-registry": "^3.5.0",
"@sirherobrine23/extends": "^3.5.0",
"@sirherobrine23/http": "^3.5.0",
"@sirherobrine23/cloud": "^3.5.2",
"@sirherobrine23/debian": "^3.5.2",
"@sirherobrine23/docker-registry": "^3.5.2",
"@sirherobrine23/extends": "^3.5.2",
"@sirherobrine23/http": "^3.5.2",
"acme-client": "^5.0.0",
"express": "^4.18.2",
"inquirer": "^9.1.4",
@ -414,17 +414,17 @@
}
},
"node_modules/@sirherobrine23/ar": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/@sirherobrine23/ar/-/ar-3.5.0.tgz",
"integrity": "sha512-sB+CNnrxxX8uR1315pJIhHnYUii4WWVdquQdKj5xBuk9m+MdAMHZPBj960ld9aKLeccsPmr1IIkTUEHUUKOHHQ=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/@sirherobrine23/ar/-/ar-3.5.2.tgz",
"integrity": "sha512-rvCyKgVUKp6XyWRBAP8hTfFtX2JQJOuWgccX0ICDyApSCwDvLq2pj4JqHppfYhi+g3rwLPgzNs++Sr1g4sb0eg=="
},
"node_modules/@sirherobrine23/cloud": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/@sirherobrine23/cloud/-/cloud-3.5.0.tgz",
"integrity": "sha512-6gZbbOKnmNodTnY1rJYY6by+R4v19AFrYQNbkJDH7hGJHT7+RsTohkIIzESBTnpmQzjyo+y+zhuo6VLPEtB4Lg==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/@sirherobrine23/cloud/-/cloud-3.5.2.tgz",
"integrity": "sha512-ym5AwSjekpuBc0kMmAbPnAjl4vNoTYFcWqIfb6BEpiYjJHdnSFAu2QWSPMIzUL9NOCsU8oiTLQVwkbj2Psxjyg==",
"dependencies": {
"@sirherobrine23/extends": "3.5.0",
"@sirherobrine23/http": "3.5.0",
"@sirherobrine23/extends": "3.5.2",
"@sirherobrine23/http": "3.5.2",
"chokidar": "^3.5.3",
"googleapis": "^110.0.0",
"oci-common": "^2.50.4",
@ -432,36 +432,37 @@
}
},
"node_modules/@sirherobrine23/debian": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/@sirherobrine23/debian/-/debian-3.5.0.tgz",
"integrity": "sha512-doLoqfVyL/QNSqizrsOkZaO18ulUcx4jmEM0m2vnilDalR9IzjSzFL1nS930mXR3ZrUZf4h4IkjEXwsk0GaSDQ==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/@sirherobrine23/debian/-/debian-3.5.2.tgz",
"integrity": "sha512-l2QJLnnEteGjkJLQbsxPlFyUCkJD6KxQnrudB1WQCEzC4q0E3zU/Ip7OSuZ0l5X0R6O8nhxgkEJJXGM0ZAeoPw==",
"dependencies": {
"@sirherobrine23/ar": "3.5.0",
"@sirherobrine23/extends": "3.5.0",
"@sirherobrine23/http": "3.5.0",
"@sirherobrine23/ar": "3.5.2",
"@sirherobrine23/extends": "3.5.2",
"@sirherobrine23/http": "3.5.2",
"lzma-native": "^8.0.6",
"unbzip2-stream": "^1.4.3"
}
},
"node_modules/@sirherobrine23/docker-registry": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/@sirherobrine23/docker-registry/-/docker-registry-3.5.0.tgz",
"integrity": "sha512-oJoVLS7eIr5bNzobORxDwtqMzleNmSsY5SFSaOwHGggEfFfLmtAg5TEUHskRNUulV7SgMtcTHWf3b1pZDDD9Ng==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/@sirherobrine23/docker-registry/-/docker-registry-3.5.2.tgz",
"integrity": "sha512-HKXfGRH7HkWJvJA2HRpbE4/E4Dl2FTEA7ePvw1v0LW/rgpWLlqqaxu1zcdtJUqjBLyn7q4n5x9YEe9BjSgD6ZA==",
"dependencies": {
"@sirherobrine23/http": "3.5.0"
"@sirherobrine23/http": "3.5.2",
"tar": "^6.1.13"
}
},
"node_modules/@sirherobrine23/extends": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/@sirherobrine23/extends/-/extends-3.5.0.tgz",
"integrity": "sha512-FtYzfbc/6sqCODG/Nx7nK9B+zZWnvEM5hOnSiF36h18KqsR4mNYd+Zf1Heu3vQxxBBO0BTLlbh1KITHwLpAJeg=="
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/@sirherobrine23/extends/-/extends-3.5.2.tgz",
"integrity": "sha512-sW/Utw2q/jzrWyS8XRcLOMBSsmfY7ft+sJlVqjN4uONdO3eLU1+VoAAulZg6If1gREJlkJUD6/XNm70e8xLpHw=="
},
"node_modules/@sirherobrine23/http": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/@sirherobrine23/http/-/http-3.5.0.tgz",
"integrity": "sha512-0jXrEt7GLmKEr2MUE2x9GJOdYrYXyvaKYwI6WQ701CmTWJaPgwIso9VRqQxHEjbS2GjFyDJmhy89OeWHXKe8QQ==",
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/@sirherobrine23/http/-/http-3.5.2.tgz",
"integrity": "sha512-apL3hVX7sqthp2kFDI9MtEBTHusOvVy+e+WOdkKBIRnbBSaNs+VV8jugFG/WFT6LzIUyVfZdZvDu9mYyUTM14A==",
"dependencies": {
"@sirherobrine23/extends": "3.5.0",
"@sirherobrine23/extends": "3.5.2",
"acme-client": "^5.0.0",
"adm-zip": "^0.5.10",
"got": "^12.5.3",
@ -620,9 +621,9 @@
"dev": true
},
"node_modules/@types/node": {
"version": "18.14.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz",
"integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA=="
"version": "18.15.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.10.tgz",
"integrity": "sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ=="
},
"node_modules/@types/opossum": {
"version": "4.1.1",
@ -702,9 +703,9 @@
}
},
"node_modules/@types/yargs": {
"version": "17.0.22",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz",
"integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==",
"version": "17.0.23",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz",
"integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==",
"dev": true,
"dependencies": {
"@types/yargs-parser": "*"
@ -807,9 +808,9 @@
}
},
"node_modules/ansi-escapes": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.0.0.tgz",
"integrity": "sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==",
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.1.0.tgz",
"integrity": "sha512-bQyg9bzRntwR/8b89DOEhGwctcwCrbWW/TuqTQnpqpy5Fz3aovcOTj5i8NJV6AHc8OGNdMaqdxAWww8pz2kiKg==",
"dependencies": {
"type-fest": "^3.0.0"
},
@ -1035,9 +1036,9 @@
}
},
"node_modules/bson": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/bson/-/bson-5.0.1.tgz",
"integrity": "sha512-y09gBGusgHtinMon/GVbv1J6FrXhnr/+6hqLlSmEFzkz6PodqF6TxjyvfvY3AfO+oG1mgUtbC86xSbOlwvM62Q==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/bson/-/bson-5.1.0.tgz",
"integrity": "sha512-FEecNHkhYRBe7X9KDkdG12xNuz5VHGeH6mCE0B5sBmYtiR/Ux/9vUH/v4NUoBCDr6NuEhvahjoLiiRogptVW0A==",
"engines": {
"node": ">=14.20.1"
}
@ -1404,29 +1405,6 @@
"node": ">=14"
}
},
"node_modules/data-urls/node_modules/tr46": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
"integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
"dependencies": {
"punycode": "^2.3.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/data-urls/node_modules/whatwg-url": {
"version": "12.0.1",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
"integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
"dependencies": {
"tr46": "^4.1.1",
"webidl-conversions": "^7.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@ -2267,28 +2245,28 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/inquirer": {
"version": "9.1.4",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.4.tgz",
"integrity": "sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==",
"version": "9.1.5",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.5.tgz",
"integrity": "sha512-3ygAIh8gcZavV9bj6MTdYddG2zPSYswP808fKS46NOwlF0zZljVpnLCHODDqItWJDbDpLb3aouAxGaJbkxoppA==",
"dependencies": {
"ansi-escapes": "^6.0.0",
"chalk": "^5.1.2",
"chalk": "^5.2.0",
"cli-cursor": "^4.0.0",
"cli-width": "^4.0.0",
"external-editor": "^3.0.3",
"figures": "^5.0.0",
"lodash": "^4.17.21",
"mute-stream": "0.0.8",
"mute-stream": "1.0.0",
"ora": "^6.1.2",
"run-async": "^2.4.0",
"rxjs": "^7.5.7",
"rxjs": "^7.8.0",
"string-width": "^5.1.2",
"strip-ansi": "^7.0.1",
"through": "^2.3.6",
"wrap-ansi": "^8.0.1"
"wrap-ansi": "^8.1.0"
},
"engines": {
"node": ">=12.0.0"
"node": ">=14.18.0"
}
},
"node_modules/ip": {
@ -2454,29 +2432,6 @@
}
}
},
"node_modules/jsdom/node_modules/tr46": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
"integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
"dependencies": {
"punycode": "^2.3.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/jsdom/node_modules/whatwg-url": {
"version": "12.0.1",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
"integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
"dependencies": {
"tr46": "^4.1.1",
"webidl-conversions": "^7.0.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/json-bigint": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
@ -2544,9 +2499,9 @@
}
},
"node_modules/jsrsasign": {
"version": "10.6.1",
"resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.6.1.tgz",
"integrity": "sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==",
"version": "10.7.0",
"resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.7.0.tgz",
"integrity": "sha512-D5V2gGpYGtwbAtQHoglTVrpYf7QJuNoPEhaLOsTFONS2jXUl3qyR1hnYrNpASAybqQeiDYA3zGthR0ubgPRoQA==",
"funding": {
"url": "https://github.com/kjur/jsrsasign#donations"
}
@ -2746,9 +2701,9 @@
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
"node_modules/minipass": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz",
"integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==",
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
"integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
"engines": {
"node": ">=8"
}
@ -2828,15 +2783,41 @@
"whatwg-url": "^11.0.0"
}
},
"node_modules/mongodb-connection-string-url/node_modules/tr46": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
"integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
"dependencies": {
"punycode": "^2.1.1"
},
"engines": {
"node": ">=12"
}
},
"node_modules/mongodb-connection-string-url/node_modules/whatwg-url": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
"integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
"dependencies": {
"tr46": "^3.0.0",
"webidl-conversions": "^7.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/mute-stream": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
"integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/nano": {
"version": "10.1.2",
@ -3102,17 +3083,17 @@
}
},
"node_modules/ora": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz",
"integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==",
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/ora/-/ora-6.3.0.tgz",
"integrity": "sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==",
"dependencies": {
"bl": "^5.0.0",
"chalk": "^5.0.0",
"cli-cursor": "^4.0.0",
"cli-spinners": "^2.6.1",
"is-interactive": "^2.0.0",
"is-unicode-supported": "^1.1.0",
"log-symbols": "^5.1.0",
"stdin-discarder": "^0.1.0",
"strip-ansi": "^7.0.1",
"wcwidth": "^1.0.1"
},
@ -3265,9 +3246,9 @@
}
},
"node_modules/readable-stream": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz",
"integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==",
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@ -3567,6 +3548,20 @@
"node": ">= 0.8"
}
},
"node_modules/stdin-discarder": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
"integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
"dependencies": {
"bl": "^5.0.0"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@ -3676,14 +3671,14 @@
}
},
"node_modules/tr46": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
"integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
"integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
"dependencies": {
"punycode": "^2.1.1"
"punycode": "^2.3.0"
},
"engines": {
"node": ">=12"
"node": ">=14"
}
},
"node_modules/ts-node": {
@ -3751,9 +3746,9 @@
}
},
"node_modules/type-fest": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.6.1.tgz",
"integrity": "sha512-htXWckxlT6U4+ilVgweNliPqlsVSSucbxVexRYllyMVJDtf5rTjv6kF/s+qAd4QSL1BZcnJPEJavYBPQiWuZDA==",
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.7.1.tgz",
"integrity": "sha512-8LZNdvuztgxCF4eYpEmPYUPS0lbbByM2qHcp2oMxHZhWLIQB9QE36EeQ1PKwsUIDZXEP8HCBEmkBbT1//kLU4Q==",
"engines": {
"node": ">=14.16"
},
@ -3973,15 +3968,15 @@
}
},
"node_modules/whatwg-url": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
"integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
"version": "12.0.1",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
"integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
"dependencies": {
"tr46": "^3.0.0",
"tr46": "^4.1.1",
"webidl-conversions": "^7.0.0"
},
"engines": {
"node": ">=12"
"node": ">=14"
}
},
"node_modules/word-wrap": {

View File

@ -44,11 +44,11 @@
"typescript": "^4.9.5"
},
"dependencies": {
"@sirherobrine23/cloud": "^3.5.0",
"@sirherobrine23/debian": "^3.5.0",
"@sirherobrine23/docker-registry": "^3.5.0",
"@sirherobrine23/extends": "^3.5.0",
"@sirherobrine23/http": "^3.5.0",
"@sirherobrine23/cloud": "^3.5.2",
"@sirherobrine23/debian": "^3.5.2",
"@sirherobrine23/docker-registry": "^3.5.2",
"@sirherobrine23/extends": "^3.5.2",
"@sirherobrine23/http": "^3.5.2",
"acme-client": "^5.0.0",
"express": "^4.18.2",
"inquirer": "^9.1.4",

View File

@ -1,5 +1,6 @@
import { googleDriver, oracleBucket } from "@sirherobrine23/cloud";
import { extendsFS } from "@sirherobrine23/extends";
import { userAuth } from "@sirherobrine23/docker-registry";
import fs from "node:fs/promises";
import yaml from "yaml";
import path from "node:path";
@ -56,14 +57,10 @@ export type repositorySource = {
path?: string[],
authConfig: oracleBucket.oracleOptions
}|{
/**
* get files from Docker/OCI images
*
* @deprecated cannot load images current version, check latest APIs to get support
*/
type: "docker",
image: string,
auth?: any,
auth?: userAuth,
tags?: string[]
})
export type aptStreamConfig = {

View File

@ -1,10 +1,11 @@
import * as Debian from "@sirherobrine23/debian";
import { v2 as dockerRegistry, Auth as dockerAuth, Utils as dockerUtils } from "@sirherobrine23/docker-registry";
import { packageData, packageManeger } from "./database.js";
import { googleDriver, oracleBucket } from "@sirherobrine23/cloud";
import { aptStreamConfig } from "./config.js";
import { extendsCrypto } from "@sirherobrine23/extends";
import coreHttp, { Github } from "@sirherobrine23/http";
import stream from "stream";
import path from "node:path/posix";
export async function fileRestore(packageDb: packageData, repoConfig: aptStreamConfig): Promise<stream.Readable> {
const repo = repoConfig.repository[packageDb.packageDistribuition];
@ -26,16 +27,14 @@ export async function fileRestore(packageDb: packageData, repoConfig: aptStreamC
const { clientId, clientSecret, clientToken } = source, { fileRestore: { id } } = packageDb;
const gdrive = await googleDriver.GoogleDriver({clientID: clientId, clientSecret, token: clientToken});
return gdrive.getFileStream(id);
} else if (source.type === "docker") {
const { image, auth } = source, { ref, path: debPath } = packageDb.fileRestore;
const registry = new dockerRegistry(image, auth);
return new Promise<stream.Readable>((done, reject) => registry.extractLayer(ref).then(tar => tar.on("error", reject).on("File", entry => entry.path === debPath ? done(entry as any) : null)));
}
throw new Error("Check package type");
}
async function genericParse(stream: stream.Readable) {
const hashs = extendsCrypto.createHashAsync(stream);
return Debian.parsePackage(stream).then(({control}) => hashs.then(hash => ({hash, control})));
}
export async function loadRepository(packageManeger: packageManeger, config: aptStreamConfig, repository = Object.keys(config.repository)) {
const massaReturn: (Awaited<ReturnType<typeof packageManeger.addPackage>>)[] = []
for (const repo of repository || Object.keys(config.repository)) {
@ -45,24 +44,14 @@ export async function loadRepository(packageManeger: packageManeger, config: apt
const { id } = target;
try {
if (target.type === "http") {
const { control, hash: { byteLength, hash } } = await genericParse(await coreHttp.streamRequest(target.url, {headers: target.auth?.header, query: target.auth?.query}));
control.Size = byteLength;
control.SHA512 = hash.sha512;
control.SHA256 = hash.sha256;
control.SHA1 = hash.sha1;
control.MD5sum = hash.md5;
const { control } = await Debian.parsePackage(await coreHttp.streamRequest(target.url, {headers: target.auth?.header, query: target.auth?.query}));
massaReturn.push(await packageManeger.addPackage(repo, target.componentName || "main", id, {}, control));
} else if (target.type === "oracle_bucket") {
const { authConfig, path = [] } = target;
const bucket = await oracleBucket.oracleBucket(authConfig);
if (path.length === 0) path.push(...((await bucket.listFiles()).filter(k => k.name.endsWith(".dev")).map(({name}) => name)));
if (path.length === 0) path.push(...((await bucket.listFiles()).filter(k => k.name.endsWith(".deb")).map(({name}) => name)));
await Promise.all(path.map(async file => {
const { control, hash: { byteLength, hash } } = await genericParse(await bucket.getFileStream(file));
control.Size = byteLength;
control.SHA512 = hash.sha512;
control.SHA256 = hash.sha256;
control.SHA1 = hash.sha1;
control.MD5sum = hash.md5;
const { control } = await Debian.parsePackage(await bucket.getFileStream(file));
return packageManeger.addPackage(repo, target.componentName || "main", id, {}, control);
})).then(d => massaReturn.push(...d));
} else if (target.type === "google_driver") {
@ -70,38 +59,66 @@ export async function loadRepository(packageManeger: packageManeger, config: apt
const gdrive = await googleDriver.GoogleDriver({clientID: clientId, clientSecret, token: clientToken});
if (gIds.length === 0) gIds.push(...((await gdrive.listFiles()).filter(rel => rel.name.endsWith(".deb")).map(({id}) => id)));
await Promise.all(gIds.map(async file => {
const { control, hash: { byteLength, hash } } = await genericParse(await gdrive.getFileStream(file));
control.Size = byteLength;
control.SHA512 = hash.sha512;
control.SHA256 = hash.sha256;
control.SHA1 = hash.sha1;
control.MD5sum = hash.md5;
const { control } = await Debian.parsePackage(await gdrive.getFileStream(file));
return packageManeger.addPackage(repo, target.componentName || "main", id, {}, control);
})).then(d => massaReturn.push(...d));
} else if (target.type === "github") {
const { owner, repository, token } = target;
const gh = await Github.GithubManeger(owner, repository, token);
if (target.subType === "branch") {
const { branch = (await gh.branchList()).at(0).name } = target;
console.warn("Cannot load packages from %s/%s tree %O", owner, repository, branch);
// (await gh.trees(branch));
const { branch = (await gh.branchList()).at(0)?.name ?? "main" } = target;
for (const { path: filePath } of (await gh.trees(branch)).tree.filter(file => file.type === "tree" ? false : file["path"])) {
const rawURL = new URL(path.join(owner, repository, branch, filePath), "https://raw.githubusercontent.com");
const { control } = await Debian.parsePackage(await coreHttp.streamRequest(rawURL, {headers: token ? {Authorization: `token ${token}`} : {}}));
massaReturn.push(await packageManeger.addPackage(repo, target.componentName || "main", id, {url: rawURL.toString()}, control));
}
} else {
const { tag = [] } = target;
await Promise.all(tag.map(async tagName => {
const assets = (await gh.getRelease(tagName)).assets.filter(({name}) => name.endsWith(".deb"));
for (const asset of assets) {
const { control, hash: { byteLength, hash } } = await genericParse(await coreHttp.streamRequest(asset.browser_download_url, {headers: token ? {Authorization: `token ${token}`} : {}}));
control.Size = byteLength;
control.SHA512 = hash.sha512;
control.SHA256 = hash.sha256;
control.SHA1 = hash.sha1;
control.MD5sum = hash.md5;
massaReturn.push(await packageManeger.addPackage(repo, target.componentName || "main", id, {}, control));
const { control } = await Debian.parsePackage(await coreHttp.streamRequest(asset.browser_download_url, {headers: token ? {Authorization: `token ${token}`} : {}}));
massaReturn.push(await packageManeger.addPackage(repo, target.componentName || "main", id, {
url: asset.browser_download_url
}, control));
}
}));
}
} else if (target.type === "docker") {
console.warn("Current docker image is disabled!");
const { image, auth, tags = [] } = target;
const registry = new dockerRegistry(image, auth);
if (tags.length === 0) {
const { sha256, tag } = registry.image;
if (sha256) tags.push(sha256);
else if (tag) tags.push(tag);
else tags.push(...((await registry.getTags()).reverse().slice(0, 6)));
}
const userAuth = new dockerAuth(registry.image, "pull", auth);
await userAuth.setup();
for (const tag of tags) {
const manifestManeger = new dockerUtils.Manifest(await registry.getManifets(tag, userAuth), registry);
const addPckage = async () => {
for (const layer of manifestManeger.getLayers()) {
const blob = await registry.extractLayer(layer.digest, layer.mediaType, userAuth);
blob.on("File", async entry => {
if (!(entry.path.endsWith(".deb"))) return null;
const { control } = await Debian.parsePackage(entry as any);
massaReturn.push(await packageManeger.addPackage(repo, target.componentName || "main", id, {
ref: layer.digest,
path: entry.path,
}, control));
});
await new Promise<void>((done, reject) => blob.on("close", done).on("error", reject));
}
}
if (manifestManeger.multiArch) {
for (const platform of manifestManeger.platforms) {
await manifestManeger.setPlatform(platform as any);
await addPckage();
}
} else await addPckage();
}
}
} catch (err) {
console.error(err);