2 Commits

Author SHA1 Message Date
a29f13c75a v1.12.2
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 15:08:13 +00:00
02b3a79d99 fix(config): migrate runtime configuration loading from npmextra to smartconfig 2026-03-24 15:08:13 +00:00
10 changed files with 51 additions and 23 deletions

View File

@@ -1,5 +1,13 @@
# Changelog # Changelog
## 2026-03-24 - 1.12.2 - fix(config)
migrate runtime configuration loading from npmextra to smartconfig
- replace the @push.rocks/npmextra dependency with @push.rocks/smartconfig
- update tsview startup configuration types and loading logic to read port, killIfBusy, and openBrowser from smartconfig
- adjust busy-port error messaging to reference smartconfig.json
- add npmjs.org to the release registries configuration
## 2026-03-14 - 1.12.1 - fix(storage) ## 2026-03-14 - 1.12.1 - fix(storage)
rename S3 configuration and change stream interfaces to storage-oriented types rename S3 configuration and change stream interfaces to storage-oriented types

View File

@@ -34,7 +34,7 @@
"@git.zone/cli": { "@git.zone/cli": {
"services": ["mongodb", "minio"], "services": ["mongodb", "minio"],
"release": { "release": {
"registries": ["https://verdaccio.lossless.digital"], "registries": ["https://verdaccio.lossless.digital", "https://registry.npmjs.org"],
"accessLevel": "public" "accessLevel": "public"
}, },
"projectType": "npm", "projectType": "npm",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@git.zone/tsview", "name": "@git.zone/tsview",
"version": "1.12.1", "version": "1.12.2",
"private": false, "private": false,
"description": "A CLI tool for viewing S3 and MongoDB data with a web UI", "description": "A CLI tool for viewing S3 and MongoDB data with a web UI",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
@@ -37,7 +37,7 @@
"@design.estate/dees-catalog": "^3.48.5", "@design.estate/dees-catalog": "^3.48.5",
"@design.estate/dees-element": "^2.2.3", "@design.estate/dees-element": "^2.2.3",
"@push.rocks/early": "^4.0.4", "@push.rocks/early": "^4.0.4",
"@push.rocks/npmextra": "^5.3.3", "@push.rocks/smartconfig": "^6.0.0",
"@push.rocks/smartbucket": "^4.5.1", "@push.rocks/smartbucket": "^4.5.1",
"@push.rocks/smartcli": "^4.0.20", "@push.rocks/smartcli": "^4.0.20",
"@push.rocks/smartdata": "^7.1.0", "@push.rocks/smartdata": "^7.1.0",

26
pnpm-lock.yaml generated
View File

@@ -29,15 +29,15 @@ importers:
'@push.rocks/early': '@push.rocks/early':
specifier: ^4.0.4 specifier: ^4.0.4
version: 4.0.4 version: 4.0.4
'@push.rocks/npmextra':
specifier: ^5.3.3
version: 5.3.3
'@push.rocks/smartbucket': '@push.rocks/smartbucket':
specifier: ^4.5.1 specifier: ^4.5.1
version: 4.5.1 version: 4.5.1
'@push.rocks/smartcli': '@push.rocks/smartcli':
specifier: ^4.0.20 specifier: ^4.0.20
version: 4.0.20 version: 4.0.20
'@push.rocks/smartconfig':
specifier: ^6.0.0
version: 6.0.0
'@push.rocks/smartdata': '@push.rocks/smartdata':
specifier: ^7.1.0 specifier: ^7.1.0
version: 7.1.0(socks@2.8.7) version: 7.1.0(socks@2.8.7)
@@ -1082,6 +1082,9 @@ packages:
'@push.rocks/smartclickhouse@2.0.17': '@push.rocks/smartclickhouse@2.0.17':
resolution: {integrity: sha512-IYO8Obor/Ruam2KQ2B/+5uQ+rL0exU5KZoSgOc3jkkrfjn+zZenN2xoV8lVqavAtxZVfG7MfxFrcv6I7I9ZMmA==} resolution: {integrity: sha512-IYO8Obor/Ruam2KQ2B/+5uQ+rL0exU5KZoSgOc3jkkrfjn+zZenN2xoV8lVqavAtxZVfG7MfxFrcv6I7I9ZMmA==}
'@push.rocks/smartconfig@6.0.0':
resolution: {integrity: sha512-ohXwJdbDXV2budErnZKWBOz01YkjP6gJsZ7QM9+6Wsh+r7O1CVT3JpV+mD8xJWy5tZRHI+3B9L8z0+WkIDtKzw==}
'@push.rocks/smartcrypto@2.0.4': '@push.rocks/smartcrypto@2.0.4':
resolution: {integrity: sha512-1+/5bsjyataf5uUkUNnnVXGRAt+gHVk1KDzozjTqgqJxHvQk1d9fVDohL6CxUhUucTPtu5VR5xNBiV8YCDuGyw==} resolution: {integrity: sha512-1+/5bsjyataf5uUkUNnnVXGRAt+gHVk1KDzozjTqgqJxHvQk1d9fVDohL6CxUhUucTPtu5VR5xNBiV8YCDuGyw==}
@@ -5830,6 +5833,23 @@ snapshots:
'@push.rocks/smarturl': 3.1.0 '@push.rocks/smarturl': 3.1.0
'@push.rocks/webrequest': 3.0.37 '@push.rocks/webrequest': 3.0.37
'@push.rocks/smartconfig@6.0.0':
dependencies:
'@push.rocks/qenv': 6.1.3
'@push.rocks/smartfile': 11.2.7
'@push.rocks/smartjson': 5.2.0
'@push.rocks/smartlog': 3.2.1
'@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrx': 3.0.10
'@push.rocks/taskbuffer': 3.5.0
'@tsclass/tsclass': 9.4.0
transitivePeerDependencies:
- '@nuxt/kit'
- react
- supports-color
- vue
'@push.rocks/smartcrypto@2.0.4': '@push.rocks/smartcrypto@2.0.4':
dependencies: dependencies:
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tsview', name: '@git.zone/tsview',
version: '1.12.1', version: '1.12.2',
description: 'A CLI tool for viewing S3 and MongoDB data with a web UI' description: 'A CLI tool for viewing S3 and MongoDB data with a web UI'
} }

File diff suppressed because one or more lines are too long

View File

@@ -29,9 +29,9 @@ export interface ITsViewConfig {
} }
/** /**
* Configuration from npmextra.json for @git.zone/tsview * Configuration from smartconfig.json for @git.zone/tsview
*/ */
export interface INpmextraConfig { export interface ISmartconfigConfig {
port?: number; // Fixed port to use (optional) port?: number; // Fixed port to use (optional)
killIfBusy?: boolean; // Kill process on port if busy (default: false) killIfBusy?: boolean; // Kill process on port if busy (default: false)
openBrowser?: boolean; // Open browser on start (default: true) openBrowser?: boolean; // Open browser on start (default: true)

View File

@@ -6,7 +6,7 @@ export { path };
import * as early from '@push.rocks/early'; import * as early from '@push.rocks/early';
early.start('tsview'); early.start('tsview');
import * as npmextra from '@push.rocks/npmextra'; import * as smartconfig from '@push.rocks/smartconfig';
import * as smartbucket from '@push.rocks/smartbucket'; import * as smartbucket from '@push.rocks/smartbucket';
import * as smartcli from '@push.rocks/smartcli'; import * as smartcli from '@push.rocks/smartcli';
import * as smartdata from '@push.rocks/smartdata'; import * as smartdata from '@push.rocks/smartdata';
@@ -21,7 +21,7 @@ import * as smartrx from '@push.rocks/smartrx';
export { export {
early, early,
npmextra, smartconfig,
smartbucket, smartbucket,
smartcli, smartcli,
smartdata, smartdata,

View File

@@ -103,11 +103,11 @@ export class TsView {
} }
/** /**
* Load configuration from npmextra.json * Load configuration from smartconfig.json
*/ */
private loadNpmextraConfig(cwd?: string): interfaces.INpmextraConfig { private loadSmartconfigConfig(cwd?: string): interfaces.ISmartconfigConfig {
const npmextra = new plugins.npmextra.Npmextra(cwd || process.cwd()); const smartconfigInstance = new plugins.smartconfig.Smartconfig(cwd || process.cwd());
const config = npmextra.dataFor<interfaces.INpmextraConfig>('@git.zone/tsview', {}); const config = smartconfigInstance.dataFor<interfaces.ISmartconfigConfig>('@git.zone/tsview', {});
return config || {}; return config || {};
} }
@@ -135,7 +135,7 @@ export class TsView {
* @param cliPort - Optional port number from CLI (highest priority) * @param cliPort - Optional port number from CLI (highest priority)
*/ */
public async start(cliPort?: number): Promise<number> { public async start(cliPort?: number): Promise<number> {
const npmextraConfig = await this.loadNpmextraConfig(); const smartconfigConfig = await this.loadSmartconfigConfig();
let port: number; let port: number;
let portWasExplicitlySet = false; let portWasExplicitlySet = false;
@@ -144,9 +144,9 @@ export class TsView {
// CLI has highest priority // CLI has highest priority
port = cliPort; port = cliPort;
portWasExplicitlySet = true; portWasExplicitlySet = true;
} else if (npmextraConfig.port) { } else if (smartconfigConfig.port) {
// Config port specified // Config port specified
port = npmextraConfig.port; port = smartconfigConfig.port;
portWasExplicitlySet = true; portWasExplicitlySet = true;
} else { } else {
// Auto-find free port // Auto-find free port
@@ -158,11 +158,11 @@ export class TsView {
const isFree = await network.isLocalPortUnused(port); const isFree = await network.isLocalPortUnused(port);
if (!isFree) { if (!isFree) {
if (npmextraConfig.killIfBusy) { if (smartconfigConfig.killIfBusy) {
console.log(`Port ${port} is busy. Killing existing process...`); console.log(`Port ${port} is busy. Killing existing process...`);
await this.killProcessOnPort(port); await this.killProcessOnPort(port);
} else if (portWasExplicitlySet) { } else if (portWasExplicitlySet) {
throw new Error(`Port ${port} is busy. Set "killIfBusy": true in npmextra.json to auto-kill, or use a different port.`); throw new Error(`Port ${port} is busy. Set "killIfBusy": true in smartconfig.json to auto-kill, or use a different port.`);
} else { } else {
// Auto port was already free, shouldn't happen, but fallback // Auto port was already free, shouldn't happen, but fallback
port = await this.findFreePort(port + 1); port = await this.findFreePort(port + 1);
@@ -175,7 +175,7 @@ export class TsView {
console.log(`TsView server started on http://localhost:${port}`); console.log(`TsView server started on http://localhost:${port}`);
// Open browser (default: true, can be disabled via config) // Open browser (default: true, can be disabled via config)
const shouldOpenBrowser = npmextraConfig.openBrowser !== false; const shouldOpenBrowser = smartconfigConfig.openBrowser !== false;
if (shouldOpenBrowser) { if (shouldOpenBrowser) {
try { try {
await plugins.smartopen.openUrl(`http://localhost:${port}`); await plugins.smartopen.openUrl(`http://localhost:${port}`);

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tsview', name: '@git.zone/tsview',
version: '1.12.1', version: '1.12.2',
description: 'A CLI tool for viewing S3 and MongoDB data with a web UI' description: 'A CLI tool for viewing S3 and MongoDB data with a web UI'
} }