Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 81d7ff0722 | |||
| 856f13f2ad | |||
| f7cd43933f | |||
| 4269058ab5 | |||
| 321e3e89a4 |
66
.gitea/workflows/default_nottags.yaml
Normal file
66
.gitea/workflows/default_nottags.yaml
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
name: Default (not tags)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags-ignore:
|
||||||
|
- '**'
|
||||||
|
|
||||||
|
env:
|
||||||
|
IMAGE: code.foss.global/host.today/ht-docker-node:npmci
|
||||||
|
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git
|
||||||
|
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
|
||||||
|
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
|
||||||
|
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}
|
||||||
|
NPMCI_URL_CLOUDLY: ${-{secrets.NPMCI_URL_CLOUDLY}-}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
security:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true
|
||||||
|
container:
|
||||||
|
image: ${-{ env.IMAGE }-}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install pnpm and npmci
|
||||||
|
run: |
|
||||||
|
pnpm install -g pnpm
|
||||||
|
pnpm install -g @ship.zone/npmci
|
||||||
|
|
||||||
|
- name: Run npm prepare
|
||||||
|
run: npmci npm prepare
|
||||||
|
|
||||||
|
- name: Audit production dependencies
|
||||||
|
run: |
|
||||||
|
npmci command npm config set registry https://registry.npmjs.org
|
||||||
|
npmci command pnpm audit --audit-level=high --prod
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
- name: Audit development dependencies
|
||||||
|
run: |
|
||||||
|
npmci command npm config set registry https://registry.npmjs.org
|
||||||
|
npmci command pnpm audit --audit-level=high --dev
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
test:
|
||||||
|
if: ${-{ always() }-}
|
||||||
|
needs: security
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ${-{ env.IMAGE }-}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Test stable
|
||||||
|
run: |
|
||||||
|
npmci node install stable
|
||||||
|
npmci npm install
|
||||||
|
npmci npm test
|
||||||
|
|
||||||
|
- name: Test build
|
||||||
|
run: |
|
||||||
|
npmci node install stable
|
||||||
|
npmci npm install
|
||||||
|
npmci npm build
|
||||||
124
.gitea/workflows/default_tags.yaml
Normal file
124
.gitea/workflows/default_tags.yaml
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
name: Default (tags)
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
env:
|
||||||
|
IMAGE: code.foss.global/host.today/ht-docker-node:npmci
|
||||||
|
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git
|
||||||
|
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
|
||||||
|
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
|
||||||
|
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}
|
||||||
|
NPMCI_URL_CLOUDLY: ${-{secrets.NPMCI_URL_CLOUDLY}-}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
security:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: true
|
||||||
|
container:
|
||||||
|
image: ${-{ env.IMAGE }-}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Prepare
|
||||||
|
run: |
|
||||||
|
pnpm install -g pnpm
|
||||||
|
pnpm install -g @ship.zone/npmci
|
||||||
|
npmci npm prepare
|
||||||
|
|
||||||
|
- name: Audit production dependencies
|
||||||
|
run: |
|
||||||
|
npmci command npm config set registry https://registry.npmjs.org
|
||||||
|
npmci command pnpm audit --audit-level=high --prod
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
- name: Audit development dependencies
|
||||||
|
run: |
|
||||||
|
npmci command npm config set registry https://registry.npmjs.org
|
||||||
|
npmci command pnpm audit --audit-level=high --dev
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
test:
|
||||||
|
if: ${-{ always() }-}
|
||||||
|
needs: security
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ${-{ env.IMAGE }-}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Prepare
|
||||||
|
run: |
|
||||||
|
pnpm install -g pnpm
|
||||||
|
pnpm install -g @ship.zone/npmci
|
||||||
|
npmci npm prepare
|
||||||
|
|
||||||
|
- name: Test stable
|
||||||
|
run: |
|
||||||
|
npmci node install stable
|
||||||
|
npmci npm install
|
||||||
|
npmci npm test
|
||||||
|
|
||||||
|
- name: Test build
|
||||||
|
run: |
|
||||||
|
npmci node install stable
|
||||||
|
npmci npm install
|
||||||
|
npmci npm build
|
||||||
|
|
||||||
|
release:
|
||||||
|
needs: test
|
||||||
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ${-{ env.IMAGE }-}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Prepare
|
||||||
|
run: |
|
||||||
|
pnpm install -g pnpm
|
||||||
|
pnpm install -g @ship.zone/npmci
|
||||||
|
npmci npm prepare
|
||||||
|
|
||||||
|
- name: Release
|
||||||
|
run: |
|
||||||
|
npmci node install stable
|
||||||
|
npmci npm publish
|
||||||
|
|
||||||
|
metadata:
|
||||||
|
needs: test
|
||||||
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ${-{ env.IMAGE }-}
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Prepare
|
||||||
|
run: |
|
||||||
|
pnpm install -g pnpm
|
||||||
|
pnpm install -g @ship.zone/npmci
|
||||||
|
npmci npm prepare
|
||||||
|
|
||||||
|
- name: Code quality
|
||||||
|
run: |
|
||||||
|
npmci command npm install -g typescript
|
||||||
|
npmci npm install
|
||||||
|
|
||||||
|
- name: Trigger
|
||||||
|
run: npmci trigger
|
||||||
|
|
||||||
|
- name: Build docs and upload artifacts
|
||||||
|
run: |
|
||||||
|
npmci node install stable
|
||||||
|
npmci npm install
|
||||||
|
pnpm install -g @git.zone/tsdoc
|
||||||
|
npmci command tsdoc
|
||||||
|
continue-on-error: true
|
||||||
11
.vscode/launch.json
vendored
Normal file
11
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"command": "npm test",
|
||||||
|
"name": "Run npm test",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "node-terminal"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
26
.vscode/settings.json
vendored
Normal file
26
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"json.schemas": [
|
||||||
|
{
|
||||||
|
"fileMatch": ["/npmextra.json"],
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"npmci": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "settings for npmci"
|
||||||
|
},
|
||||||
|
"gitzone": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "settings for gitzone",
|
||||||
|
"properties": {
|
||||||
|
"projectType": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["website", "element", "service", "npm", "wcc"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
29
changelog.md
29
changelog.md
@@ -1,6 +1,27 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-01-26 - 1.6.1 - fix(ci)
|
||||||
|
add Gitea CI workflows, documentation updates, and packaging metadata tweaks
|
||||||
|
|
||||||
|
- Add .gitea workflow files for tag and non-tag pushes (security, test, release, metadata jobs)
|
||||||
|
- Add buildDocs script (tsdoc) and add bugs/homepage/pnpm.overrides entries to package.json
|
||||||
|
- Update README and readme.hints.md with real-time streaming docs, formatting/table fixes, and examples punctuation fixes
|
||||||
|
- Tidy npmextra.json formatting and array inline style changes
|
||||||
|
- Update changelog.md entries and correct trailing newline/formatting
|
||||||
|
- Minor .gitignore whitespace fix
|
||||||
|
|
||||||
|
## 2026-01-25 - 1.6.0 - feat(readme)
|
||||||
|
|
||||||
|
document real-time change streaming and expand README with features, architecture, and configuration updates
|
||||||
|
|
||||||
|
- Add Real-Time Change Streaming section: MongoDB change streams, S3 polling (ETag), activity stream, WebSocket subscriptions, and auto-reconnect behavior
|
||||||
|
- Expand S3 and MongoDB feature lists: in-place text editing, enhanced previews (code), show/hide system databases, live indicators, context menus
|
||||||
|
- Reintroduce project-level npmextra.json example and clarify environment variable names and priority order
|
||||||
|
- Add Architecture and How It Works sections with tree layout and streaming design details
|
||||||
|
- Minor wording, formatting, and installation clarifications (prefer pnpm examples, fix LICENSE filename case)
|
||||||
|
|
||||||
## 2026-01-25 - 1.5.0 - feat(streaming)
|
## 2026-01-25 - 1.5.0 - feat(streaming)
|
||||||
|
|
||||||
add real-time streaming (MongoDB change streams & S3 bucket watchers) with WebSocket subscriptions and activity stream UI
|
add real-time streaming (MongoDB change streams & S3 bucket watchers) with WebSocket subscriptions and activity stream UI
|
||||||
|
|
||||||
- Server: add ChangeStreamManager to manage MongoDB change streams and S3 BucketWatcher subscriptions, handle subscription lifecycle, activity ring buffer and push events via TypedSocket.
|
- Server: add ChangeStreamManager to manage MongoDB change streams and S3 BucketWatcher subscriptions, handle subscription lifecycle, activity ring buffer and push events via TypedSocket.
|
||||||
@@ -11,6 +32,7 @@ add real-time streaming (MongoDB change streams & S3 bucket watchers) with WebSo
|
|||||||
- Docs: update readme.hints.md with Real-Time Streaming architecture, interfaces and dependency notes.
|
- Docs: update readme.hints.md with Real-Time Streaming architecture, interfaces and dependency notes.
|
||||||
|
|
||||||
## 2026-01-25 - 1.4.0 - feat(web)
|
## 2026-01-25 - 1.4.0 - feat(web)
|
||||||
|
|
||||||
add database overview panel, collection overview and resizable panels; show/hide system databases; use code editor with change-tracking in document view; add getDatabaseStats API and typings; enable overwrite for S3 uploads
|
add database overview panel, collection overview and resizable panels; show/hide system databases; use code editor with change-tracking in document view; add getDatabaseStats API and typings; enable overwrite for S3 uploads
|
||||||
|
|
||||||
- Add backend handler getDatabaseStats + request/response typings (IReq_GetDatabaseStats, IDatabaseStats) and ApiService.getDatabaseStats()
|
- Add backend handler getDatabaseStats + request/response typings (IReq_GetDatabaseStats, IDatabaseStats) and ApiService.getDatabaseStats()
|
||||||
@@ -23,6 +45,7 @@ add database overview panel, collection overview and resizable panels; show/hide
|
|||||||
- Minor dependency bumps: @git.zone/tstest and @design.estate/dees-catalog
|
- Minor dependency bumps: @git.zone/tstest and @design.estate/dees-catalog
|
||||||
|
|
||||||
## 2026-01-25 - 1.3.0 - feat(s3)
|
## 2026-01-25 - 1.3.0 - feat(s3)
|
||||||
|
|
||||||
add S3 create file/folder dialogs and in-place text editor; export mongodb plugin
|
add S3 create file/folder dialogs and in-place text editor; export mongodb plugin
|
||||||
|
|
||||||
- Add mongodb dependency and export mongodb in ts/plugins.ts so ObjectId can be reused from plugins.
|
- Add mongodb dependency and export mongodb in ts/plugins.ts so ObjectId can be reused from plugins.
|
||||||
@@ -33,6 +56,7 @@ add S3 create file/folder dialogs and in-place text editor; export mongodb plugi
|
|||||||
- Various styling and UX improvements for dialogs, buttons, and editor states.
|
- Various styling and UX improvements for dialogs, buttons, and editor states.
|
||||||
|
|
||||||
## 2026-01-25 - 1.2.0 - feat(s3,web-ui)
|
## 2026-01-25 - 1.2.0 - feat(s3,web-ui)
|
||||||
|
|
||||||
add S3 deletePrefix and getObjectUrl endpoints and add context menus in UI for S3 and Mongo views
|
add S3 deletePrefix and getObjectUrl endpoints and add context menus in UI for S3 and Mongo views
|
||||||
|
|
||||||
- Add server-side TypedHandlers: deletePrefix and getObjectUrl (ts/api/handlers.s3.ts)
|
- Add server-side TypedHandlers: deletePrefix and getObjectUrl (ts/api/handlers.s3.ts)
|
||||||
@@ -42,24 +66,28 @@ add S3 deletePrefix and getObjectUrl endpoints and add context menus in UI for S
|
|||||||
- Switch from inline delete buttons to contextual menus for safer UX; implement downloads via data URLs returned by getObjectUrl and deletion of S3 prefixes (folders)
|
- Switch from inline delete buttons to contextual menus for safer UX; implement downloads via data URLs returned by getObjectUrl and deletion of S3 prefixes (folders)
|
||||||
|
|
||||||
## 2026-01-25 - 1.1.3 - fix(package)
|
## 2026-01-25 - 1.1.3 - fix(package)
|
||||||
|
|
||||||
update package metadata
|
update package metadata
|
||||||
|
|
||||||
- metadata-only change; no source code changes
|
- metadata-only change; no source code changes
|
||||||
- current version 1.1.2 → recommended patch bump to 1.1.3
|
- current version 1.1.2 → recommended patch bump to 1.1.3
|
||||||
|
|
||||||
## 2026-01-25 - 1.1.2 - fix(package)
|
## 2026-01-25 - 1.1.2 - fix(package)
|
||||||
|
|
||||||
apply minor metadata-only change (one-line edit)
|
apply minor metadata-only change (one-line edit)
|
||||||
|
|
||||||
- Change affects 1 file with a +1 -1 (metadata-only) — no behavioral changes
|
- Change affects 1 file with a +1 -1 (metadata-only) — no behavioral changes
|
||||||
- Recommended bump of patch version from 1.1.1 to 1.1.2
|
- Recommended bump of patch version from 1.1.1 to 1.1.2
|
||||||
|
|
||||||
## 2026-01-25 - 1.1.1 - fix(tsview)
|
## 2026-01-25 - 1.1.1 - fix(tsview)
|
||||||
|
|
||||||
fix bad build commit - remove accidental include
|
fix bad build commit - remove accidental include
|
||||||
|
|
||||||
- Removed an accidental include that caused a bad build and unintended files to be part of the commit
|
- Removed an accidental include that caused a bad build and unintended files to be part of the commit
|
||||||
- Patch release recommended from 1.1.0 to 1.1.1
|
- Patch release recommended from 1.1.0 to 1.1.1
|
||||||
|
|
||||||
## 2026-01-25 - 1.1.0 - feat(tsview)
|
## 2026-01-25 - 1.1.0 - feat(tsview)
|
||||||
|
|
||||||
add database and S3 handlers, tswatch/watch scripts, web utilities, assets and release config
|
add database and S3 handlers, tswatch/watch scripts, web utilities, assets and release config
|
||||||
|
|
||||||
- Add MongoDB management handlers: createDatabase, dropDatabase, dropCollection (ts/api/handlers.mongodb.ts)
|
- Add MongoDB management handlers: createDatabase, dropDatabase, dropCollection (ts/api/handlers.mongodb.ts)
|
||||||
@@ -71,6 +99,7 @@ add database and S3 handlers, tswatch/watch scripts, web utilities, assets and r
|
|||||||
- Add release/registry and project metadata in npmextra.json for publishing
|
- Add release/registry and project metadata in npmextra.json for publishing
|
||||||
|
|
||||||
## 2026-01-23 - 1.0.0 - initial release: column view UI, S3 integration, and API fixes
|
## 2026-01-23 - 1.0.0 - initial release: column view UI, S3 integration, and API fixes
|
||||||
|
|
||||||
Initial public release introducing the new column-based UI with resizable columns and horizontal navigation, plus backend fixes for S3 bucket listing and API endpoint handling.
|
Initial public release introducing the new column-based UI with resizable columns and horizontal navigation, plus backend fixes for S3 bucket listing and API endpoint handling.
|
||||||
|
|
||||||
- feat: Add resizable columns and horizontal scrolling
|
- feat: Add resizable columns and horizontal scrolling
|
||||||
|
|||||||
@@ -6,9 +6,7 @@
|
|||||||
"to": "./ts/bundled_ui.ts",
|
"to": "./ts/bundled_ui.ts",
|
||||||
"outputMode": "base64ts",
|
"outputMode": "base64ts",
|
||||||
"bundler": "esbuild",
|
"bundler": "esbuild",
|
||||||
"includeFiles": [
|
"includeFiles": ["html/**/*"]
|
||||||
"html/**/*"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -34,14 +32,9 @@
|
|||||||
"openBrowser": false
|
"openBrowser": false
|
||||||
},
|
},
|
||||||
"@git.zone/cli": {
|
"@git.zone/cli": {
|
||||||
"services": [
|
"services": ["mongodb", "minio"],
|
||||||
"mongodb",
|
|
||||||
"minio"
|
|
||||||
],
|
|
||||||
"release": {
|
"release": {
|
||||||
"registries": [
|
"registries": ["https://verdaccio.lossless.digital"],
|
||||||
"https://verdaccio.lossless.digital"
|
|
||||||
],
|
|
||||||
"accessLevel": "public"
|
"accessLevel": "public"
|
||||||
},
|
},
|
||||||
"projectType": "npm",
|
"projectType": "npm",
|
||||||
|
|||||||
12
package.json
12
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@git.zone/tsview",
|
"name": "@git.zone/tsview",
|
||||||
"version": "1.5.0",
|
"version": "1.6.1",
|
||||||
"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",
|
||||||
@@ -13,7 +13,8 @@
|
|||||||
"build": "pnpm run bundle && tsbuild --allowimplicitany",
|
"build": "pnpm run bundle && tsbuild --allowimplicitany",
|
||||||
"bundle": "tsbundle",
|
"bundle": "tsbundle",
|
||||||
"startTs": "node cli.ts.js",
|
"startTs": "node cli.ts.js",
|
||||||
"watch": "tswatch"
|
"watch": "tswatch",
|
||||||
|
"buildDocs": "tsdoc"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsview": "cli.js"
|
"tsview": "cli.js"
|
||||||
@@ -67,5 +68,12 @@
|
|||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://code.foss.global/git.zone/tsview.git"
|
"url": "https://code.foss.global/git.zone/tsview.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://code.foss.global/git.zone/tsview/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://code.foss.global/git.zone/tsview#readme",
|
||||||
|
"pnpm": {
|
||||||
|
"overrides": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +1,44 @@
|
|||||||
# tsview - Project Hints
|
# tsview - Project Hints
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
tsview is a CLI tool for viewing S3 and MongoDB data through a web UI.
|
tsview is a CLI tool for viewing S3 and MongoDB data through a web UI.
|
||||||
|
|
||||||
## Key Patterns
|
## Key Patterns
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
- Reads from `.nogit/env.json` (created by `gitzone service`)
|
- Reads from `.nogit/env.json` (created by `gitzone service`)
|
||||||
- Environment variables: MONGODB_URL, S3_HOST, S3_ACCESSKEY, etc.
|
- Environment variables: MONGODB_URL, S3_HOST, S3_ACCESSKEY, etc.
|
||||||
|
|
||||||
### CLI Commands
|
### CLI Commands
|
||||||
|
|
||||||
- `tsview` - Start viewer (auto-finds free port from 3010+)
|
- `tsview` - Start viewer (auto-finds free port from 3010+)
|
||||||
- `tsview --port 3000` - Force specific port
|
- `tsview --port 3000` - Force specific port
|
||||||
- `tsview s3` - S3 viewer only
|
- `tsview s3` - S3 viewer only
|
||||||
- `tsview mongo` - MongoDB viewer only
|
- `tsview mongo` - MongoDB viewer only
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
- Uses `@push.rocks/smartbucket` for S3 operations
|
- Uses `@push.rocks/smartbucket` for S3 operations
|
||||||
- Uses `@push.rocks/smartdata` for MongoDB operations
|
- Uses `@push.rocks/smartdata` for MongoDB operations
|
||||||
- Uses `@api.global/typedserver` + `@api.global/typedrequest` for API
|
- Uses `@api.global/typedserver` + `@api.global/typedrequest` for API
|
||||||
- Uses `@design.estate/dees-catalog` for UI components
|
- Uses `@design.estate/dees-catalog` for UI components
|
||||||
|
|
||||||
### Build Process
|
### Build Process
|
||||||
|
|
||||||
- Run `pnpm build` to compile TypeScript and bundle web UI
|
- Run `pnpm build` to compile TypeScript and bundle web UI
|
||||||
- UI is bundled from `ts_web/` to `ts/bundled_ui.ts` as base64
|
- UI is bundled from `ts_web/` to `ts/bundled_ui.ts` as base64
|
||||||
|
|
||||||
### Web UI Structure
|
### Web UI Structure
|
||||||
|
|
||||||
- `ts_web/elements/` - Web components (LitElement-based)
|
- `ts_web/elements/` - Web components (LitElement-based)
|
||||||
- `ts_web/services/` - API service for backend communication
|
- `ts_web/services/` - API service for backend communication
|
||||||
- `ts_web/utilities/` - Shared formatting functions (formatSize, formatCount, getFileName)
|
- `ts_web/utilities/` - Shared formatting functions (formatSize, formatCount, getFileName)
|
||||||
- `ts_web/styles/` - Shared CSS custom properties (themeStyles)
|
- `ts_web/styles/` - Shared CSS custom properties (themeStyles)
|
||||||
|
|
||||||
### TypedRequest Pattern
|
### TypedRequest Pattern
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
// Interface definition
|
// Interface definition
|
||||||
export interface IReq_ListBuckets extends plugins.typedrequest.implementsTR<
|
export interface IReq_ListBuckets extends plugins.typedrequest.implementsTR<
|
||||||
@@ -57,27 +64,32 @@ typedrouter.addTypedHandler(
|
|||||||
## Real-Time Streaming (v1.5.0+)
|
## Real-Time Streaming (v1.5.0+)
|
||||||
|
|
||||||
### Architecture
|
### Architecture
|
||||||
|
|
||||||
- `ts/streaming/` - Backend streaming infrastructure
|
- `ts/streaming/` - Backend streaming infrastructure
|
||||||
- `classes.changestream-manager.ts` - Manages MongoDB and S3 watchers
|
- `classes.changestream-manager.ts` - Manages MongoDB and S3 watchers
|
||||||
- `interfaces.streaming.ts` - TypedRequest interfaces for subscriptions
|
- `interfaces.streaming.ts` - TypedRequest interfaces for subscriptions
|
||||||
- `ts_web/services/changestream.service.ts` - Frontend WebSocket client
|
- `ts_web/services/changestream.service.ts` - Frontend WebSocket client
|
||||||
|
|
||||||
### MongoDB Change Streams
|
### MongoDB Change Streams
|
||||||
|
|
||||||
- Uses native MongoDB Change Streams via `SmartdataDb.mongoDbClient`
|
- Uses native MongoDB Change Streams via `SmartdataDb.mongoDbClient`
|
||||||
- Subscription per collection: `db/collection`
|
- Subscription per collection: `db/collection`
|
||||||
- Events: insert, update, delete, replace, drop
|
- Events: insert, update, delete, replace, drop
|
||||||
|
|
||||||
### S3 Change Detection
|
### S3 Change Detection
|
||||||
|
|
||||||
- Uses `@push.rocks/smartbucket` BucketWatcher (polling-based)
|
- Uses `@push.rocks/smartbucket` BucketWatcher (polling-based)
|
||||||
- Polling interval: 5 seconds
|
- Polling interval: 5 seconds
|
||||||
- Events: add, modify, delete
|
- Events: add, modify, delete
|
||||||
|
|
||||||
### Frontend Components
|
### Frontend Components
|
||||||
|
|
||||||
- `tsview-activity-stream.ts` - Combined activity view with filtering
|
- `tsview-activity-stream.ts` - Combined activity view with filtering
|
||||||
- MongoDB/S3 browsers auto-subscribe to current resource
|
- MongoDB/S3 browsers auto-subscribe to current resource
|
||||||
- Visual indicators for "Live" status and recent change count
|
- Visual indicators for "Live" status and recent change count
|
||||||
|
|
||||||
### Key Streaming Interfaces
|
### Key Streaming Interfaces
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
// Subscribe to collection changes
|
// Subscribe to collection changes
|
||||||
IReq_SubscribeMongo: { database, collection } -> { success, subscriptionId }
|
IReq_SubscribeMongo: { database, collection } -> { success, subscriptionId }
|
||||||
@@ -95,5 +107,6 @@ IReq_PushActivityEvent: { event: IActivityEvent } -> { received }
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Dependencies Added
|
### Dependencies Added
|
||||||
|
|
||||||
- `@api.global/typedsocket` - WebSocket client/server
|
- `@api.global/typedsocket` - WebSocket client/server
|
||||||
- `@push.rocks/smartrx` - RxJS utilities
|
- `@push.rocks/smartrx` - RxJS utilities
|
||||||
|
|||||||
244
readme.md
244
readme.md
@@ -1,6 +1,6 @@
|
|||||||
# @git.zone/tsview
|
# @git.zone/tsview
|
||||||
|
|
||||||
A powerful developer tool for browsing and managing S3-compatible storage and MongoDB databases through a sleek web UI. Built with TypeScript, designed for developers who need quick, visual access to their data stores during development. 🚀
|
A powerful developer tool for browsing and managing S3-compatible storage and MongoDB databases through a sleek web UI — with real-time change streaming baked in. Built with TypeScript, designed for developers who need quick, visual access to their data stores. 🚀
|
||||||
|
|
||||||
## Issue Reporting and Security
|
## Issue Reporting and Security
|
||||||
|
|
||||||
@@ -10,41 +10,51 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Global installation (recommended for CLI usage)
|
# Global installation (recommended for CLI usage)
|
||||||
npm install -g @git.zone/tsview
|
|
||||||
# or
|
|
||||||
pnpm add -g @git.zone/tsview
|
pnpm add -g @git.zone/tsview
|
||||||
|
|
||||||
# Local installation (for programmatic usage)
|
# Local installation (for programmatic usage)
|
||||||
npm install @git.zone/tsview
|
|
||||||
# or
|
|
||||||
pnpm add @git.zone/tsview
|
pnpm add @git.zone/tsview
|
||||||
```
|
```
|
||||||
|
|
||||||
## Features ✨
|
## Features ✨
|
||||||
|
|
||||||
### 🗄️ S3 Storage Browser
|
### 🗄️ S3 Storage Browser
|
||||||
- **Column View Navigation** - Mac Finder-style interface with resizable columns for intuitive file browsing
|
|
||||||
- **List View** - Traditional key-based view with hierarchical navigation
|
- **Column View Navigation** — Mac Finder-style interface with resizable columns
|
||||||
- **Real-time Preview** - View images, JSON, text files, and more directly in the browser
|
- **List View** — Traditional key-based view with hierarchical navigation
|
||||||
- **Bucket Management** - Create, delete, and switch between buckets
|
- **Real-time Preview** — View images, JSON, text files, code, and more directly in the browser
|
||||||
- **File Operations** - Upload, download, delete objects with ease
|
- **Bucket Management** — Create, delete, and switch between buckets
|
||||||
- **Smart Content Type Detection** - Automatic content type recognition for 20+ file types
|
- **File Operations** — Upload, download, delete objects
|
||||||
- **Breadcrumb Navigation** - Easy path traversal with clickable breadcrumbs
|
- **In-place Text Editing** — Edit text files directly in the browser with change tracking
|
||||||
|
- **Smart Content Type Detection** — Automatic recognition for 20+ file types
|
||||||
|
- **Breadcrumb Navigation** — Clickable path traversal
|
||||||
|
|
||||||
### 🍃 MongoDB Browser
|
### 🍃 MongoDB Browser
|
||||||
- **Database Explorer** - Hierarchical navigation through databases and collections
|
|
||||||
- **Document Viewer** - Paginated table view with sorting and filtering
|
- **Database Explorer** — Hierarchical navigation through databases and collections
|
||||||
- **Document Editor** - Full CRUD operations with JSON syntax highlighting
|
- **Database Overview** — Collection counts, data sizes, index stats at a glance
|
||||||
- **Index Management** - View, create, and drop indexes
|
- **Document Viewer** — Paginated table view with JSON filter support
|
||||||
- **Aggregation Pipeline** - Run custom aggregation queries (coming soon)
|
- **Document Editor** — Full CRUD with syntax-highlighted code editor and change tracking
|
||||||
- **Collection Stats** - View document counts, sizes, and storage metrics
|
- **Index Management** — View, create, and drop indexes
|
||||||
- **Server Status** - Monitor connection info and server health
|
- **Collection Stats** — Document counts, sizes, storage metrics
|
||||||
|
- **Server Status** — Connection info, version, uptime
|
||||||
|
- **Show/Hide System Databases** — Toggle visibility of `admin`, `local`, `config`
|
||||||
|
|
||||||
|
### ⚡ Real-Time Change Streaming
|
||||||
|
|
||||||
|
- **MongoDB Change Streams** — Live updates via native MongoDB change streams
|
||||||
|
- **S3 Change Detection** — Polling-based bucket monitoring with ETag comparison (5s intervals)
|
||||||
|
- **Activity Stream** — Combined timeline of all changes from both sources, filterable by type
|
||||||
|
- **Live Indicators** — Green dot + change count badges on active views
|
||||||
|
- **WebSocket Subscriptions** — Per-collection, per-bucket, or global activity feed
|
||||||
|
- **Auto-Reconnect** — Subscriptions automatically restored after connection loss
|
||||||
|
|
||||||
### 🎨 Modern Web UI
|
### 🎨 Modern Web UI
|
||||||
|
|
||||||
- 🌙 Dark theme designed for developer comfort
|
- 🌙 Dark theme designed for developer comfort
|
||||||
- 📱 Responsive layout with resizable panels
|
- 📱 Responsive layout with resizable panels
|
||||||
- ⌨️ Keyboard-friendly navigation
|
- ⌨️ Context menus for quick actions
|
||||||
- 🔌 Zero external runtime dependencies in the browser
|
- 🔌 Everything bundled — zero external runtime dependencies in the browser
|
||||||
|
|
||||||
## Quick Start 🚀
|
## Quick Start 🚀
|
||||||
|
|
||||||
@@ -90,28 +100,6 @@ tsview mongo
|
|||||||
tsview mongodb
|
tsview mongodb
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration via npmextra.json
|
|
||||||
|
|
||||||
For project-level configuration, add a `@git.zone/tsview` section to your `npmextra.json`:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"@git.zone/tsview": {
|
|
||||||
"port": 3015,
|
|
||||||
"killIfBusy": true,
|
|
||||||
"openBrowser": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
| Option | Type | Default | Description |
|
|
||||||
|--------|------|---------|-------------|
|
|
||||||
| `port` | `number` | auto | Fixed port to use (auto-finds from 3010 if not set) |
|
|
||||||
| `killIfBusy` | `boolean` | `false` | Kill existing process if port is busy |
|
|
||||||
| `openBrowser` | `boolean` | `true` | Automatically open browser on start |
|
|
||||||
|
|
||||||
**Priority order:** CLI `--port` flag > `npmextra.json` config > auto-detect
|
|
||||||
|
|
||||||
## Programmatic API
|
## Programmatic API
|
||||||
|
|
||||||
Use tsview as a library in your own tools:
|
Use tsview as a library in your own tools:
|
||||||
@@ -124,32 +112,32 @@ const viewer = new TsView();
|
|||||||
// Option 1: Load from .nogit/env.json (gitzone service format)
|
// Option 1: Load from .nogit/env.json (gitzone service format)
|
||||||
await viewer.loadConfigFromEnv();
|
await viewer.loadConfigFromEnv();
|
||||||
|
|
||||||
// Option 2: Configure programmatically for local development
|
// Option 2: Configure programmatically
|
||||||
viewer.setS3Config({
|
viewer.setS3Config({
|
||||||
endpoint: 'localhost',
|
endpoint: 'localhost',
|
||||||
port: 9000,
|
port: 9000,
|
||||||
accessKey: 'minioadmin',
|
accessKey: 'minioadmin',
|
||||||
accessSecret: 'minioadmin',
|
accessSecret: 'minioadmin',
|
||||||
useSsl: false
|
useSsl: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
viewer.setMongoConfig({
|
viewer.setMongoConfig({
|
||||||
mongoDbUrl: 'mongodb://localhost:27017',
|
mongoDbUrl: 'mongodb://localhost:27017',
|
||||||
mongoDbName: 'mydb'
|
mongoDbName: 'mydb',
|
||||||
});
|
});
|
||||||
|
|
||||||
// Option 3: Configure for cloud services
|
// Option 3: Cloud services
|
||||||
viewer.setS3Config({
|
viewer.setS3Config({
|
||||||
endpoint: 's3.amazonaws.com',
|
endpoint: 's3.amazonaws.com',
|
||||||
accessKey: 'AKIAXXXXXXX',
|
accessKey: 'AKIAXXXXXXX',
|
||||||
accessSecret: 'your-secret-key',
|
accessSecret: 'your-secret-key',
|
||||||
useSsl: true,
|
useSsl: true,
|
||||||
region: 'us-east-1'
|
region: 'us-east-1',
|
||||||
});
|
});
|
||||||
|
|
||||||
viewer.setMongoConfig({
|
viewer.setMongoConfig({
|
||||||
mongoDbUrl: 'mongodb+srv://user:pass@cluster.mongodb.net',
|
mongoDbUrl: 'mongodb+srv://user:pass@cluster.mongodb.net',
|
||||||
mongoDbName: 'production'
|
mongoDbName: 'production',
|
||||||
});
|
});
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
@@ -163,62 +151,120 @@ await viewer.start(3500);
|
|||||||
await viewer.stop();
|
await viewer.stop();
|
||||||
```
|
```
|
||||||
|
|
||||||
## Environment Variables
|
## Configuration
|
||||||
|
|
||||||
The following environment variables are supported in `.nogit/env.json`:
|
### Project-level via `npmextra.json`
|
||||||
|
|
||||||
### S3 Configuration
|
```json
|
||||||
| Variable | Description |
|
{
|
||||||
|----------|-------------|
|
"@git.zone/tsview": {
|
||||||
| `S3_ENDPOINT` | S3 server hostname |
|
"port": 3015,
|
||||||
| `S3_PORT` | S3 server port (optional) |
|
"killIfBusy": true,
|
||||||
| `S3_ACCESSKEY` | Access key ID |
|
"openBrowser": false
|
||||||
| `S3_SECRETKEY` | Secret access key |
|
}
|
||||||
| `S3_USESSL` | Use HTTPS (`true`/`false`) |
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### MongoDB Configuration
|
| Option | Type | Default | Description |
|
||||||
| Variable | Description |
|
| ------------- | --------- | ------- | -------------------------------------------- |
|
||||||
|----------|-------------|
|
| `port` | `number` | auto | Fixed port (auto-finds from 3010 if not set) |
|
||||||
| `MONGODB_URL` | Full MongoDB connection string |
|
| `killIfBusy` | `boolean` | `false` | Kill existing process if port is busy |
|
||||||
| `MONGODB_NAME` | Default database name |
|
| `openBrowser` | `boolean` | `true` | Automatically open browser on start |
|
||||||
|
|
||||||
Or use individual MongoDB variables:
|
**Port priority:** CLI `--port` flag → `npmextra.json` → auto-detect
|
||||||
| Variable | Description |
|
|
||||||
|----------|-------------|
|
### Environment Variables (`.nogit/env.json`)
|
||||||
| `MONGODB_HOST` | MongoDB hostname |
|
|
||||||
| `MONGODB_PORT` | MongoDB port |
|
#### S3
|
||||||
| `MONGODB_USER` | Username |
|
|
||||||
| `MONGODB_PASS` | Password |
|
| Variable | Description |
|
||||||
|
| -------------- | ----------------------------- |
|
||||||
|
| `S3_ENDPOINT` | S3-compatible server hostname |
|
||||||
|
| `S3_PORT` | Server port (optional) |
|
||||||
|
| `S3_ACCESSKEY` | Access key ID |
|
||||||
|
| `S3_SECRETKEY` | Secret access key |
|
||||||
|
| `S3_USESSL` | Use HTTPS (`true`/`false`) |
|
||||||
|
|
||||||
|
#### MongoDB
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
| -------------- | ---------------------------------- |
|
||||||
|
| `MONGODB_URL` | Full connection string (preferred) |
|
||||||
|
| `MONGODB_NAME` | Default database name |
|
||||||
|
|
||||||
|
Or use individual variables:
|
||||||
|
|
||||||
|
| Variable | Description |
|
||||||
|
| -------------- | ------------- |
|
||||||
|
| `MONGODB_HOST` | Hostname |
|
||||||
|
| `MONGODB_PORT` | Port |
|
||||||
|
| `MONGODB_USER` | Username |
|
||||||
|
| `MONGODB_PASS` | Password |
|
||||||
| `MONGODB_NAME` | Database name |
|
| `MONGODB_NAME` | Database name |
|
||||||
|
|
||||||
## Supported S3 Providers
|
## Supported S3 Providers
|
||||||
|
|
||||||
tsview works with any S3-compatible storage:
|
tsview works with any S3-compatible storage:
|
||||||
|
|
||||||
| Provider | Status |
|
| Provider | Status |
|
||||||
|----------|--------|
|
| ----------------------- | --------------------------- |
|
||||||
| **MinIO** | ✅ Perfect for local development |
|
| **MinIO** | ✅ Perfect for local dev |
|
||||||
| **AWS S3** | ✅ Amazon's object storage |
|
| **AWS S3** | ✅ Amazon's object storage |
|
||||||
| **DigitalOcean Spaces** | ✅ Simple object storage |
|
| **DigitalOcean Spaces** | ✅ Simple object storage |
|
||||||
| **Backblaze B2** | ✅ S3-compatible API |
|
| **Backblaze B2** | ✅ S3-compatible API |
|
||||||
| **Cloudflare R2** | ✅ Zero egress fees |
|
| **Cloudflare R2** | ✅ Zero egress fees |
|
||||||
| **Wasabi** | ✅ Hot cloud storage |
|
| **Wasabi** | ✅ Hot cloud storage |
|
||||||
| **Self-hosted** | ✅ Any S3-compatible server |
|
| **Self-hosted** | ✅ Any S3-compatible server |
|
||||||
|
|
||||||
## Supported File Types for Preview
|
## Supported File Types for Preview
|
||||||
|
|
||||||
| Category | Extensions |
|
| Category | Extensions |
|
||||||
|----------|------------|
|
| ------------- | ------------------------------------------------------ |
|
||||||
| **Images** | `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg` |
|
| **Images** | `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg` |
|
||||||
| **Text** | `.txt`, `.md`, `.log`, `.sh`, `.env` |
|
| **Text** | `.txt`, `.md`, `.log`, `.sh`, `.env` |
|
||||||
| **Code** | `.json`, `.js`, `.ts`, `.tsx`, `.jsx`, `.html`, `.css` |
|
| **Code** | `.json`, `.js`, `.ts`, `.tsx`, `.jsx`, `.html`, `.css` |
|
||||||
| **Data** | `.csv`, `.xml`, `.yaml`, `.yml` |
|
| **Data** | `.csv`, `.xml`, `.yaml`, `.yml` |
|
||||||
| **Documents** | `.pdf` |
|
| **Documents** | `.pdf` |
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
tsview/
|
||||||
|
├── ts/ # Backend
|
||||||
|
│ ├── api/ # TypedRequest API handlers
|
||||||
|
│ │ ├── handlers.s3.ts # S3 bucket & object operations
|
||||||
|
│ │ └── handlers.mongodb.ts # MongoDB CRUD & admin operations
|
||||||
|
│ ├── config/ # Configuration management
|
||||||
|
│ ├── server/ # Web server (TypedServer + TypedSocket)
|
||||||
|
│ ├── streaming/ # Real-time change streaming
|
||||||
|
│ │ ├── classes.changestream-manager.ts # MongoDB + S3 watchers
|
||||||
|
│ │ └── interfaces.streaming.ts # Subscription interfaces
|
||||||
|
│ ├── interfaces/ # Shared TypeScript interfaces
|
||||||
|
│ └── tsview.classes.tsview.ts # Main class
|
||||||
|
├── ts_web/ # Frontend
|
||||||
|
│ ├── elements/ # Web components (LitElement)
|
||||||
|
│ │ ├── tsview-app.ts # App shell + navigation
|
||||||
|
│ │ ├── tsview-s3-*.ts # S3 browser components
|
||||||
|
│ │ ├── tsview-mongo-*.ts # MongoDB browser components
|
||||||
|
│ │ └── tsview-activity-stream.ts # Real-time activity feed
|
||||||
|
│ ├── services/ # API + WebSocket clients
|
||||||
|
│ ├── styles/ # Dark theme
|
||||||
|
│ └── utilities/ # Formatting helpers
|
||||||
|
└── cli.ts.js # CLI entry point
|
||||||
|
```
|
||||||
|
|
||||||
|
### How It Works
|
||||||
|
|
||||||
|
1. **Backend** — A `TypedServer` serves the bundled web UI and exposes a typed API via `TypedRequest` over HTTP. A `TypedSocket` WebSocket layer handles real-time streaming subscriptions.
|
||||||
|
|
||||||
|
2. **Frontend** — LitElement-based web components communicate with the backend via `TypedRequest`. The `ChangeStreamService` connects over WebSocket and distributes real-time events to active views via RxJS Subjects.
|
||||||
|
|
||||||
|
3. **Streaming** — The `ChangeStreamManager` creates MongoDB Change Streams and S3 BucketWatchers on demand (one per subscribed resource). Changes are pushed to subscribed clients and accumulated in a 1000-event ring buffer for the Activity Stream view.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone the repository
|
# Clone
|
||||||
git clone https://code.foss.global/git.zone/tsview.git
|
git clone https://code.foss.global/git.zone/tsview.git
|
||||||
cd tsview
|
cd tsview
|
||||||
|
|
||||||
@@ -235,29 +281,9 @@ pnpm run watch
|
|||||||
pnpm test
|
pnpm test
|
||||||
```
|
```
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
```
|
|
||||||
tsview/
|
|
||||||
├── ts/ # Backend TypeScript source
|
|
||||||
│ ├── api/ # TypedRequest API handlers
|
|
||||||
│ │ ├── handlers.s3.ts
|
|
||||||
│ │ └── handlers.mongodb.ts
|
|
||||||
│ ├── config/ # Configuration management
|
|
||||||
│ ├── server/ # Web server (TypedServer)
|
|
||||||
│ ├── interfaces/ # Shared TypeScript interfaces
|
|
||||||
│ └── tsview.classes.tsview.ts # Main class
|
|
||||||
├── ts_web/ # Frontend TypeScript source
|
|
||||||
│ ├── elements/ # Web components (LitElement)
|
|
||||||
│ ├── services/ # API client service
|
|
||||||
│ ├── styles/ # Shared theme styles
|
|
||||||
│ └── utilities/ # Helper functions
|
|
||||||
└── cli.ts.js # CLI entry point
|
|
||||||
```
|
|
||||||
|
|
||||||
## License and Legal Information
|
## License and Legal Information
|
||||||
|
|
||||||
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license](./license) file.
|
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
|
||||||
|
|
||||||
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@git.zone/tsview',
|
name: '@git.zone/tsview',
|
||||||
version: '1.5.0',
|
version: '1.6.1',
|
||||||
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
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@git.zone/tsview',
|
name: '@git.zone/tsview',
|
||||||
version: '1.5.0',
|
version: '1.6.1',
|
||||||
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'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user