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: env:
IMAGE: code.foss.global/host.today/ht-docker-node:npmci 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_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}} NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}} NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}

View File

@@ -7,7 +7,7 @@ on:
env: env:
IMAGE: code.foss.global/host.today/ht-docker-node:npmci 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_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}} NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}} NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}

4
.gitignore vendored
View File

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

View File

@@ -24,4 +24,4 @@
"@ship.zone/szci": { "@ship.zone/szci": {
"npmGlobalTools": [] "npmGlobalTools": []
} }
} }

View File

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

View File

@@ -1,11 +1,28 @@
# Changelog # 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) ## 2026-03-24 - 2.2.2 - fix(config)
rename npmextra configuration file to .smartconfig.json 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. - 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) ## 2026-03-24 - 2.2.1 - fix(config)
switch configuration loading from npmextra to smartconfig switch configuration loading from npmextra to smartconfig
- replace the @push.rocks/npmextra dependency with @push.rocks/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 - refresh CLI help text to reference smartconfig.json instead of npmextra.json
## 2026-03-19 - 2.2.0 - feat(cli/buildx) ## 2026-03-19 - 2.2.0 - feat(cli/buildx)
add pull control for builds and isolate buildx builders per project 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 - 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 - updates session logging to include project hash and builder suffix for easier build diagnostics
## 2026-03-15 - 2.1.0 - feat(cli) ## 2026-03-15 - 2.1.0 - feat(cli)
add global remote builder configuration and native SSH buildx nodes for multi-platform builds 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 - 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 - 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) ## 2026-03-12 - 2.0.2 - fix(repo)
no changes to commit
no changes to commit
## 2026-03-12 - 2.0.1 - fix(repository) ## 2026-03-12 - 2.0.1 - fix(repository)
no changes to commit no changes to commit
## 2026-03-12 - 2.0.0 - BREAKING CHANGE(cli) ## 2026-03-12 - 2.0.0 - BREAKING CHANGE(cli)
remove legacy container test runner and make the default command show the man page 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`) - 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 - Updates CLI and documentation to reflect default help output and the current build/push-focused workflow
## 2026-02-07 - 1.17.4 - fix() ## 2026-02-07 - 1.17.4 - fix()
no changes no changes
## 2026-02-07 - 1.17.3 - fix(registry) ## 2026-02-07 - 1.17.3 - fix(registry)
increase default maxRetries in fetchWithRetry from 3 to 6 to improve resilience when fetching registry resources 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 - 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 - No API or behavior changes besides the increased default retry count
## 2026-02-07 - 1.17.2 - fix(registry) ## 2026-02-07 - 1.17.2 - fix(registry)
improve HTTP fetch retry logging, backoff calculation, and token-cache warning improve HTTP fetch retry logging, backoff calculation, and token-cache warning
- Include HTTP method in logs and normalize method to uppercase for consistency - 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 - Add a warning log when clearing cached token after a 401 response
## 2026-02-07 - 1.17.1 - fix(registrycopy) ## 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 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 - 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 - Adds logging on retry attempts and backoff delays to improve robustness and observability
## 2026-02-07 - 1.17.0 - feat(tsdocker) ## 2026-02-07 - 1.17.0 - feat(tsdocker)
add Dockerfile filtering, optional skip-build flow, and fallback Docker config credential loading 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 - 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 - Import RegistryCopy and add info/warn logs when credentials are loaded or missing
## 2026-02-07 - 1.16.0 - feat(core) ## 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. 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). - 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. - 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) ## 2026-02-07 - 1.15.1 - fix(registry)
use persistent local registry and OCI Distribution API image copy for pushes 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. - 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. - 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) ## 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 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 - 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 - Replaces blunt shell commands with safer, interactive selection and adds improved error handling and logging
## 2026-02-07 - 1.14.0 - feat(build) ## 2026-02-07 - 1.14.0 - feat(build)
add level-based parallel builds with --parallel and configurable concurrency 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). - 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. - Updates documentation (readme.hints.md) with usage examples and implementation notes.
## 2026-02-07 - 1.13.0 - feat(docker) ## 2026-02-07 - 1.13.0 - feat(docker)
add Docker context detection, rootless support, and context-aware buildx registry handling 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 - 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 - 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) ## 2026-02-06 - 1.12.0 - feat(docker)
add detailed logging for buildx, build commands, local registry, and local dependency info 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 - 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 - Non-functional change: purely adds informational logging to improve observability during builds
## 2026-02-06 - 1.11.0 - feat(docker) ## 2026-02-06 - 1.11.0 - feat(docker)
start temporary local registry for buildx dependency resolution and ensure buildx builder uses host network 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 - 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 - 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) ## 2026-02-06 - 1.10.0 - feat(classes.dockerfile)
support using a local base image as a build context in buildx commands 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 - 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 - Logs an info message indicating the local build context mapping
## 2026-02-06 - 1.9.0 - feat(build) ## 2026-02-06 - 1.9.0 - feat(build)
add verbose build output, progress logging, and timing for builds/tests 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 - 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 - Use silent exec variants when verbose is false and stream exec when verbose is true
## 2026-02-06 - 1.8.0 - feat(build) ## 2026-02-06 - 1.8.0 - feat(build)
add optional content-hash based build cache to skip rebuilding unchanged Dockerfiles 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 - 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 - Cache records store contentHash, imageId, buildTag and timestamp
## 2026-02-06 - 1.7.0 - feat(cli) ## 2026-02-06 - 1.7.0 - feat(cli)
add CLI version display using commitinfo 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 - 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 - Change made in ts/tsdocker.cli.ts — small user-facing CLI enhancement; no breaking changes
## 2026-02-06 - 1.6.0 - feat(docker) ## 2026-02-06 - 1.6.0 - feat(docker)
add support for no-cache builds and tag built images for local dependency resolution add support for no-cache builds and tag built images for local dependency resolution
- Introduce IBuildCommandOptions.noCache to control --no-cache behavior - 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 - Log tagging actions and execute docker tag via smartshellInstance
## 2026-02-06 - 1.5.0 - feat(build) ## 2026-02-06 - 1.5.0 - feat(build)
add support for selective builds, platform override and build timeout add support for selective builds, platform override and build timeout
- Introduce IBuildCommandOptions with patterns, platform and timeout to control build behavior - 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 - Implement streaming exec with timeout to kill long-running builds and surface timeout errors
## 2026-02-04 - 1.4.3 - fix(dockerfile) ## 2026-02-04 - 1.4.3 - fix(dockerfile)
fix matching of base images to local Dockerfiles by stripping registry prefixes when comparing image references 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'). - 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". - 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) ## 2026-01-21 - 1.4.2 - fix(classes.dockerfile)
use a single top-level fs import instead of requiring fs inside methods 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 - 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 - No behavioral change expected; this is a cleanup/refactor to standardize module usage
## 2026-01-20 - 1.4.1 - fix(docs) ## 2026-01-20 - 1.4.1 - fix(docs)
update README: expand usage, installation, quick start, features, troubleshooting and migration notes 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) - 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 - Documentation-only change — no source code modified
## 2026-01-20 - 1.4.0 - feat(tsdocker) ## 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 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 - 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 - Update README and readme.hints with new features, configuration examples and command list
## 2026-01-19 - 1.3.0 - feat(packaging) ## 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 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. - Package renamed to @git.zone/tsdocker (scope change) — consumers must update package reference.

View File

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

234
pnpm-lock.yaml generated
View File

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

View File

@@ -3,26 +3,27 @@
## Module Purpose ## Module Purpose
tsdocker is a comprehensive Docker development and building tool. It provides: tsdocker is a comprehensive Docker development and building tool. It provides:
- Building Dockerfiles with dependency ordering - Building Dockerfiles with dependency ordering
- Multi-registry push/pull support - Multi-registry push/pull support
- Multi-architecture builds (amd64/arm64) - Multi-architecture builds (amd64/arm64)
## New CLI Commands (2026-01-19) ## New CLI Commands (2026-01-19)
| Command | Description | | Command | Description |
|---------|-------------| | -------------------------- | ---------------------------------------------- |
| `tsdocker` | Show usage / man page | | `tsdocker` | Show usage / man page |
| `tsdocker build` | Build all Dockerfiles with dependency ordering | | `tsdocker build` | Build all Dockerfiles with dependency ordering |
| `tsdocker push [registry]` | Push images to configured registries | | `tsdocker push [registry]` | Push images to configured registries |
| `tsdocker pull <registry>` | Pull images from registry | | `tsdocker pull <registry>` | Pull images from registry |
| `tsdocker test` | Run container tests (test scripts) | | `tsdocker test` | Run container tests (test scripts) |
| `tsdocker login` | Login to configured registries | | `tsdocker login` | Login to configured registries |
| `tsdocker list` | List discovered Dockerfiles and dependencies | | `tsdocker list` | List discovered Dockerfiles and dependencies |
| `tsdocker clean --all` | Clean up Docker environment | | `tsdocker clean --all` | Clean up Docker environment |
## Configuration ## Configuration
Configure in `package.json` under `@git.zone/tsdocker`: Configure in `.smartconfig.json` under `@git.zone/tsdocker`:
```json ```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. 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: Key classes:
- `RegistryCopy` — HTTP-based OCI image copy (auth, blob transfer, manifest handling) - `RegistryCopy` — HTTP-based OCI image copy (auth, blob transfer, manifest handling)
- `Dockerfile.push()` — Now delegates to `RegistryCopy.copyImage()` - `Dockerfile.push()` — Now delegates to `RegistryCopy.copyImage()`
- `Dockerfile.needsLocalRegistry()` — Always returns true - `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 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 @git.zone/_ dependencies to @git.zone/_ scope
- Updated all @pushrocks/_ dependencies to @push.rocks/_ scope - Updated all @pushrocks/_ dependencies to @push.rocks/_ scope
- Migrated from smartfile v8 to smartfs v1.1.0 - Migrated from smartfile v8 to smartfs v1.1.0

172
readme.md
View File

@@ -44,6 +44,7 @@ tsdocker build
``` ```
tsdocker will: tsdocker will:
1. 🔍 Discover all `Dockerfile*` files in your project 1. 🔍 Discover all `Dockerfile*` files in your project
2. 📊 Analyze `FROM` dependencies between them 2. 📊 Analyze `FROM` dependencies between them
3. 🔄 Sort them topologically 3. 🔄 Sort them topologically
@@ -84,68 +85,68 @@ tsdocker push --no-build Dockerfile_api Dockerfile_web
## CLI Commands ## CLI Commands
| Command | Description | | Command | Description |
|---------|-------------| | -------------------------- | ------------------------------------------------------------ |
| `tsdocker` | Show usage / man page | | `tsdocker` | Show usage / man page |
| `tsdocker build` | Build all Dockerfiles with dependency ordering | | `tsdocker build` | Build all Dockerfiles with dependency ordering |
| `tsdocker push` | Build + push images to configured registries | | `tsdocker push` | Build + push images to configured registries |
| `tsdocker pull <registry>` | Pull images from a specific registry | | `tsdocker pull <registry>` | Pull images from a specific registry |
| `tsdocker test` | Build + run container test scripts (`test_*.sh`) | | `tsdocker test` | Build + run container test scripts (`test_*.sh`) |
| `tsdocker login` | Authenticate with configured registries | | `tsdocker login` | Authenticate with configured registries |
| `tsdocker list` | Display discovered Dockerfiles and their dependencies | | `tsdocker list` | Display discovered Dockerfiles and their dependencies |
| `tsdocker config` | Manage global tsdocker configuration (remote builders, etc.) | | `tsdocker config` | Manage global tsdocker configuration (remote builders, etc.) |
| `tsdocker clean` | Interactively clean Docker environment | | `tsdocker clean` | Interactively clean Docker environment |
### Build Flags ### Build Flags
| Flag | Description | | Flag | Description |
|------|-------------| | ------------------------ | ------------------------------------------------------------------------------- |
| `<patterns>` | Positional Dockerfile name patterns (e.g. `Dockerfile_base`, `Dockerfile_app*`) | | `<patterns>` | Positional Dockerfile name patterns (e.g. `Dockerfile_base`, `Dockerfile_app*`) |
| `--platform=linux/arm64` | Override build platform for a single architecture | | `--platform=linux/arm64` | Override build platform for a single architecture |
| `--timeout=600` | Build timeout in seconds | | `--timeout=600` | Build timeout in seconds |
| `--no-cache` | Force rebuild without Docker layer cache | | `--no-cache` | Force rebuild without Docker layer cache |
| `--cached` | Skip unchanged Dockerfiles (content-hash based) | | `--cached` | Skip unchanged Dockerfiles (content-hash based) |
| `--verbose` | Stream raw `docker build` output | | `--verbose` | Stream raw `docker build` output |
| `--parallel` | Enable level-based parallel builds (default concurrency: 4) | | `--parallel` | Enable level-based parallel builds (default concurrency: 4) |
| `--parallel=8` | Parallel builds with custom concurrency | | `--parallel=8` | Parallel builds with custom concurrency |
| `--context=mycontext` | Use a specific Docker context | | `--context=mycontext` | Use a specific Docker context |
### Push Flags ### Push Flags
| Flag | Description | | Flag | Description |
|------|-------------| | ------------------ | ------------------------------------------------------------------- |
| `<patterns>` | Positional Dockerfile name patterns to select which images to push | | `<patterns>` | Positional Dockerfile name patterns to select which images to push |
| `--registry=<url>` | Push to a single specific registry instead of all configured | | `--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 | | `--no-build` | Skip the build phase; only push existing images from local registry |
### Config Subcommands ### Config Subcommands
| Subcommand | Description | | Subcommand | Description |
|------------|-------------| | ---------------- | ----------------------------------- |
| `add-builder` | Add or update a remote builder node | | `add-builder` | Add or update a remote builder node |
| `remove-builder` | Remove a remote builder by name | | `remove-builder` | Remove a remote builder by name |
| `list-builders` | List all configured remote builders | | `list-builders` | List all configured remote builders |
| `show` | Show the full global configuration | | `show` | Show the full global configuration |
**`add-builder` flags:** **`add-builder` flags:**
| Flag | Description | | Flag | Description |
|------|-------------| | ------------------ | --------------------------------------------------------- |
| `--name=<name>` | Builder name (e.g. `arm64-builder`) | | `--name=<name>` | Builder name (e.g. `arm64-builder`) |
| `--host=<user@ip>` | SSH host (e.g. `armbuilder@192.168.1.100`) | | `--host=<user@ip>` | SSH host (e.g. `armbuilder@192.168.1.100`) |
| `--platform=<p>` | Target platform (e.g. `linux/arm64`) | | `--platform=<p>` | Target platform (e.g. `linux/arm64`) |
| `--ssh-key=<path>` | SSH key path (optional, uses SSH agent/config by default) | | `--ssh-key=<path>` | SSH key path (optional, uses SSH agent/config by default) |
### Clean Flags ### Clean Flags
| Flag | Description | | Flag | Description |
|------|-------------| | ------- | -------------------------------------------------- |
| `--all` | Include all images and volumes (not just dangling) | | `--all` | Include all images and volumes (not just dangling) |
| `-y` | Auto-confirm all prompts | | `-y` | Auto-confirm all prompts |
## Configuration ## 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 ```json
{ {
@@ -167,13 +168,13 @@ Configure tsdocker in your `package.json` or `npmextra.json` under the `@git.zon
#### Build & Push Options #### Build & Push Options
| Option | Type | Default | Description | | Option | Type | Default | Description |
|--------|------|---------|-------------| | ----------------- | ---------- | ----------------- | ---------------------------------------------- |
| `registries` | `string[]` | `[]` | Registry URLs to push to | | `registries` | `string[]` | `[]` | Registry URLs to push to |
| `registryRepoMap` | `object` | `{}` | Map registries to different repository paths | | `registryRepoMap` | `object` | `{}` | Map registries to different repository paths |
| `buildArgEnvMap` | `object` | `{}` | Map Docker build ARGs to environment variables | | `buildArgEnvMap` | `object` | `{}` | Map Docker build ARGs to environment variables |
| `platforms` | `string[]` | `["linux/amd64"]` | Target architectures for multi-arch builds | | `platforms` | `string[]` | `["linux/amd64"]` | Target architectures for multi-arch builds |
| `testDir` | `string` | `./test` | Directory containing test scripts | | `testDir` | `string` | `./test` | Directory containing test scripts |
## Architecture: How tsdocker Works ## Architecture: How tsdocker Works
@@ -217,12 +218,12 @@ tsdocker uses a **local OCI registry** as the canonical store for all built imag
### 🔑 Why a Local Registry? ### 🔑 Why a Local Registry?
| Problem | Solution | | Problem | Solution |
|---------|----------| | --------------------------------------------------- | ------------------------------------------------------------------- |
| `docker buildx --load` fails for multi-arch images | `buildx --push` to local registry works for any number of platforms | | `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) | | `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 | | Images lost between build and push phases | Persistent storage at `.nogit/docker-registry/` survives restarts |
| Redundant blob uploads on incremental pushes | HEAD checks skip blobs that already exist on the remote | | Redundant blob uploads on incremental pushes | HEAD checks skip blobs that already exist on the remote |
### 🔁 Resilient Push ### 🔁 Resilient Push
@@ -246,12 +247,12 @@ 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: This prevents resource conflicts when multiple CI jobs run tsdocker in parallel. Auto-detected CI systems:
| Environment Variable | CI System | | Environment Variable | CI System |
|---------------------|-----------| | -------------------- | -------------- |
| `GITEA_ACTIONS` | Gitea Actions | | `GITEA_ACTIONS` | Gitea Actions |
| `GITHUB_ACTIONS` | GitHub Actions | | `GITHUB_ACTIONS` | GitHub Actions |
| `GITLAB_CI` | GitLab CI | | `GITLAB_CI` | GitLab CI |
| `CI` | Generic CI | | `CI` | Generic CI |
In local dev, no suffix is added — keeping a persistent builder for faster rebuilds. In local dev, no suffix is added — keeping a persistent builder for faster rebuilds.
@@ -259,11 +260,11 @@ In local dev, no suffix is added — keeping a persistent builder for faster reb
tsdocker automatically detects your Docker environment topology: tsdocker automatically detects your Docker environment topology:
| Topology | Detection | Meaning | | Topology | Detection | Meaning |
|----------|-----------|---------| | -------------- | ---------------------------------- | ----------------------------------------------------- |
| `local` | Default | Standard Docker installation on the host | | `local` | Default | Standard Docker installation on the host |
| `socket-mount` | `/.dockerenv` exists | Running inside a container with Docker socket mounted | | `socket-mount` | `/.dockerenv` exists | Running inside a container with Docker socket mounted |
| `dind` | `DOCKER_HOST` starts with `tcp://` | Docker-in-Docker setup | | `dind` | `DOCKER_HOST` starts with `tcp://` | Docker-in-Docker setup |
Context-aware builder names (`tsdocker-builder-<context>`) prevent conflicts across Docker contexts. Rootless Docker configurations trigger appropriate warnings. Context-aware builder names (`tsdocker-builder-<context>`) prevent conflicts across Docker contexts. Rootless Docker configurations trigger appropriate warnings.
@@ -309,6 +310,7 @@ Build for multiple platforms using Docker Buildx:
``` ```
tsdocker automatically: tsdocker automatically:
- Sets up a Buildx builder with `--driver-opt network=host` (so buildx can reach the local registry) - 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` - 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` - 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:** **Prerequisites for the remote machine:**
- Docker installed and running - Docker installed and running
- A user with Docker group access (no sudo needed) - A user with Docker group access (no sudo needed)
- SSH key access configured - SSH key access configured
@@ -379,11 +382,11 @@ tsdocker groups Dockerfiles into **dependency levels** using topological analysi
tsdocker discovers files matching `Dockerfile*`: tsdocker discovers files matching `Dockerfile*`:
| File Name | Version Tag | | File Name | Version Tag |
|-----------|-------------| | ------------------------ | --------------------------- |
| `Dockerfile` | `latest` | | `Dockerfile` | `latest` |
| `Dockerfile_v1.0.0` | `v1.0.0` | | `Dockerfile_v1.0.0` | `v1.0.0` |
| `Dockerfile_alpine` | `alpine` | | `Dockerfile_alpine` | `alpine` |
| `Dockerfile_##version##` | Uses `package.json` version | | `Dockerfile_##version##` | Uses `package.json` version |
### 🎯 Dockerfile Filtering ### 🎯 Dockerfile Filtering
@@ -492,6 +495,7 @@ tsdocker list
``` ```
Output: Output:
``` ```
Discovered Dockerfiles: Discovered Dockerfiles:
======================== ========================
@@ -556,7 +560,7 @@ build-and-push:
- npm install -g @git.zone/tsdocker - npm install -g @git.zone/tsdocker
- tsdocker push - tsdocker push
variables: 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:** **GitHub Actions:**
@@ -568,7 +572,7 @@ build-and-push:
tsdocker login tsdocker login
tsdocker push tsdocker push
env: env:
DOCKER_REGISTRY_1: "ghcr.io|${{ github.actor }}|${{ secrets.GITHUB_TOKEN }}" DOCKER_REGISTRY_1: 'ghcr.io|${{ github.actor }}|${{ secrets.GITHUB_TOKEN }}'
``` ```
**Gitea Actions:** **Gitea Actions:**
@@ -579,7 +583,7 @@ build-and-push:
npm install -g @git.zone/tsdocker npm install -g @git.zone/tsdocker
tsdocker push tsdocker push
env: 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. tsdocker auto-detects all three CI systems and enables session isolation automatically — no extra configuration needed.
@@ -607,20 +611,20 @@ await manager.push();
### CI & Session Control ### CI & Session Control
| Variable | Description | | Variable | Description |
|----------|-------------| | ------------------------ | -------------------------------------------------------------------------- |
| `TSDOCKER_SESSION_ID` | Override the auto-generated session ID (default: random 8-char hex) | | `TSDOCKER_SESSION_ID` | Override the auto-generated session ID (default: random 8-char hex) |
| `TSDOCKER_REGISTRY_PORT` | Override the dynamically allocated local registry port | | `TSDOCKER_REGISTRY_PORT` | Override the dynamically allocated local registry port |
| `CI` | Generic CI detection (also `GITHUB_ACTIONS`, `GITLAB_CI`, `GITEA_ACTIONS`) | | `CI` | Generic CI detection (also `GITHUB_ACTIONS`, `GITLAB_CI`, `GITEA_ACTIONS`) |
### Registry Credentials ### Registry Credentials
| Variable | Description | | Variable | Description |
|----------|-------------| | ------------------------------------------------ | ---------------------------------------------- |
| `DOCKER_REGISTRY_1` through `DOCKER_REGISTRY_10` | Pipe-delimited: `registry\|username\|password` | | `DOCKER_REGISTRY_1` through `DOCKER_REGISTRY_10` | Pipe-delimited: `registry\|username\|password` |
| `DOCKER_REGISTRY_URL` | Registry URL for single-registry setup | | `DOCKER_REGISTRY_URL` | Registry URL for single-registry setup |
| `DOCKER_REGISTRY_USER` | Username for single-registry setup | | `DOCKER_REGISTRY_USER` | Username for single-registry setup |
| `DOCKER_REGISTRY_PASSWORD` | Password for single-registry setup | | `DOCKER_REGISTRY_PASSWORD` | Password for single-registry setup |
## Requirements ## Requirements

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tsdocker', name: '@git.zone/tsdocker',
version: '2.2.2', version: '2.2.4',
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.'
} }

View File

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

View File

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

View File

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