diff --git a/package.json b/package.json index 47e8bb9..8637822 100644 --- a/package.json +++ b/package.json @@ -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": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa7a794..9d38ba9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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 diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 8edcc2f..d1c4fef 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -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.' } diff --git a/ts/manager.image/classes.image.ts b/ts/manager.image/classes.image.ts index 9a12cc3..822de0c 100644 --- a/ts/manager.image/classes.image.ts +++ b/ts/manager.image/classes.image.ts @@ -26,4 +26,12 @@ export class Image extends plugins.smartdata.SmartDataDbDoc { 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) { diff --git a/ts_apiclient/classes.cloudlyclient.ts b/ts_apiclient/classes.cloudlyclient.ts index dc7dea3..4032666 100644 --- a/ts_apiclient/classes.cloudlyclient.ts +++ b/ts_apiclient/classes.cloudlyclient.ts @@ -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 { const identityRequest = this.typedsocketClient.createTypedRequest( @@ -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); + } } diff --git a/ts_apiclient/classes.image.ts b/ts_apiclient/classes.image.ts index 8296207..689a466 100644 --- a/ts_apiclient/classes.image.ts +++ b/ts_apiclient/classes.image.ts @@ -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( + '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; } -} \ No newline at end of file + + // 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( + '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): Promise { + const done = plugins.smartpromise.defer(); + const pullImageTR = this.cloudlyClientRef.typedsocketClient.createTypedRequest( + '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> { + const pullImageTR = this.cloudlyClientRef.typedsocketClient.createTypedRequest( + '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; + }; +} diff --git a/ts_apiclient/plugins.ts b/ts_apiclient/plugins.ts index ba75e7e..276fea8 100644 --- a/ts_apiclient/plugins.ts +++ b/ts_apiclient/plugins.ts @@ -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 diff --git a/ts_web/00_commitinfo_data.ts b/ts_web/00_commitinfo_data.ts index 8edcc2f..d1c4fef 100644 --- a/ts_web/00_commitinfo_data.ts +++ b/ts_web/00_commitinfo_data.ts @@ -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.' }