@digitaldefiance/node-express-suite-mongo 4.23.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.
- package/README.md +152 -0
- package/package.json +51 -0
- package/src/__tests__/fixtures/index.d.ts +2 -0
- package/src/__tests__/fixtures/index.d.ts.map +1 -0
- package/src/__tests__/fixtures/index.js +5 -0
- package/src/__tests__/fixtures/index.js.map +1 -0
- package/src/__tests__/fixtures/model-mocks.mock.d.ts +12 -0
- package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +1 -0
- package/src/__tests__/fixtures/model-mocks.mock.js +102 -0
- package/src/__tests__/fixtures/model-mocks.mock.js.map +1 -0
- package/src/__tests__/helpers/application.mock.d.ts +4 -0
- package/src/__tests__/helpers/application.mock.d.ts.map +1 -0
- package/src/__tests__/helpers/application.mock.js +35 -0
- package/src/__tests__/helpers/application.mock.js.map +1 -0
- package/src/__tests__/helpers/index.d.ts +5 -0
- package/src/__tests__/helpers/index.d.ts.map +1 -0
- package/src/__tests__/helpers/index.js +8 -0
- package/src/__tests__/helpers/index.js.map +1 -0
- package/src/__tests__/helpers/mongoose-memory.d.ts +14 -0
- package/src/__tests__/helpers/mongoose-memory.d.ts.map +1 -0
- package/src/__tests__/helpers/mongoose-memory.js +49 -0
- package/src/__tests__/helpers/mongoose-memory.js.map +1 -0
- package/src/__tests__/helpers/setup-test-env.d.ts +13 -0
- package/src/__tests__/helpers/setup-test-env.d.ts.map +1 -0
- package/src/__tests__/helpers/setup-test-env.js +131 -0
- package/src/__tests__/helpers/setup-test-env.js.map +1 -0
- package/src/__tests__/index.d.ts +3 -0
- package/src/__tests__/index.d.ts.map +1 -0
- package/src/__tests__/index.js +6 -0
- package/src/__tests__/index.js.map +1 -0
- package/src/builders/application-builder.d.ts +38 -0
- package/src/builders/application-builder.d.ts.map +1 -0
- package/src/builders/application-builder.js +82 -0
- package/src/builders/application-builder.js.map +1 -0
- package/src/builders/index.d.ts +2 -0
- package/src/builders/index.d.ts.map +1 -0
- package/src/builders/index.js +5 -0
- package/src/builders/index.js.map +1 -0
- package/src/controllers/index.d.ts +3 -0
- package/src/controllers/index.d.ts.map +1 -0
- package/src/controllers/index.js +6 -0
- package/src/controllers/index.js.map +1 -0
- package/src/controllers/mongo-base.d.ts +55 -0
- package/src/controllers/mongo-base.d.ts.map +1 -0
- package/src/controllers/mongo-base.js +108 -0
- package/src/controllers/mongo-base.js.map +1 -0
- package/src/controllers/user.d.ts +61 -0
- package/src/controllers/user.d.ts.map +1 -0
- package/src/controllers/user.js +944 -0
- package/src/controllers/user.js.map +1 -0
- package/src/documents/base.d.ts +15 -0
- package/src/documents/base.d.ts.map +1 -0
- package/src/documents/base.js +8 -0
- package/src/documents/base.js.map +1 -0
- package/src/documents/email-token.d.ts +15 -0
- package/src/documents/email-token.d.ts.map +1 -0
- package/src/documents/email-token.js +8 -0
- package/src/documents/email-token.js.map +1 -0
- package/src/documents/index.d.ts +8 -0
- package/src/documents/index.d.ts.map +1 -0
- package/src/documents/index.js +3 -0
- package/src/documents/index.js.map +1 -0
- package/src/documents/mnemonic.d.ts +16 -0
- package/src/documents/mnemonic.d.ts.map +1 -0
- package/src/documents/mnemonic.js +8 -0
- package/src/documents/mnemonic.js.map +1 -0
- package/src/documents/role.d.ts +15 -0
- package/src/documents/role.d.ts.map +1 -0
- package/src/documents/role.js +8 -0
- package/src/documents/role.js.map +1 -0
- package/src/documents/used-direct-login-token.d.ts +16 -0
- package/src/documents/used-direct-login-token.d.ts.map +1 -0
- package/src/documents/used-direct-login-token.js +8 -0
- package/src/documents/used-direct-login-token.js.map +1 -0
- package/src/documents/user-role.d.ts +16 -0
- package/src/documents/user-role.d.ts.map +1 -0
- package/src/documents/user-role.js +8 -0
- package/src/documents/user-role.js.map +1 -0
- package/src/documents/user.d.ts +16 -0
- package/src/documents/user.d.ts.map +1 -0
- package/src/documents/user.js +8 -0
- package/src/documents/user.js.map +1 -0
- package/src/enumerations/base-model-name.d.ts +43 -0
- package/src/enumerations/base-model-name.d.ts.map +1 -0
- package/src/enumerations/base-model-name.js +39 -0
- package/src/enumerations/base-model-name.js.map +1 -0
- package/src/enumerations/index.d.ts +3 -0
- package/src/enumerations/index.d.ts.map +1 -0
- package/src/enumerations/index.js +6 -0
- package/src/enumerations/index.js.map +1 -0
- package/src/enumerations/schema-collection.d.ts +39 -0
- package/src/enumerations/schema-collection.d.ts.map +1 -0
- package/src/enumerations/schema-collection.js +43 -0
- package/src/enumerations/schema-collection.js.map +1 -0
- package/src/errors/index.d.ts +5 -0
- package/src/errors/index.d.ts.map +1 -0
- package/src/errors/index.js +8 -0
- package/src/errors/index.js.map +1 -0
- package/src/errors/invalid-backup-code-version.d.ts +5 -0
- package/src/errors/invalid-backup-code-version.d.ts.map +1 -0
- package/src/errors/invalid-backup-code-version.js +14 -0
- package/src/errors/invalid-backup-code-version.js.map +1 -0
- package/src/errors/invalid-model.d.ts +18 -0
- package/src/errors/invalid-model.d.ts.map +1 -0
- package/src/errors/invalid-model.js +26 -0
- package/src/errors/invalid-model.js.map +1 -0
- package/src/errors/model-not-registered.d.ts +18 -0
- package/src/errors/model-not-registered.d.ts.map +1 -0
- package/src/errors/model-not-registered.js +26 -0
- package/src/errors/model-not-registered.js.map +1 -0
- package/src/errors/mongoose-validation.d.ts +28 -0
- package/src/errors/mongoose-validation.d.ts.map +1 -0
- package/src/errors/mongoose-validation.js +33 -0
- package/src/errors/mongoose-validation.js.map +1 -0
- package/src/index.d.ts +19 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +31 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/api-mongo-validation-error-response.d.ts +16 -0
- package/src/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
- package/src/interfaces/api-mongo-validation-error-response.js +8 -0
- package/src/interfaces/api-mongo-validation-error-response.js.map +1 -0
- package/src/interfaces/database-init-result-tx.d.ts +27 -0
- package/src/interfaces/database-init-result-tx.d.ts.map +1 -0
- package/src/interfaces/database-init-result-tx.js +3 -0
- package/src/interfaces/database-init-result-tx.js.map +1 -0
- package/src/interfaces/db-init-result.d.ts +16 -0
- package/src/interfaces/db-init-result.d.ts.map +1 -0
- package/src/interfaces/db-init-result.js +8 -0
- package/src/interfaces/db-init-result.js.map +1 -0
- package/src/interfaces/discriminator-collections.d.ts +17 -0
- package/src/interfaces/discriminator-collections.d.ts.map +1 -0
- package/src/interfaces/discriminator-collections.js +8 -0
- package/src/interfaces/discriminator-collections.js.map +1 -0
- package/src/interfaces/environment-mongo.d.ts +88 -0
- package/src/interfaces/environment-mongo.d.ts.map +1 -0
- package/src/interfaces/environment-mongo.js +8 -0
- package/src/interfaces/environment-mongo.js.map +1 -0
- package/src/interfaces/index.d.ts +13 -0
- package/src/interfaces/index.d.ts.map +1 -0
- package/src/interfaces/index.js +16 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/models/email-token.d.ts +12 -0
- package/src/interfaces/models/email-token.d.ts.map +1 -0
- package/src/interfaces/models/email-token.js +8 -0
- package/src/interfaces/models/email-token.js.map +1 -0
- package/src/interfaces/models/index.d.ts +8 -0
- package/src/interfaces/models/index.d.ts.map +1 -0
- package/src/interfaces/models/index.js +11 -0
- package/src/interfaces/models/index.js.map +1 -0
- package/src/interfaces/models/mnemonic.d.ts +13 -0
- package/src/interfaces/models/mnemonic.d.ts.map +1 -0
- package/src/interfaces/models/mnemonic.js +8 -0
- package/src/interfaces/models/mnemonic.js.map +1 -0
- package/src/interfaces/models/role.d.ts +12 -0
- package/src/interfaces/models/role.d.ts.map +1 -0
- package/src/interfaces/models/role.js +8 -0
- package/src/interfaces/models/role.js.map +1 -0
- package/src/interfaces/models/token-role.d.ts +19 -0
- package/src/interfaces/models/token-role.d.ts.map +1 -0
- package/src/interfaces/models/token-role.js +8 -0
- package/src/interfaces/models/token-role.js.map +1 -0
- package/src/interfaces/models/used-direct-login-token.d.ts +19 -0
- package/src/interfaces/models/used-direct-login-token.d.ts.map +1 -0
- package/src/interfaces/models/used-direct-login-token.js +8 -0
- package/src/interfaces/models/used-direct-login-token.js.map +1 -0
- package/src/interfaces/models/user-role.d.ts +19 -0
- package/src/interfaces/models/user-role.d.ts.map +1 -0
- package/src/interfaces/models/user-role.js +8 -0
- package/src/interfaces/models/user-role.js.map +1 -0
- package/src/interfaces/models/user.d.ts +21 -0
- package/src/interfaces/models/user.d.ts.map +1 -0
- package/src/interfaces/models/user.js +8 -0
- package/src/interfaces/models/user.js.map +1 -0
- package/src/interfaces/mongo-application.d.ts +47 -0
- package/src/interfaces/mongo-application.d.ts.map +1 -0
- package/src/interfaces/mongo-application.js +10 -0
- package/src/interfaces/mongo-application.js.map +1 -0
- package/src/interfaces/mongo-errors.d.ts +13 -0
- package/src/interfaces/mongo-errors.d.ts.map +1 -0
- package/src/interfaces/mongo-errors.js +8 -0
- package/src/interfaces/mongo-errors.js.map +1 -0
- package/src/interfaces/mongoose-document-store.d.ts +42 -0
- package/src/interfaces/mongoose-document-store.d.ts.map +1 -0
- package/src/interfaces/mongoose-document-store.js +10 -0
- package/src/interfaces/mongoose-document-store.js.map +1 -0
- package/src/interfaces/schema.d.ts +37 -0
- package/src/interfaces/schema.d.ts.map +1 -0
- package/src/interfaces/schema.js +8 -0
- package/src/interfaces/schema.js.map +1 -0
- package/src/interfaces/server-init-result.d.ts +45 -0
- package/src/interfaces/server-init-result.d.ts.map +1 -0
- package/src/interfaces/server-init-result.js +8 -0
- package/src/interfaces/server-init-result.js.map +1 -0
- package/src/interfaces/test-environment.d.ts +22 -0
- package/src/interfaces/test-environment.d.ts.map +1 -0
- package/src/interfaces/test-environment.js +8 -0
- package/src/interfaces/test-environment.js.map +1 -0
- package/src/model-registry.d.ts +79 -0
- package/src/model-registry.d.ts.map +1 -0
- package/src/model-registry.js +97 -0
- package/src/model-registry.js.map +1 -0
- package/src/models/email-token.d.ts +24 -0
- package/src/models/email-token.d.ts.map +1 -0
- package/src/models/email-token.js +16 -0
- package/src/models/email-token.js.map +1 -0
- package/src/models/index.d.ts +7 -0
- package/src/models/index.d.ts.map +1 -0
- package/src/models/index.js +10 -0
- package/src/models/index.js.map +1 -0
- package/src/models/mnemonic.d.ts +24 -0
- package/src/models/mnemonic.d.ts.map +1 -0
- package/src/models/mnemonic.js +27 -0
- package/src/models/mnemonic.js.map +1 -0
- package/src/models/role.d.ts +24 -0
- package/src/models/role.d.ts.map +1 -0
- package/src/models/role.js +27 -0
- package/src/models/role.js.map +1 -0
- package/src/models/used-direct-login-token.d.ts +24 -0
- package/src/models/used-direct-login-token.d.ts.map +1 -0
- package/src/models/used-direct-login-token.js +16 -0
- package/src/models/used-direct-login-token.js.map +1 -0
- package/src/models/user-role.d.ts +23 -0
- package/src/models/user-role.d.ts.map +1 -0
- package/src/models/user-role.js +26 -0
- package/src/models/user-role.js.map +1 -0
- package/src/models/user.d.ts +24 -0
- package/src/models/user.d.ts.map +1 -0
- package/src/models/user.js +27 -0
- package/src/models/user.js.map +1 -0
- package/src/mongo-application-concrete.d.ts +30 -0
- package/src/mongo-application-concrete.d.ts.map +1 -0
- package/src/mongo-application-concrete.js +46 -0
- package/src/mongo-application-concrete.js.map +1 -0
- package/src/plugins/index.d.ts +2 -0
- package/src/plugins/index.d.ts.map +1 -0
- package/src/plugins/index.js +5 -0
- package/src/plugins/index.js.map +1 -0
- package/src/plugins/mongo-database-plugin.d.ts +116 -0
- package/src/plugins/mongo-database-plugin.d.ts.map +1 -0
- package/src/plugins/mongo-database-plugin.js +230 -0
- package/src/plugins/mongo-database-plugin.js.map +1 -0
- package/src/routers/api.d.ts +29 -0
- package/src/routers/api.d.ts.map +1 -0
- package/src/routers/api.js +84 -0
- package/src/routers/api.js.map +1 -0
- package/src/routers/index.d.ts +2 -0
- package/src/routers/index.d.ts.map +1 -0
- package/src/routers/index.js +5 -0
- package/src/routers/index.js.map +1 -0
- package/src/schemas/email-token.d.ts +65 -0
- package/src/schemas/email-token.d.ts.map +1 -0
- package/src/schemas/email-token.js +68 -0
- package/src/schemas/email-token.js.map +1 -0
- package/src/schemas/index.d.ts +8 -0
- package/src/schemas/index.d.ts.map +1 -0
- package/src/schemas/index.js +11 -0
- package/src/schemas/index.js.map +1 -0
- package/src/schemas/mnemonic.d.ts +37 -0
- package/src/schemas/mnemonic.d.ts.map +1 -0
- package/src/schemas/mnemonic.js +41 -0
- package/src/schemas/mnemonic.js.map +1 -0
- package/src/schemas/role.d.ts +57 -0
- package/src/schemas/role.d.ts.map +1 -0
- package/src/schemas/role.js +102 -0
- package/src/schemas/role.js.map +1 -0
- package/src/schemas/schema.d.ts +62 -0
- package/src/schemas/schema.d.ts.map +1 -0
- package/src/schemas/schema.js +81 -0
- package/src/schemas/schema.js.map +1 -0
- package/src/schemas/used-direct-login-token.d.ts +49 -0
- package/src/schemas/used-direct-login-token.d.ts.map +1 -0
- package/src/schemas/used-direct-login-token.js +35 -0
- package/src/schemas/used-direct-login-token.js.map +1 -0
- package/src/schemas/user-role.d.ts +52 -0
- package/src/schemas/user-role.d.ts.map +1 -0
- package/src/schemas/user-role.js +67 -0
- package/src/schemas/user-role.js.map +1 -0
- package/src/schemas/user.d.ts +43 -0
- package/src/schemas/user.d.ts.map +1 -0
- package/src/schemas/user.js +214 -0
- package/src/schemas/user.js.map +1 -0
- package/src/services/backup-code.d.ts +118 -0
- package/src/services/backup-code.d.ts.map +1 -0
- package/src/services/backup-code.js +320 -0
- package/src/services/backup-code.js.map +1 -0
- package/src/services/database-initialization.d.ts +137 -0
- package/src/services/database-initialization.d.ts.map +1 -0
- package/src/services/database-initialization.js +911 -0
- package/src/services/database-initialization.js.map +1 -0
- package/src/services/db-init-cache.d.ts +18 -0
- package/src/services/db-init-cache.d.ts.map +1 -0
- package/src/services/db-init-cache.js +7 -0
- package/src/services/db-init-cache.js.map +1 -0
- package/src/services/direct-login-token.d.ts +28 -0
- package/src/services/direct-login-token.d.ts.map +1 -0
- package/src/services/direct-login-token.js +62 -0
- package/src/services/direct-login-token.js.map +1 -0
- package/src/services/index.d.ts +17 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.js +20 -0
- package/src/services/index.js.map +1 -0
- package/src/services/jwt.d.ts +20 -0
- package/src/services/jwt.d.ts.map +1 -0
- package/src/services/jwt.js +79 -0
- package/src/services/jwt.js.map +1 -0
- package/src/services/mnemonic.d.ts +30 -0
- package/src/services/mnemonic.d.ts.map +1 -0
- package/src/services/mnemonic.js +80 -0
- package/src/services/mnemonic.js.map +1 -0
- package/src/services/mongo-authentication-provider.d.ts +27 -0
- package/src/services/mongo-authentication-provider.d.ts.map +1 -0
- package/src/services/mongo-authentication-provider.js +97 -0
- package/src/services/mongo-authentication-provider.js.map +1 -0
- package/src/services/mongo-backup-code-store.d.ts +40 -0
- package/src/services/mongo-backup-code-store.d.ts.map +1 -0
- package/src/services/mongo-backup-code-store.js +104 -0
- package/src/services/mongo-backup-code-store.js.map +1 -0
- package/src/services/mongo-base.d.ts +24 -0
- package/src/services/mongo-base.d.ts.map +1 -0
- package/src/services/mongo-base.js +28 -0
- package/src/services/mongo-base.js.map +1 -0
- package/src/services/mongoose-collection.d.ts +52 -0
- package/src/services/mongoose-collection.d.ts.map +1 -0
- package/src/services/mongoose-collection.js +326 -0
- package/src/services/mongoose-collection.js.map +1 -0
- package/src/services/mongoose-database.d.ts +64 -0
- package/src/services/mongoose-database.d.ts.map +1 -0
- package/src/services/mongoose-database.js +121 -0
- package/src/services/mongoose-database.js.map +1 -0
- package/src/services/mongoose-document-store.d.ts +108 -0
- package/src/services/mongoose-document-store.d.ts.map +1 -0
- package/src/services/mongoose-document-store.js +265 -0
- package/src/services/mongoose-document-store.js.map +1 -0
- package/src/services/mongoose-session-adapter.d.ts +39 -0
- package/src/services/mongoose-session-adapter.d.ts.map +1 -0
- package/src/services/mongoose-session-adapter.js +63 -0
- package/src/services/mongoose-session-adapter.js.map +1 -0
- package/src/services/request-user.d.ts +22 -0
- package/src/services/request-user.d.ts.map +1 -0
- package/src/services/request-user.js +66 -0
- package/src/services/request-user.js.map +1 -0
- package/src/services/role.d.ts +97 -0
- package/src/services/role.d.ts.map +1 -0
- package/src/services/role.js +288 -0
- package/src/services/role.js.map +1 -0
- package/src/services/user.d.ts +362 -0
- package/src/services/user.d.ts.map +1 -0
- package/src/services/user.js +1504 -0
- package/src/services/user.js.map +1 -0
- package/src/testing.d.ts +9 -0
- package/src/testing.d.ts.map +1 -0
- package/src/testing.js +12 -0
- package/src/testing.js.map +1 -0
- package/src/transactions/index.d.ts +2 -0
- package/src/transactions/index.d.ts.map +1 -0
- package/src/transactions/index.js +5 -0
- package/src/transactions/index.js.map +1 -0
- package/src/transactions/transaction-manager.d.ts +37 -0
- package/src/transactions/transaction-manager.d.ts.map +1 -0
- package/src/transactions/transaction-manager.js +50 -0
- package/src/transactions/transaction-manager.js.map +1 -0
- package/src/types/index.d.ts +26 -0
- package/src/types/index.d.ts.map +1 -0
- package/src/types/index.js +9 -0
- package/src/types/index.js.map +1 -0
- package/src/types/mongoose-helpers.d.ts +16 -0
- package/src/types/mongoose-helpers.d.ts.map +1 -0
- package/src/types/mongoose-helpers.js +8 -0
- package/src/types/mongoose-helpers.js.map +1 -0
- package/src/utils/default-mongo-uri-validator.d.ts +15 -0
- package/src/utils/default-mongo-uri-validator.d.ts.map +1 -0
- package/src/utils/default-mongo-uri-validator.js +46 -0
- package/src/utils/default-mongo-uri-validator.js.map +1 -0
- package/src/utils/index.d.ts +5 -0
- package/src/utils/index.d.ts.map +1 -0
- package/src/utils/index.js +8 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/mongo-error-response.d.ts +17 -0
- package/src/utils/mongo-error-response.d.ts.map +1 -0
- package/src/utils/mongo-error-response.js +21 -0
- package/src/utils/mongo-error-response.js.map +1 -0
- package/src/utils/mongo-transaction.d.ts +39 -0
- package/src/utils/mongo-transaction.d.ts.map +1 -0
- package/src/utils/mongo-transaction.js +131 -0
- package/src/utils/mongo-transaction.js.map +1 -0
- package/src/utils/object-id.d.ts +11 -0
- package/src/utils/object-id.d.ts.map +1 -0
- package/src/utils/object-id.js +17 -0
- package/src/utils/object-id.js.map +1 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Mongoose-backed implementation of IAuthenticationProvider.
|
|
4
|
+
* Delegates user lookup, role resolution, and credential verification
|
|
5
|
+
* to the existing Mongoose models and services.
|
|
6
|
+
* @module services/mongo-authentication-provider
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MongoAuthenticationProvider = void 0;
|
|
10
|
+
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
11
|
+
const base_model_name_1 = require("../enumerations/base-model-name");
|
|
12
|
+
const model_registry_1 = require("../model-registry");
|
|
13
|
+
const jwt_1 = require("./jwt");
|
|
14
|
+
const request_user_1 = require("./request-user");
|
|
15
|
+
const role_1 = require("./role");
|
|
16
|
+
const mongo_transaction_1 = require("../utils/mongo-transaction");
|
|
17
|
+
const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
|
|
18
|
+
/**
|
|
19
|
+
* Mongoose-backed authentication provider.
|
|
20
|
+
* Uses ModelRegistry, JwtService, RoleService, and UserService
|
|
21
|
+
* to implement the storage-agnostic IAuthenticationProvider interface.
|
|
22
|
+
*/
|
|
23
|
+
class MongoAuthenticationProvider {
|
|
24
|
+
application;
|
|
25
|
+
constructor(application) {
|
|
26
|
+
this.application = application;
|
|
27
|
+
}
|
|
28
|
+
async findUserById(userId) {
|
|
29
|
+
const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
|
|
30
|
+
const userDoc = await UserModel.findById(userId).select('-password').exec();
|
|
31
|
+
if (!userDoc)
|
|
32
|
+
return null;
|
|
33
|
+
return {
|
|
34
|
+
id: String(userDoc._id),
|
|
35
|
+
accountStatus: userDoc.accountStatus,
|
|
36
|
+
email: userDoc.email,
|
|
37
|
+
siteLanguage: userDoc.siteLanguage,
|
|
38
|
+
timezone: userDoc.timezone,
|
|
39
|
+
lastLogin: userDoc.lastLogin?.toString(),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async buildRequestUserDTO(userId) {
|
|
43
|
+
const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
|
|
44
|
+
return await (0, mongo_transaction_1.withMongoTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (_sess) => {
|
|
45
|
+
const sess = _sess;
|
|
46
|
+
const userDoc = await UserModel.findById(userId)
|
|
47
|
+
.select('-password')
|
|
48
|
+
.session(sess ?? null)
|
|
49
|
+
.exec();
|
|
50
|
+
if (!userDoc || userDoc.accountStatus !== suite_core_lib_1.AccountStatus.Active) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const roleService = new role_1.RoleService(this
|
|
54
|
+
.application);
|
|
55
|
+
const roles = await roleService.getUserRoles(userDoc._id, sess);
|
|
56
|
+
const tokenRoles = roleService.rolesToTokenRoles(roles);
|
|
57
|
+
return request_user_1.RequestUserService.makeRequestUserDTO(userDoc, tokenRoles);
|
|
58
|
+
}, {
|
|
59
|
+
timeoutMs: this.application.environment.mongo
|
|
60
|
+
.transactionTimeout,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async verifyToken(token) {
|
|
64
|
+
const jwtService = new jwt_1.JwtService(this.application);
|
|
65
|
+
return (await jwtService.verifyToken(token));
|
|
66
|
+
}
|
|
67
|
+
async authenticateWithMnemonic(email, mnemonic) {
|
|
68
|
+
const userService = this.application.services.get(node_express_suite_1.ServiceKeys.USER);
|
|
69
|
+
const result = await (0, mongo_transaction_1.withMongoTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (_sess) => {
|
|
70
|
+
const sess = _sess;
|
|
71
|
+
return await userService.loginWithMnemonic(email, mnemonic, sess);
|
|
72
|
+
}, {
|
|
73
|
+
timeoutMs: this.application.environment.mongo
|
|
74
|
+
.transactionTimeout,
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
userId: String(result.userDoc._id),
|
|
78
|
+
userMember: result.userMember,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async authenticateWithPassword(email, password) {
|
|
82
|
+
const userService = this.application.services.get(node_express_suite_1.ServiceKeys.USER);
|
|
83
|
+
const result = await (0, mongo_transaction_1.withMongoTransaction)(this.application.db.connection, this.application.environment.mongo.useTransactions, undefined, async (_sess) => {
|
|
84
|
+
const sess = _sess;
|
|
85
|
+
return await userService.loginWithPassword(email, password, sess);
|
|
86
|
+
}, {
|
|
87
|
+
timeoutMs: this.application.environment.mongo
|
|
88
|
+
.transactionTimeout,
|
|
89
|
+
});
|
|
90
|
+
return {
|
|
91
|
+
userId: String(result.userDoc._id),
|
|
92
|
+
userMember: result.userMember,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.MongoAuthenticationProvider = MongoAuthenticationProvider;
|
|
97
|
+
//# sourceMappingURL=mongo-authentication-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-authentication-provider.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-authentication-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Mongoose/MongoDB implementation of IBackupCodeStore.
|
|
3
|
+
* Provides backward-compatible storage for the BackupCodeService using
|
|
4
|
+
* Mongoose UserDocument and ModelRegistry.
|
|
5
|
+
* @module services/mongo-backup-code-store
|
|
6
|
+
*/
|
|
7
|
+
import type { MemberType } from '@digitaldefiance/ecies-lib';
|
|
8
|
+
import type { ClientSession } from '@digitaldefiance/mongoose-types';
|
|
9
|
+
import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
10
|
+
import type { ITokenRole } from '@digitaldefiance/suite-core-lib';
|
|
11
|
+
import type { IBackupCodeStore, IBackupCodeUserRecord, IBackupCodeUserUpdate } from '@digitaldefiance/node-express-suite';
|
|
12
|
+
import type { IMongoApplication } from '../interfaces/mongo-application';
|
|
13
|
+
import { RoleService } from './role';
|
|
14
|
+
/**
|
|
15
|
+
* Mongoose-backed implementation of IBackupCodeStore.
|
|
16
|
+
*
|
|
17
|
+
* Delegates all persistence to the Mongoose UserModel and uses
|
|
18
|
+
* RoleService for member type resolution. This is the default store
|
|
19
|
+
* used when no custom store is provided to BackupCodeService.
|
|
20
|
+
*
|
|
21
|
+
* @template TID - Platform ID type
|
|
22
|
+
* @template TDate - Date type
|
|
23
|
+
* @template TTokenRole - Token role interface type
|
|
24
|
+
*/
|
|
25
|
+
export declare class MongoBackupCodeStore<TID extends PlatformID = Buffer, TDate extends Date = Date, TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>> implements IBackupCodeStore<TID> {
|
|
26
|
+
private readonly application;
|
|
27
|
+
private readonly roleService;
|
|
28
|
+
private readonly session?;
|
|
29
|
+
constructor(application: IMongoApplication<TID>, roleService: RoleService<TID, TDate, TTokenRole>, session?: ClientSession);
|
|
30
|
+
/**
|
|
31
|
+
* Create a new MongoBackupCodeStore bound to a specific session.
|
|
32
|
+
* Useful for transactional operations.
|
|
33
|
+
*/
|
|
34
|
+
withSession(session: ClientSession): MongoBackupCodeStore<TID, TDate, TTokenRole>;
|
|
35
|
+
getUserRecord(userId: TID): Promise<IBackupCodeUserRecord<TID> | null>;
|
|
36
|
+
updateUserRecord(userId: TID, updates: IBackupCodeUserUpdate): Promise<void>;
|
|
37
|
+
getMemberType(userId: TID): Promise<MemberType>;
|
|
38
|
+
fetchBatch(afterId?: string, limit?: number): Promise<Array<IBackupCodeUserRecord<TID>>>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=mongo-backup-code-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-backup-code-store.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-backup-code-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC;;;;;;;;;;GAUG;AACH,qBAAa,oBAAoB,CAC/B,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,KAAK,SAAS,IAAI,GAAG,IAAI,EACzB,UAAU,SAAS,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAClE,YAAW,gBAAgB,CAAC,GAAG,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;gBAGvC,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,EACnC,WAAW,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,EAChD,OAAO,CAAC,EAAE,aAAa;IAOzB;;;OAGG;IACI,WAAW,CAChB,OAAO,EAAE,aAAa,GACrB,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC;IAQlC,aAAa,CACxB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAqBhC,gBAAgB,CAC3B,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAsBH,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAa/C,UAAU,CACrB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,SAAM,GACV,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;CA2B9C"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Mongoose/MongoDB implementation of IBackupCodeStore.
|
|
4
|
+
* Provides backward-compatible storage for the BackupCodeService using
|
|
5
|
+
* Mongoose UserDocument and ModelRegistry.
|
|
6
|
+
* @module services/mongo-backup-code-store
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MongoBackupCodeStore = void 0;
|
|
10
|
+
const base_model_name_1 = require("../enumerations/base-model-name");
|
|
11
|
+
const model_registry_1 = require("../model-registry");
|
|
12
|
+
/**
|
|
13
|
+
* Mongoose-backed implementation of IBackupCodeStore.
|
|
14
|
+
*
|
|
15
|
+
* Delegates all persistence to the Mongoose UserModel and uses
|
|
16
|
+
* RoleService for member type resolution. This is the default store
|
|
17
|
+
* used when no custom store is provided to BackupCodeService.
|
|
18
|
+
*
|
|
19
|
+
* @template TID - Platform ID type
|
|
20
|
+
* @template TDate - Date type
|
|
21
|
+
* @template TTokenRole - Token role interface type
|
|
22
|
+
*/
|
|
23
|
+
class MongoBackupCodeStore {
|
|
24
|
+
application;
|
|
25
|
+
roleService;
|
|
26
|
+
session;
|
|
27
|
+
constructor(application, roleService, session) {
|
|
28
|
+
this.application = application;
|
|
29
|
+
this.roleService = roleService;
|
|
30
|
+
this.session = session;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create a new MongoBackupCodeStore bound to a specific session.
|
|
34
|
+
* Useful for transactional operations.
|
|
35
|
+
*/
|
|
36
|
+
withSession(session) {
|
|
37
|
+
return new MongoBackupCodeStore(this.application, this.roleService, session);
|
|
38
|
+
}
|
|
39
|
+
async getUserRecord(userId) {
|
|
40
|
+
const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
|
|
41
|
+
const doc = await UserModel.findById(userId)
|
|
42
|
+
.session(this.session ?? null)
|
|
43
|
+
.exec();
|
|
44
|
+
if (!doc)
|
|
45
|
+
return null;
|
|
46
|
+
return {
|
|
47
|
+
_id: doc._id,
|
|
48
|
+
username: doc.username,
|
|
49
|
+
email: doc.email,
|
|
50
|
+
publicKey: doc.publicKey,
|
|
51
|
+
backupCodes: doc.backupCodes ?? [],
|
|
52
|
+
passwordWrappedPrivateKey: doc.passwordWrappedPrivateKey,
|
|
53
|
+
createdAt: doc.createdAt,
|
|
54
|
+
updatedAt: doc.updatedAt,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async updateUserRecord(userId, updates) {
|
|
58
|
+
const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
|
|
59
|
+
const $set = {};
|
|
60
|
+
if (updates.backupCodes !== undefined) {
|
|
61
|
+
$set['backupCodes'] = updates.backupCodes;
|
|
62
|
+
}
|
|
63
|
+
if (updates.passwordWrappedPrivateKey !== undefined) {
|
|
64
|
+
$set['passwordWrappedPrivateKey'] = updates.passwordWrappedPrivateKey;
|
|
65
|
+
}
|
|
66
|
+
if (Object.keys($set).length > 0) {
|
|
67
|
+
await UserModel.updateOne({ _id: userId }, { $set }, { session: this.session });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async getMemberType(userId) {
|
|
71
|
+
const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
|
|
72
|
+
const doc = await UserModel.findById(userId)
|
|
73
|
+
.session(this.session ?? null)
|
|
74
|
+
.exec();
|
|
75
|
+
if (!doc) {
|
|
76
|
+
throw new Error(`User not found: ${userId}`);
|
|
77
|
+
}
|
|
78
|
+
return await this.roleService.getMemberType(doc, this.session);
|
|
79
|
+
}
|
|
80
|
+
async fetchBatch(afterId, limit = 500) {
|
|
81
|
+
const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
|
|
82
|
+
const query = {};
|
|
83
|
+
if (afterId) {
|
|
84
|
+
query['_id'] = { $gt: afterId };
|
|
85
|
+
}
|
|
86
|
+
const docs = await UserModel.find(query)
|
|
87
|
+
.sort({ _id: 1 })
|
|
88
|
+
.limit(limit)
|
|
89
|
+
.session(this.session ?? null)
|
|
90
|
+
.exec();
|
|
91
|
+
return docs.map((doc) => ({
|
|
92
|
+
_id: doc._id,
|
|
93
|
+
username: doc.username,
|
|
94
|
+
email: doc.email,
|
|
95
|
+
publicKey: doc.publicKey,
|
|
96
|
+
backupCodes: doc.backupCodes ?? [],
|
|
97
|
+
passwordWrappedPrivateKey: doc.passwordWrappedPrivateKey,
|
|
98
|
+
createdAt: doc.createdAt,
|
|
99
|
+
updatedAt: doc.updatedAt,
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.MongoBackupCodeStore = MongoBackupCodeStore;
|
|
104
|
+
//# sourceMappingURL=mongo-backup-code-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-backup-code-store.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-backup-code-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Mongoose-specific base service extending the database-agnostic BaseService.
|
|
3
|
+
* Constrains TApplication to IMongoApplication so subclasses get type-safe
|
|
4
|
+
* access to .db, .getModel(), and .environment.mongo.
|
|
5
|
+
* @module services/mongo-base
|
|
6
|
+
*/
|
|
7
|
+
import { IMongoApplication } from '../interfaces/mongo-application';
|
|
8
|
+
import { BaseService } from '@digitaldefiance/node-express-suite';
|
|
9
|
+
import type { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
10
|
+
/**
|
|
11
|
+
* Mongoose-specific base service.
|
|
12
|
+
* Extends BaseService with TApplication constrained to IMongoApplication.
|
|
13
|
+
*
|
|
14
|
+
* Use this for services that need Mongoose-specific access (application.db,
|
|
15
|
+
* application.getModel, application.environment.mongo). Services that are
|
|
16
|
+
* database-agnostic should extend BaseService directly.
|
|
17
|
+
*
|
|
18
|
+
* @template TID - Platform ID type (defaults to Buffer)
|
|
19
|
+
* @template TApplication - Must extend IMongoApplication
|
|
20
|
+
*/
|
|
21
|
+
export declare class MongoBaseService<TID extends PlatformID = Buffer, TApplication extends IMongoApplication<TID> = IMongoApplication<TID>> extends BaseService<TID, TApplication> {
|
|
22
|
+
constructor(application: TApplication);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=mongo-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-base.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,MAAM,EAC/B,YAAY,SAAS,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CACpE,SAAQ,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;gBAC1B,WAAW,EAAE,YAAY;CAGtC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Mongoose-specific base service extending the database-agnostic BaseService.
|
|
4
|
+
* Constrains TApplication to IMongoApplication so subclasses get type-safe
|
|
5
|
+
* access to .db, .getModel(), and .environment.mongo.
|
|
6
|
+
* @module services/mongo-base
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MongoBaseService = void 0;
|
|
10
|
+
const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
|
|
11
|
+
/**
|
|
12
|
+
* Mongoose-specific base service.
|
|
13
|
+
* Extends BaseService with TApplication constrained to IMongoApplication.
|
|
14
|
+
*
|
|
15
|
+
* Use this for services that need Mongoose-specific access (application.db,
|
|
16
|
+
* application.getModel, application.environment.mongo). Services that are
|
|
17
|
+
* database-agnostic should extend BaseService directly.
|
|
18
|
+
*
|
|
19
|
+
* @template TID - Platform ID type (defaults to Buffer)
|
|
20
|
+
* @template TApplication - Must extend IMongoApplication
|
|
21
|
+
*/
|
|
22
|
+
class MongoBaseService extends node_express_suite_1.BaseService {
|
|
23
|
+
constructor(application) {
|
|
24
|
+
super(application);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.MongoBaseService = MongoBaseService;
|
|
28
|
+
//# sourceMappingURL=mongo-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-base.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongo-base.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,4EAAkE;AAGlE;;;;;;;;;;GAUG;AACH,MAAa,gBAGX,SAAQ,gCAA8B;IACtC,YAAY,WAAyB;QACnC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;CACF;AAPD,4CAOC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Mongoose collection adapter implementing ICollection.
|
|
3
|
+
* Wraps a mongoose Model to conform to the shared ICollection interface
|
|
4
|
+
* from brightchain-lib.
|
|
5
|
+
* @module services/mongoose-collection
|
|
6
|
+
*/
|
|
7
|
+
import type { AggregationStage, BsonDocument, BulkWriteOperation, BulkWriteOptions, BulkWriteResult, ChangeListener, CollectionSchema, DeleteResult, DocumentId, FilterQuery, FindOptions, ICollection, IndexOptions, IndexSpec, InsertManyResult, InsertOneResult, ReadPreference, ReplaceResult, TextIndexOptions, UpdateOptions, UpdateQuery, UpdateResult, ValidationFieldError, WriteConcern, WriteOptions } from '@digitaldefiance/suite-core-lib';
|
|
8
|
+
import type { Connection } from '@digitaldefiance/mongoose-types';
|
|
9
|
+
/**
|
|
10
|
+
* Adapts a mongoose Model to the ICollection<T> interface.
|
|
11
|
+
* Delegates CRUD, query, index, and bulk operations to the underlying
|
|
12
|
+
* mongoose model. Schema validation methods are no-ops since mongoose
|
|
13
|
+
* handles schema validation internally.
|
|
14
|
+
*/
|
|
15
|
+
export declare class MongooseCollection<T extends BsonDocument = BsonDocument> implements ICollection<T> {
|
|
16
|
+
private _model;
|
|
17
|
+
private _writeConcern;
|
|
18
|
+
private _readPreference;
|
|
19
|
+
constructor(connection: Connection, collectionName: string);
|
|
20
|
+
insertOne(doc: T, options?: WriteOptions): Promise<InsertOneResult>;
|
|
21
|
+
insertMany(docs: T[], options?: WriteOptions): Promise<InsertManyResult>;
|
|
22
|
+
findOne(filter?: FilterQuery<T>, options?: FindOptions<T>): Promise<T | null>;
|
|
23
|
+
find(filter?: FilterQuery<T>, options?: FindOptions<T>): Promise<T[]>;
|
|
24
|
+
findById(id: DocumentId): Promise<T | null>;
|
|
25
|
+
updateOne(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateOptions): Promise<UpdateResult>;
|
|
26
|
+
updateMany(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateOptions): Promise<UpdateResult>;
|
|
27
|
+
deleteOne(filter: FilterQuery<T>, options?: WriteOptions): Promise<DeleteResult>;
|
|
28
|
+
deleteMany(filter: FilterQuery<T>, options?: WriteOptions): Promise<DeleteResult>;
|
|
29
|
+
replaceOne(filter: FilterQuery<T>, doc: T, options?: UpdateOptions): Promise<ReplaceResult>;
|
|
30
|
+
countDocuments(filter?: FilterQuery<T>): Promise<number>;
|
|
31
|
+
estimatedDocumentCount(): Promise<number>;
|
|
32
|
+
distinct<K extends keyof T>(field: K, filter?: FilterQuery<T>): Promise<Array<T[K]>>;
|
|
33
|
+
aggregate(pipeline: AggregationStage[]): Promise<BsonDocument[]>;
|
|
34
|
+
createIndex(spec: IndexSpec, options?: IndexOptions): Promise<string>;
|
|
35
|
+
dropIndex(name: string): Promise<void>;
|
|
36
|
+
listIndexes(): string[];
|
|
37
|
+
bulkWrite(operations: BulkWriteOperation<T>[], options?: BulkWriteOptions): Promise<BulkWriteResult>;
|
|
38
|
+
watch(listener: ChangeListener<T>): () => void;
|
|
39
|
+
setSchema(_schema: CollectionSchema): void;
|
|
40
|
+
getSchema(): CollectionSchema | undefined;
|
|
41
|
+
removeSchema(): void;
|
|
42
|
+
validateDoc(_doc: T): ValidationFieldError[];
|
|
43
|
+
getWriteConcern(): WriteConcern;
|
|
44
|
+
setWriteConcern(wc: WriteConcern): void;
|
|
45
|
+
getReadPreference(): ReadPreference;
|
|
46
|
+
setReadPreference(rp: ReadPreference): void;
|
|
47
|
+
createTextIndex(options: TextIndexOptions): string;
|
|
48
|
+
dropTextIndex(): void;
|
|
49
|
+
hasTextIndex(): boolean;
|
|
50
|
+
drop(): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=mongoose-collection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongoose-collection.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite-mongo/src/services/mongoose-collection.ts"],"names":[],"mappings":"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"}
|