@brightchain/brightchain-api-lib 0.18.2 → 0.21.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 (160) hide show
  1. package/package.json +8 -3
  2. package/src/index.d.ts +0 -1
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +0 -1
  5. package/src/index.js.map +1 -1
  6. package/src/lib/application.d.ts +12 -3
  7. package/src/lib/application.d.ts.map +1 -1
  8. package/src/lib/application.js +153 -7
  9. package/src/lib/application.js.map +1 -1
  10. package/src/lib/availability/gossipService.d.ts +59 -1
  11. package/src/lib/availability/gossipService.d.ts.map +1 -1
  12. package/src/lib/availability/gossipService.js +125 -1
  13. package/src/lib/availability/gossipService.js.map +1 -1
  14. package/src/lib/availability/index.d.ts +1 -0
  15. package/src/lib/availability/index.d.ts.map +1 -1
  16. package/src/lib/availability/index.js +1 -0
  17. package/src/lib/availability/index.js.map +1 -1
  18. package/src/lib/availability/quorumGossipHandler.d.ts +126 -0
  19. package/src/lib/availability/quorumGossipHandler.d.ts.map +1 -0
  20. package/src/lib/availability/quorumGossipHandler.js +246 -0
  21. package/src/lib/availability/quorumGossipHandler.js.map +1 -0
  22. package/src/lib/constants.d.ts.map +1 -1
  23. package/src/lib/constants.js +4 -0
  24. package/src/lib/constants.js.map +1 -1
  25. package/src/lib/controllers/api/quorum.d.ts +110 -2
  26. package/src/lib/controllers/api/quorum.d.ts.map +1 -1
  27. package/src/lib/controllers/api/quorum.js +389 -0
  28. package/src/lib/controllers/api/quorum.js.map +1 -1
  29. package/src/lib/controllers/api/user.d.ts +12 -15
  30. package/src/lib/controllers/api/user.d.ts.map +1 -1
  31. package/src/lib/controllers/api/user.js +312 -94
  32. package/src/lib/controllers/api/user.js.map +1 -1
  33. package/src/lib/databaseInit.d.ts +3 -2
  34. package/src/lib/databaseInit.d.ts.map +1 -1
  35. package/src/lib/databaseInit.js +24 -12
  36. package/src/lib/databaseInit.js.map +1 -1
  37. package/src/lib/datastore/index.d.ts +0 -1
  38. package/src/lib/datastore/index.d.ts.map +1 -1
  39. package/src/lib/datastore/index.js +0 -1
  40. package/src/lib/datastore/index.js.map +1 -1
  41. package/src/lib/environment.d.ts +6 -0
  42. package/src/lib/environment.d.ts.map +1 -1
  43. package/src/lib/environment.js +14 -0
  44. package/src/lib/environment.js.map +1 -1
  45. package/src/lib/hydration/energyAccountHydration.d.ts +17 -0
  46. package/src/lib/hydration/energyAccountHydration.d.ts.map +1 -0
  47. package/src/lib/hydration/energyAccountHydration.js +24 -0
  48. package/src/lib/hydration/energyAccountHydration.js.map +1 -0
  49. package/src/lib/hydration/index.d.ts +13 -0
  50. package/src/lib/hydration/index.d.ts.map +1 -0
  51. package/src/lib/hydration/index.js +21 -0
  52. package/src/lib/hydration/index.js.map +1 -0
  53. package/src/lib/hydration/rbacHydration.d.ts +28 -0
  54. package/src/lib/hydration/rbacHydration.d.ts.map +1 -0
  55. package/src/lib/hydration/rbacHydration.js +56 -0
  56. package/src/lib/hydration/rbacHydration.js.map +1 -0
  57. package/src/lib/interfaces/environment.d.ts +7 -1
  58. package/src/lib/interfaces/environment.d.ts.map +1 -1
  59. package/src/lib/interfaces/responses/api-backup-codes-response.d.ts +1 -1
  60. package/src/lib/interfaces/responses/api-code-count-response.d.ts +1 -1
  61. package/src/lib/interfaces/responses/api-password-change-response.d.ts +9 -0
  62. package/src/lib/interfaces/responses/api-password-change-response.d.ts.map +1 -0
  63. package/src/lib/interfaces/responses/api-password-change-response.js +3 -0
  64. package/src/lib/interfaces/responses/api-password-change-response.js.map +1 -0
  65. package/src/lib/interfaces/responses/api-recovery-response.d.ts +9 -0
  66. package/src/lib/interfaces/responses/api-recovery-response.d.ts.map +1 -0
  67. package/src/lib/interfaces/responses/api-recovery-response.js +3 -0
  68. package/src/lib/interfaces/responses/api-recovery-response.js.map +1 -0
  69. package/src/lib/interfaces/responses/index.d.ts +2 -0
  70. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  71. package/src/lib/interfaces/storage/client-session.d.ts +1 -1
  72. package/src/lib/interfaces/storage/client-session.d.ts.map +1 -1
  73. package/src/lib/interfaces/storage/collection.d.ts +1 -1
  74. package/src/lib/interfaces/storage/collection.d.ts.map +1 -1
  75. package/src/lib/interfaces/storage/database-lifecycle-hooks.d.ts +1 -1
  76. package/src/lib/interfaces/storage/database-lifecycle-hooks.d.ts.map +1 -1
  77. package/src/lib/interfaces/storage/database.d.ts +1 -1
  78. package/src/lib/interfaces/storage/database.d.ts.map +1 -1
  79. package/src/lib/interfaces/storage/document-types.d.ts +1 -1
  80. package/src/lib/interfaces/storage/document-types.d.ts.map +1 -1
  81. package/src/lib/interfaces/storage/index.d.ts +1 -0
  82. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  83. package/src/lib/interfaces/storage/index.js.map +1 -1
  84. package/src/lib/interfaces/storage/storedDocumentTypes.d.ts +73 -0
  85. package/src/lib/interfaces/storage/storedDocumentTypes.d.ts.map +1 -0
  86. package/src/lib/interfaces/storage/storedDocumentTypes.js +15 -0
  87. package/src/lib/interfaces/storage/storedDocumentTypes.js.map +1 -0
  88. package/src/lib/plugins/brightchain-database-plugin.d.ts +31 -21
  89. package/src/lib/plugins/brightchain-database-plugin.d.ts.map +1 -1
  90. package/src/lib/plugins/brightchain-database-plugin.js +103 -53
  91. package/src/lib/plugins/brightchain-database-plugin.js.map +1 -1
  92. package/src/lib/plugins/configure-brightchain-app.d.ts.map +1 -1
  93. package/src/lib/plugins/configure-brightchain-app.js +5 -0
  94. package/src/lib/plugins/configure-brightchain-app.js.map +1 -1
  95. package/src/lib/services/auth.d.ts +6 -2
  96. package/src/lib/services/auth.d.ts.map +1 -1
  97. package/src/lib/services/auth.js +43 -7
  98. package/src/lib/services/auth.js.map +1 -1
  99. package/src/lib/services/backupCodeService.d.ts +35 -0
  100. package/src/lib/services/backupCodeService.d.ts.map +1 -0
  101. package/src/lib/services/backupCodeService.js +109 -0
  102. package/src/lib/services/backupCodeService.js.map +1 -0
  103. package/src/lib/services/brightchain-authentication-provider.d.ts.map +1 -1
  104. package/src/lib/services/brightchain-authentication-provider.js +28 -9
  105. package/src/lib/services/brightchain-authentication-provider.js.map +1 -1
  106. package/src/lib/services/brightchain-member-init.service.d.ts +39 -20
  107. package/src/lib/services/brightchain-member-init.service.d.ts.map +1 -1
  108. package/src/lib/services/brightchain-member-init.service.js +139 -53
  109. package/src/lib/services/brightchain-member-init.service.js.map +1 -1
  110. package/src/lib/services/cliOperatorPrompt.d.ts +81 -0
  111. package/src/lib/services/cliOperatorPrompt.d.ts.map +1 -0
  112. package/src/lib/services/cliOperatorPrompt.js +177 -0
  113. package/src/lib/services/cliOperatorPrompt.js.map +1 -0
  114. package/src/lib/services/contentAwareBlocksService.d.ts +92 -0
  115. package/src/lib/services/contentAwareBlocksService.d.ts.map +1 -0
  116. package/src/lib/services/contentAwareBlocksService.js +102 -0
  117. package/src/lib/services/contentAwareBlocksService.js.map +1 -0
  118. package/src/lib/services/contentIngestionService.d.ts +68 -0
  119. package/src/lib/services/contentIngestionService.d.ts.map +1 -0
  120. package/src/lib/services/contentIngestionService.js +139 -0
  121. package/src/lib/services/contentIngestionService.js.map +1 -0
  122. package/src/lib/services/identityExpirationScheduler.d.ts +77 -0
  123. package/src/lib/services/identityExpirationScheduler.d.ts.map +1 -0
  124. package/src/lib/services/identityExpirationScheduler.js +157 -0
  125. package/src/lib/services/identityExpirationScheduler.js.map +1 -0
  126. package/src/lib/services/index.d.ts +7 -0
  127. package/src/lib/services/index.d.ts.map +1 -1
  128. package/src/lib/services/index.js +7 -0
  129. package/src/lib/services/index.js.map +1 -1
  130. package/src/lib/services/quorumDatabaseAdapter.d.ts +60 -0
  131. package/src/lib/services/quorumDatabaseAdapter.d.ts.map +1 -0
  132. package/src/lib/services/quorumDatabaseAdapter.js +652 -0
  133. package/src/lib/services/quorumDatabaseAdapter.js.map +1 -0
  134. package/src/lib/services/secureKeyStorage.js +3 -3
  135. package/src/lib/services/secureKeyStorage.js.map +1 -1
  136. package/src/lib/services/sessionAdapter.d.ts +62 -0
  137. package/src/lib/services/sessionAdapter.d.ts.map +1 -0
  138. package/src/lib/services/sessionAdapter.js +105 -0
  139. package/src/lib/services/sessionAdapter.js.map +1 -0
  140. package/src/lib/utils/rehydration.d.ts +31 -0
  141. package/src/lib/utils/rehydration.d.ts.map +1 -0
  142. package/src/lib/utils/rehydration.js +111 -0
  143. package/src/lib/utils/rehydration.js.map +1 -0
  144. package/src/lib/utils/serialization.d.ts +21 -0
  145. package/src/lib/utils/serialization.d.ts.map +1 -0
  146. package/src/lib/utils/serialization.js +41 -0
  147. package/src/lib/utils/serialization.js.map +1 -0
  148. package/src/lib/validation/userValidation.d.ts +17 -0
  149. package/src/lib/validation/userValidation.d.ts.map +1 -1
  150. package/src/lib/validation/userValidation.js +77 -0
  151. package/src/lib/validation/userValidation.js.map +1 -1
  152. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.d.ts +0 -24
  153. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.d.ts.map +0 -1
  154. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.js +0 -53
  155. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.js.map +0 -1
  156. package/src/lib/datastore/document-model-adapter.d.ts +0 -48
  157. package/src/lib/datastore/document-model-adapter.d.ts.map +0 -1
  158. package/src/lib/datastore/document-model-adapter.js +0 -178
  159. package/src/lib/datastore/document-model-adapter.js.map +0 -1
  160. /package/{brightchain-api-lib/README.md → README.md} +0 -0
package/package.json CHANGED
@@ -1,15 +1,20 @@
1
1
  {
2
2
  "name": "@brightchain/brightchain-api-lib",
3
- "version": "0.18.2",
3
+ "version": "0.21.0",
4
4
  "main": "./src/index.js",
5
5
  "types": "./src/index.d.ts",
6
+ "files": [
7
+ "src",
8
+ "README.md"
9
+ ],
6
10
  "dependencies": {
7
11
  "@aws-sdk/client-ses": "^3.859.0",
8
- "@brightchain/brightchain-lib": "0.18.0",
12
+ "@brightchain/brightchain-lib": "^0.21.0",
9
13
  "@digitaldefiance/branded-enum": "^0.0.7",
14
+ "@digitaldefiance/ecies-lib": "^4.19.6",
10
15
  "@digitaldefiance/enclave-bridge-client": "^1.1.0",
11
16
  "@digitaldefiance/i18n-lib": "^4.6.4",
12
- "@digitaldefiance/node-ecies-lib": "^4.19.6",
17
+ "@digitaldefiance/node-ecies-lib": "^4.19.7",
13
18
  "@ethereumjs/wallet": "^10.0.0",
14
19
  "bip39": "^3.1.0",
15
20
  "buffer": "^6.0.3",
package/src/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export * from './lib/stores';
2
2
  export * from './lib/transforms';
3
3
  export * from './lib/services';
4
- export * from './lib/adapters/brightChainDbDocumentStoreAdapter';
5
4
  export * from './lib/databaseInit';
6
5
  export * from './lib/appConstants';
7
6
  export * from './lib/application';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,kDAAkD,CAAC;AACjE,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAKjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAG9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,iCAAiC,CAAC;AAEhD,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,MAAM,oBAAoB,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AAGpC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAKjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAG9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,iCAAiC,CAAC;AAEhD,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,MAAM,oBAAoB,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AAGpC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC"}
package/src/index.js CHANGED
@@ -7,7 +7,6 @@ tslib_1.__exportStar(require("./lib/transforms"), exports);
7
7
  // Export Node.js specific services
8
8
  tslib_1.__exportStar(require("./lib/services"), exports);
9
9
  // Database initialization
10
- tslib_1.__exportStar(require("./lib/adapters/brightChainDbDocumentStoreAdapter"), exports);
11
10
  tslib_1.__exportStar(require("./lib/databaseInit"), exports);
12
11
  // API lib exports
13
12
  tslib_1.__exportStar(require("./lib/appConstants"), exports);
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,uDAA6B;AAC7B,2DAAiC;AAEjC,mCAAmC;AACnC,yDAA+B;AAE/B,0BAA0B;AAC1B,2FAAiE;AACjE,6DAAmC;AAEnC,kBAAkB;AAClB,6DAAmC;AACnC,4DAAkC;AAClC,0DAAgC;AAChC,4DAAkC;AAClC,6GAA6G;AAC7G,6DAAmC;AACnC,4DAAkC;AAClC,uDAA6B;AAC7B,2DAAiC;AACjC,iGAAiG;AACjG,+EAA+E;AAC/E,gFAAgF;AAEhF,0DAAgC;AAChC,2DAAiC;AACjC,4DAAkC;AAClC,wDAA8B;AAC9B,oGAAoG;AACpG,kFAAkF;AAClF,6DAAmC;AACnC,2DAAiC;AACjC,oEAA0C;AAC1C,sEAA4C;AAE5C,uBAAuB;AACvB,0EAAgD;AAQhD,eAAe;AACf,qDAA2B;AAE3B,qBAAqB;AACrB,2DAAiC;AAEjC,kBAAkB;AAClB,+DAAqC;AACrC,4DAAkC;AAClC,qEAA2C;AAC3C,8DAAoC;AAEpC,sBAAsB;AACtB,oFAA0D;AAC1D,kFAAwD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,uDAA6B;AAC7B,2DAAiC;AAEjC,mCAAmC;AACnC,yDAA+B;AAE/B,0BAA0B;AAC1B,6DAAmC;AAEnC,kBAAkB;AAClB,6DAAmC;AACnC,4DAAkC;AAClC,0DAAgC;AAChC,4DAAkC;AAClC,6GAA6G;AAC7G,6DAAmC;AACnC,4DAAkC;AAClC,uDAA6B;AAC7B,2DAAiC;AACjC,iGAAiG;AACjG,+EAA+E;AAC/E,gFAAgF;AAEhF,0DAAgC;AAChC,2DAAiC;AACjC,4DAAkC;AAClC,wDAA8B;AAC9B,oGAAoG;AACpG,kFAAkF;AAClF,6DAAmC;AACnC,2DAAiC;AACjC,oEAA0C;AAC1C,sEAA4C;AAE5C,uBAAuB;AACvB,0EAAgD;AAQhD,eAAe;AACf,qDAA2B;AAE3B,qBAAqB;AACrB,2DAAiC;AAEjC,kBAAkB;AAClB,+DAAqC;AACrC,4DAAkC;AAClC,qEAA2C;AAC3C,8DAAoC;AAEpC,sBAAsB;AACtB,oFAA0D;AAC1D,kFAAwD"}
@@ -35,6 +35,11 @@ export declare class App<TID extends PlatformID> extends UpstreamApplication<TID
35
35
  private clientWsServer;
36
36
  private messagePassingService;
37
37
  private upnpManager;
38
+ private quorumDbAdapter;
39
+ private quorumStateMachine;
40
+ private identityExpirationScheduler;
41
+ private quorumGossipHandler;
42
+ private contentAwareBlocksService;
38
43
  /**
39
44
  * Captured HTTP server reference for WebSocket attachment.
40
45
  * The upstream Application stores the server as a private field,
@@ -49,9 +54,13 @@ export declare class App<TID extends PlatformID> extends UpstreamApplication<TID
49
54
  */
50
55
  get db(): DocumentStore;
51
56
  /**
52
- * Get a collection from the BrightChain document store by name.
53
- * Overrides the upstream Mongoose-specific `getModel()` to delegate
54
- * to the BlockDocumentStore's collection() method.
57
+ * Get a model or collection from the BrightChain document store by name.
58
+ *
59
+ * If a typed Model has been registered on the BrightChainDb instance
60
+ * (via `db.model()`), returns that Model — giving callers automatic
61
+ * hydration/dehydration. Otherwise falls back to a raw DocumentCollection.
62
+ *
63
+ * Overrides the upstream Mongoose-specific `getModel()`.
55
64
  */
56
65
  getModel<U extends DocumentRecord>(modelName: string): DocumentCollection<U>;
57
66
  start(mongoUri?: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.App = void 0;
4
4
  const brightchain_lib_1 = require("@brightchain/brightchain-lib");
5
+ const db_1 = require("@brightchain/db");
5
6
  const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
6
7
  const appConstants_1 = require("./appConstants");
8
+ const quorumGossipHandler_1 = require("./availability/quorumGossipHandler");
7
9
  const block_document_store_factory_1 = require("./datastore/block-document-store-factory");
8
10
  const middlewares_1 = require("./middlewares");
9
11
  const configure_brightchain_app_1 = require("./plugins/configure-brightchain-app");
@@ -46,6 +48,12 @@ class App extends node_express_suite_1.Application {
46
48
  this.clientWsServer = null;
47
49
  this.messagePassingService = null;
48
50
  this.upnpManager = null;
51
+ // ── Quorum subsystem ──────────────────────────────────────────────
52
+ this.quorumDbAdapter = null;
53
+ this.quorumStateMachine = null;
54
+ this.identityExpirationScheduler = null;
55
+ this.quorumGossipHandler = null;
56
+ this.contentAwareBlocksService = null;
49
57
  /**
50
58
  * Captured HTTP server reference for WebSocket attachment.
51
59
  * The upstream Application stores the server as a private field,
@@ -70,12 +78,30 @@ class App extends node_express_suite_1.Application {
70
78
  return this._brightchainDocumentStore;
71
79
  }
72
80
  /**
73
- * Get a collection from the BrightChain document store by name.
74
- * Overrides the upstream Mongoose-specific `getModel()` to delegate
75
- * to the BlockDocumentStore's collection() method.
81
+ * Get a model or collection from the BrightChain document store by name.
82
+ *
83
+ * If a typed Model has been registered on the BrightChainDb instance
84
+ * (via `db.model()`), returns that Model — giving callers automatic
85
+ * hydration/dehydration. Otherwise falls back to a raw DocumentCollection.
86
+ *
87
+ * Overrides the upstream Mongoose-specific `getModel()`.
76
88
  */
77
- // @ts-expect-error — BrightChain returns DocumentCollection, not mongoose Model
89
+ // @ts-expect-error — BrightChain returns DocumentCollection | Model, not mongoose Model
78
90
  getModel(modelName) {
91
+ // Prefer a registered Model when available
92
+ try {
93
+ const db = this._plugin.brightChainDb;
94
+ if (db.hasModel(modelName)) {
95
+ // Return the Model instance — callers that know the typed shape
96
+ // can cast to Model<TStored, TTyped>. The Model also exposes
97
+ // .collection for raw access, so it's a superset of functionality.
98
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
+ return db.model(modelName);
100
+ }
101
+ }
102
+ catch {
103
+ // Plugin not connected yet — fall through to document store
104
+ }
79
105
  return this._brightchainDocumentStore.collection(modelName);
80
106
  }
81
107
  async start(mongoUri) {
@@ -98,23 +124,40 @@ class App extends node_express_suite_1.Application {
98
124
  // After super.start(), the plugin lifecycle is complete:
99
125
  // plugin.connect() → brightchainDatabaseInit()
100
126
  // plugin.init(app) → BrightChainAuthenticationProvider created
127
+ // (dev mode) initializeDevStore() → seedMembers(useMemoryStore=true)
101
128
  // Retrieve stores from the plugin instead of calling brightchainDatabaseInit() directly.
129
+ // Production-mode member seeding: when DEV_DATABASE is NOT set, the upstream
130
+ // lifecycle does not call initializeDevStore(). We seed members here with
131
+ // useMemoryStore=false so system/admin/member users are persisted to the
132
+ // disk-backed database.
133
+ if (!this.environment.devDatabase) {
134
+ const prodConfig = this._plugin.buildMemberInitConfig();
135
+ const memberResult = await this._plugin.seedMembers(prodConfig);
136
+ services_1.BrightChainMemberInitService.printBaseInitResults(memberResult.input, memberResult, prodConfig);
137
+ }
102
138
  await this.keyStorage.initializeFromEnvironment();
103
139
  const blockStore = this._plugin.blockStore;
104
- const documentStore = this._plugin.documentStore;
140
+ const brightChainDb = this._plugin.brightChainDb;
105
141
  const memberStore = this._plugin.memberStore;
106
142
  const energyStore = this._plugin.energyStore;
107
143
  const energyLedger = new brightchain_lib_1.EnergyLedger();
108
144
  const emailService = new services_1.EmailService(this);
109
- const authService = new services_1.AuthService(this, memberStore, energyStore, emailService, this.environment.jwtSecret);
145
+ const authProvider = this._plugin.authenticationProvider;
146
+ const authService = new services_1.AuthService(this, memberStore, energyStore, emailService, this.environment.jwtSecret, authProvider);
110
147
  // Register services from plugin stores and additional services
111
148
  this.services.register('blockStore', () => blockStore);
112
- this.services.register('db', () => documentStore);
149
+ this.services.register('db', () => brightChainDb);
113
150
  this.services.register('memberStore', () => memberStore);
114
151
  this.services.register('energyStore', () => energyStore);
115
152
  this.services.register('energyLedger', () => energyLedger);
116
153
  this.services.register('emailService', () => emailService);
117
154
  this.services.register('auth', () => authService);
155
+ // BackupCodeService — singleton backed by MemberStore
156
+ const backupCodeService = new services_1.BackupCodeService(memberStore);
157
+ this.services.register('backupCodeService', () => backupCodeService);
158
+ // BrightChainSessionAdapter — singleton backed by BrightChainDb
159
+ const sessionAdapter = new services_1.BrightChainSessionAdapter(brightChainDb);
160
+ this.services.register('sessionAdapter', () => sessionAdapter);
118
161
  // EventNotificationSystem for WebSocket events
119
162
  this.eventSystem = new eventNotificationSystem_1.EventNotificationSystem();
120
163
  this.services.register('eventSystem', () => this.eventSystem);
@@ -133,6 +176,85 @@ class App extends node_express_suite_1.Application {
133
176
  if (this.apiRouter) {
134
177
  this.apiRouter.setSyncEventSystem(this.eventSystem);
135
178
  }
179
+ // ── Quorum subsystem initialization ─────────────────────────────
180
+ // Task 23.1: Initialize QuorumDatabaseAdapter with pool ID "quorum-system"
181
+ try {
182
+ const quorumDb = new db_1.BrightChainDb(blockStore, {
183
+ name: 'quorum-system',
184
+ poolId: 'quorum-system',
185
+ });
186
+ this.quorumDbAdapter = new services_1.QuorumDatabaseAdapter(quorumDb);
187
+ this.services.register('quorumDbAdapter', () => this.quorumDbAdapter);
188
+ (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ ready ] Quorum database adapter initialized (pool: quorum-system)');
189
+ // Task 23.2: Initialize QuorumStateMachine with dependencies
190
+ const serviceProvider = brightchain_lib_1.ServiceProvider.getInstance();
191
+ const sealingService = serviceProvider.sealingService;
192
+ const eciesService = serviceProvider.eciesService;
193
+ // AuditLogService needs a signing member — use the system member from
194
+ // the plugin if available, otherwise defer audit log creation.
195
+ // For now, create without block store persistence (audit entries go to DB only).
196
+ const auditLogService = new brightchain_lib_1.AuditLogService(this.quorumDbAdapter,
197
+ // The signing member is set when the node operator is configured.
198
+ // At startup we pass null — appendEntry will skip signature generation.
199
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
200
+ null,
201
+ // ECIESService<TID> is runtime-compatible with ECIESService; cast needed
202
+ // because AuditLogService imports the base ECIESService type.
203
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
204
+ eciesService);
205
+ this.services.register('auditLogService', () => auditLogService);
206
+ // Create IdentitySealingPipeline for content ingestion
207
+ const identitySealingPipeline = new brightchain_lib_1.IdentitySealingPipeline(this.quorumDbAdapter, sealingService, eciesService, () => this.quorumStateMachine.getCurrentEpoch(), () => this.quorumDbAdapter.getStatuteConfig());
208
+ this.services.register('identitySealingPipeline', () => identitySealingPipeline);
209
+ // Create AliasRegistry
210
+ const aliasRegistry = new brightchain_lib_1.AliasRegistry(this.quorumDbAdapter, identitySealingPipeline, eciesService, () => this.quorumStateMachine.getCurrentEpoch());
211
+ this.services.register('aliasRegistry', () => aliasRegistry);
212
+ // Create the QuorumStateMachine — central coordinator
213
+ // GossipService is wired externally via setPoolDiscoveryService.
214
+ // We pass a no-op stub until the real gossip service is available.
215
+ // The QuorumGossipHandler (Task 23.4) bridges gossip ↔ state machine.
216
+ const gossipStub = {
217
+ announceQuorumProposal: async () => { },
218
+ announceQuorumVote: async () => { },
219
+ onQuorumProposal: () => { },
220
+ offQuorumProposal: () => { },
221
+ onQuorumVote: () => { },
222
+ offQuorumVote: () => { },
223
+ };
224
+ this.quorumStateMachine = new brightchain_lib_1.QuorumStateMachine(this.quorumDbAdapter, sealingService,
225
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
226
+ gossipStub, auditLogService, aliasRegistry);
227
+ this.services.register('quorumStateMachine', () => this.quorumStateMachine);
228
+ (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ ready ] Quorum state machine initialized');
229
+ // Task 23.3: Start IdentityExpirationScheduler
230
+ this.identityExpirationScheduler = new services_1.IdentityExpirationScheduler(this.quorumDbAdapter, auditLogService);
231
+ this.identityExpirationScheduler.start();
232
+ this.services.register('identityExpirationScheduler', () => this.identityExpirationScheduler);
233
+ (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ ready ] Identity expiration scheduler started');
234
+ // Task 23.4: Register gossip message handlers for quorum_proposal and quorum_vote
235
+ // The QuorumGossipHandler is created here but gossip service binding
236
+ // happens when setQuorumGossipService() is called externally.
237
+ // For now, store the state machine reference so it can be wired later.
238
+ this.services.register('quorumGossipHandlerFactory', () => (gossipService) => {
239
+ this.quorumGossipHandler = new quorumGossipHandler_1.QuorumGossipHandler(gossipService, this.quorumStateMachine, this.quorumDbAdapter);
240
+ this.quorumGossipHandler.start();
241
+ this.services.register('quorumGossipHandler', () => this.quorumGossipHandler);
242
+ (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ ready ] Quorum gossip handlers registered (quorum_proposal, quorum_vote)');
243
+ });
244
+ // Task 23.5: Wire content ingestion middleware (IdentityValidator + IdentitySealingPipeline)
245
+ const membershipProofService = new brightchain_lib_1.MembershipProofService();
246
+ const identityValidator = new brightchain_lib_1.IdentityValidator(this.quorumDbAdapter, eciesService, membershipProofService);
247
+ this.services.register('identityValidator', () => identityValidator);
248
+ const contentIngestionService = new services_1.ContentIngestionService(identityValidator, identitySealingPipeline);
249
+ this.services.register('contentIngestionService', () => contentIngestionService);
250
+ // CLIOperatorPrompt for interactive voting
251
+ const operatorPrompt = new services_1.CLIOperatorPrompt();
252
+ this.services.register('operatorPrompt', () => operatorPrompt);
253
+ (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ ready ] Quorum subsystem fully initialized');
254
+ }
255
+ catch (quorumErr) {
256
+ console.warn('[ warning ] Quorum subsystem initialization failed, continuing without quorum:', quorumErr);
257
+ }
136
258
  // UPnP port mapping (non-fatal on failure)
137
259
  try {
138
260
  if (this.environment.upnp?.enabled) {
@@ -151,6 +273,23 @@ class App extends node_express_suite_1.Application {
151
273
  }
152
274
  async stop() {
153
275
  // BrightChain-specific cleanup first, then delegate to upstream
276
+ // ── Quorum subsystem shutdown ─────────────────────────────────────
277
+ // Task 23.3: Stop ExpirationScheduler (graceful cleanup)
278
+ if (this.identityExpirationScheduler) {
279
+ (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ stopping ] Identity expiration scheduler');
280
+ this.identityExpirationScheduler.stop();
281
+ this.identityExpirationScheduler = null;
282
+ }
283
+ // Task 23.4: Unregister gossip handlers
284
+ if (this.quorumGossipHandler) {
285
+ (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ stopping ] Quorum gossip handlers');
286
+ this.quorumGossipHandler.stop();
287
+ this.quorumGossipHandler = null;
288
+ }
289
+ // Clean up quorum references
290
+ this.quorumStateMachine = null;
291
+ this.quorumDbAdapter = null;
292
+ this.contentAwareBlocksService = null;
154
293
  // Shutdown UPnP port mappings
155
294
  if (this.upnpManager) {
156
295
  (0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ stopping ] UPnP port mapping');
@@ -286,6 +425,13 @@ class App extends node_express_suite_1.Application {
286
425
  poolDiscoveryService.handlePoolRemoval(announcement.poolId, announcement.nodeId);
287
426
  }
288
427
  });
428
+ // Task 23.4: Wire quorum gossip handlers when gossip service becomes available
429
+ if (this.services.has('quorumGossipHandlerFactory')) {
430
+ const gossipHandlerFactory = this.services.get('quorumGossipHandlerFactory');
431
+ if (gossipHandlerFactory) {
432
+ gossipHandlerFactory(gossipService);
433
+ }
434
+ }
289
435
  // Pass to IntrospectionController via ApiRouter
290
436
  if (this.apiRouter) {
291
437
  this.apiRouter.setIntrospectionPoolDiscoveryService(poolDiscoveryService);
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @see Requirements 6.1, 6.2, 6.3, 6.4, 6.5, 6.6
9
9
  */
10
- import { AnnouncementHandler, BlockAnnouncement, DeliveryAckMetadata, GossipConfig, ICBLIndexEntry, IGossipService, MessageDeliveryMetadata, PoolAnnouncementMetadata, PoolId } from '@brightchain/brightchain-lib';
10
+ import { AnnouncementHandler, BlockAnnouncement, DeliveryAckMetadata, GossipConfig, ICBLIndexEntry, IGossipService, MessageDeliveryMetadata, PoolAnnouncementMetadata, PoolId, QuorumProposalMetadata, QuorumVoteMetadata } from '@brightchain/brightchain-lib';
11
11
  import { ECIESService } from '@digitaldefiance/node-ecies-lib';
12
12
  /**
13
13
  * Error thrown when gossip configuration is invalid.
@@ -90,6 +90,20 @@ export declare class GossipService implements IGossipService {
90
90
  * @see Requirements 4.4
91
91
  */
92
92
  private deliveryAckHandlers;
93
+ /**
94
+ * Registered quorum proposal handlers.
95
+ * Called when a BlockAnnouncement of type 'quorum_proposal' is received.
96
+ *
97
+ * @see Requirements 5.5
98
+ */
99
+ private quorumProposalHandlers;
100
+ /**
101
+ * Registered quorum vote handlers.
102
+ * Called when a BlockAnnouncement of type 'quorum_vote' is received.
103
+ *
104
+ * @see Requirements 7.3
105
+ */
106
+ private quorumVoteHandlers;
93
107
  /**
94
108
  * Set of local user IDs on this node.
95
109
  * Used to determine if a message delivery announcement targets local users.
@@ -354,5 +368,49 @@ export declare class GossipService implements IGossipService {
354
368
  * @param handler - The handler to remove
355
369
  */
356
370
  offDeliveryAck(handler: (announcement: BlockAnnouncement) => void): void;
371
+ /**
372
+ * Announce a quorum proposal to the network via priority gossip.
373
+ * Creates a BlockAnnouncement of type 'quorum_proposal' with the proposal metadata
374
+ * and queues it for propagation using high-priority fanout/TTL.
375
+ *
376
+ * @param metadata - The quorum proposal metadata to announce
377
+ * @see Requirements 5.2, 5.3
378
+ */
379
+ announceQuorumProposal(metadata: QuorumProposalMetadata): Promise<void>;
380
+ /**
381
+ * Announce a quorum vote to the network via priority gossip.
382
+ * Creates a BlockAnnouncement of type 'quorum_vote' with the vote metadata
383
+ * and queues it for propagation using high-priority fanout/TTL.
384
+ *
385
+ * @param metadata - The quorum vote metadata to announce
386
+ * @see Requirements 7.1, 7.2
387
+ */
388
+ announceQuorumVote(metadata: QuorumVoteMetadata): Promise<void>;
389
+ /**
390
+ * Register a handler for quorum proposal events.
391
+ *
392
+ * @param handler - Function to call when a quorum proposal announcement is received
393
+ * @see Requirements 5.5
394
+ */
395
+ onQuorumProposal(handler: (announcement: BlockAnnouncement) => void): void;
396
+ /**
397
+ * Remove a quorum proposal event handler.
398
+ *
399
+ * @param handler - The handler to remove
400
+ */
401
+ offQuorumProposal(handler: (announcement: BlockAnnouncement) => void): void;
402
+ /**
403
+ * Register a handler for quorum vote events.
404
+ *
405
+ * @param handler - Function to call when a quorum vote announcement is received
406
+ * @see Requirements 7.3
407
+ */
408
+ onQuorumVote(handler: (announcement: BlockAnnouncement) => void): void;
409
+ /**
410
+ * Remove a quorum vote event handler.
411
+ *
412
+ * @param handler - The handler to remove
413
+ */
414
+ offQuorumVote(handler: (announcement: BlockAnnouncement) => void): void;
357
415
  }
358
416
  //# sourceMappingURL=gossipService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gossipService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gossipService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,20 @@ class GossipService {
86
86
  * @see Requirements 4.4
87
87
  */
88
88
  this.deliveryAckHandlers = new Set();
89
+ /**
90
+ * Registered quorum proposal handlers.
91
+ * Called when a BlockAnnouncement of type 'quorum_proposal' is received.
92
+ *
93
+ * @see Requirements 5.5
94
+ */
95
+ this.quorumProposalHandlers = new Set();
96
+ /**
97
+ * Registered quorum vote handlers.
98
+ * Called when a BlockAnnouncement of type 'quorum_vote' is received.
99
+ *
100
+ * @see Requirements 7.3
101
+ */
102
+ this.quorumVoteHandlers = new Set();
89
103
  /**
90
104
  * Batch timer handle.
91
105
  */
@@ -374,6 +388,42 @@ class GossipService {
374
388
  }
375
389
  return;
376
390
  }
391
+ // Case 0e: Quorum proposal announcements — dispatch to quorum proposal handlers and forward (Req 5.5)
392
+ if (announcement.type === 'quorum_proposal') {
393
+ if (!announcement.quorumProposal)
394
+ return;
395
+ for (const handler of this.quorumProposalHandlers) {
396
+ try {
397
+ handler(announcement);
398
+ }
399
+ catch {
400
+ // Ignore handler errors to prevent one handler from affecting others
401
+ }
402
+ }
403
+ // Forward with decremented TTL
404
+ if (announcement.ttl > 0) {
405
+ this.queueAnnouncement({ ...announcement, ttl: announcement.ttl - 1 });
406
+ }
407
+ return;
408
+ }
409
+ // Case 0f: Quorum vote announcements — dispatch to quorum vote handlers and forward (Req 7.3)
410
+ if (announcement.type === 'quorum_vote') {
411
+ if (!announcement.quorumVote)
412
+ return;
413
+ for (const handler of this.quorumVoteHandlers) {
414
+ try {
415
+ handler(announcement);
416
+ }
417
+ catch {
418
+ // Ignore handler errors to prevent one handler from affecting others
419
+ }
420
+ }
421
+ // Forward with decremented TTL
422
+ if (announcement.ttl > 0) {
423
+ this.queueAnnouncement({ ...announcement, ttl: announcement.ttl - 1 });
424
+ }
425
+ return;
426
+ }
377
427
  // Case 1: Ack announcements — dispatch to delivery ack handlers only
378
428
  if (announcement.type === 'ack') {
379
429
  for (const handler of this.deliveryAckHandlers) {
@@ -628,7 +678,9 @@ class GossipService {
628
678
  * @see Requirements 4.1, 4.2
629
679
  */
630
680
  batchContainsSensitiveMetadata(announcements) {
631
- return announcements.some((a) => a.messageDelivery !== undefined || a.deliveryAck !== undefined);
681
+ return announcements.some((a) => a.messageDelivery !== undefined ||
682
+ a.deliveryAck !== undefined ||
683
+ a.quorumVote !== undefined);
632
684
  }
633
685
  /**
634
686
  * Encrypt a batch of announcements for a specific peer using ECIES.
@@ -775,6 +827,78 @@ class GossipService {
775
827
  offDeliveryAck(handler) {
776
828
  this.deliveryAckHandlers.delete(handler);
777
829
  }
830
+ /**
831
+ * Announce a quorum proposal to the network via priority gossip.
832
+ * Creates a BlockAnnouncement of type 'quorum_proposal' with the proposal metadata
833
+ * and queues it for propagation using high-priority fanout/TTL.
834
+ *
835
+ * @param metadata - The quorum proposal metadata to announce
836
+ * @see Requirements 5.2, 5.3
837
+ */
838
+ async announceQuorumProposal(metadata) {
839
+ const announcement = {
840
+ type: 'quorum_proposal',
841
+ blockId: metadata.proposalId,
842
+ nodeId: this.peerProvider.getLocalNodeId(),
843
+ timestamp: new Date(),
844
+ ttl: this.config.messagePriority.high.ttl,
845
+ quorumProposal: metadata,
846
+ };
847
+ this.queueAnnouncement(announcement);
848
+ }
849
+ /**
850
+ * Announce a quorum vote to the network via priority gossip.
851
+ * Creates a BlockAnnouncement of type 'quorum_vote' with the vote metadata
852
+ * and queues it for propagation using high-priority fanout/TTL.
853
+ *
854
+ * @param metadata - The quorum vote metadata to announce
855
+ * @see Requirements 7.1, 7.2
856
+ */
857
+ async announceQuorumVote(metadata) {
858
+ const announcement = {
859
+ type: 'quorum_vote',
860
+ blockId: metadata.proposalId,
861
+ nodeId: this.peerProvider.getLocalNodeId(),
862
+ timestamp: new Date(),
863
+ ttl: this.config.messagePriority.high.ttl,
864
+ quorumVote: metadata,
865
+ };
866
+ this.queueAnnouncement(announcement);
867
+ }
868
+ /**
869
+ * Register a handler for quorum proposal events.
870
+ *
871
+ * @param handler - Function to call when a quorum proposal announcement is received
872
+ * @see Requirements 5.5
873
+ */
874
+ onQuorumProposal(handler) {
875
+ this.quorumProposalHandlers.add(handler);
876
+ }
877
+ /**
878
+ * Remove a quorum proposal event handler.
879
+ *
880
+ * @param handler - The handler to remove
881
+ */
882
+ offQuorumProposal(handler) {
883
+ this.quorumProposalHandlers.delete(handler);
884
+ }
885
+ /**
886
+ * Register a handler for quorum vote events.
887
+ *
888
+ * @param handler - Function to call when a quorum vote announcement is received
889
+ * @see Requirements 7.3
890
+ */
891
+ onQuorumVote(handler) {
892
+ this.quorumVoteHandlers.add(handler);
893
+ }
894
+ /**
895
+ * Remove a quorum vote event handler.
896
+ *
897
+ * @param handler - The handler to remove
898
+ */
899
+ offQuorumVote(handler) {
900
+ this.quorumVoteHandlers.delete(handler);
901
+ }
778
902
  }
779
903
  exports.GossipService = GossipService;
780
904
  //# sourceMappingURL=gossipService.js.map