s3db.js 13.5.1 → 13.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +89 -19
  2. package/dist/{s3db.cjs.js → s3db.cjs} +29780 -24384
  3. package/dist/s3db.cjs.map +1 -0
  4. package/dist/s3db.es.js +24263 -18860
  5. package/dist/s3db.es.js.map +1 -1
  6. package/package.json +227 -21
  7. package/src/concerns/id.js +90 -6
  8. package/src/concerns/index.js +2 -1
  9. package/src/concerns/password-hashing.js +150 -0
  10. package/src/database.class.js +4 -0
  11. package/src/plugins/api/auth/basic-auth.js +23 -1
  12. package/src/plugins/api/auth/index.js +49 -3
  13. package/src/plugins/api/auth/oauth2-auth.js +171 -0
  14. package/src/plugins/api/auth/oidc-auth.js +789 -0
  15. package/src/plugins/api/auth/oidc-client.js +462 -0
  16. package/src/plugins/api/auth/path-auth-matcher.js +284 -0
  17. package/src/plugins/api/concerns/event-emitter.js +134 -0
  18. package/src/plugins/api/concerns/failban-manager.js +651 -0
  19. package/src/plugins/api/concerns/guards-helpers.js +402 -0
  20. package/src/plugins/api/concerns/metrics-collector.js +346 -0
  21. package/src/plugins/api/concerns/opengraph-helper.js +116 -0
  22. package/src/plugins/api/concerns/state-machine.js +288 -0
  23. package/src/plugins/api/index.js +514 -54
  24. package/src/plugins/api/middlewares/failban.js +305 -0
  25. package/src/plugins/api/middlewares/rate-limit.js +301 -0
  26. package/src/plugins/api/middlewares/request-id.js +74 -0
  27. package/src/plugins/api/middlewares/security-headers.js +120 -0
  28. package/src/plugins/api/middlewares/session-tracking.js +194 -0
  29. package/src/plugins/api/routes/auth-routes.js +23 -3
  30. package/src/plugins/api/routes/resource-routes.js +71 -29
  31. package/src/plugins/api/server.js +1017 -94
  32. package/src/plugins/api/utils/guards.js +213 -0
  33. package/src/plugins/api/utils/mime-types.js +154 -0
  34. package/src/plugins/api/utils/openapi-generator.js +44 -11
  35. package/src/plugins/api/utils/path-matcher.js +173 -0
  36. package/src/plugins/api/utils/static-filesystem.js +262 -0
  37. package/src/plugins/api/utils/static-s3.js +231 -0
  38. package/src/plugins/api/utils/template-engine.js +262 -0
  39. package/src/plugins/cloud-inventory/drivers/alibaba-driver.js +853 -0
  40. package/src/plugins/cloud-inventory/drivers/aws-driver.js +2554 -0
  41. package/src/plugins/cloud-inventory/drivers/azure-driver.js +637 -0
  42. package/src/plugins/cloud-inventory/drivers/base-driver.js +99 -0
  43. package/src/plugins/cloud-inventory/drivers/cloudflare-driver.js +620 -0
  44. package/src/plugins/cloud-inventory/drivers/digitalocean-driver.js +698 -0
  45. package/src/plugins/cloud-inventory/drivers/gcp-driver.js +645 -0
  46. package/src/plugins/cloud-inventory/drivers/hetzner-driver.js +559 -0
  47. package/src/plugins/cloud-inventory/drivers/linode-driver.js +614 -0
  48. package/src/plugins/cloud-inventory/drivers/mock-drivers.js +449 -0
  49. package/src/plugins/cloud-inventory/drivers/mongodb-atlas-driver.js +771 -0
  50. package/src/plugins/cloud-inventory/drivers/oracle-driver.js +768 -0
  51. package/src/plugins/cloud-inventory/drivers/vultr-driver.js +636 -0
  52. package/src/plugins/cloud-inventory/index.js +20 -0
  53. package/src/plugins/cloud-inventory/registry.js +146 -0
  54. package/src/plugins/cloud-inventory/terraform-exporter.js +362 -0
  55. package/src/plugins/cloud-inventory.plugin.js +1333 -0
  56. package/src/plugins/concerns/plugin-dependencies.js +61 -1
  57. package/src/plugins/eventual-consistency/analytics.js +1 -0
  58. package/src/plugins/identity/README.md +335 -0
  59. package/src/plugins/identity/concerns/mfa-manager.js +204 -0
  60. package/src/plugins/identity/concerns/password.js +138 -0
  61. package/src/plugins/identity/concerns/resource-schemas.js +273 -0
  62. package/src/plugins/identity/concerns/token-generator.js +172 -0
  63. package/src/plugins/identity/email-service.js +422 -0
  64. package/src/plugins/identity/index.js +1052 -0
  65. package/src/plugins/identity/oauth2-server.js +1033 -0
  66. package/src/plugins/identity/oidc-discovery.js +285 -0
  67. package/src/plugins/identity/rsa-keys.js +323 -0
  68. package/src/plugins/identity/server.js +500 -0
  69. package/src/plugins/identity/session-manager.js +453 -0
  70. package/src/plugins/identity/ui/layouts/base.js +251 -0
  71. package/src/plugins/identity/ui/middleware.js +135 -0
  72. package/src/plugins/identity/ui/pages/admin/client-form.js +247 -0
  73. package/src/plugins/identity/ui/pages/admin/clients.js +179 -0
  74. package/src/plugins/identity/ui/pages/admin/dashboard.js +181 -0
  75. package/src/plugins/identity/ui/pages/admin/user-form.js +283 -0
  76. package/src/plugins/identity/ui/pages/admin/users.js +263 -0
  77. package/src/plugins/identity/ui/pages/consent.js +262 -0
  78. package/src/plugins/identity/ui/pages/forgot-password.js +104 -0
  79. package/src/plugins/identity/ui/pages/login.js +144 -0
  80. package/src/plugins/identity/ui/pages/mfa-backup-codes.js +180 -0
  81. package/src/plugins/identity/ui/pages/mfa-enrollment.js +187 -0
  82. package/src/plugins/identity/ui/pages/mfa-verification.js +178 -0
  83. package/src/plugins/identity/ui/pages/oauth-error.js +225 -0
  84. package/src/plugins/identity/ui/pages/profile.js +361 -0
  85. package/src/plugins/identity/ui/pages/register.js +226 -0
  86. package/src/plugins/identity/ui/pages/reset-password.js +128 -0
  87. package/src/plugins/identity/ui/pages/verify-email.js +172 -0
  88. package/src/plugins/identity/ui/routes.js +2541 -0
  89. package/src/plugins/identity/ui/styles/main.css +465 -0
  90. package/src/plugins/index.js +4 -1
  91. package/src/plugins/ml/base-model.class.js +32 -7
  92. package/src/plugins/ml/classification-model.class.js +1 -1
  93. package/src/plugins/ml/timeseries-model.class.js +3 -1
  94. package/src/plugins/ml.plugin.js +124 -32
  95. package/src/plugins/shared/error-handler.js +147 -0
  96. package/src/plugins/shared/index.js +9 -0
  97. package/src/plugins/shared/middlewares/compression.js +117 -0
  98. package/src/plugins/shared/middlewares/cors.js +49 -0
  99. package/src/plugins/shared/middlewares/index.js +11 -0
  100. package/src/plugins/shared/middlewares/logging.js +54 -0
  101. package/src/plugins/shared/middlewares/rate-limit.js +73 -0
  102. package/src/plugins/shared/middlewares/security.js +158 -0
  103. package/src/plugins/shared/response-formatter.js +264 -0
  104. package/src/plugins/tfstate/README.md +126 -126
  105. package/src/resource.class.js +140 -12
  106. package/src/schema.class.js +30 -1
  107. package/src/validator.class.js +57 -6
  108. package/dist/s3db.cjs.js.map +0 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <p align="center">
8
8
  <strong>Transform AWS S3 into a powerful document database</strong><br>
9
- <em>Zero-cost storage • Automatic encryption • ORM-like interface • Streaming API</em>
9
+ <em>Cost-effective storage • Automatic encryption • ORM-like interface • Streaming API</em>
10
10
  </p>
11
11
 
12
12
  <p align="center">
@@ -33,7 +33,7 @@
33
33
 
34
34
  ## 🚀 What is s3db.js?
35
35
 
36
- **s3db.js** is a revolutionary document database that transforms AWS S3 into a fully functional database using S3's metadata capabilities. Instead of traditional storage methods, it stores document data in S3's metadata fields (up to 2KB), making it incredibly cost-effective while providing a familiar ORM-like interface.
36
+ **s3db.js** is a document database that transforms AWS S3 into a fully functional database using S3's metadata capabilities. Instead of traditional storage methods, it stores document data in S3's metadata fields (up to 2KB), making it highly cost-effective while providing a familiar ORM-like interface.
37
37
 
38
38
  **Perfect for:**
39
39
  - 🌐 **Serverless applications** - No database servers to manage
@@ -106,6 +106,18 @@
106
106
 
107
107
  ---
108
108
 
109
+ ## 📚 Documentation Quick Links
110
+
111
+ > **Core Concepts:** [Schema Validation](./docs/schema.md) • [Client API](./docs/client.md) • [Fastest Validator](./docs/fastest-validator.md)
112
+
113
+ > **Plugins:** [API Plugin](./docs/plugins/api.md) • [Identity Plugin](./docs/plugins/identity.md) • [All Plugins](#-plugins)
114
+
115
+ > **Integrations:** [MCP Server](./docs/mcp.md) • [Model Context Protocol](./docs/mcp.md)
116
+
117
+ > **Advanced:** [Performance Tuning](./docs/benchmarks/) • [Migration Guides](./docs/examples/) • [TypeScript Support](./docs/typescript/)
118
+
119
+ ---
120
+
109
121
  ## 🚀 Quick Start
110
122
 
111
123
  Get up and running in less than 5 minutes!
@@ -1271,22 +1283,77 @@ orders.useMiddleware('updated', async (ctx, next) => {
1271
1283
 
1272
1284
  ## 🔌 Plugins
1273
1285
 
1274
- Extend s3db.js with powerful plugins for caching, monitoring, replication, relationships, and more.
1286
+ > **Quick Jump:** [🌐 API](#-api) | [🔐 Identity](#-identity) | [⚡ Performance](#-performance) | [📊 Data](#-data) | [🔧 DevOps](#-devops) | [🤖 ML/AI](#-mlai)
1287
+
1288
+ Extend s3db.js with powerful plugins. All plugins are optional and can be installed independently.
1289
+
1290
+ ### 🌐 API & Auth
1291
+
1292
+ [**APIPlugin**](./docs/plugins/api.md) • [**IdentityPlugin**](./docs/plugins/identity.md)
1293
+
1294
+ **APIPlugin** - Transform s3db.js into production-ready REST API with OpenAPI, multi-auth (JWT/OIDC/Basic/API Key), rate limiting, and template engines.
1295
+
1296
+ **IdentityPlugin** - Complete OAuth2/OIDC server with MFA, whitelabel UI, and enterprise SSO.
1297
+
1298
+ ### ⚡ Performance
1299
+
1300
+ [**CachePlugin**](./docs/plugins/cache.md) • [**TTLPlugin**](./docs/plugins/ttl.md) • [**EventualConsistencyPlugin**](./docs/plugins/eventual-consistency.md) • [**MetricsPlugin**](./docs/plugins/metrics.md)
1301
+
1302
+ **CachePlugin** - Memory/S3/filesystem caching with compression and automatic invalidation.
1303
+
1304
+ **TTLPlugin** - Auto-cleanup expired records with O(1) partition-based deletion.
1305
+
1306
+ **EventualConsistencyPlugin** - Eventually consistent counters and high-performance analytics.
1307
+
1308
+ **MetricsPlugin** - Performance monitoring with Prometheus export.
1309
+
1310
+ ### 📊 Data & Replication
1311
+
1312
+ [**ReplicatorPlugin**](./docs/plugins/replicator.md) • [**ImporterPlugin**](./docs/plugins/importer.md) • [**BackupPlugin**](./docs/plugins/backup.md) • [**AuditPlugin**](./docs/plugins/audit.md)
1313
+
1314
+ **ReplicatorPlugin** - Real-time replication to BigQuery, PostgreSQL, MySQL, Turso, PlanetScale, and SQS.
1315
+
1316
+ **ImporterPlugin** - Multi-format data import (JSON, CSV, bulk migrations).
1317
+
1318
+ **BackupPlugin** - Multi-destination backup system for disaster recovery.
1319
+
1320
+ **AuditPlugin** - Complete audit trail for compliance and security.
1321
+
1322
+ ### 🔧 DevOps & Automation
1323
+
1324
+ [**QueueConsumerPlugin**](./docs/plugins/queue-consumer.md) • [**SchedulerPlugin**](./docs/plugins/scheduler.md) • [**TfstatePlugin**](./docs/plugins/tfstate.md) • [**CloudInventoryPlugin**](./docs/plugins/cloud-inventory.md) • [**CostsPlugin**](./docs/plugins/costs.md)
1325
+
1326
+ **QueueConsumerPlugin** - Process RabbitMQ/SQS messages for event-driven architectures.
1327
+
1328
+ **SchedulerPlugin** - Cron-based job scheduling for maintenance tasks.
1329
+
1330
+ **TfstatePlugin** - Track Terraform infrastructure changes and drift detection.
1331
+
1332
+ **CloudInventoryPlugin** - Multi-cloud inventory with versioning and diff tracking.
1333
+
1334
+ **CostsPlugin** - AWS cost tracking and optimization insights.
1335
+
1336
+ ### 🤖 ML/AI & Advanced Features
1337
+
1338
+ [**MLPlugin**](./docs/plugins/ml-plugin.md) • [**VectorPlugin**](./docs/plugins/vector.md) • [**FullTextPlugin**](./docs/plugins/fulltext.md) • [**GeoPlugin**](./docs/plugins/geo.md)
1339
+
1340
+ **MLPlugin** - Machine learning model management and inference pipelines.
1341
+
1342
+ **VectorPlugin** - Vector similarity search (cosine, euclidean) for RAG and ML applications.
1343
+
1344
+ **FullTextPlugin** - Full-text search with tokenization and indexing.
1345
+
1346
+ **GeoPlugin** - Geospatial queries and distance calculations.
1347
+
1348
+ ### 🔗 Other Plugins
1349
+
1350
+ [**RelationPlugin**](./docs/plugins/relation.md) • [**StateMachinePlugin**](./docs/plugins/state-machine.md) • [**S3QueuePlugin**](./docs/plugins/s3-queue.md)
1351
+
1352
+ **RelationPlugin** - ORM-like relationships with join optimization (10-100x faster queries).
1275
1353
 
1276
- ### Available Plugins
1354
+ **StateMachinePlugin** - Finite state machine workflows for business processes.
1277
1355
 
1278
- | Plugin | Description | Dependencies |
1279
- |--------|-------------|--------------|
1280
- | [**CachePlugin**](./docs/plugins/cache.md) | Memory/S3/filesystem caching with compression | None |
1281
- | [**CostsPlugin**](./docs/plugins/costs.md) | AWS cost tracking and optimization | None |
1282
- | [**MetricsPlugin**](./docs/plugins/metrics.md) | Performance monitoring and Prometheus export | None |
1283
- | [**AuditPlugin**](./docs/plugins/audit.md) | Complete audit trail for all operations | None |
1284
- | [**TTLPlugin**](./docs/plugins/ttl.md) | Auto-cleanup expired records (O(1) partition-based) | None |
1285
- | [**RelationPlugin**](./docs/plugins/relation.md) | ORM-like relationships (10-100x faster queries) | None |
1286
- | [**ReplicatorPlugin**](./docs/plugins/replicator.md) | Real-time replication to BigQuery, PostgreSQL, SQS | `pg`, `@google-cloud/bigquery`, `@aws-sdk/client-sqs` |
1287
- | [**FullTextPlugin**](./docs/plugins/fulltext.md) | Full-text search with indexing | None |
1288
- | [**EventualConsistencyPlugin**](./docs/plugins/eventual-consistency.md) | Eventually consistent counters and analytics | None |
1289
- | [**GeoPlugin**](./docs/plugins/geo.md) | Geospatial queries and distance calculations | None |
1356
+ **S3QueuePlugin** - Distributed queue with zero race conditions using S3.
1290
1357
 
1291
1358
  ### Plugin Installation
1292
1359
 
@@ -1295,9 +1362,12 @@ Extend s3db.js with powerful plugins for caching, monitoring, replication, relat
1295
1362
  # Included in s3db.js package
1296
1363
 
1297
1364
  # External dependencies (install only what you need)
1298
- pnpm add pg # PostgreSQL replication
1299
- pnpm add @google-cloud/bigquery # BigQuery replication
1300
- pnpm add @aws-sdk/client-sqs # SQS replication/consumption
1365
+ pnpm add pg # PostgreSQL replication (ReplicatorPlugin)
1366
+ pnpm add @google-cloud/bigquery # BigQuery replication (ReplicatorPlugin)
1367
+ pnpm add @aws-sdk/client-sqs # SQS replication/consumption (ReplicatorPlugin, QueueConsumerPlugin)
1368
+ pnpm add amqplib # RabbitMQ consumption (QueueConsumerPlugin)
1369
+ pnpm add node-cron # Job scheduling (SchedulerPlugin, TfstatePlugin)
1370
+ pnpm add ejs # Template engine (APIPlugin - optional)
1301
1371
  ```
1302
1372
 
1303
1373
  ### Quick Example