Compare commits

..

4 Commits
v2.2.2 ... main

Author SHA1 Message Date
461c4bb5a9 v2.2.4
Some checks failed
Default (tags) / security (push) Failing after 0s
Default (tags) / test (push) Failing after 0s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2026-03-24 18:56:43 +00:00
3c3662d935 fix(config): migrate configuration loading to smartconfig and update build tooling compatibility 2026-03-24 18:56:43 +00:00
c97306b22a v2.2.3
Some checks failed
Default (tags) / security (push) Failing after 0s
Default (tags) / test (push) Failing after 0s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2026-03-24 17:00:15 +00:00
7af0c59708 fix(config): update workflow repository URL handling and package config file references 2026-03-24 17:00:15 +00:00
14 changed files with 311 additions and 237 deletions

View File

@@ -7,7 +7,7 @@ on:
env:
IMAGE: code.foss.global/host.today/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitlab.com/${{gitea.repository}}.git
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}

View File

@@ -7,7 +7,7 @@ on:
env:
IMAGE: code.foss.global/host.today/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitlab.com/${{gitea.repository}}.git
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}

4
.gitignore vendored
View File

@@ -16,6 +16,10 @@ node_modules/
dist/
dist_*/
# rust
rust/target/
dist_rust/
# AI
.claude/
.serena/

View File

@@ -1,7 +1,7 @@
{
"json.schemas": [
{
"fileMatch": ["/npmextra.json"],
"fileMatch": ["/smartconfig.json"],
"schema": {
"type": "object",
"properties": {

View File

@@ -1,11 +1,28 @@
# Changelog
## 2026-03-24 - 2.2.4 - fix(config)
migrate configuration loading to smartconfig and update build tooling compatibility
- switch configuration loading and documentation to .smartconfig.json
- upgrade build and test dependencies for tsbuild 4.4.0 and TypeScript 6 compatibility
- remove deprecated tsconfig baseUrl and paths settings and add an lru-cache override to avoid type issues
## 2026-03-24 - 2.2.3 - fix(config)
update workflow repository URL handling and package config file references
- Switches Gitea workflow repository URLs to use gitlab.com explicitly for authenticated CI git operations.
- Replaces the published config file entry from npmextra.json to .smartconfig.json in package metadata.
- Adds Rust build output directories to .gitignore.
- Refreshes changelog and README formatting to match the current smartconfig-based configuration.
## 2026-03-24 - 2.2.2 - fix(config)
rename npmextra configuration file to .smartconfig.json
- Moves the existing project metadata and release configuration from npmextra.json to .smartconfig.json without changing its contents.
## 2026-03-24 - 2.2.1 - fix(config)
switch configuration loading from npmextra to smartconfig
- replace the @push.rocks/npmextra dependency with @push.rocks/smartconfig
@@ -13,6 +30,7 @@ switch configuration loading from npmextra to smartconfig
- refresh CLI help text to reference smartconfig.json instead of npmextra.json
## 2026-03-19 - 2.2.0 - feat(cli/buildx)
add pull control for builds and isolate buildx builders per project
- adds a new pull build option with --no-pull CLI support and defaults builds to refreshing base images with --pull
@@ -21,6 +39,7 @@ add pull control for builds and isolate buildx builders per project
- updates session logging to include project hash and builder suffix for easier build diagnostics
## 2026-03-15 - 2.1.0 - feat(cli)
add global remote builder configuration and native SSH buildx nodes for multi-platform builds
- adds a new `tsdocker config` command with subcommands to add, remove, list, and show remote builder definitions
@@ -29,14 +48,15 @@ add global remote builder configuration and native SSH buildx nodes for multi-pl
- updates the README and CLI help to document remote builder configuration and native cross-platform build workflows
## 2026-03-12 - 2.0.2 - fix(repo)
no changes to commit
no changes to commit
## 2026-03-12 - 2.0.1 - fix(repository)
no changes to commit
## 2026-03-12 - 2.0.0 - BREAKING CHANGE(cli)
remove legacy container test runner and make the default command show the man page
- Removes legacy testing and VS Code commands, including `runinside`, `vscode`, generated Dockerfile assets, and related configuration fields (`baseImage`, `command`, `dockerSock`, `keyValueObject`)
@@ -44,10 +64,11 @@ remove legacy container test runner and make the default command show the man pa
- Updates CLI and documentation to reflect default help output and the current build/push-focused workflow
## 2026-02-07 - 1.17.4 - fix()
no changes
## 2026-02-07 - 1.17.3 - fix(registry)
increase default maxRetries in fetchWithRetry from 3 to 6 to improve resilience when fetching registry resources
- Changed default maxRetries from 3 to 6 in ts/classes.registrycopy.ts
@@ -55,6 +76,7 @@ increase default maxRetries in fetchWithRetry from 3 to 6 to improve resilience
- No API or behavior changes besides the increased default retry count
## 2026-02-07 - 1.17.2 - fix(registry)
improve HTTP fetch retry logging, backoff calculation, and token-cache warning
- Include HTTP method in logs and normalize method to uppercase for consistency
@@ -64,6 +86,7 @@ improve HTTP fetch retry logging, backoff calculation, and token-cache warning
- Add a warning log when clearing cached token after a 401 response
## 2026-02-07 - 1.17.1 - fix(registrycopy)
add fetchWithRetry wrapper to apply timeouts, retries with exponential backoff, and token cache handling; use it for registry HTTP requests
- Introduces fetchWithRetry(url, options, timeoutMs, maxRetries) to wrap fetch with AbortSignal timeout, exponential backoff retries, and retry behavior only for network errors and 5xx responses
@@ -72,6 +95,7 @@ add fetchWithRetry wrapper to apply timeouts, retries with exponential backoff,
- Adds logging on retry attempts and backoff delays to improve robustness and observability
## 2026-02-07 - 1.17.0 - feat(tsdocker)
add Dockerfile filtering, optional skip-build flow, and fallback Docker config credential loading
- Add TsDockerManager.filterDockerfiles(patterns) to filter discovered Dockerfiles by glob-style patterns and warn when no matches are found
@@ -80,6 +104,7 @@ add Dockerfile filtering, optional skip-build flow, and fallback Docker config c
- Import RegistryCopy and add info/warn logs when credentials are loaded or missing
## 2026-02-07 - 1.16.0 - feat(core)
Introduce per-invocation TsDockerSession and session-aware local registry and build orchestration; stream and parse buildx output for improved logging and visibility; detect Docker topology and add CI-safe cleanup; update README with multi-arch, parallel-build, caching, and local registry usage and new CLI flags.
- Add TsDockerSession to allocate unique ports, container names and builder suffixes for concurrent runs (especially in CI).
@@ -92,6 +117,7 @@ Introduce per-invocation TsDockerSession and session-aware local registry and bu
- Large README improvements: multi-arch flow, persistent local registry, parallel builds, caching, new CLI and clean flags, and examples for CI integration.
## 2026-02-07 - 1.15.1 - fix(registry)
use persistent local registry and OCI Distribution API image copy for pushes
- Adds RegistryCopy class implementing the OCI Distribution API to copy images (including multi-arch manifest lists) from the local registry to remote registries.
@@ -103,6 +129,7 @@ use persistent local registry and OCI Distribution API image copy for pushes
- Breaking change: registry usage and push behavior changed (config.push ignored and local registry mandatory) — bump major version.
## 2026-02-07 - 1.15.0 - feat(clean)
Make the `clean` command interactive: add smartinteract prompts, docker context detection, and selective resource removal with support for --all and -y auto-confirm
- Adds dependency @push.rocks/smartinteract and exposes it from the plugins module
@@ -112,6 +139,7 @@ Make the `clean` command interactive: add smartinteract prompts, docker context
- Replaces blunt shell commands with safer, interactive selection and adds improved error handling and logging
## 2026-02-07 - 1.14.0 - feat(build)
add level-based parallel builds with --parallel and configurable concurrency
- Introduces --parallel and --parallel=<n> CLI flags to enable level-based parallel Docker builds (default concurrency 4).
@@ -122,6 +150,7 @@ add level-based parallel builds with --parallel and configurable concurrency
- Updates documentation (readme.hints.md) with usage examples and implementation notes.
## 2026-02-07 - 1.13.0 - feat(docker)
add Docker context detection, rootless support, and context-aware buildx registry handling
- Introduce DockerContext class to detect current Docker context and rootless mode and to log warnings and context info
@@ -131,6 +160,7 @@ add Docker context detection, rootless support, and context-aware buildx registr
- Pass isRootless into local registry startup and build pipeline; emit rootless-specific warnings and registry reachability hint
## 2026-02-06 - 1.12.0 - feat(docker)
add detailed logging for buildx, build commands, local registry, and local dependency info
- Log startup of local registry including a note about buildx dependency bridging
@@ -140,6 +170,7 @@ add detailed logging for buildx, build commands, local registry, and local depen
- Non-functional change: purely adds informational logging to improve observability during builds
## 2026-02-06 - 1.11.0 - feat(docker)
start temporary local registry for buildx dependency resolution and ensure buildx builder uses host network
- Introduce a temporary local registry (localhost:5234) with start/stop helpers and push support to expose local images for buildx
@@ -150,6 +181,7 @@ start temporary local registry for buildx dependency resolution and ensure build
- Ensure buildx builder is created with --driver-opt network=host and recreate existing builder if it lacks host network to allow registry access from build containers
## 2026-02-06 - 1.10.0 - feat(classes.dockerfile)
support using a local base image as a build context in buildx commands
- Adds --build-context flag mapping base image to docker-image://<localTag> when localBaseImageDependent && localBaseDockerfile are set
@@ -157,6 +189,7 @@ support using a local base image as a build context in buildx commands
- Logs an info message indicating the local build context mapping
## 2026-02-06 - 1.9.0 - feat(build)
add verbose build output, progress logging, and timing for builds/tests
- Add 'verbose' option to build/test flows (interfaces, CLI, and method signatures) to allow streaming raw docker build output or run silently
@@ -167,6 +200,7 @@ add verbose build output, progress logging, and timing for builds/tests
- Use silent exec variants when verbose is false and stream exec when verbose is true
## 2026-02-06 - 1.8.0 - feat(build)
add optional content-hash based build cache to skip rebuilding unchanged Dockerfiles
- Introduce TsDockerCache to compute SHA-256 of Dockerfile content and persist cache to .nogit/tsdocker_support.json
@@ -176,12 +210,14 @@ add optional content-hash based build cache to skip rebuilding unchanged Dockerf
- Cache records store contentHash, imageId, buildTag and timestamp
## 2026-02-06 - 1.7.0 - feat(cli)
add CLI version display using commitinfo
- Imported commitinfo from './00_commitinfo_data.js' and called tsdockerCli.addVersion(commitinfo.version) to surface package/commit version in the Smartcli instance
- Change made in ts/tsdocker.cli.ts — small user-facing CLI enhancement; no breaking changes
## 2026-02-06 - 1.6.0 - feat(docker)
add support for no-cache builds and tag built images for local dependency resolution
- Introduce IBuildCommandOptions.noCache to control --no-cache behavior
@@ -191,6 +227,7 @@ add support for no-cache builds and tag built images for local dependency resolu
- Log tagging actions and execute docker tag via smartshellInstance
## 2026-02-06 - 1.5.0 - feat(build)
add support for selective builds, platform override and build timeout
- Introduce IBuildCommandOptions with patterns, platform and timeout to control build behavior
@@ -200,6 +237,7 @@ add support for selective builds, platform override and build timeout
- Implement streaming exec with timeout to kill long-running builds and surface timeout errors
## 2026-02-04 - 1.4.3 - fix(dockerfile)
fix matching of base images to local Dockerfiles by stripping registry prefixes when comparing image references
- Added Dockerfile.extractRepoVersion(imageRef) to normalize image references by removing registry prefixes (detects registries containing '.' or ':' or 'localhost').
@@ -207,13 +245,15 @@ fix matching of base images to local Dockerfiles by stripping registry prefixes
- Prevents mismatches when baseImage includes a registry (e.g. "host.today/repo:version") so it correctly matches a local cleanTag like "repo:version".
## 2026-01-21 - 1.4.2 - fix(classes.dockerfile)
use a single top-level fs import instead of requiring fs inside methods
- Added top-level import: import * as fs from 'fs' in ts/classes.dockerfile.ts
- Added top-level import: import \* as fs from 'fs' in ts/classes.dockerfile.ts
- Removed inline require('fs') calls and replaced with the imported fs in constructor and test() to keep imports consistent
- No behavioral change expected; this is a cleanup/refactor to standardize module usage
## 2026-01-20 - 1.4.1 - fix(docs)
update README: expand usage, installation, quick start, features, troubleshooting and migration notes
- Expanded README content: new Quick Start, Installation examples, and detailed Features section (containerized testing, smart Docker builds, multi-registry push, multi-architecture support, zero-config start)
@@ -222,6 +262,7 @@ update README: expand usage, installation, quick start, features, troubleshootin
- Documentation-only change — no source code modified
## 2026-01-20 - 1.4.0 - feat(tsdocker)
add multi-registry and multi-arch Docker build/push/pull manager, registry storage, Dockerfile handling, and new CLI commands
- Introduce TsDockerManager orchestrator to discover, sort, build, test, push and pull Dockerfiles
@@ -234,6 +275,7 @@ add multi-registry and multi-arch Docker build/push/pull manager, registry stora
- Update README and readme.hints with new features, configuration examples and command list
## 2026-01-19 - 1.3.0 - feat(packaging)
Rename package scope to @git.zone and migrate to ESM; rename CLI/config keys, update entrypoints and imports, bump Node requirement to 18, and adjust scripts/dependencies
- Package renamed to @git.zone/tsdocker (scope change) — consumers must update package reference.

View File

@@ -1,8 +1,8 @@
{
"name": "@git.zone/tsdocker",
"version": "2.2.2",
"version": "2.2.4",
"private": false,
"description": "develop npm modules cross platform with docker",
"description": "A comprehensive Docker build tool for TypeScript projects with multi-arch support, multi-registry push, and CI-safe session isolation.",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
"bin": {
@@ -18,7 +18,16 @@
"url": "https://gitlab.com/gitzone/tsdocker.git"
},
"keywords": [
"docker"
"docker",
"typescript",
"buildx",
"multi-arch",
"multi-registry",
"oci",
"container",
"ci-cd",
"docker-build",
"cross-platform"
],
"author": "Lossless GmbH",
"license": "MIT",
@@ -27,22 +36,22 @@
},
"homepage": "https://gitlab.com/gitzone/tsdocker#readme",
"devDependencies": {
"@git.zone/tsbuild": "^4.3.0",
"@git.zone/tsbuild": "^4.4.0",
"@git.zone/tsrun": "^2.0.1",
"@git.zone/tstest": "^3.3.2",
"@git.zone/tstest": "^3.5.1",
"@types/node": "^25.5.0"
},
"dependencies": {
"@push.rocks/lik": "^6.3.1",
"@push.rocks/smartconfig": "^6.0.0",
"@push.rocks/lik": "^6.4.0",
"@push.rocks/projectinfo": "^5.0.2",
"@push.rocks/smartcli": "^4.0.20",
"@push.rocks/smartconfig": "^6.0.1",
"@push.rocks/smartfs": "^1.5.0",
"@push.rocks/smartinteract": "^2.0.16",
"@push.rocks/smartlog": "^3.2.1",
"@push.rocks/smartlog-destination-local": "^9.0.2",
"@push.rocks/smartlog-source-ora": "^1.0.9",
"@push.rocks/smartshell": "^3.3.7"
"@push.rocks/smartshell": "^3.3.8"
},
"packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34",
"type": "module",
@@ -55,10 +64,12 @@
"dist_ts_web/**/*",
"assets/**/*",
"cli.js",
"npmextra.json",
".smartconfig.json",
"readme.md"
],
"pnpm": {
"overrides": {}
"overrides": {
"lru-cache": ">=11.0.0"
}
}
}

234
pnpm-lock.yaml generated
View File

@@ -4,13 +4,16 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
overrides:
lru-cache: '>=11.0.0'
importers:
.:
dependencies:
'@push.rocks/lik':
specifier: ^6.3.1
version: 6.3.1
specifier: ^6.4.0
version: 6.4.0
'@push.rocks/projectinfo':
specifier: ^5.0.2
version: 5.0.2
@@ -18,8 +21,8 @@ importers:
specifier: ^4.0.20
version: 4.0.20
'@push.rocks/smartconfig':
specifier: ^6.0.0
version: 6.0.0
specifier: ^6.0.1
version: 6.0.1
'@push.rocks/smartfs':
specifier: ^1.5.0
version: 1.5.0
@@ -36,18 +39,18 @@ importers:
specifier: ^1.0.9
version: 1.0.9
'@push.rocks/smartshell':
specifier: ^3.3.7
version: 3.3.7
specifier: ^3.3.8
version: 3.3.8
devDependencies:
'@git.zone/tsbuild':
specifier: ^4.3.0
version: 4.3.0
specifier: ^4.4.0
version: 4.4.0
'@git.zone/tsrun':
specifier: ^2.0.1
version: 2.0.1
'@git.zone/tstest':
specifier: ^3.3.2
version: 3.3.2(socks@2.8.7)(typescript@5.9.3)
specifier: ^3.5.1
version: 3.5.1(socks@2.8.7)(typescript@6.0.2)
'@types/node':
specifier: ^25.5.0
version: 25.5.0
@@ -420,24 +423,24 @@ packages:
cpu: [x64]
os: [win32]
'@git.zone/tsbuild@4.3.0':
resolution: {integrity: sha512-lb6eMQ8RQPaJqAB4kC++GIElOiTAH1pClmoND/q7XHuiMZxv6cXz2/U/sZt339mon2c40dXRG2tkLF2jRsP0pQ==}
'@git.zone/tsbuild@4.4.0':
resolution: {integrity: sha512-98igHfppi6blFYDyzNukNkj4FUO5ZlyXEaSyJh8vCkkZM8SyAgfZj+NUWA1D1iaPXE58UvK1Pt/o8p8iI9UHHw==}
hasBin: true
'@git.zone/tsbundle@2.9.1':
resolution: {integrity: sha512-JW1xjSv7UjAm2lwAQPxhCWs14wqs+UIq5FqIGUPuI6rrDBWIMT2d0gpP6iP6TqXqgm6XpBlfU4rHcHheUXzXbQ==}
hasBin: true
'@git.zone/tspublish@1.11.2':
resolution: {integrity: sha512-BcGap1OzXDgXpfQXMh9W17r/CkWNhPsJ3WzjG2wrGE+ePUJCJAm9w6+J8G5WdZZcZKPqTB07cp707LbSiksc5A==}
'@git.zone/tspublish@1.11.3':
resolution: {integrity: sha512-hYpnNc1f2OXrBNKKtQN3MBeflnw/6jI6v8lP6IlX79r7Aczg5DVa+s40gJt9vliftaLyDY/FRFixZifv4MnKGw==}
hasBin: true
'@git.zone/tsrun@2.0.1':
resolution: {integrity: sha512-NEcnsjvlC1o3Z6SS3VhKCf6Ev+Sh4EAinmggslrIR/ppMrvjDbXNFXoyr3PB+GLeSAR0JRZ1fGvVYjpEzjBdIg==}
hasBin: true
'@git.zone/tstest@3.3.2':
resolution: {integrity: sha512-1R3VMEg+VMeMlSTIzIYTAsRIHuZMlpWmG1j4Q1cPSSw3jOp79OD7sJxfHkqy4bO/nTTcKMGXs5DD1nhT7Xno8w==}
'@git.zone/tstest@3.5.1':
resolution: {integrity: sha512-R1T3Tr9zun0B5bFq8qK8/KZ2uqHZHfDPB3/mhoL5ekwxGSI4InX5sXMpbNuhw2EdNZ7rMAHNCyeSLz2PwFmNZw==}
hasBin: true
'@img/colour@1.1.0':
@@ -861,8 +864,8 @@ packages:
'@push.rocks/levelcache@3.2.0':
resolution: {integrity: sha512-Ch0Oguta2I0SVi704kHghhBcgfyfS92ua1elRu9d8X1/9LMRYuqvvBAnyXyFxQzI3S8q8QC6EkRdd8CAAYSzRg==}
'@push.rocks/lik@6.3.1':
resolution: {integrity: sha512-UWDwGBaVx5yPtAFXqDDBtQZCzETUOA/7myQIXb+YBsuiIw4yQuhNZ23uY2ChQH2Zn6DLqdNSgQcYC0WywMZBNQ==}
'@push.rocks/lik@6.4.0':
resolution: {integrity: sha512-GCdXyF2a6NP+i0W6Mib1PjtA6JGrl6Ae17SbaQwqTscn4JHNta6xm9r+D8/b83XGZsoU903FlJZli3YqJCxT9Q==}
'@push.rocks/mongodump@1.1.0':
resolution: {integrity: sha512-kW0ZUGyf1e4nwloVwBQjNId+MzgTcNS834C+RxH21i1NqyOubbpWZtJtPP+K+s35nSJRyCTy3ICfBMdDBTAm2w==}
@@ -897,8 +900,8 @@ packages:
'@push.rocks/smartclickhouse@2.2.0':
resolution: {integrity: sha512-eTzKiREIPSzL1kPkVyD6vEbn+WV/DvQqDjP67VlhNlQGbRcemnJG/eLrUUR1ytmdIqnsZGEK6UYBgyj5nhzLNQ==}
'@push.rocks/smartconfig@6.0.0':
resolution: {integrity: sha512-ohXwJdbDXV2budErnZKWBOz01YkjP6gJsZ7QM9+6Wsh+r7O1CVT3JpV+mD8xJWy5tZRHI+3B9L8z0+WkIDtKzw==}
'@push.rocks/smartconfig@6.0.1':
resolution: {integrity: sha512-nuUbiOTy7WbDliZV2mG1VRaeJYygtBlLNVs3LmLoPmBzbZwwUMq+HFVS19BhXxmQnGZ5+JXW05dZXKfMqEDZnw==}
'@push.rocks/smartcrypto@2.0.4':
resolution: {integrity: sha512-1+/5bsjyataf5uUkUNnnVXGRAt+gHVk1KDzozjTqgqJxHvQk1d9fVDohL6CxUhUucTPtu5VR5xNBiV8YCDuGyw==}
@@ -1032,20 +1035,17 @@ packages:
'@push.rocks/smartrouter@1.3.3':
resolution: {integrity: sha512-1+xZEnWlhzqLWAaJ1zFNhQ0zgbfCWQl1DBT72LygLxTs+P0K8AwJKgqo/IX6CT55kGCFnPAZIYSbVJlGsgrB0w==}
'@push.rocks/smartrust@1.3.1':
resolution: {integrity: sha512-3ApbgF6yGeE2TRQxBY9Y48H1JlpcRheIp7QDBLSSfk80Uoe6fjdgBAfNz3Ir8hW3RZ3b7hA3sm1ZshCok58SEA==}
'@push.rocks/smartrust@1.3.2':
resolution: {integrity: sha512-HPzSJgDnKUdE5fkn2+BC9JvFXk7wl6aURAiHAXjHSCBLtzfgB7jEXjlg+K6CEfMjwQV7sy+hYABlq5DLXcFseQ==}
'@push.rocks/smartrx@3.0.10':
resolution: {integrity: sha512-USjIYcsSfzn14cwOsxgq/bBmWDTTzy3ouWAnW5NdMyRRzEbmeNrvmy6TRqNeDlJ2PsYNTt1rr/zGUqvIy72ITg==}
'@push.rocks/smarts3@5.3.0':
resolution: {integrity: sha512-6bo55ovCDEylbTxwPFZYDrZrz2babQEUmxHIexmVcP2j+6LYRHDbGYnWoyKdtqniqDFZ04pFkOoZ85hUzU5xCw==}
'@push.rocks/smartserve@2.0.1':
resolution: {integrity: sha512-YQb2qexfCzCqOlLWBBXKMg6xG4zahCPAxomz/KEKAwHtW6wMTtuHKSTSkRTQ0vl9jssLMAmRz2OyafiL9XGJXQ==}
'@push.rocks/smartshell@3.3.7':
resolution: {integrity: sha512-b3st2+FjHUVhZZRlXfw93+SQA0UMVlURqe55uVpWdjJX7jeGXTTeszuYygtiR99zC5iZ8WZhGDct3N2L1qc/qw==}
'@push.rocks/smartshell@3.3.8':
resolution: {integrity: sha512-t9J/py0vnea4ZtOs7Anc9dc6lcvg6EDvYBw5eE1mB+KUWxMQf/ROIQwWMo6B9SMNY4JS2UwvfuJQJ8makP/7Tg==}
'@push.rocks/smartspawn@3.0.3':
resolution: {integrity: sha512-DyrGPV69wwOiJgKkyruk5hS3UEGZ99xFAqBE9O2nM8VXCRLbbty3xt1Ug5Z092ZZmJYaaGMSnMw3ijyZJFCT0Q==}
@@ -1053,6 +1053,9 @@ packages:
'@push.rocks/smartstate@2.2.1':
resolution: {integrity: sha512-fLrilAJNI6QOs0hcBRD9eTwU2Rlo6NlDCKQo9N/zyp0VJ6AV1UVdEZcVIQILu1CO0RUHX9aBAbFunJrb2+Zrkg==}
'@push.rocks/smartstorage@6.3.2':
resolution: {integrity: sha512-g8rXlVZ+6iKmzNoybtwQntdb7EWA6WnVmbXNOdwDKWR8w4o/7UMErj+H5mt57iqYIy1pzQAoTb8IWJNsti7XQw==}
'@push.rocks/smartstream@2.0.8':
resolution: {integrity: sha512-GlF/9cCkvBHwKa3DK4DO5wjfSgqkj6gAS4TrY9uD5NMHu9RQv4WiNrElTYj7iCEpnZgUnLO3tzw1JA3NRIMnnA==}
@@ -1515,8 +1518,8 @@ packages:
'@tsclass/tsclass@4.4.4':
resolution: {integrity: sha512-YZOAF+u+r4u5rCev2uUd1KBTBdfyFdtDmcv4wuN+864lMccbdfRICR3SlJwCfYS1lbeV3QNLYGD30wjRXgvCJA==}
'@tsclass/tsclass@9.3.0':
resolution: {integrity: sha512-KD3oTUN3RGu67tgjNHgWWZGsdYipr1RUDxQ9MMKSgIJ6oNZ4q5m2rg0ibrgyHWkAjTPlHVa6kHP3uVOY+8bnHw==}
'@tsclass/tsclass@9.5.0':
resolution: {integrity: sha512-HwMVwkrBnEFMjwOsMkGwWN/q+XEczSpf4a/PBAXgkDdV6sXdxAMFXUH1tW8Y5ecuvXFYMvFry4X57MCCT7Dm8A==}
'@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
@@ -1590,9 +1593,6 @@ packages:
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
'@types/symbol-tree@3.2.5':
resolution: {integrity: sha512-zXnnyENt1TYQcS21MkPaJCVjfcPq7p7yc5mo5JACuumXp6sly5jnlS0IokHd+xmmuCbx6V7JqkMBpswR+nZAcw==}
'@types/tar-stream@3.1.4':
resolution: {integrity: sha512-921gW0+g29mCJX0fRvqeHzBlE/XclDaAG0Ousy1LCghsOhvaKacDeRGEVzQP9IPfKn8Vysy7FEXAIxycpc/CMg==}
@@ -2485,17 +2485,10 @@ packages:
resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
lru-cache@11.2.2:
resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==}
engines: {node: 20 || >=22}
lru-cache@7.18.3:
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
engines: {node: '>=12'}
make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
@@ -3236,6 +3229,10 @@ packages:
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
hasBin: true
tagged-tag@1.0.0:
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
engines: {node: '>=20'}
tar-fs@3.1.2:
resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==}
@@ -3315,6 +3312,10 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
type-fest@5.5.0:
resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==}
engines: {node: '>=20'}
typed-query-selector@2.12.1:
resolution: {integrity: sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==}
@@ -3323,6 +3324,11 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
typescript@6.0.2:
resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==}
engines: {node: '>=14.17'}
hasBin: true
uglify-js@3.19.3:
resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
engines: {node: '>=0.8.0'}
@@ -3487,7 +3493,7 @@ snapshots:
dependencies:
'@api.global/typedrequest-interfaces': 3.0.19
'@push.rocks/isounique': 1.0.5
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartbuffer': 3.0.5
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartguard': 3.1.0
@@ -3970,7 +3976,7 @@ snapshots:
dependencies:
'@api.global/typedrequest': 3.3.0
'@design.estate/dees-comms': 1.0.30
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartjson': 6.0.0
'@push.rocks/smartmarkdown': 3.0.3
@@ -4098,9 +4104,9 @@ snapshots:
'@esbuild/win32-x64@0.27.4':
optional: true
'@git.zone/tsbuild@4.3.0':
'@git.zone/tsbuild@4.4.0':
dependencies:
'@git.zone/tspublish': 1.11.2
'@git.zone/tspublish': 1.11.3
'@push.rocks/early': 4.0.4
'@push.rocks/smartcli': 4.0.20
'@push.rocks/smartdelay': 3.0.5
@@ -4109,7 +4115,7 @@ snapshots:
'@push.rocks/smartlog': 3.2.1
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3
typescript: 5.9.3
typescript: 6.0.2
transitivePeerDependencies:
- '@nuxt/kit'
- aws-crt
@@ -4146,11 +4152,11 @@ snapshots:
- supports-color
- vue
'@git.zone/tspublish@1.11.2':
'@git.zone/tspublish@1.11.3':
dependencies:
'@push.rocks/consolecolor': 2.0.3
'@push.rocks/npmextra': 5.3.3
'@push.rocks/smartcli': 4.0.20
'@push.rocks/smartconfig': 6.0.1
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartfile': 13.1.2
'@push.rocks/smartfs': 1.5.0
@@ -4158,7 +4164,7 @@ snapshots:
'@push.rocks/smartnpm': 2.0.6
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartrequest': 5.0.1
'@push.rocks/smartshell': 3.3.7
'@push.rocks/smartshell': 3.3.8
transitivePeerDependencies:
- '@nuxt/kit'
- aws-crt
@@ -4172,16 +4178,16 @@ snapshots:
'@git.zone/tsrun@2.0.1':
dependencies:
'@push.rocks/smartfile': 13.1.2
'@push.rocks/smartshell': 3.3.7
'@push.rocks/smartshell': 3.3.8
tsx: 4.21.0
'@git.zone/tstest@3.3.2(socks@2.8.7)(typescript@5.9.3)':
'@git.zone/tstest@3.5.1(socks@2.8.7)(typescript@6.0.2)':
dependencies:
'@git.zone/tsbundle': 2.9.1
'@git.zone/tsrun': 2.0.1
'@push.rocks/consolecolor': 2.0.3
'@push.rocks/qenv': 6.1.3
'@push.rocks/smartbrowser': 2.0.11(typescript@5.9.3)
'@push.rocks/smartbrowser': 2.0.11(typescript@6.0.2)
'@push.rocks/smartcrypto': 2.0.4
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartenv': 6.0.0
@@ -4195,9 +4201,9 @@ snapshots:
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 5.0.1
'@push.rocks/smarts3': 5.3.0
'@push.rocks/smartserve': 2.0.1
'@push.rocks/smartshell': 3.3.7
'@push.rocks/smartshell': 3.3.8
'@push.rocks/smartstorage': 6.3.2
'@push.rocks/smarttime': 4.2.3
'@push.rocks/smartwatch': 6.3.0
'@types/ws': 8.18.1
@@ -4808,7 +4814,7 @@ snapshots:
'@push.rocks/levelcache@3.2.0':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartbucket': 3.3.10
'@push.rocks/smartcache': 1.0.18
'@push.rocks/smartenv': 5.0.13
@@ -4820,7 +4826,7 @@ snapshots:
'@push.rocks/smartstring': 4.1.0
'@push.rocks/smartunique': 3.0.9
'@push.rocks/taskbuffer': 3.5.0
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
transitivePeerDependencies:
- '@nuxt/kit'
- aws-crt
@@ -4828,25 +4834,23 @@ snapshots:
- supports-color
- vue
'@push.rocks/lik@6.3.1':
'@push.rocks/lik@6.4.0':
dependencies:
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartmatch': 2.0.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrx': 3.0.10
'@push.rocks/smarttime': 4.2.3
'@types/minimatch': 5.1.2
'@types/symbol-tree': 3.2.5
symbol-tree: 3.2.4
'@push.rocks/mongodump@1.1.0(socks@2.8.7)':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartfile': 11.2.7
'@push.rocks/smartjson': 5.2.0
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
mongodb: 6.21.0(socks@2.8.7)
transitivePeerDependencies:
- '@aws-sdk/credential-providers'
@@ -4867,7 +4871,7 @@ snapshots:
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrx': 3.0.10
'@push.rocks/taskbuffer': 3.5.0
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
transitivePeerDependencies:
- '@nuxt/kit'
- react
@@ -4910,11 +4914,11 @@ snapshots:
- react-native-b4a
- supports-color
'@push.rocks/smartbrowser@2.0.11(typescript@5.9.3)':
'@push.rocks/smartbrowser@2.0.11(typescript@6.0.2)':
dependencies:
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartpdf': 4.2.0(typescript@5.9.3)
'@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.3)
'@push.rocks/smartpdf': 4.2.0(typescript@6.0.2)
'@push.rocks/smartpuppeteer': 2.0.5(typescript@6.0.2)
'@push.rocks/smartunique': 3.0.9
transitivePeerDependencies:
- '@nuxt/kit'
@@ -4939,7 +4943,7 @@ snapshots:
'@push.rocks/smartstream': 3.4.0
'@push.rocks/smartstring': 4.1.0
'@push.rocks/smartunique': 3.0.9
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
transitivePeerDependencies:
- aws-crt
@@ -4957,7 +4961,7 @@ snapshots:
'@push.rocks/smartcli@4.0.20':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartlog': 3.2.1
'@push.rocks/smartobject': 1.0.12
'@push.rocks/smartpromise': 4.2.3
@@ -4973,7 +4977,7 @@ snapshots:
'@push.rocks/smarturl': 3.1.0
'@push.rocks/webrequest': 4.0.5
'@push.rocks/smartconfig@6.0.0':
'@push.rocks/smartconfig@6.0.1':
dependencies:
'@push.rocks/qenv': 6.1.3
'@push.rocks/smartfile': 11.2.7
@@ -4983,7 +4987,7 @@ snapshots:
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrx': 3.0.10
'@push.rocks/taskbuffer': 3.5.0
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
transitivePeerDependencies:
- '@nuxt/kit'
- react
@@ -4998,7 +5002,7 @@ snapshots:
'@push.rocks/smartdata@5.16.7(socks@2.8.7)':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartlog': 3.2.1
'@push.rocks/smartmongo': 2.2.0(socks@2.8.7)
@@ -5008,7 +5012,7 @@ snapshots:
'@push.rocks/smarttime': 4.2.3
'@push.rocks/smartunique': 3.0.9
'@push.rocks/taskbuffer': 3.5.0
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
mongodb: 6.21.0(socks@2.8.7)
transitivePeerDependencies:
- '@aws-sdk/credential-providers'
@@ -5035,8 +5039,8 @@ snapshots:
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartenv': 6.0.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrust': 1.3.1
'@tsclass/tsclass': 9.3.0
'@push.rocks/smartrust': 1.3.2
'@tsclass/tsclass': 9.5.0
acme-client: 5.4.0
minimatch: 10.2.4
transitivePeerDependencies:
@@ -5057,14 +5061,14 @@ snapshots:
'@push.rocks/smartexit@1.1.1':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartpromise': 4.2.3
tree-kill: 1.2.2
'@push.rocks/smartexit@2.0.3':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartexpect@2.5.0':
@@ -5077,7 +5081,7 @@ snapshots:
'@push.rocks/smartfile@10.0.41':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartfile-interfaces': 1.0.7
'@push.rocks/smarthash': 3.2.6
@@ -5096,7 +5100,7 @@ snapshots:
'@push.rocks/smartfile@11.2.7':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartfile-interfaces': 1.0.7
'@push.rocks/smarthash': 3.2.6
@@ -5114,7 +5118,7 @@ snapshots:
'@push.rocks/smartfile@13.1.2':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartfile-interfaces': 1.0.7
'@push.rocks/smartfs': 1.5.0
@@ -5132,7 +5136,7 @@ snapshots:
'@push.rocks/smartfs@1.5.0':
dependencies:
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartrust': 1.3.1
'@push.rocks/smartrust': 1.3.2
'@push.rocks/smartguard@3.1.0':
dependencies:
@@ -5149,7 +5153,7 @@ snapshots:
'@push.rocks/smartinteract@2.0.16':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartobject': 1.0.12
'@push.rocks/smartpromise': 4.2.3
inquirer: 11.1.0
@@ -5211,7 +5215,7 @@ snapshots:
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smarttime': 4.2.3
'@push.rocks/webrequest': 4.0.5
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
'@push.rocks/smartmarkdown@3.0.3':
dependencies:
@@ -5339,7 +5343,7 @@ snapshots:
'@push.rocks/smartpath@6.0.0': {}
'@push.rocks/smartpdf@4.2.0(typescript@5.9.3)':
'@push.rocks/smartpdf@4.2.0(typescript@6.0.2)':
dependencies:
'@push.rocks/smartbuffer': 3.0.5
'@push.rocks/smartdelay': 3.0.5
@@ -5348,10 +5352,10 @@ snapshots:
'@push.rocks/smartnetwork': 4.4.0
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartpuppeteer': 2.0.5(typescript@5.9.3)
'@push.rocks/smartpuppeteer': 2.0.5(typescript@6.0.2)
'@push.rocks/smartserve': 2.0.1
'@push.rocks/smartunique': 3.0.9
'@tsclass/tsclass': 9.3.0
'@tsclass/tsclass': 9.5.0
pdf-lib: 1.17.1
pdf2json: 4.0.2
transitivePeerDependencies:
@@ -5374,11 +5378,11 @@ snapshots:
'@push.rocks/smartpromise@4.2.3': {}
'@push.rocks/smartpuppeteer@2.0.5(typescript@5.9.3)':
'@push.rocks/smartpuppeteer@2.0.5(typescript@6.0.2)':
dependencies:
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartshell': 3.3.7
puppeteer: 24.39.0(typescript@5.9.3)
'@push.rocks/smartshell': 3.3.8
puppeteer: 24.39.0(typescript@6.0.2)
tree-kill: 1.2.2
transitivePeerDependencies:
- bare-abort-controller
@@ -5416,11 +5420,11 @@ snapshots:
'@push.rocks/smartrouter@1.3.3':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartrx': 3.0.10
path-to-regexp: 8.3.0
'@push.rocks/smartrust@1.3.1':
'@push.rocks/smartrust@1.3.2':
dependencies:
'@push.rocks/smartpath': 6.0.0
@@ -5429,17 +5433,11 @@ snapshots:
'@push.rocks/smartpromise': 4.2.3
rxjs: 7.8.2
'@push.rocks/smarts3@5.3.0':
dependencies:
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartrust': 1.3.1
'@tsclass/tsclass': 9.3.0
'@push.rocks/smartserve@2.0.1':
dependencies:
'@api.global/typedrequest': 3.3.0
'@cfworker/json-schema': 4.1.1
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartenv': 6.0.0
'@push.rocks/smartlog': 3.2.1
'@push.rocks/smartpath': 6.0.0
@@ -5448,7 +5446,7 @@ snapshots:
- bufferutil
- utf-8-validate
'@push.rocks/smartshell@3.3.7':
'@push.rocks/smartshell@3.3.8':
dependencies:
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartexit': 2.0.3
@@ -5473,6 +5471,12 @@ snapshots:
'@push.rocks/smartrx': 3.0.10
'@push.rocks/webstore': 2.0.20
'@push.rocks/smartstorage@6.3.2':
dependencies:
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartrust': 1.3.2
'@tsclass/tsclass': 9.5.0
'@push.rocks/smartstream@2.0.8':
dependencies:
'@push.rocks/smartpromise': 4.2.3
@@ -5484,7 +5488,7 @@ snapshots:
'@push.rocks/smartstream@3.4.0':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartenv': 6.0.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrx': 3.0.10
@@ -5495,7 +5499,7 @@ snapshots:
'@push.rocks/smarttime@4.2.3':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartpromise': 4.2.3
croner: 10.0.1
@@ -5519,7 +5523,7 @@ snapshots:
'@push.rocks/smartwatch@6.3.0':
dependencies:
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartenv': 6.0.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrx': 3.0.10
@@ -5534,7 +5538,7 @@ snapshots:
'@push.rocks/taskbuffer@3.5.0':
dependencies:
'@design.estate/dees-element': 2.2.3
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartdelay': 3.0.5
'@push.rocks/smartlog': 3.2.1
'@push.rocks/smartpromise': 4.2.3
@@ -5564,7 +5568,7 @@ snapshots:
'@push.rocks/webstore@2.0.20':
dependencies:
'@api.global/typedrequest-interfaces': 3.0.19
'@push.rocks/lik': 6.3.1
'@push.rocks/lik': 6.4.0
'@push.rocks/smartenv': 5.0.13
'@push.rocks/smartjson': 5.2.0
'@push.rocks/smartpromise': 4.2.3
@@ -6051,9 +6055,9 @@ snapshots:
dependencies:
type-fest: 4.41.0
'@tsclass/tsclass@9.3.0':
'@tsclass/tsclass@9.5.0':
dependencies:
type-fest: 4.41.0
type-fest: 5.5.0
'@tybys/wasm-util@0.10.1':
dependencies:
@@ -6137,8 +6141,6 @@ snapshots:
'@types/semver@7.7.1': {}
'@types/symbol-tree@3.2.5': {}
'@types/tar-stream@3.1.4':
dependencies:
'@types/node': 25.5.0
@@ -6449,14 +6451,14 @@ snapshots:
core-util-is@1.0.3: {}
cosmiconfig@9.0.1(typescript@5.9.3):
cosmiconfig@9.0.1(typescript@6.0.2):
dependencies:
env-paths: 2.2.1
import-fresh: 3.3.1
js-yaml: 4.1.1
parse-json: 5.2.0
optionalDependencies:
typescript: 5.9.3
typescript: 6.0.2
croner@10.0.1: {}
@@ -7093,12 +7095,8 @@ snapshots:
lowercase-keys@3.0.0: {}
lru-cache@10.4.3: {}
lru-cache@11.2.2: {}
lru-cache@7.18.3: {}
make-dir@3.1.0:
dependencies:
semver: 6.3.1
@@ -7676,7 +7674,7 @@ snapshots:
path-scurry@1.11.1:
dependencies:
lru-cache: 10.4.3
lru-cache: 11.2.2
minipass: 7.1.2
path-scurry@2.0.1:
@@ -7739,7 +7737,7 @@ snapshots:
debug: 4.4.3
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
lru-cache: 7.18.3
lru-cache: 11.2.2
pac-proxy-agent: 7.2.0
proxy-from-env: 1.1.0
socks-proxy-agent: 8.0.5
@@ -7772,11 +7770,11 @@ snapshots:
- supports-color
- utf-8-validate
puppeteer@24.39.0(typescript@5.9.3):
puppeteer@24.39.0(typescript@6.0.2):
dependencies:
'@puppeteer/browsers': 2.13.0
chromium-bidi: 14.0.0(devtools-protocol@0.0.1581282)
cosmiconfig: 9.0.1(typescript@5.9.3)
cosmiconfig: 9.0.1(typescript@6.0.2)
devtools-protocol: 0.0.1581282
puppeteer-core: 24.39.0
typed-query-selector: 2.12.1
@@ -8108,6 +8106,8 @@ snapshots:
systeminformation@5.31.4: {}
tagged-tag@1.0.0: {}
tar-fs@3.1.2:
dependencies:
pump: 3.0.4
@@ -8215,10 +8215,16 @@ snapshots:
type-fest@4.41.0: {}
type-fest@5.5.0:
dependencies:
tagged-tag: 1.0.0
typed-query-selector@2.12.1: {}
typescript@5.9.3: {}
typescript@6.0.2: {}
uglify-js@3.19.3: {}
uint8array-extras@1.5.0: {}

View File

@@ -3,6 +3,7 @@
## Module Purpose
tsdocker is a comprehensive Docker development and building tool. It provides:
- Building Dockerfiles with dependency ordering
- Multi-registry push/pull support
- Multi-architecture builds (amd64/arm64)
@@ -10,7 +11,7 @@ tsdocker is a comprehensive Docker development and building tool. It provides:
## New CLI Commands (2026-01-19)
| Command | Description |
|---------|-------------|
| -------------------------- | ---------------------------------------------- |
| `tsdocker` | Show usage / man page |
| `tsdocker build` | Build all Dockerfiles with dependency ordering |
| `tsdocker push [registry]` | Push images to configured registries |
@@ -22,7 +23,7 @@ tsdocker is a comprehensive Docker development and building tool. It provides:
## Configuration
Configure in `package.json` under `@git.zone/tsdocker`:
Configure in `.smartconfig.json` under `@git.zone/tsdocker`:
```json
{
@@ -106,6 +107,7 @@ Implementation: `Dockerfile.computeLevels()` groups topologically sorted Dockerf
All builds now go through a persistent local registry (`localhost:5234`) with volume storage at `.nogit/docker-registry/`. Pushes use the `RegistryCopy` class (`ts/classes.registrycopy.ts`) which implements the OCI Distribution API to copy images (including multi-arch manifest lists) from the local registry to remote registries. This replaces the old `docker tag + docker push` approach that only worked for single-platform images.
Key classes:
- `RegistryCopy` — HTTP-based OCI image copy (auth, blob transfer, manifest handling)
- `Dockerfile.push()` — Now delegates to `RegistryCopy.copyImage()`
- `Dockerfile.needsLocalRegistry()` — Always returns true
@@ -115,10 +117,16 @@ The `config.push` field is now a no-op (kept for backward compat).
## Build Status
- Build: ✅ Passes
- Build: ✅ Passes (TypeScript 6 via tsbuild 4.4.0)
## Previous Upgrades (2025-11-22)
## Previous Upgrades
### 2026-03-24
- Upgraded `@git.zone/tsbuild` from 4.3.0 to 4.4.0 (TypeScript 6)
- Removed deprecated `baseUrl`/`paths` from tsconfig.json
- Added pnpm override `lru-cache: ">=11.0.0"` to fix TS6 type incompatibility with lru-cache@10.x
### 2025-11-22
- Updated all @git.zone/_ dependencies to @git.zone/_ scope
- Updated all @pushrocks/_ dependencies to @push.rocks/_ scope
- Migrated from smartfile v8 to smartfs v1.1.0

View File

@@ -44,6 +44,7 @@ tsdocker build
```
tsdocker will:
1. 🔍 Discover all `Dockerfile*` files in your project
2. 📊 Analyze `FROM` dependencies between them
3. 🔄 Sort them topologically
@@ -85,7 +86,7 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
## CLI Commands
| Command | Description |
|---------|-------------|
| -------------------------- | ------------------------------------------------------------ |
| `tsdocker` | Show usage / man page |
| `tsdocker build` | Build all Dockerfiles with dependency ordering |
| `tsdocker push` | Build + push images to configured registries |
@@ -99,7 +100,7 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
### Build Flags
| Flag | Description |
|------|-------------|
| ------------------------ | ------------------------------------------------------------------------------- |
| `<patterns>` | Positional Dockerfile name patterns (e.g. `Dockerfile_base`, `Dockerfile_app*`) |
| `--platform=linux/arm64` | Override build platform for a single architecture |
| `--timeout=600` | Build timeout in seconds |
@@ -113,7 +114,7 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
### Push Flags
| Flag | Description |
|------|-------------|
| ------------------ | ------------------------------------------------------------------- |
| `<patterns>` | Positional Dockerfile name patterns to select which images to push |
| `--registry=<url>` | Push to a single specific registry instead of all configured |
| `--no-build` | Skip the build phase; only push existing images from local registry |
@@ -121,7 +122,7 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
### Config Subcommands
| Subcommand | Description |
|------------|-------------|
| ---------------- | ----------------------------------- |
| `add-builder` | Add or update a remote builder node |
| `remove-builder` | Remove a remote builder by name |
| `list-builders` | List all configured remote builders |
@@ -130,7 +131,7 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
**`add-builder` flags:**
| Flag | Description |
|------|-------------|
| ------------------ | --------------------------------------------------------- |
| `--name=<name>` | Builder name (e.g. `arm64-builder`) |
| `--host=<user@ip>` | SSH host (e.g. `armbuilder@192.168.1.100`) |
| `--platform=<p>` | Target platform (e.g. `linux/arm64`) |
@@ -139,13 +140,13 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
### Clean Flags
| Flag | Description |
|------|-------------|
| ------- | -------------------------------------------------- |
| `--all` | Include all images and volumes (not just dangling) |
| `-y` | Auto-confirm all prompts |
## Configuration
Configure tsdocker in your `package.json` or `npmextra.json` under the `@git.zone/tsdocker` key:
Configure tsdocker in your `.smartconfig.json` under the `@git.zone/tsdocker` key:
```json
{
@@ -168,7 +169,7 @@ Configure tsdocker in your `package.json` or `npmextra.json` under the `@git.zon
#### Build & Push Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| ----------------- | ---------- | ----------------- | ---------------------------------------------- |
| `registries` | `string[]` | `[]` | Registry URLs to push to |
| `registryRepoMap` | `object` | `{}` | Map registries to different repository paths |
| `buildArgEnvMap` | `object` | `{}` | Map Docker build ARGs to environment variables |
@@ -218,7 +219,7 @@ tsdocker uses a **local OCI registry** as the canonical store for all built imag
### 🔑 Why a Local Registry?
| Problem | Solution |
|---------|----------|
| --------------------------------------------------- | ------------------------------------------------------------------- |
| `docker buildx --load` fails for multi-arch images | `buildx --push` to local registry works for any number of platforms |
| `docker push` only pushes single-platform manifests | OCI API copy preserves full manifest lists (multi-arch) |
| Images lost between build and push phases | Persistent storage at `.nogit/docker-registry/` survives restarts |
@@ -247,7 +248,7 @@ Every tsdocker invocation gets its own **session** with unique:
This prevents resource conflicts when multiple CI jobs run tsdocker in parallel. Auto-detected CI systems:
| Environment Variable | CI System |
|---------------------|-----------|
| -------------------- | -------------- |
| `GITEA_ACTIONS` | Gitea Actions |
| `GITHUB_ACTIONS` | GitHub Actions |
| `GITLAB_CI` | GitLab CI |
@@ -260,7 +261,7 @@ In local dev, no suffix is added — keeping a persistent builder for faster reb
tsdocker automatically detects your Docker environment topology:
| Topology | Detection | Meaning |
|----------|-----------|---------|
| -------------- | ---------------------------------- | ----------------------------------------------------- |
| `local` | Default | Standard Docker installation on the host |
| `socket-mount` | `/.dockerenv` exists | Running inside a container with Docker socket mounted |
| `dind` | `DOCKER_HOST` starts with `tcp://` | Docker-in-Docker setup |
@@ -309,6 +310,7 @@ Build for multiple platforms using Docker Buildx:
```
tsdocker automatically:
- Sets up a Buildx builder with `--driver-opt network=host` (so buildx can reach the local registry)
- Pushes multi-platform images to the local registry via `buildx --push`
- Copies the full manifest list (including all platform variants) to remote registries on `tsdocker push`
@@ -354,6 +356,7 @@ When remote builders are configured and the project's `platforms` includes a mat
```
**Prerequisites for the remote machine:**
- Docker installed and running
- A user with Docker group access (no sudo needed)
- SSH key access configured
@@ -380,7 +383,7 @@ tsdocker groups Dockerfiles into **dependency levels** using topological analysi
tsdocker discovers files matching `Dockerfile*`:
| File Name | Version Tag |
|-----------|-------------|
| ------------------------ | --------------------------- |
| `Dockerfile` | `latest` |
| `Dockerfile_v1.0.0` | `v1.0.0` |
| `Dockerfile_alpine` | `alpine` |
@@ -492,6 +495,7 @@ tsdocker list
```
Output:
```
Discovered Dockerfiles:
========================
@@ -556,7 +560,7 @@ build-and-push:
- npm install -g @git.zone/tsdocker
- tsdocker push
variables:
DOCKER_REGISTRY_1: "registry.gitlab.com|$CI_REGISTRY_USER|$CI_REGISTRY_PASSWORD"
DOCKER_REGISTRY_1: 'registry.gitlab.com|$CI_REGISTRY_USER|$CI_REGISTRY_PASSWORD'
```
**GitHub Actions:**
@@ -568,7 +572,7 @@ build-and-push:
tsdocker login
tsdocker push
env:
DOCKER_REGISTRY_1: "ghcr.io|${{ github.actor }}|${{ secrets.GITHUB_TOKEN }}"
DOCKER_REGISTRY_1: 'ghcr.io|${{ github.actor }}|${{ secrets.GITHUB_TOKEN }}'
```
**Gitea Actions:**
@@ -579,7 +583,7 @@ build-and-push:
npm install -g @git.zone/tsdocker
tsdocker push
env:
DOCKER_REGISTRY_1: "gitea.example.com|${{ secrets.REGISTRY_USER }}|${{ secrets.REGISTRY_PASSWORD }}"
DOCKER_REGISTRY_1: 'gitea.example.com|${{ secrets.REGISTRY_USER }}|${{ secrets.REGISTRY_PASSWORD }}'
```
tsdocker auto-detects all three CI systems and enables session isolation automatically — no extra configuration needed.
@@ -608,7 +612,7 @@ await manager.push();
### CI & Session Control
| Variable | Description |
|----------|-------------|
| ------------------------ | -------------------------------------------------------------------------- |
| `TSDOCKER_SESSION_ID` | Override the auto-generated session ID (default: random 8-char hex) |
| `TSDOCKER_REGISTRY_PORT` | Override the dynamically allocated local registry port |
| `CI` | Generic CI detection (also `GITHUB_ACTIONS`, `GITLAB_CI`, `GITEA_ACTIONS`) |
@@ -616,7 +620,7 @@ await manager.push();
### Registry Credentials
| Variable | Description |
|----------|-------------|
| ------------------------------------------------ | ---------------------------------------------- |
| `DOCKER_REGISTRY_1` through `DOCKER_REGISTRY_10` | Pipe-delimited: `registry\|username\|password` |
| `DOCKER_REGISTRY_URL` | Registry URL for single-registry setup |
| `DOCKER_REGISTRY_USER` | Username for single-registry setup |

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@git.zone/tsdocker',
version: '2.2.2',
description: 'develop npm modules cross platform with docker'
version: '2.2.4',
description: 'A comprehensive Docker build tool for TypeScript projects with multi-arch support, multi-registry push, and CI-safe session isolation.'
}

View File

@@ -3,8 +3,8 @@ import * as paths from './tsdocker.paths.js';
import type { ITsDockerConfig } from './interfaces/index.js';
const buildConfig = async (): Promise<ITsDockerConfig> => {
const npmextra = new plugins.npmextra.Smartconfig(paths.cwd);
const config = npmextra.dataFor<ITsDockerConfig>('@git.zone/tsdocker', {
const smartconfig = new plugins.smartconfig.Smartconfig(paths.cwd);
const config = smartconfig.dataFor<ITsDockerConfig>('@git.zone/tsdocker', {
registries: [],
registryRepoMap: {},
buildArgEnvMap: {},

View File

@@ -1,6 +1,6 @@
// push.rocks scope
import * as lik from '@push.rocks/lik';
import * as npmextra from '@push.rocks/smartconfig';
import * as smartconfig from '@push.rocks/smartconfig';
import * as path from 'path';
import * as projectinfo from '@push.rocks/projectinfo';
import * as smartcli from '@push.rocks/smartcli';
@@ -16,7 +16,7 @@ export const smartfs = new SmartFs(new SmartFsProviderNode());
export {
lik,
npmextra,
smartconfig,
path,
projectinfo,
smartcli,

View File

@@ -5,8 +5,7 @@
"moduleResolution": "NodeNext",
"esModuleInterop": true,
"verbatimModuleSyntax": true,
"baseUrl": ".",
"paths": {}
"useDefineForClassFields": false
},
"exclude": ["dist_*/**/*.d.ts"]
}