@digitaldefiance/node-express-suite 3.12.16 → 3.13.0

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 (53) hide show
  1. package/package.json +2 -1
  2. package/src/application-base.d.ts +50 -47
  3. package/src/application-base.d.ts.map +1 -1
  4. package/src/application-base.js +180 -229
  5. package/src/application-base.js.map +1 -1
  6. package/src/application.d.ts +2 -1
  7. package/src/application.d.ts.map +1 -1
  8. package/src/application.js +8 -4
  9. package/src/application.js.map +1 -1
  10. package/src/index.d.ts +1 -0
  11. package/src/index.d.ts.map +1 -1
  12. package/src/index.js +3 -1
  13. package/src/index.js.map +1 -1
  14. package/src/interfaces/document-store.d.ts +38 -0
  15. package/src/interfaces/document-store.d.ts.map +1 -0
  16. package/src/interfaces/document-store.js +8 -0
  17. package/src/interfaces/document-store.js.map +1 -0
  18. package/src/interfaces/failable-result.d.ts +2 -15
  19. package/src/interfaces/failable-result.d.ts.map +1 -1
  20. package/src/interfaces/failable-result.js +0 -5
  21. package/src/interfaces/failable-result.js.map +1 -1
  22. package/src/interfaces/index.d.ts +1 -0
  23. package/src/interfaces/index.d.ts.map +1 -1
  24. package/src/interfaces/index.js +1 -0
  25. package/src/interfaces/index.js.map +1 -1
  26. package/src/services/index.d.ts +4 -0
  27. package/src/services/index.d.ts.map +1 -1
  28. package/src/services/index.js +4 -0
  29. package/src/services/index.js.map +1 -1
  30. package/src/services/mongoose-collection.d.ts +52 -0
  31. package/src/services/mongoose-collection.d.ts.map +1 -0
  32. package/src/services/mongoose-collection.js +326 -0
  33. package/src/services/mongoose-collection.js.map +1 -0
  34. package/src/services/mongoose-database.d.ts +64 -0
  35. package/src/services/mongoose-database.d.ts.map +1 -0
  36. package/src/services/mongoose-database.js +121 -0
  37. package/src/services/mongoose-database.js.map +1 -0
  38. package/src/services/mongoose-document-store.d.ts +109 -0
  39. package/src/services/mongoose-document-store.d.ts.map +1 -0
  40. package/src/services/mongoose-document-store.js +264 -0
  41. package/src/services/mongoose-document-store.js.map +1 -0
  42. package/src/services/mongoose-session-adapter.d.ts +39 -0
  43. package/src/services/mongoose-session-adapter.d.ts.map +1 -0
  44. package/src/services/mongoose-session-adapter.js +63 -0
  45. package/src/services/mongoose-session-adapter.js.map +1 -0
  46. package/src/utils/default-mongo-uri-validator.d.ts +15 -0
  47. package/src/utils/default-mongo-uri-validator.d.ts.map +1 -0
  48. package/src/utils/default-mongo-uri-validator.js +46 -0
  49. package/src/utils/default-mongo-uri-validator.js.map +1 -0
  50. package/src/utils.d.ts +21 -2
  51. package/src/utils.d.ts.map +1 -1
  52. package/src/utils.js +124 -49
  53. package/src/utils.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitaldefiance/node-express-suite",
3
- "version": "3.12.16",
3
+ "version": "3.13.0",
4
4
  "homepage": "https://github.com/Digital-Defiance/node-express-suite",
5
5
  "repository": {
6
6
  "type": "git",
@@ -38,6 +38,7 @@
38
38
  "publish:public": "npm publish --access public"
39
39
  },
40
40
  "dependencies": {
41
+ "@brightchain/brightchain-lib": "file:../../../BrightChain/dist/brightchain-lib",
41
42
  "@digitaldefiance/ecies-lib": "4.18.0",
42
43
  "@digitaldefiance/i18n-lib": "4.5.0",
43
44
  "@digitaldefiance/mongoose-types": "8.20.9",
@@ -1,47 +1,55 @@
1
1
  /**
2
2
  * @fileoverview Base application class with core functionality.
3
- * Provides database connection, schema management, and plugin support.
3
+ * Delegates database operations to an IDatabase instance (or legacy IDocumentStore).
4
4
  * @module application-base
5
5
  */
6
- import mongoose, { Model } from '@digitaldefiance/mongoose-types';
6
+ import type { BsonDocument, ICollection, IDatabase, IDatabaseLifecycleHooks } from '@brightchain/brightchain-lib';
7
+ import { Model } from '@digitaldefiance/mongoose-types';
8
+ import mongoose from '@digitaldefiance/mongoose-types';
7
9
  import { MongoMemoryReplSet } from 'mongodb-memory-server';
8
10
  import { ServiceContainer } from './container';
9
11
  import { IBaseDocument } from './documents/base';
10
12
  import { Environment } from './environment';
11
13
  import { IApplication } from './interfaces/application';
12
14
  import { IConstants } from './interfaces/constants';
13
- import { IFailableResult } from './interfaces/failable-result';
15
+ import { IDocumentStore } from './interfaces/document-store';
14
16
  import { PluginManager } from './plugins';
15
17
  import { SchemaMap } from './types';
16
18
  import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
17
19
  /**
18
- * Base Application class with core functionality
20
+ * Base Application class with core functionality.
21
+ * Accepts an IDatabase (preferred) or legacy IDocumentStore for backward compatibility.
22
+ * When an IDatabase is provided, database lifecycle is managed through the IDatabase contract.
23
+ * When a legacy IDocumentStore is provided, it is used directly for backward compatibility.
19
24
  */
20
25
  export declare class BaseApplication<TID extends PlatformID, TModelDocs extends Record<string, IBaseDocument<any, TID>>, TInitResults, TConstants extends IConstants = IConstants> implements IApplication<TID> {
21
26
  /**
22
27
  * Application environment
23
28
  */
24
29
  private _environment;
25
- /**
26
- * In-memory MongoDB instance for development
27
- */
28
- private _devDatabase?;
29
30
  /**
30
31
  * Constants for the application
31
32
  */
32
33
  private _constants;
33
34
  /**
34
- * Function to create the schema map given a Mongoose connection
35
+ * The IDatabase instance for storage-agnostic database operations.
36
+ * Set when an IDatabase is passed to the constructor.
35
37
  */
36
- private readonly _schemaMapFactory;
38
+ protected readonly _database: IDatabase | undefined;
37
39
  /**
38
- * Function to initialize the database with default data
40
+ * The injected document store handling all database operations.
41
+ * Set when a legacy IDocumentStore is passed to the constructor.
42
+ * @deprecated Prefer _database (IDatabase) for new code.
39
43
  */
40
- private readonly _databaseInitFunction;
44
+ protected readonly _documentStore: IDocumentStore<TID, TModelDocs> | undefined;
41
45
  /**
42
- * Function to create a hash from the database initialization results (for logging purposes)
46
+ * Optional lifecycle hooks for database initialization on the IDatabase path.
43
47
  */
44
- private readonly _initResultHashFunction;
48
+ protected readonly _lifecycleHooks: IDatabaseLifecycleHooks<TInitResults> | undefined;
49
+ /**
50
+ * Whether setupDevStore was invoked during start() (for teardown on stop).
51
+ */
52
+ protected _devStoreProvisioned: boolean;
45
53
  /**
46
54
  * Get the application environment
47
55
  */
@@ -56,13 +64,9 @@ export declare class BaseApplication<TID extends PlatformID, TModelDocs extends
56
64
  */
57
65
  static get distDir(): string;
58
66
  /**
59
- * Mongoose database instance
60
- */
61
- protected _db?: typeof mongoose;
62
- /**
63
- * Schema map for all models
67
+ * Schema map for all models, delegated to the document store.
68
+ * Only available when a legacy IDocumentStore is used.
64
69
  */
65
- protected _schemaMap: SchemaMap<TID, TModelDocs> | undefined;
66
70
  get schemaMap(): SchemaMap<TID, TModelDocs>;
67
71
  /**
68
72
  * Flag indicating whether the application is ready to handle requests
@@ -77,51 +81,50 @@ export declare class BaseApplication<TID extends PlatformID, TModelDocs extends
77
81
  */
78
82
  readonly plugins: PluginManager<TID>;
79
83
  /**
80
- * Get the connected MongoDB database instance
84
+ * Get the connected MongoDB database instance.
85
+ * @deprecated Use database (IDatabase) or documentStore instead for storage-agnostic access.
81
86
  */
82
87
  get db(): typeof mongoose;
83
88
  /**
84
- * Get whether the application is ready to handle requests
85
- */
86
- get ready(): boolean;
87
- constructor(environment: Environment<TID>, schemaMapFactory: (connection: mongoose.Connection) => SchemaMap<TID, TModelDocs>, databaseInitFunction: (application: BaseApplication<TID, TModelDocs, TInitResults>) => Promise<IFailableResult<TInitResults>>, initResultHashFunction: (initResults: TInitResults) => string, constants?: TConstants);
88
- /**
89
- * Validate MongoDB URI to prevent SSRF attacks
89
+ * Get the IDatabase instance, if one was provided.
90
90
  */
91
- private validateMongoUri;
91
+ get database(): IDatabase | undefined;
92
92
  /**
93
- * Connect to MongoDB and initialize schemas
93
+ * Get the injected document store.
94
+ * @deprecated Prefer database (IDatabase) for new code.
94
95
  */
95
- protected connectDatabase(mongoUri: string, debug?: boolean): Promise<void>;
96
+ get documentStore(): IDocumentStore<TID, TModelDocs> | undefined;
96
97
  /**
97
- * Disconnect from database
98
+ * Get the in-memory MongoDB instance (if any), delegated to the document store.
99
+ * Only available when a legacy IDocumentStore is used.
98
100
  */
99
- protected disconnectDatabase(debug?: boolean): Promise<void>;
100
- /**
101
- * Set up an in-memory MongoDB instance for development
102
- * @returns The MongoDB connection URI
103
- */
104
- protected setupDevDatabase(): Promise<string>;
105
- /**
106
- * Initialize the development database with default data
107
- */
108
- protected initializeDevDatabase(): Promise<TInitResults>;
101
+ get devDatabase(): MongoMemoryReplSet | undefined;
109
102
  /**
110
- * Get the in-memory MongoDB instance (if any)
103
+ * Get whether the application is ready to handle requests
111
104
  */
112
- get devDatabase(): MongoMemoryReplSet | undefined;
105
+ get ready(): boolean;
106
+ constructor(environment: Environment<TID>, databaseOrStore: IDatabase | IDocumentStore<TID, TModelDocs>, constants?: TConstants, lifecycleHooks?: IDatabaseLifecycleHooks<TInitResults>);
113
107
  /**
114
- * Start the application and connect to the database
108
+ * Start the application and connect to the database.
109
+ * Delegates connection to IDatabase or legacy IDocumentStore.
115
110
  */
116
111
  start(mongoUri?: string, delayReady?: boolean): Promise<void>;
117
112
  /**
118
- * Stop the application
113
+ * Stop the application.
114
+ * Delegates disconnection to IDatabase or legacy IDocumentStore.
119
115
  */
120
116
  stop(): Promise<void>;
121
117
  /**
122
- * Get a Mongoose model by name
118
+ * Get a collection by name via the IDatabase interface.
119
+ * @param name Name of the collection
120
+ * @returns ICollection<T> for the named collection
121
+ * @throws if no IDatabase was provided
122
+ */
123
+ getCollection<T extends BsonDocument>(name: string): ICollection<T>;
124
+ /**
125
+ * Get a model by name, delegated to the legacy document store.
126
+ * @deprecated Use getCollection<T>(name) with IDatabase instead.
123
127
  * @param modelName Name of the model
124
- * @returns
125
128
  */
126
129
  getModel<T extends IBaseDocument<any, TID>>(modelName: string): Model<T>;
127
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"application-base.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/application-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application-base.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-express-suite/src/application-base.ts"],"names":[],"mappings":"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"}