Docker image support #18
245
package-lock.json
generated
245
package-lock.json
generated
@ -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": {
|
||||
|
10
package.json
10
package.json
@ -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",
|
||||
|
@ -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 = {
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user