fix(build): rename npmextra config to .smartconfig and refresh build metadata
This commit is contained in:
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"json.schemas": [
|
"json.schemas": [
|
||||||
{
|
{
|
||||||
"fileMatch": ["/npmextra.json"],
|
"fileMatch": ["/.smartconfig.json"],
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-04-19 - 6.3.3 - fix(build)
|
||||||
|
rename npmextra config to .smartconfig and refresh build metadata
|
||||||
|
|
||||||
|
- renames the published project config file from npmextra.json to .smartconfig.json
|
||||||
|
- updates build and tooling dependencies to newer patch and minor versions
|
||||||
|
- adds Node type configuration and TypeScript deprecation handling in tsconfig
|
||||||
|
- refreshes README documentation to match the current build command and runtime management APIs
|
||||||
|
|
||||||
## Next - feat(credentials)
|
## Next - feat(credentials)
|
||||||
add runtime credential management APIs
|
add runtime credential management APIs
|
||||||
|
|
||||||
|
|||||||
+9
-9
@@ -15,14 +15,14 @@
|
|||||||
"buildDocs": "tsdoc"
|
"buildDocs": "tsdoc"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.1014.0",
|
"@aws-sdk/client-s3": "^3.1032.0",
|
||||||
"@git.zone/tsbuild": "^4.3.0",
|
"@git.zone/tsbuild": "^4.4.0",
|
||||||
"@git.zone/tsbundle": "^2.9.1",
|
"@git.zone/tsbundle": "^2.10.0",
|
||||||
"@git.zone/tsrun": "^2.0.1",
|
"@git.zone/tsrun": "^2.0.2",
|
||||||
"@git.zone/tsrust": "^1.3.0",
|
"@git.zone/tsrust": "^1.3.2",
|
||||||
"@git.zone/tstest": "^3.5.0",
|
"@git.zone/tstest": "^3.6.3",
|
||||||
"@push.rocks/smartbucket": "^4.5.1",
|
"@push.rocks/smartbucket": "^4.6.0",
|
||||||
"@types/node": "^25.5.0"
|
"@types/node": "^25.6.0"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"last 1 chrome versions"
|
"last 1 chrome versions"
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
"dist_ts_web/**/*",
|
"dist_ts_web/**/*",
|
||||||
"assets/**/*",
|
"assets/**/*",
|
||||||
"cli.js",
|
"cli.js",
|
||||||
"npmextra.json",
|
".smartconfig.json",
|
||||||
"readme.md"
|
"readme.md"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
Generated
+1594
-1724
File diff suppressed because it is too large
Load Diff
+2
-3
@@ -56,9 +56,9 @@
|
|||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
- `pnpm build` runs `tsrust && tsbuild --web --allowimplicitany`
|
- `pnpm build` runs `tsrust && tsbuild tsfolders --allowimplicitany`
|
||||||
- `tsrust` compiles Rust to `dist_rust/ruststorage`
|
- `tsrust` compiles Rust to `dist_rust/ruststorage`
|
||||||
- Targets: linux_amd64, linux_arm64 (configured in npmextra.json)
|
- Targets: linux_amd64, linux_arm64 (configured in .smartconfig.json)
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
@@ -69,7 +69,6 @@
|
|||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
- `test/test.aws-sdk.node.ts` - AWS SDK v3 compatibility + runtime stats coverage (18 tests, auth disabled, port 3337)
|
|
||||||
- `test/test.aws-sdk.node.ts` - AWS SDK v3 compatibility + runtime stats + standalone cluster health coverage (19 tests, auth disabled, port 3337)
|
- `test/test.aws-sdk.node.ts` - AWS SDK v3 compatibility + runtime stats + standalone cluster health coverage (19 tests, auth disabled, port 3337)
|
||||||
- `test/test.credentials.node.ts` - runtime credential rotation coverage (10 tests, auth enabled, port 3349)
|
- `test/test.credentials.node.ts` - runtime credential rotation coverage (10 tests, auth enabled, port 3349)
|
||||||
- `test/test.cluster-health.node.ts` - single-node cluster health coverage (4 tests, S3 port 3348, QUIC port 4348)
|
- `test/test.cluster-health.node.ts` - single-node cluster health coverage (4 tests, S3 port 3348, QUIC port 4348)
|
||||||
|
|||||||
@@ -589,6 +589,26 @@ Get connection details for S3-compatible clients. Returns:
|
|||||||
| `accessSecret` | `string` | Secret key from first configured credential |
|
| `accessSecret` | `string` | Secret key from first configured credential |
|
||||||
| `useSsl` | `boolean` | Always `false` (plain HTTP) |
|
| `useSsl` | `boolean` | Always `false` (plain HTTP) |
|
||||||
|
|
||||||
|
#### `getStorageStats(): Promise<IStorageStats>`
|
||||||
|
|
||||||
|
Read cached logical bucket and object totals from the Rust runtime without issuing S3 list calls.
|
||||||
|
|
||||||
|
#### `listBucketSummaries(): Promise<IBucketSummary[]>`
|
||||||
|
|
||||||
|
Get per-bucket logical object counts and total payload sizes.
|
||||||
|
|
||||||
|
#### `listCredentials(): Promise<IStorageCredential[]>`
|
||||||
|
|
||||||
|
Return the currently active runtime credential set.
|
||||||
|
|
||||||
|
#### `replaceCredentials(credentials: IStorageCredential[]): Promise<void>`
|
||||||
|
|
||||||
|
Atomically replace the active runtime credential set without restarting the server.
|
||||||
|
|
||||||
|
#### `getClusterHealth(): Promise<IClusterHealth>`
|
||||||
|
|
||||||
|
Read the Rust core's current cluster, drive, quorum, and repair health snapshot. Standalone mode returns `{ enabled: false }`.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
smartstorage uses a **hybrid Rust + TypeScript** architecture:
|
smartstorage uses a **hybrid Rust + TypeScript** architecture:
|
||||||
@@ -622,7 +642,7 @@ smartstorage uses a **hybrid Rust + TypeScript** architecture:
|
|||||||
|
|
||||||
**Why Rust?** The original TypeScript implementation had critical perf issues: OOM on multipart uploads (parts buffered in memory), double stream copying, file descriptor leaks on HEAD requests, full-file reads for range requests, and no backpressure. The Rust binary solves all of these with streaming I/O, zero-copy, and direct `seek()` for range requests.
|
**Why Rust?** The original TypeScript implementation had critical perf issues: OOM on multipart uploads (parts buffered in memory), double stream copying, file descriptor leaks on HEAD requests, full-file reads for range requests, and no backpressure. The Rust binary solves all of these with streaming I/O, zero-copy, and direct `seek()` for range requests.
|
||||||
|
|
||||||
**IPC Protocol:** TypeScript spawns the `ruststorage` binary with `--management` and communicates via newline-delimited JSON over stdin/stdout. Commands: `start`, `stop`, `createBucket`, `clusterStatus`.
|
**IPC Protocol:** TypeScript communicates with the `ruststorage` binary over newline-delimited JSON via stdin/stdout. The current management commands are `start`, `stop`, `createBucket`, `getStorageStats`, `listBucketSummaries`, `listCredentials`, `replaceCredentials`, and `getClusterHealth`.
|
||||||
|
|
||||||
### S3-Compatible Operations
|
### S3-Compatible Operations
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartstorage',
|
name: '@push.rocks/smartstorage',
|
||||||
version: '6.3.2',
|
version: '6.3.3',
|
||||||
description: 'A Node.js TypeScript package to create a local S3-compatible storage server using mapped local directories for development and testing purposes.'
|
description: 'A Node.js TypeScript package to create a local S3-compatible storage server using mapped local directories for development and testing purposes.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
"moduleResolution": "NodeNext",
|
"moduleResolution": "NodeNext",
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"verbatimModuleSyntax": true,
|
"verbatimModuleSyntax": true,
|
||||||
|
"types": ["node"],
|
||||||
|
"ignoreDeprecations": "6.0",
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {}
|
"paths": {}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user