fix(imagemanager): prepare proper storage and retrieval of container images

This commit is contained in:
Philipp Kunz 2024-06-02 21:39:31 +02:00
parent b8dd84b8a6
commit f453ce3126
9 changed files with 233 additions and 85 deletions

View File

@ -26,14 +26,15 @@
"@git.zone/tstest": "^1.0.90",
"@git.zone/tswatch": "^2.0.23",
"@push.rocks/tapbundle": "^5.0.23",
"@types/node": "^20.12.14"
"@types/node": "^20.13.0"
},
"dependencies": {
"@api.global/typedrequest": "3.0.29",
"@api.global/typedrequest": "3.0.30",
"@api.global/typedserver": "^3.0.50",
"@api.global/typedsocket": "^3.0.1",
"@apiclient.xyz/cloudflare": "^6.0.1",
"@apiclient.xyz/digitalocean": "^1.0.5",
"@apiclient.xyz/docker": "^1.0.112",
"@apiclient.xyz/hetznercloud": "^1.0.18",
"@apiclient.xyz/slack": "^3.0.9",
"@design.estate/dees-catalog": "^1.0.289",
@ -50,7 +51,7 @@
"@push.rocks/smartdata": "^5.2.4",
"@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartexit": "^1.0.23",
"@push.rocks/smartfile": "^11.0.15",
"@push.rocks/smartfile": "^11.0.16",
"@push.rocks/smartguard": "^3.0.2",
"@push.rocks/smartjson": "^5.0.19",
"@push.rocks/smartjwt": "^2.0.4",
@ -61,11 +62,12 @@
"@push.rocks/smartrequest": "^2.0.22",
"@push.rocks/smartrx": "^3.0.7",
"@push.rocks/smartssh": "^2.0.1",
"@push.rocks/smartstream": "^3.0.39",
"@push.rocks/smartstring": "^4.0.15",
"@push.rocks/smartunique": "^3.0.9",
"@push.rocks/taskbuffer": "^3.0.2",
"@push.rocks/webjwt": "^1.0.9",
"@serve.zone/interfaces": "^1.0.61",
"@serve.zone/interfaces": "^1.0.62",
"@tsclass/tsclass": "^4.0.54"
},
"files": [

View File

@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@api.global/typedrequest':
specifier: 3.0.29
version: 3.0.29
specifier: 3.0.30
version: 3.0.30
'@api.global/typedserver':
specifier: ^3.0.50
version: 3.0.50
@ -22,7 +22,10 @@ importers:
version: 6.0.3
'@apiclient.xyz/digitalocean':
specifier: ^1.0.5
version: 1.0.5(@types/node@20.12.14)
version: 1.0.5(@types/node@20.13.0)
'@apiclient.xyz/docker':
specifier: ^1.0.112
version: 1.0.112
'@apiclient.xyz/hetznercloud':
specifier: ^1.0.18
version: 1.0.18
@ -40,7 +43,7 @@ importers:
version: 2.0.34
'@git.zone/tsrun':
specifier: ^1.2.37
version: 1.2.46(@types/node@20.12.14)
version: 1.2.46(@types/node@20.13.0)
'@push.rocks/early':
specifier: ^4.0.3
version: 4.0.4
@ -72,7 +75,7 @@ importers:
specifier: ^1.0.23
version: 1.0.23
'@push.rocks/smartfile':
specifier: ^11.0.15
specifier: ^11.0.16
version: 11.0.16
'@push.rocks/smartguard':
specifier: ^3.0.2
@ -104,6 +107,9 @@ importers:
'@push.rocks/smartssh':
specifier: ^2.0.1
version: 2.0.1
'@push.rocks/smartstream':
specifier: ^3.0.39
version: 3.0.39
'@push.rocks/smartstring':
specifier: ^4.0.15
version: 4.0.15
@ -117,8 +123,8 @@ importers:
specifier: ^1.0.9
version: 1.0.9
'@serve.zone/interfaces':
specifier: ^1.0.61
version: 1.0.61
specifier: ^1.0.62
version: 1.0.62
'@tsclass/tsclass':
specifier: ^4.0.54
version: 4.0.54
@ -131,16 +137,16 @@ importers:
version: 2.0.15
'@git.zone/tstest':
specifier: ^1.0.90
version: 1.0.90(@types/node@20.12.14)
version: 1.0.90(@types/node@20.13.0)
'@git.zone/tswatch':
specifier: ^2.0.23
version: 2.0.23(@types/node@20.12.14)
version: 2.0.23(@types/node@20.13.0)
'@push.rocks/tapbundle':
specifier: ^5.0.23
version: 5.0.23
'@types/node':
specifier: ^20.12.14
version: 20.12.14
specifier: ^20.13.0
version: 20.13.0
packages:
@ -151,8 +157,8 @@ packages:
'@api.global/typedrequest-interfaces@3.0.19':
resolution: {integrity: sha512-uuHUXJeOy/inWSDrwD0Cwax2rovpxYllDhM2RWh+6mVpQuNmZ3uw6IVg6dA2G1rOe24Ebs+Y9SzEogo+jYN7vw==}
'@api.global/typedrequest@3.0.29':
resolution: {integrity: sha512-ePTX6fbkWLFtaSvK8QU2nWcc3Z0ua9UTl47UFF3HY6dnom6yohIp4lwcCsgua/bVfxY4R1EeZgxhFbfSlA80vw==}
'@api.global/typedrequest@3.0.30':
resolution: {integrity: sha512-Pp3KVr8QHZ/44u2GE9r8JpWbs5yxA+CZLwxXXcrOBnmJ2Pkp+5PWtO7QZbqnshWAdMTJTYD+nXwlqO0XiPiWGg==}
'@api.global/typedserver@3.0.50':
resolution: {integrity: sha512-WWZhLVcjqfJO3kq5RB/kYrss7hIiu3yBqBVA/o9cn7jwu3XHaC2DrT/HC7LrcKm1hndk0XbKMgBEb2orSaVl3g==}
@ -166,6 +172,9 @@ packages:
'@apiclient.xyz/digitalocean@1.0.5':
resolution: {integrity: sha512-zP9X8OnYL0zXlWwd1z9DQHat9xvVeFfxbMuO2yQu6GhZdkHZWQQYynUZDT5zkSCcuwPOe4cZF1Pvo7HP7fgj1Q==}
'@apiclient.xyz/docker@1.0.112':
resolution: {integrity: sha512-7UXNlUShq669ABLrr90zOvxxnhO2x2qOqmJDVRg3iZPtVrviDSTCwoeeLU+KCstUFJL0+8CIdTpjcsWVvZ1bDg==}
'@apiclient.xyz/hetznercloud@1.0.18':
resolution: {integrity: sha512-otKDqcidnBpSdu3WD/OnBKHLZWxRmauJr09neaFzexSgpUEfe0hlKH5ql9/ov3ZLrSd0QXEkO8raDMgPmKLdxQ==}
@ -842,8 +851,8 @@ packages:
'@push.rocks/smartstream@2.0.8':
resolution: {integrity: sha512-GlF/9cCkvBHwKa3DK4DO5wjfSgqkj6gAS4TrY9uD5NMHu9RQv4WiNrElTYj7iCEpnZgUnLO3tzw1JA3NRIMnnA==}
'@push.rocks/smartstream@3.0.38':
resolution: {integrity: sha512-Sk9esPURWXldS0ZvgClCtrEyvELjvFnbQgUAelwoXWMfM8pXuB9BX1tE+Z1iBkB9Xyw2p1d9jYelO6waSXg0BQ==}
'@push.rocks/smartstream@3.0.39':
resolution: {integrity: sha512-kdGVhapek8Om+KCu95VKfQptwhQxXRLcQ7xSeiPOltRxAIHSWbOkVOyf+EAqc6SJWPei3xswKfNuqg6qdTL+tA==}
'@push.rocks/smartstring@4.0.15':
resolution: {integrity: sha512-NTNeOjWyg+aHtBTiQEyXamr7oTvYZ3wS1fudHo9ua7CLrykpK+i+RxFyJaLg1zB5x9xQF3NLEQecB14HPFX8Cg==}
@ -857,6 +866,9 @@ packages:
'@push.rocks/smarturl@3.0.7':
resolution: {integrity: sha512-nx4EWjQD9JeO7QVbOsxd1PFeDQYoSQOOOYCZ+r7QWXHLJG52iYzgvJDCQyX6p705HDkYMJWozW2ZzhR22qLKbw==}
'@push.rocks/smartversion@3.0.5':
resolution: {integrity: sha512-8MZSo1yqyaKxKq0Q5N188l4un++9GFWVbhCAX5mXJwewZHn97ujffTeL+eOQYpWFTEpUhaq1QhL4NhqObBCt1Q==}
'@push.rocks/smartxml@1.0.8':
resolution: {integrity: sha512-idrPsBj9t6oxkLZJZgWtyZK6PnQ5BVDbBErk0UfGanXgSWJc+ZEKNYjVqr850+Na3+y0CT6AQdug7pnaokygwg==}
@ -1115,8 +1127,8 @@ packages:
resolution: {integrity: sha512-gvZ5QnZu14bPIWaFDOCyH6pfPgN/nQ0hF3EFhE74Ypfm5dCzq6OZEC9jeUTXDypfsvbSs3xAgj4XG83sVSUDAg==}
deprecated: This package has been deprecated in favour of the new package at @push.rocks/webstore
'@serve.zone/interfaces@1.0.61':
resolution: {integrity: sha512-JNwoKMjfyVAdPwQdXfvy69z2CLxK9zADrsHiVziowNsFiCc2VDfBmTYlhvsqD19kqzgHbqpDSbXKZxcIFdvlXQ==}
'@serve.zone/interfaces@1.0.62':
resolution: {integrity: sha512-XtTKHqqVXqou89z71VgiNenb10Fo5WHKNG8M5LHKfDOsnAUz13UaSpG9wyA0MdK3IlRYu48MegYH4IrRKfmAsA==}
'@sindresorhus/is@5.6.0':
resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
@ -1463,8 +1475,8 @@ packages:
'@types/node-forge@1.3.11':
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
'@types/node@20.12.14':
resolution: {integrity: sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==}
'@types/node@20.13.0':
resolution: {integrity: sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==}
'@types/parse5@6.0.3':
resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
@ -1484,6 +1496,9 @@ packages:
'@types/relateurl@0.2.33':
resolution: {integrity: sha512-bTQCKsVbIdzLqZhLkF5fcJQreE4y1ro4DIyVrlDNSCJRRwHhB8Z+4zXXa8jN6eDvc2HbRsEYgbvrnGvi54EpSw==}
'@types/semver@7.5.8':
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
'@types/send@0.17.4':
resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
@ -4235,7 +4250,7 @@ snapshots:
'@api.global/typedrequest-interfaces@3.0.19': {}
'@api.global/typedrequest@3.0.29':
'@api.global/typedrequest@3.0.30':
dependencies:
'@api.global/typedrequest-interfaces': 3.0.19
'@push.rocks/isounique': 1.0.5
@ -4249,7 +4264,7 @@ snapshots:
'@api.global/typedserver@3.0.50':
dependencies:
'@api.global/typedrequest': 3.0.29
'@api.global/typedrequest': 3.0.30
'@api.global/typedrequest-interfaces': 3.0.19
'@api.global/typedsocket': 3.0.1
'@cloudflare/workers-types': 4.20240529.0
@ -4274,7 +4289,7 @@ snapshots:
'@push.rocks/smartrequest': 2.0.22
'@push.rocks/smartrx': 3.0.7
'@push.rocks/smartsitemap': 2.0.3
'@push.rocks/smartstream': 3.0.38
'@push.rocks/smartstream': 3.0.39
'@push.rocks/smarttime': 4.0.6
'@push.rocks/taskbuffer': 3.1.7
'@push.rocks/webrequest': 3.0.37
@ -4294,7 +4309,7 @@ snapshots:
'@api.global/typedsocket@3.0.1':
dependencies:
'@api.global/typedrequest': 3.0.29
'@api.global/typedrequest': 3.0.30
'@api.global/typedrequest-interfaces': 3.0.19
'@push.rocks/isohash': 2.0.1
'@push.rocks/smartjson': 5.0.20
@ -4317,15 +4332,30 @@ snapshots:
'@pushrocks/smartstring': 4.0.7
'@tsclass/tsclass': 4.0.54
'@apiclient.xyz/digitalocean@1.0.5(@types/node@20.12.14)':
'@apiclient.xyz/digitalocean@1.0.5(@types/node@20.13.0)':
dependencies:
'@git.zone/tsrun': 1.2.46(@types/node@20.12.14)
'@git.zone/tsrun': 1.2.46(@types/node@20.13.0)
'@push.rocks/smartrequest': 2.0.22
transitivePeerDependencies:
- '@swc/core'
- '@swc/wasm'
- '@types/node'
'@apiclient.xyz/docker@1.0.112':
dependencies:
'@push.rocks/lik': 6.0.15
'@push.rocks/smartfile': 11.0.16
'@push.rocks/smartjson': 5.0.20
'@push.rocks/smartlog': 3.0.6
'@push.rocks/smartnetwork': 3.0.2
'@push.rocks/smartpath': 5.0.18
'@push.rocks/smartpromise': 4.0.3
'@push.rocks/smartrequest': 2.0.22
'@push.rocks/smartstring': 4.0.15
'@push.rocks/smartversion': 3.0.5
'@tsclass/tsclass': 4.0.54
rxjs: 7.8.1
'@apiclient.xyz/hetznercloud@1.0.18':
dependencies:
'@push.rocks/smartrequest': 2.0.22
@ -5477,14 +5507,14 @@ snapshots:
'@design.estate/dees-comms@1.0.27':
dependencies:
'@api.global/typedrequest': 3.0.29
'@api.global/typedrequest': 3.0.30
'@api.global/typedrequest-interfaces': 3.0.19
'@push.rocks/smartdelay': 3.0.5
broadcast-channel: 7.0.0
'@design.estate/dees-domtools@2.0.57':
dependencies:
'@api.global/typedrequest': 3.0.29
'@api.global/typedrequest': 3.0.30
'@design.estate/dees-comms': 1.0.27
'@push.rocks/lik': 6.0.15
'@push.rocks/smartdelay': 3.0.5
@ -5651,22 +5681,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@git.zone/tsrun@1.2.46(@types/node@20.12.14)':
'@git.zone/tsrun@1.2.46(@types/node@20.13.0)':
dependencies:
'@push.rocks/smartfile': 10.0.41
'@push.rocks/smartshell': 3.0.5
ts-node: 10.9.2(@types/node@20.12.14)(typescript@5.1.6)
ts-node: 10.9.2(@types/node@20.13.0)(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- '@swc/core'
- '@swc/wasm'
- '@types/node'
'@git.zone/tstest@1.0.90(@types/node@20.12.14)':
'@git.zone/tstest@1.0.90(@types/node@20.13.0)':
dependencies:
'@api.global/typedserver': 3.0.50
'@git.zone/tsbundle': 2.0.15
'@git.zone/tsrun': 1.2.46(@types/node@20.12.14)
'@git.zone/tsrun': 1.2.46(@types/node@20.13.0)
'@push.rocks/consolecolor': 2.0.2
'@push.rocks/smartbrowser': 2.0.6
'@push.rocks/smartdelay': 3.0.5
@ -5687,11 +5717,11 @@ snapshots:
- supports-color
- utf-8-validate
'@git.zone/tswatch@2.0.23(@types/node@20.12.14)':
'@git.zone/tswatch@2.0.23(@types/node@20.13.0)':
dependencies:
'@api.global/typedserver': 3.0.50
'@git.zone/tsbundle': 2.0.15
'@git.zone/tsrun': 1.2.46(@types/node@20.12.14)
'@git.zone/tsrun': 1.2.46(@types/node@20.13.0)
'@push.rocks/early': 4.0.4
'@push.rocks/lik': 6.0.15
'@push.rocks/smartchok': 1.0.34
@ -5705,8 +5735,10 @@ snapshots:
- '@swc/core'
- '@swc/wasm'
- '@types/node'
- bufferutil
- encoding
- supports-color
- utf-8-validate
'@happy-dom/global-registrator@8.9.0':
dependencies:
@ -5884,7 +5916,7 @@ snapshots:
'@push.rocks/qenv@6.0.5':
dependencies:
'@api.global/typedrequest': 3.0.29
'@api.global/typedrequest': 3.0.30
'@configvault.io/interfaces': 1.0.17
'@push.rocks/smartfile': 11.0.16
'@push.rocks/smartlog': 3.0.6
@ -5936,7 +5968,7 @@ snapshots:
'@push.rocks/smartpath': 5.0.18
'@push.rocks/smartpromise': 4.0.3
'@push.rocks/smartrx': 3.0.7
'@push.rocks/smartstream': 3.0.38
'@push.rocks/smartstream': 3.0.39
'@tsclass/tsclass': 4.0.54
minio: 8.0.0
@ -6068,7 +6100,7 @@ snapshots:
'@push.rocks/smartpath': 5.0.18
'@push.rocks/smartpromise': 4.0.3
'@push.rocks/smartrequest': 2.0.22
'@push.rocks/smartstream': 3.0.38
'@push.rocks/smartstream': 3.0.39
'@types/fs-extra': 11.0.4
'@types/glob': 8.1.0
'@types/js-yaml': 4.0.9
@ -6345,12 +6377,12 @@ snapshots:
from2: 2.3.0
through2: 4.0.2
'@push.rocks/smartstream@3.0.38':
'@push.rocks/smartstream@3.0.39':
dependencies:
'@push.rocks/lik': 6.0.15
'@push.rocks/smartenv': 5.0.12
'@push.rocks/smartpromise': 4.0.3
'@push.rocks/smartrx': 3.0.7
'@push.rocks/webstream': 1.0.10
'@push.rocks/smartstring@4.0.15':
dependencies:
@ -6381,6 +6413,11 @@ snapshots:
'@push.rocks/smarturl@3.0.7': {}
'@push.rocks/smartversion@3.0.5':
dependencies:
'@types/semver': 7.5.8
semver: 7.6.2
'@push.rocks/smartxml@1.0.8':
dependencies:
fast-xml-parser: 4.4.0
@ -6869,7 +6906,7 @@ snapshots:
fake-indexeddb: 4.0.2
idb: 7.1.1
'@serve.zone/interfaces@1.0.61':
'@serve.zone/interfaces@1.0.62':
dependencies:
'@api.global/typedrequest-interfaces': 3.0.19
'@push.rocks/smartlog-interfaces': 3.0.0
@ -7200,14 +7237,14 @@ snapshots:
'@types/accepts@1.3.7':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/babel__code-frame@7.0.6': {}
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/buffer-json@2.0.3': {}
@ -7223,12 +7260,12 @@ snapshots:
'@types/clean-css@4.2.11':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
source-map: 0.6.1
'@types/co-body@6.1.3':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/qs': 6.9.15
'@types/compression@1.7.5':
@ -7237,7 +7274,7 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/content-disposition@0.5.8': {}
@ -7250,11 +7287,11 @@ snapshots:
'@types/connect': 3.4.38
'@types/express': 4.17.21
'@types/keygrip': 1.0.6
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/cors@2.8.17':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/debounce@1.2.4': {}
@ -7266,7 +7303,7 @@ snapshots:
'@types/express-serve-static-core@4.19.3':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/qs': 6.9.15
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@ -7284,30 +7321,30 @@ snapshots:
'@types/finalhandler@1.2.3':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/from2@2.3.5':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/fs-extra@9.0.13':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/glob@8.1.0':
dependencies:
'@types/minimatch': 5.1.2
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/hast@3.0.4':
dependencies:
@ -7341,11 +7378,11 @@ snapshots:
'@types/jsonfile@6.1.4':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/jsonwebtoken@9.0.6':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/keygrip@1.0.6': {}
@ -7362,7 +7399,7 @@ snapshots:
'@types/http-errors': 2.0.4
'@types/keygrip': 1.0.6
'@types/koa-compose': 3.2.8
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/mdast@4.0.4':
dependencies:
@ -7380,9 +7417,9 @@ snapshots:
'@types/node-forge@1.3.11':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/node@20.12.14':
'@types/node@20.13.0':
dependencies:
undici-types: 5.26.5
@ -7398,15 +7435,17 @@ snapshots:
'@types/relateurl@0.2.33': {}
'@types/semver@7.5.8': {}
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/send': 0.17.4
'@types/shortid@0.0.29': {}
@ -7426,7 +7465,7 @@ snapshots:
'@types/through2@2.0.41':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/trusted-types@2.0.7': {}
@ -7450,7 +7489,7 @@ snapshots:
'@types/whatwg-url@8.2.2':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/webidl-conversions': 7.0.3
'@types/which@2.0.2': {}
@ -7459,15 +7498,15 @@ snapshots:
'@types/ws@7.4.7':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/ws@8.5.10':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
'@types/yauzl@2.10.3':
dependencies:
'@types/node': 20.12.14
'@types/node': 20.13.0
optional: true
'@ungap/structured-clone@1.2.0': {}
@ -8105,7 +8144,7 @@ snapshots:
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.17
'@types/node': 20.12.14
'@types/node': 20.13.0
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@ -8122,7 +8161,7 @@ snapshots:
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.17
'@types/node': 20.12.14
'@types/node': 20.13.0
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@ -8139,7 +8178,7 @@ snapshots:
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.17
'@types/node': 20.12.14
'@types/node': 20.13.0
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@ -10294,14 +10333,14 @@ snapshots:
trough@2.2.0: {}
ts-node@10.9.2(@types/node@20.12.14)(typescript@5.1.6):
ts-node@10.9.2(@types/node@20.13.0)(typescript@5.1.6):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 20.12.14
'@types/node': 20.13.0
acorn: 8.11.3
acorn-walk: 8.3.2
arg: 4.1.3

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@serve.zone/cloudly',
version: '1.1.1',
version: '1.1.2',
description: 'A cloud manager leveraging Docker Swarmkit for multi-cloud operations including DigitalOcean, Hetzner Cloud, and Cloudflare, with integration support and robust configuration management system.'
}

View File

@ -26,4 +26,12 @@ export class Image extends plugins.smartdata.SmartDataDbDoc<Image, plugins.serve
public data: plugins.servezoneInterfaces.data.IImage['data'];
public async getVersions() {}
/**
* returns a storage path
* note: this is relative to the storage method defined by the imageManager
*/
public async getStoragePath(versionStringArg: string) {
return `${this.data.name}:${versionStringArg}`.replace('/', '__')
}
}

View File

@ -7,6 +7,7 @@ export class ImageManager {
cloudlyRef: Cloudly;
public typedrouter = new plugins.typedrequest.TypedRouter();
public smartbucketInstance: plugins.smartbucket.SmartBucket;
public imageDir: plugins.smartbucket.Directory;
get db() {
return this.cloudlyRef.mongodbConnector.smartdataDb;
@ -83,11 +84,10 @@ export class ImageManager {
'pullImageVersion',
async (reqArg) => {
const image = await this.CImage.getInstance({
data: {
name: reqArg.name,
},
id: reqArg.imageId,
});
const imageVersion = null;
const imageVersion = image.data.versions.find((version) => version.versionString === reqArg.versionString);
const readable = this.imageDir.fastGetStream(await image.getStoragePath(reqArg.versionString));
const imageVirtualStream = new plugins.typedrequest.VirtualStream();
return {
imageStream: imageVirtualStream,
@ -106,6 +106,10 @@ export class ImageManager {
);
const bucket = await this.smartbucketInstance.getBucketByName('cloudly-test');
await bucket.fastPut({ path: 'test/test.txt', contents: 'hello' });
this.imageDir = await bucket.getDirectoryFromPath({
path: 'images',
});
}
public async createImage(nameArg: string) {

View File

@ -2,6 +2,8 @@ import * as plugins from './plugins.js';
export type TClientType = 'coreflow' | 'cli' | 'serverconfig';
import { Image } from './classes.image.js';
export class CloudlyClient {
private cloudlyUrl: string;
private registerAs: string;
@ -55,15 +57,18 @@ export class CloudlyClient {
this.typedrouter,
this.cloudlyUrl
);
console.log(`CloudlyCluent connected to cloudly at ${this.cloudlyUrl}. Remember to get an identity.`)
}
public async stop() {
await this.typedsocketClient.stop();
}
public identity: plugins.servezoneInterfaces.data.IClusterIdentifier;
public async getIdentityByJumpCode(
jumpCodeArg: string,
tagConnection = false
tagConnection = false,
statefullIdentity = true
): Promise<plugins.servezoneInterfaces.data.IClusterIdentifier> {
const identityRequest =
this.typedsocketClient.createTypedRequest<plugins.servezoneInterfaces.requests.identity.IRequest_Any_Cloudly_CoreflowManager_GetIdentityByJumpCode>(
@ -80,6 +85,10 @@ export class CloudlyClient {
this.typedsocketClient.addTag('identity', identity);
}
if (statefullIdentity) {
this.identity = identity;
}
return identity;
}
@ -127,4 +136,9 @@ export class CloudlyClient {
});
return typedResponse.certificate;
}
// Images
public async getImages() {
return Image.getImages(this);
}
}

View File

@ -1,7 +1,84 @@
import type { CloudlyClient } from './classes.cloudlyclient.js';
import * as plugins from './plugins.js';
export class Image {
public getImages() {
export class Image implements plugins.servezoneInterfaces.data.IImage {
public static async getImages(cloudlyClientRef: CloudlyClient) {
const getAllImagesTR = cloudlyClientRef.typedsocketClient.createTypedRequest<plugins.servezoneInterfaces.requests.image.IRequest_GetAllImages>(
'getAllImages'
);
const response = await getAllImagesTR.fire({
jwt: cloudlyClientRef.identity.jwt,
});
const resultImages: Image[] = [];
for (const image of response.images) {
const newImage = new Image(cloudlyClientRef);
Object.assign(newImage, image);
resultImages.push(newImage);
}
return resultImages;
}
}
// INSTANCE
cloudlyClientRef: CloudlyClient;
id: plugins.servezoneInterfaces.data.IImage['id'];
data: plugins.servezoneInterfaces.data.IImage['data'];
constructor(cloudlyClientRef: CloudlyClient) {
this.cloudlyClientRef = cloudlyClientRef;
}
/**
* updates the image data
*/
public async update() {
const getVersionsTR = this.cloudlyClientRef.typedsocketClient.createTypedRequest<plugins.servezoneInterfaces.requests.image.IRequest_GetImageMetadata>(
'getImageMetadata'
);
const response = await getVersionsTR.fire({
jwt: this.cloudlyClientRef.identity.jwt,
imageId: this.id,
});
Object.assign(this, response.image);
}
/**
* pushes a new version of the image
* @param imageVersion
* @param imageReadableArg
*/
public async pushImageVersion(imageVersion: string, imageReadableArg: ReadableStream<Uint8Array>): Promise<void> {
const done = plugins.smartpromise.defer();
const pullImageTR = this.cloudlyClientRef.typedsocketClient.createTypedRequest<plugins.servezoneInterfaces.requests.image.IRequest_PushImageVersion>(
'pushImageVersion'
);
const virtualStream = new plugins.typedrequest.VirtualStream();
const response = await pullImageTR.fire({
jwt: this.cloudlyClientRef.identity.jwt,
imageId: this.id,
versionString: '',
imageStream: virtualStream,
});
await virtualStream.readFromWebstream(imageReadableArg);
await done.promise;
await this.update();
};
/**
* pulls a version of the image
*/
public async pullImageVersion(versionStringArg: string): Promise<ReadableStream<Uint8Array>> {
const pullImageTR = this.cloudlyClientRef.typedsocketClient.createTypedRequest<plugins.servezoneInterfaces.requests.image.IRequest_PullImageVersion>(
'pullImageVersion'
);
const response = await pullImageTR.fire({
jwt: this.cloudlyClientRef.identity.jwt,
imageId: this.id,
versionString: versionStringArg,
});
const imageStream = response.imageStream;
const webduplexStream = new plugins.webstream.WebDuplexStream({});
imageStream.writeToWebstream(webduplexStream.writable);
return webduplexStream.readable;
};
}

View File

@ -6,10 +6,14 @@ export {
}
// @push.rocks scope
import * as smartpromise from '@push.rocks/smartpromise';
import * as smartrx from '@push.rocks/smartrx';
import * as webstream from '@push.rocks/smartstream/web';
export {
smartpromise,
smartrx,
webstream,
}
// @api.global scope

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@serve.zone/cloudly',
version: '1.1.1',
version: '1.1.2',
description: 'A cloud manager leveraging Docker Swarmkit for multi-cloud operations including DigitalOcean, Hetzner Cloud, and Cloudflare, with integration support and robust configuration management system.'
}