@digitaldefiance/node-express-suite 4.22.2 → 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 +173 -407
- package/package.json +1 -5
- package/src/__tests__/fixtures/index.d.ts +1 -1
- package/src/__tests__/fixtures/index.d.ts.map +1 -1
- package/src/__tests__/fixtures/index.js +1 -2
- package/src/__tests__/fixtures/index.js.map +1 -1
- package/src/__tests__/helpers/index.d.ts +1 -3
- package/src/__tests__/helpers/index.d.ts.map +1 -1
- package/src/__tests__/helpers/index.js +1 -4
- package/src/__tests__/helpers/index.js.map +1 -1
- package/src/__tests__/index.d.ts.map +1 -1
- package/src/__tests__/index.js +1 -0
- package/src/__tests__/index.js.map +1 -1
- package/src/application.d.ts +8 -11
- package/src/application.d.ts.map +1 -1
- package/src/application.js +8 -17
- package/src/application.js.map +1 -1
- package/src/branded-responses/branded-api-responses.d.ts +10 -2
- package/src/branded-responses/branded-api-responses.d.ts.map +1 -1
- package/src/branded-responses/branded-api-responses.js +5 -0
- package/src/branded-responses/branded-api-responses.js.map +1 -1
- package/src/branded-responses/serializers.d.ts +4 -1
- package/src/branded-responses/serializers.d.ts.map +1 -1
- package/src/builders/index.d.ts +1 -1
- package/src/builders/index.d.ts.map +1 -1
- package/src/builders/index.js +1 -2
- package/src/builders/index.js.map +1 -1
- package/src/controllers/base.d.ts +5 -18
- package/src/controllers/base.d.ts.map +1 -1
- package/src/controllers/base.js +7 -62
- package/src/controllers/base.js.map +1 -1
- package/src/controllers/index.d.ts +1 -1
- package/src/controllers/index.d.ts.map +1 -1
- package/src/controllers/index.js +2 -1
- package/src/controllers/index.js.map +1 -1
- package/src/controllers/openapi.d.ts +3 -3
- package/src/controllers/openapi.d.ts.map +1 -1
- package/src/controllers/openapi.js.map +1 -1
- package/src/enumerations/index.d.ts +0 -2
- package/src/enumerations/index.d.ts.map +1 -1
- package/src/enumerations/index.js +0 -2
- package/src/enumerations/index.js.map +1 -1
- package/src/environment.d.ts +4 -3
- package/src/environment.d.ts.map +1 -1
- package/src/environment.js +3 -1
- package/src/environment.js.map +1 -1
- package/src/errors/index.d.ts +0 -3
- package/src/errors/index.d.ts.map +1 -1
- package/src/errors/index.js +0 -3
- package/src/errors/index.js.map +1 -1
- package/src/index.d.ts +1 -8
- package/src/index.d.ts.map +1 -1
- package/src/index.js +1 -11
- package/src/index.js.map +1 -1
- package/src/interfaces/controller-config.d.ts +1 -2
- package/src/interfaces/controller-config.d.ts.map +1 -1
- package/src/interfaces/document-store.d.ts +3 -2
- package/src/interfaces/document-store.d.ts.map +1 -1
- package/src/interfaces/document-store.js +3 -3
- package/src/interfaces/document-store.js.map +1 -1
- package/src/interfaces/environment.d.ts +3 -2
- package/src/interfaces/environment.d.ts.map +1 -1
- package/src/interfaces/index.d.ts +0 -11
- package/src/interfaces/index.d.ts.map +1 -1
- package/src/interfaces/index.js +0 -11
- package/src/interfaces/index.js.map +1 -1
- package/src/plugins/database-plugin.d.ts +12 -0
- package/src/plugins/database-plugin.d.ts.map +1 -1
- package/src/plugins/index.d.ts +0 -1
- package/src/plugins/index.d.ts.map +1 -1
- package/src/plugins/index.js +0 -1
- package/src/plugins/index.js.map +1 -1
- package/src/routers/index.d.ts +0 -1
- package/src/routers/index.d.ts.map +1 -1
- package/src/routers/index.js +0 -1
- package/src/routers/index.js.map +1 -1
- package/src/services/base.d.ts +10 -13
- package/src/services/base.d.ts.map +1 -1
- package/src/services/base.js +7 -21
- package/src/services/base.js.map +1 -1
- package/src/services/index.d.ts +0 -15
- package/src/services/index.d.ts.map +1 -1
- package/src/services/index.js +0 -15
- package/src/services/index.js.map +1 -1
- package/src/testing.d.ts +1 -1
- package/src/testing.d.ts.map +1 -1
- package/src/testing.js +1 -1
- package/src/testing.js.map +1 -1
- package/src/types.d.ts +6 -17
- package/src/types.d.ts.map +1 -1
- package/src/types.js.map +1 -1
- package/src/utils.d.ts +5 -34
- package/src/utils.d.ts.map +1 -1
- package/src/utils.js +24 -165
- package/src/utils.js.map +1 -1
- package/src/__tests__/fixtures/model-mocks.mock.d.ts +0 -12
- package/src/__tests__/fixtures/model-mocks.mock.d.ts.map +0 -1
- package/src/__tests__/fixtures/model-mocks.mock.js +0 -102
- package/src/__tests__/fixtures/model-mocks.mock.js.map +0 -1
- package/src/__tests__/helpers/application.mock.d.ts +0 -8
- package/src/__tests__/helpers/application.mock.d.ts.map +0 -1
- package/src/__tests__/helpers/application.mock.js +0 -85
- package/src/__tests__/helpers/application.mock.js.map +0 -1
- package/src/__tests__/helpers/setup-test-env.d.ts +0 -13
- package/src/__tests__/helpers/setup-test-env.d.ts.map +0 -1
- package/src/__tests__/helpers/setup-test-env.js +0 -133
- package/src/__tests__/helpers/setup-test-env.js.map +0 -1
- package/src/builders/application-builder.d.ts +0 -53
- package/src/builders/application-builder.d.ts.map +0 -1
- package/src/builders/application-builder.js +0 -91
- package/src/builders/application-builder.js.map +0 -1
- package/src/controllers/user.d.ts +0 -66
- package/src/controllers/user.d.ts.map +0 -1
- package/src/controllers/user.js +0 -949
- package/src/controllers/user.js.map +0 -1
- package/src/documents/base.d.ts +0 -15
- package/src/documents/base.d.ts.map +0 -1
- package/src/documents/base.js +0 -8
- package/src/documents/base.js.map +0 -1
- package/src/documents/email-token.d.ts +0 -15
- package/src/documents/email-token.d.ts.map +0 -1
- package/src/documents/email-token.js +0 -8
- package/src/documents/email-token.js.map +0 -1
- package/src/documents/index.d.ts +0 -8
- package/src/documents/index.d.ts.map +0 -1
- package/src/documents/index.js +0 -3
- package/src/documents/index.js.map +0 -1
- package/src/documents/mnemonic.d.ts +0 -16
- package/src/documents/mnemonic.d.ts.map +0 -1
- package/src/documents/mnemonic.js +0 -8
- package/src/documents/mnemonic.js.map +0 -1
- package/src/documents/role.d.ts +0 -15
- package/src/documents/role.d.ts.map +0 -1
- package/src/documents/role.js +0 -8
- package/src/documents/role.js.map +0 -1
- package/src/documents/used-direct-login-token.d.ts +0 -16
- package/src/documents/used-direct-login-token.d.ts.map +0 -1
- package/src/documents/used-direct-login-token.js +0 -8
- package/src/documents/used-direct-login-token.js.map +0 -1
- package/src/documents/user-role.d.ts +0 -16
- package/src/documents/user-role.d.ts.map +0 -1
- package/src/documents/user-role.js +0 -8
- package/src/documents/user-role.js.map +0 -1
- package/src/documents/user.d.ts +0 -16
- package/src/documents/user.d.ts.map +0 -1
- package/src/documents/user.js +0 -8
- package/src/documents/user.js.map +0 -1
- package/src/enumerations/base-model-name.d.ts +0 -43
- package/src/enumerations/base-model-name.d.ts.map +0 -1
- package/src/enumerations/base-model-name.js +0 -39
- package/src/enumerations/base-model-name.js.map +0 -1
- package/src/enumerations/schema-collection.d.ts +0 -39
- package/src/enumerations/schema-collection.d.ts.map +0 -1
- package/src/enumerations/schema-collection.js +0 -43
- package/src/enumerations/schema-collection.js.map +0 -1
- package/src/errors/invalid-model.d.ts +0 -18
- package/src/errors/invalid-model.d.ts.map +0 -1
- package/src/errors/invalid-model.js +0 -26
- package/src/errors/invalid-model.js.map +0 -1
- package/src/errors/model-not-registered.d.ts +0 -18
- package/src/errors/model-not-registered.d.ts.map +0 -1
- package/src/errors/model-not-registered.js +0 -26
- package/src/errors/model-not-registered.js.map +0 -1
- package/src/errors/mongoose-validation.d.ts +0 -28
- package/src/errors/mongoose-validation.d.ts.map +0 -1
- package/src/errors/mongoose-validation.js +0 -33
- package/src/errors/mongoose-validation.js.map +0 -1
- package/src/interfaces/api-mongo-validation-error-response.d.ts +0 -16
- package/src/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
- package/src/interfaces/api-mongo-validation-error-response.js +0 -8
- package/src/interfaces/api-mongo-validation-error-response.js.map +0 -1
- package/src/interfaces/database-init-result-tx.d.ts +0 -27
- package/src/interfaces/database-init-result-tx.d.ts.map +0 -1
- package/src/interfaces/database-init-result-tx.js +0 -3
- package/src/interfaces/database-init-result-tx.js.map +0 -1
- package/src/interfaces/db-init-result.d.ts +0 -16
- package/src/interfaces/db-init-result.d.ts.map +0 -1
- package/src/interfaces/db-init-result.js +0 -8
- package/src/interfaces/db-init-result.js.map +0 -1
- package/src/interfaces/discriminator-collections.d.ts +0 -17
- package/src/interfaces/discriminator-collections.d.ts.map +0 -1
- package/src/interfaces/discriminator-collections.js +0 -8
- package/src/interfaces/discriminator-collections.js.map +0 -1
- package/src/interfaces/environment-mongo.d.ts +0 -86
- package/src/interfaces/environment-mongo.d.ts.map +0 -1
- package/src/interfaces/environment-mongo.js +0 -8
- package/src/interfaces/environment-mongo.js.map +0 -1
- package/src/interfaces/models/email-token.d.ts +0 -12
- package/src/interfaces/models/email-token.d.ts.map +0 -1
- package/src/interfaces/models/email-token.js +0 -8
- package/src/interfaces/models/email-token.js.map +0 -1
- package/src/interfaces/models/index.d.ts +0 -8
- package/src/interfaces/models/index.d.ts.map +0 -1
- package/src/interfaces/models/index.js +0 -11
- package/src/interfaces/models/index.js.map +0 -1
- package/src/interfaces/models/mnemonic.d.ts +0 -13
- package/src/interfaces/models/mnemonic.d.ts.map +0 -1
- package/src/interfaces/models/mnemonic.js +0 -8
- package/src/interfaces/models/mnemonic.js.map +0 -1
- package/src/interfaces/models/role.d.ts +0 -12
- package/src/interfaces/models/role.d.ts.map +0 -1
- package/src/interfaces/models/role.js +0 -8
- package/src/interfaces/models/role.js.map +0 -1
- package/src/interfaces/models/token-role.d.ts +0 -19
- package/src/interfaces/models/token-role.d.ts.map +0 -1
- package/src/interfaces/models/token-role.js +0 -8
- package/src/interfaces/models/token-role.js.map +0 -1
- package/src/interfaces/models/used-direct-login-token.d.ts +0 -19
- package/src/interfaces/models/used-direct-login-token.d.ts.map +0 -1
- package/src/interfaces/models/used-direct-login-token.js +0 -8
- package/src/interfaces/models/used-direct-login-token.js.map +0 -1
- package/src/interfaces/models/user-role.d.ts +0 -19
- package/src/interfaces/models/user-role.d.ts.map +0 -1
- package/src/interfaces/models/user-role.js +0 -8
- package/src/interfaces/models/user-role.js.map +0 -1
- package/src/interfaces/models/user.d.ts +0 -21
- package/src/interfaces/models/user.d.ts.map +0 -1
- package/src/interfaces/models/user.js +0 -8
- package/src/interfaces/models/user.js.map +0 -1
- package/src/interfaces/mongo-application.d.ts +0 -35
- package/src/interfaces/mongo-application.d.ts.map +0 -1
- package/src/interfaces/mongo-application.js +0 -10
- package/src/interfaces/mongo-application.js.map +0 -1
- package/src/interfaces/mongo-errors.d.ts +0 -13
- package/src/interfaces/mongo-errors.d.ts.map +0 -1
- package/src/interfaces/mongo-errors.js +0 -8
- package/src/interfaces/mongo-errors.js.map +0 -1
- package/src/interfaces/mongoose-document-store.d.ts +0 -42
- package/src/interfaces/mongoose-document-store.d.ts.map +0 -1
- package/src/interfaces/mongoose-document-store.js +0 -10
- package/src/interfaces/mongoose-document-store.js.map +0 -1
- package/src/interfaces/schema.d.ts +0 -37
- package/src/interfaces/schema.d.ts.map +0 -1
- package/src/interfaces/schema.js +0 -8
- package/src/interfaces/schema.js.map +0 -1
- package/src/interfaces/server-init-result.d.ts +0 -45
- package/src/interfaces/server-init-result.d.ts.map +0 -1
- package/src/interfaces/server-init-result.js +0 -8
- package/src/interfaces/server-init-result.js.map +0 -1
- package/src/interfaces/test-environment.d.ts +0 -22
- package/src/interfaces/test-environment.d.ts.map +0 -1
- package/src/interfaces/test-environment.js +0 -8
- package/src/interfaces/test-environment.js.map +0 -1
- package/src/model-registry.d.ts +0 -79
- package/src/model-registry.d.ts.map +0 -1
- package/src/model-registry.js +0 -97
- package/src/model-registry.js.map +0 -1
- package/src/models/email-token.d.ts +0 -24
- package/src/models/email-token.d.ts.map +0 -1
- package/src/models/email-token.js +0 -16
- package/src/models/email-token.js.map +0 -1
- package/src/models/index.d.ts +0 -7
- package/src/models/index.d.ts.map +0 -1
- package/src/models/index.js +0 -10
- package/src/models/index.js.map +0 -1
- package/src/models/mnemonic.d.ts +0 -24
- package/src/models/mnemonic.d.ts.map +0 -1
- package/src/models/mnemonic.js +0 -27
- package/src/models/mnemonic.js.map +0 -1
- package/src/models/role.d.ts +0 -24
- package/src/models/role.d.ts.map +0 -1
- package/src/models/role.js +0 -27
- package/src/models/role.js.map +0 -1
- package/src/models/used-direct-login-token.d.ts +0 -24
- package/src/models/used-direct-login-token.d.ts.map +0 -1
- package/src/models/used-direct-login-token.js +0 -16
- package/src/models/used-direct-login-token.js.map +0 -1
- package/src/models/user-role.d.ts +0 -23
- package/src/models/user-role.d.ts.map +0 -1
- package/src/models/user-role.js +0 -26
- package/src/models/user-role.js.map +0 -1
- package/src/models/user.d.ts +0 -24
- package/src/models/user.d.ts.map +0 -1
- package/src/models/user.js +0 -27
- package/src/models/user.js.map +0 -1
- package/src/mongo-application-concrete.d.ts +0 -32
- package/src/mongo-application-concrete.d.ts.map +0 -1
- package/src/mongo-application-concrete.js +0 -49
- package/src/mongo-application-concrete.js.map +0 -1
- package/src/plugins/mongo-database-plugin.d.ts +0 -115
- package/src/plugins/mongo-database-plugin.d.ts.map +0 -1
- package/src/plugins/mongo-database-plugin.js +0 -234
- package/src/plugins/mongo-database-plugin.js.map +0 -1
- package/src/routers/api.d.ts +0 -60
- package/src/routers/api.d.ts.map +0 -1
- package/src/routers/api.js +0 -116
- package/src/routers/api.js.map +0 -1
- package/src/schemas/email-token.d.ts +0 -65
- package/src/schemas/email-token.d.ts.map +0 -1
- package/src/schemas/email-token.js +0 -68
- package/src/schemas/email-token.js.map +0 -1
- package/src/schemas/index.d.ts +0 -8
- package/src/schemas/index.d.ts.map +0 -1
- package/src/schemas/index.js +0 -11
- package/src/schemas/index.js.map +0 -1
- package/src/schemas/mnemonic.d.ts +0 -37
- package/src/schemas/mnemonic.d.ts.map +0 -1
- package/src/schemas/mnemonic.js +0 -41
- package/src/schemas/mnemonic.js.map +0 -1
- package/src/schemas/role.d.ts +0 -57
- package/src/schemas/role.d.ts.map +0 -1
- package/src/schemas/role.js +0 -102
- package/src/schemas/role.js.map +0 -1
- package/src/schemas/schema.d.ts +0 -62
- package/src/schemas/schema.d.ts.map +0 -1
- package/src/schemas/schema.js +0 -81
- package/src/schemas/schema.js.map +0 -1
- package/src/schemas/used-direct-login-token.d.ts +0 -49
- package/src/schemas/used-direct-login-token.d.ts.map +0 -1
- package/src/schemas/used-direct-login-token.js +0 -35
- package/src/schemas/used-direct-login-token.js.map +0 -1
- package/src/schemas/user-role.d.ts +0 -52
- package/src/schemas/user-role.d.ts.map +0 -1
- package/src/schemas/user-role.js +0 -67
- package/src/schemas/user-role.js.map +0 -1
- package/src/schemas/user.d.ts +0 -43
- package/src/schemas/user.d.ts.map +0 -1
- package/src/schemas/user.js +0 -214
- package/src/schemas/user.js.map +0 -1
- package/src/services/backup-code.d.ts +0 -120
- package/src/services/backup-code.d.ts.map +0 -1
- package/src/services/backup-code.js +0 -323
- package/src/services/backup-code.js.map +0 -1
- package/src/services/database-initialization.d.ts +0 -138
- package/src/services/database-initialization.d.ts.map +0 -1
- package/src/services/database-initialization.js +0 -913
- package/src/services/database-initialization.js.map +0 -1
- package/src/services/db-init-cache.d.ts +0 -18
- package/src/services/db-init-cache.d.ts.map +0 -1
- package/src/services/db-init-cache.js +0 -7
- package/src/services/db-init-cache.js.map +0 -1
- package/src/services/direct-login-token.d.ts +0 -28
- package/src/services/direct-login-token.d.ts.map +0 -1
- package/src/services/direct-login-token.js +0 -62
- package/src/services/direct-login-token.js.map +0 -1
- package/src/services/jwt.d.ts +0 -45
- package/src/services/jwt.d.ts.map +0 -1
- package/src/services/jwt.js +0 -105
- package/src/services/jwt.js.map +0 -1
- package/src/services/mnemonic.d.ts +0 -68
- package/src/services/mnemonic.d.ts.map +0 -1
- package/src/services/mnemonic.js +0 -120
- package/src/services/mnemonic.js.map +0 -1
- package/src/services/mongo-authentication-provider.d.ts +0 -27
- package/src/services/mongo-authentication-provider.d.ts.map +0 -1
- package/src/services/mongo-authentication-provider.js +0 -84
- package/src/services/mongo-authentication-provider.js.map +0 -1
- package/src/services/mongo-backup-code-store.d.ts +0 -40
- package/src/services/mongo-backup-code-store.d.ts.map +0 -1
- package/src/services/mongo-backup-code-store.js +0 -104
- package/src/services/mongo-backup-code-store.js.map +0 -1
- package/src/services/mongo-base.d.ts +0 -24
- package/src/services/mongo-base.d.ts.map +0 -1
- package/src/services/mongo-base.js +0 -28
- package/src/services/mongo-base.js.map +0 -1
- package/src/services/mongoose-collection.d.ts +0 -52
- package/src/services/mongoose-collection.d.ts.map +0 -1
- package/src/services/mongoose-collection.js +0 -326
- package/src/services/mongoose-collection.js.map +0 -1
- package/src/services/mongoose-database.d.ts +0 -64
- package/src/services/mongoose-database.d.ts.map +0 -1
- package/src/services/mongoose-database.js +0 -121
- package/src/services/mongoose-database.js.map +0 -1
- package/src/services/mongoose-document-store.d.ts +0 -109
- package/src/services/mongoose-document-store.d.ts.map +0 -1
- package/src/services/mongoose-document-store.js +0 -264
- package/src/services/mongoose-document-store.js.map +0 -1
- package/src/services/mongoose-session-adapter.d.ts +0 -39
- package/src/services/mongoose-session-adapter.d.ts.map +0 -1
- package/src/services/mongoose-session-adapter.js +0 -63
- package/src/services/mongoose-session-adapter.js.map +0 -1
- package/src/services/request-user.d.ts +0 -45
- package/src/services/request-user.d.ts.map +0 -1
- package/src/services/request-user.js +0 -90
- package/src/services/request-user.js.map +0 -1
- package/src/services/role.d.ts +0 -97
- package/src/services/role.d.ts.map +0 -1
- package/src/services/role.js +0 -289
- package/src/services/role.js.map +0 -1
- package/src/services/user.d.ts +0 -368
- package/src/services/user.d.ts.map +0 -1
- package/src/services/user.js +0 -1495
- package/src/services/user.js.map +0 -1
- package/src/transactions/index.d.ts +0 -2
- package/src/transactions/index.d.ts.map +0 -1
- package/src/transactions/index.js +0 -5
- package/src/transactions/index.js.map +0 -1
- package/src/transactions/transaction-manager.d.ts +0 -37
- package/src/transactions/transaction-manager.d.ts.map +0 -1
- package/src/transactions/transaction-manager.js +0 -50
- package/src/transactions/transaction-manager.js.map +0 -1
- package/src/types/mongoose-helpers.d.ts +0 -16
- package/src/types/mongoose-helpers.d.ts.map +0 -1
- package/src/types/mongoose-helpers.js +0 -8
- package/src/types/mongoose-helpers.js.map +0 -1
- package/src/utils/default-mongo-uri-validator.d.ts +0 -15
- package/src/utils/default-mongo-uri-validator.d.ts.map +0 -1
- package/src/utils/default-mongo-uri-validator.js +0 -46
- package/src/utils/default-mongo-uri-validator.js.map +0 -1
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview Mongoose/MongoDB database plugin.
|
|
4
|
-
* Extracts all Mongo-specific database lifecycle
|
|
5
|
-
* into a plugin that can be registered on any Application instance.
|
|
6
|
-
* @module plugins/mongo-database-plugin
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.MongoDatabasePlugin = void 0;
|
|
10
|
-
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
11
|
-
const mongoose_document_store_1 = require("../services/mongoose-document-store");
|
|
12
|
-
const mongo_authentication_provider_1 = require("../services/mongo-authentication-provider");
|
|
13
|
-
const database_initialization_1 = require("../services/database-initialization");
|
|
14
|
-
const no_op_database_1 = require("../utils/no-op-database");
|
|
15
|
-
/**
|
|
16
|
-
* Mongoose/MongoDB database plugin.
|
|
17
|
-
*
|
|
18
|
-
* Wraps a MongooseDocumentStore and exposes Mongoose-specific accessors
|
|
19
|
-
* (db, getModel, schemaMap, devDatabase) while conforming to the
|
|
20
|
-
* IDatabasePlugin contract for pluggable database backends.
|
|
21
|
-
*
|
|
22
|
-
* @template TID - Platform ID type
|
|
23
|
-
* @template TModelDocs - Record mapping model names to document types
|
|
24
|
-
* @template TInitResults - Database initialization result type
|
|
25
|
-
* @template TConstants - Application constants type
|
|
26
|
-
*/
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
-
class MongoDatabasePlugin {
|
|
29
|
-
name = 'mongo-database';
|
|
30
|
-
version = '1.0.0';
|
|
31
|
-
_documentStore;
|
|
32
|
-
_environment;
|
|
33
|
-
_authProvider;
|
|
34
|
-
_application;
|
|
35
|
-
_lastInitResult;
|
|
36
|
-
constructor(options) {
|
|
37
|
-
const constants = options.constants ?? suite_core_lib_1.Constants;
|
|
38
|
-
this._documentStore = new mongoose_document_store_1.MongooseDocumentStore(options.schemaMapFactory, options.databaseInitFunction, options.initResultHashFunction, options.environment, constants);
|
|
39
|
-
this._environment = options.environment;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Construct from an existing IDocumentStore instance.
|
|
43
|
-
*/
|
|
44
|
-
static fromDocumentStore(documentStore, environment) {
|
|
45
|
-
const plugin = Object.create(MongoDatabasePlugin.prototype);
|
|
46
|
-
Object.defineProperty(plugin, '_documentStore', {
|
|
47
|
-
value: documentStore,
|
|
48
|
-
writable: false,
|
|
49
|
-
});
|
|
50
|
-
Object.defineProperty(plugin, '_environment', {
|
|
51
|
-
value: environment,
|
|
52
|
-
writable: false,
|
|
53
|
-
});
|
|
54
|
-
Object.defineProperty(plugin, 'name', {
|
|
55
|
-
value: 'mongo-database',
|
|
56
|
-
writable: false,
|
|
57
|
-
});
|
|
58
|
-
Object.defineProperty(plugin, 'version', {
|
|
59
|
-
value: '1.0.0',
|
|
60
|
-
writable: false,
|
|
61
|
-
});
|
|
62
|
-
return plugin;
|
|
63
|
-
}
|
|
64
|
-
// ── IDatabasePlugin contract ──
|
|
65
|
-
/**
|
|
66
|
-
* The IDatabase instance. For Mongo, this is a no-op adapter since
|
|
67
|
-
* the document store manages its own connection lifecycle.
|
|
68
|
-
*/
|
|
69
|
-
get database() {
|
|
70
|
-
return (0, no_op_database_1.createNoOpDatabase)();
|
|
71
|
-
}
|
|
72
|
-
get authenticationProvider() {
|
|
73
|
-
return this._authProvider;
|
|
74
|
-
}
|
|
75
|
-
async connect(uri) {
|
|
76
|
-
// Handle dev database setup
|
|
77
|
-
if (this._environment.devDatabase && !this._documentStore.devDatabase) {
|
|
78
|
-
if (this._documentStore.setupDevStore) {
|
|
79
|
-
const devUri = await this._documentStore.setupDevStore();
|
|
80
|
-
if (devUri) {
|
|
81
|
-
uri = devUri;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const resolvedUri = uri ?? this._environment.mongo?.uri;
|
|
86
|
-
await this._documentStore.connect(resolvedUri);
|
|
87
|
-
}
|
|
88
|
-
async disconnect() {
|
|
89
|
-
await this._documentStore.disconnect();
|
|
90
|
-
if (this._documentStore.devDatabase) {
|
|
91
|
-
await this._documentStore.devDatabase.stop();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
isConnected() {
|
|
95
|
-
return this._documentStore.isConnected();
|
|
96
|
-
}
|
|
97
|
-
async setupDevStore() {
|
|
98
|
-
if (this._documentStore.setupDevStore) {
|
|
99
|
-
const uri = await this._documentStore.setupDevStore();
|
|
100
|
-
return uri ?? '';
|
|
101
|
-
}
|
|
102
|
-
return '';
|
|
103
|
-
}
|
|
104
|
-
async teardownDevStore() {
|
|
105
|
-
if (this._documentStore.devDatabase) {
|
|
106
|
-
await this._documentStore.devDatabase.stop();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
async initializeDevStore() {
|
|
110
|
-
if (this._documentStore.initializeDevStore && this._application) {
|
|
111
|
-
const result = await this._documentStore.initializeDevStore(this._application);
|
|
112
|
-
database_initialization_1.DatabaseInitializationService.printServerInitResults(result, false);
|
|
113
|
-
this._lastInitResult = result;
|
|
114
|
-
return result;
|
|
115
|
-
}
|
|
116
|
-
return undefined;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Get the result of the last initializeDevStore call.
|
|
120
|
-
* Available after start() completes in dev mode.
|
|
121
|
-
*/
|
|
122
|
-
get lastInitResult() {
|
|
123
|
-
return this._lastInitResult;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Get the IMongoApplication adapter created during init().
|
|
127
|
-
* This adapter delegates Mongo-specific accessors (db, getModel) to the plugin
|
|
128
|
-
* and everything else to the real application. Use this when constructing
|
|
129
|
-
* services that need IMongoApplication (e.g. UserService, RoleService).
|
|
130
|
-
* Available after init() has been called.
|
|
131
|
-
*/
|
|
132
|
-
get mongoApplication() {
|
|
133
|
-
return this._application;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Called by PluginManager during Application.start().
|
|
137
|
-
* Wires up the Mongoose-backed authentication provider.
|
|
138
|
-
*/
|
|
139
|
-
async init(app) {
|
|
140
|
-
// Wire up auth provider if the app exposes IMongoApplication-compatible interface
|
|
141
|
-
// We create a lightweight adapter that satisfies IMongoApplication
|
|
142
|
-
const mongoAppAdapter = this.createMongoAppAdapter(app);
|
|
143
|
-
// Store the adapter (not the raw app) so that initializeDevStore
|
|
144
|
-
// passes an IMongoApplication with getModel/db to the init function.
|
|
145
|
-
this._application = mongoAppAdapter;
|
|
146
|
-
this._authProvider = new mongo_authentication_provider_1.MongoAuthenticationProvider(mongoAppAdapter);
|
|
147
|
-
// Set the auth provider on the application
|
|
148
|
-
if ('authProvider' in app && app.authProvider === undefined) {
|
|
149
|
-
app.authProvider = this._authProvider;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
async stop() {
|
|
153
|
-
await this.disconnect();
|
|
154
|
-
}
|
|
155
|
-
// ── Mongo-specific accessors ──
|
|
156
|
-
/**
|
|
157
|
-
* Get the Mongoose database instance.
|
|
158
|
-
*/
|
|
159
|
-
get db() {
|
|
160
|
-
if (this._documentStore instanceof mongoose_document_store_1.MongooseDocumentStore) {
|
|
161
|
-
return this._documentStore.db;
|
|
162
|
-
}
|
|
163
|
-
throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Admin_Error_DatabaseNotConnectedYet);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Get the schema map for all models.
|
|
167
|
-
*/
|
|
168
|
-
get schemaMap() {
|
|
169
|
-
const map = this._documentStore.schemaMap;
|
|
170
|
-
if (!map) {
|
|
171
|
-
throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Admin_Error_SchemaMapIsNotLoadedYet);
|
|
172
|
-
}
|
|
173
|
-
return map;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Get the in-memory MongoDB instance (if any).
|
|
177
|
-
*/
|
|
178
|
-
get devDatabase() {
|
|
179
|
-
return this._documentStore.devDatabase;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Get the underlying document store.
|
|
183
|
-
*/
|
|
184
|
-
get documentStore() {
|
|
185
|
-
return this._documentStore;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Get a Mongoose model by name.
|
|
189
|
-
*/
|
|
190
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
191
|
-
getModel(modelName) {
|
|
192
|
-
return this._documentStore.getModel(modelName);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Creates a lightweight adapter that satisfies IMongoApplication
|
|
196
|
-
* by delegating to the plugin for Mongo-specific accessors and
|
|
197
|
-
* to the real app for everything else.
|
|
198
|
-
*/
|
|
199
|
-
createMongoAppAdapter(app) {
|
|
200
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
201
|
-
const plugin = this;
|
|
202
|
-
return {
|
|
203
|
-
get environment() {
|
|
204
|
-
return app.environment;
|
|
205
|
-
},
|
|
206
|
-
get constants() {
|
|
207
|
-
return app.constants;
|
|
208
|
-
},
|
|
209
|
-
get ready() {
|
|
210
|
-
return app.ready;
|
|
211
|
-
},
|
|
212
|
-
get services() {
|
|
213
|
-
return app.services;
|
|
214
|
-
},
|
|
215
|
-
get plugins() {
|
|
216
|
-
return app.plugins;
|
|
217
|
-
},
|
|
218
|
-
get database() {
|
|
219
|
-
return app.database;
|
|
220
|
-
},
|
|
221
|
-
get authProvider() {
|
|
222
|
-
return app.authProvider;
|
|
223
|
-
},
|
|
224
|
-
start: () => app.start(),
|
|
225
|
-
get db() {
|
|
226
|
-
return plugin.db;
|
|
227
|
-
},
|
|
228
|
-
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
229
|
-
getModel: (modelName) => plugin.getModel(modelName),
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
exports.MongoDatabasePlugin = MongoDatabasePlugin;
|
|
234
|
-
//# sourceMappingURL=mongo-database-plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mongo-database-plugin.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/plugins/mongo-database-plugin.ts"],"names":[],"mappings":"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"}
|
package/src/routers/api.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview API router configuration with dependency injection and service registration.
|
|
3
|
-
* Manages user controller and all required services for API endpoints.
|
|
4
|
-
* @module routers/api
|
|
5
|
-
*/
|
|
6
|
-
import { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
7
|
-
import { ITokenRole, ITokenUser, IUserBase } from '@digitaldefiance/suite-core-lib';
|
|
8
|
-
import { BaseDocument } from '../documents';
|
|
9
|
-
import { Environment } from '../environment';
|
|
10
|
-
import { IConstants } from '../interfaces';
|
|
11
|
-
import { IMongoApplication } from '../interfaces/mongo-application';
|
|
12
|
-
import { BaseRouter } from './base';
|
|
13
|
-
import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
|
|
14
|
-
/**
|
|
15
|
-
* Router for the API endpoints.
|
|
16
|
-
* Manages user controller and registers all required services via dependency injection.
|
|
17
|
-
* @template TID Platform-specific ID type
|
|
18
|
-
* @template TDate Date type
|
|
19
|
-
* @template TLanguage Site language string literal type
|
|
20
|
-
* @template TAccountStatus Account status string literal type
|
|
21
|
-
* @template TUser User base type
|
|
22
|
-
* @template TTokenRole Token role type
|
|
23
|
-
* @template TBaseDocument Base document type
|
|
24
|
-
* @template TTokenUser Token user type
|
|
25
|
-
* @template TConstants Constants type
|
|
26
|
-
* @template TEnvironment Environment type
|
|
27
|
-
* @template TApplication Application type
|
|
28
|
-
*/
|
|
29
|
-
export declare class ApiRouter<TID extends PlatformID, TDate extends Date, TLanguage extends CoreLanguageCode, TAccountStatus extends string, TUser extends IUserBase<TID, TDate, TLanguage, TAccountStatus> = IUserBase<TID, TDate, TLanguage, TAccountStatus>, TTokenRole extends ITokenRole<TID, TDate> = ITokenRole<TID, TDate>, TBaseDocument extends BaseDocument<any, TID> = BaseDocument<any, TID>, TTokenUser extends ITokenUser = ITokenUser, TConstants extends IConstants = IConstants, TEnvironment extends Environment<TID> = Environment<TID>, TApplication extends IMongoApplication<TID> = IMongoApplication<TID>> extends BaseRouter<TID, TApplication> {
|
|
30
|
-
private readonly openApiController;
|
|
31
|
-
/** User controller for handling user-related API endpoints */
|
|
32
|
-
private readonly userController;
|
|
33
|
-
/** JWT service for token generation and validation */
|
|
34
|
-
private readonly jwtService;
|
|
35
|
-
/** Email service for sending emails */
|
|
36
|
-
private readonly emailService;
|
|
37
|
-
/** User service for user management operations */
|
|
38
|
-
private readonly userService;
|
|
39
|
-
/** Role service for role management operations */
|
|
40
|
-
private readonly roleService;
|
|
41
|
-
/** Key wrapping service for password-based encryption */
|
|
42
|
-
private readonly keyWrappingService;
|
|
43
|
-
/** ECIES service for elliptic curve encryption */
|
|
44
|
-
private readonly eciesService;
|
|
45
|
-
/** Backup code service for generating and validating backup codes */
|
|
46
|
-
private readonly backupCodeService;
|
|
47
|
-
/**
|
|
48
|
-
* Creates a new API router instance.
|
|
49
|
-
* Registers all required services and initializes the user controller.
|
|
50
|
-
* @param application Application instance with database connection and configuration
|
|
51
|
-
*/
|
|
52
|
-
constructor(application: TApplication, docsRoute?: string | undefined);
|
|
53
|
-
/**
|
|
54
|
-
* Registers all required services in the application service container.
|
|
55
|
-
* Services are registered as singletons and lazily instantiated.
|
|
56
|
-
* @private
|
|
57
|
-
*/
|
|
58
|
-
private registerServices;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=api.d.ts.map
|
package/src/routers/api.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/routers/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAgB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAQpE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAS,CACpB,GAAG,SAAS,UAAU,EACtB,KAAK,SAAS,IAAI,EAClB,SAAS,SAAS,gBAAgB,EAClC,cAAc,SAAS,MAAM,EAC7B,KAAK,SAAS,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,SAAS,CACxE,GAAG,EACH,KAAK,EACL,SAAS,EACT,cAAc,CACf,EACD,UAAU,SAAS,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAClE,aAAa,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EACrE,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1C,UAAU,SAAS,UAAU,GAAG,UAAU,EAC1C,YAAY,SAAS,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EACxD,YAAY,SAAS,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CACpE,SAAQ,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;IAC3D,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAS7B;IACF,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAMzB;IACF,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAY1B;IACF,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IACF;;;;OAIG;gBAED,WAAW,EAAE,YAAY,EACzB,SAAS,GAAE,MAAM,GAAG,SAAsB;IAqC5C;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAgFzB"}
|
package/src/routers/api.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview API router configuration with dependency injection and service registration.
|
|
4
|
-
* Manages user controller and all required services for API endpoints.
|
|
5
|
-
* @module routers/api
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.ApiRouter = void 0;
|
|
9
|
-
const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
|
|
10
|
-
const container_1 = require("../container");
|
|
11
|
-
const user_1 = require("../controllers/user");
|
|
12
|
-
const registry_1 = require("../registry");
|
|
13
|
-
const backup_code_1 = require("../services/backup-code");
|
|
14
|
-
const jwt_1 = require("../services/jwt");
|
|
15
|
-
const key_wrapping_1 = require("../services/key-wrapping");
|
|
16
|
-
const role_1 = require("../services/role");
|
|
17
|
-
const user_2 = require("../services/user");
|
|
18
|
-
const base_1 = require("./base");
|
|
19
|
-
const openapi_1 = require("../controllers/openapi");
|
|
20
|
-
/**
|
|
21
|
-
* Router for the API endpoints.
|
|
22
|
-
* Manages user controller and registers all required services via dependency injection.
|
|
23
|
-
* @template TID Platform-specific ID type
|
|
24
|
-
* @template TDate Date type
|
|
25
|
-
* @template TLanguage Site language string literal type
|
|
26
|
-
* @template TAccountStatus Account status string literal type
|
|
27
|
-
* @template TUser User base type
|
|
28
|
-
* @template TTokenRole Token role type
|
|
29
|
-
* @template TBaseDocument Base document type
|
|
30
|
-
* @template TTokenUser Token user type
|
|
31
|
-
* @template TConstants Constants type
|
|
32
|
-
* @template TEnvironment Environment type
|
|
33
|
-
* @template TApplication Application type
|
|
34
|
-
*/
|
|
35
|
-
class ApiRouter extends base_1.BaseRouter {
|
|
36
|
-
openApiController;
|
|
37
|
-
/** User controller for handling user-related API endpoints */
|
|
38
|
-
userController;
|
|
39
|
-
/** JWT service for token generation and validation */
|
|
40
|
-
jwtService;
|
|
41
|
-
/** Email service for sending emails */
|
|
42
|
-
emailService;
|
|
43
|
-
/** User service for user management operations */
|
|
44
|
-
userService;
|
|
45
|
-
/** Role service for role management operations */
|
|
46
|
-
roleService;
|
|
47
|
-
/** Key wrapping service for password-based encryption */
|
|
48
|
-
keyWrappingService;
|
|
49
|
-
/** ECIES service for elliptic curve encryption */
|
|
50
|
-
eciesService;
|
|
51
|
-
/** Backup code service for generating and validating backup codes */
|
|
52
|
-
backupCodeService;
|
|
53
|
-
/**
|
|
54
|
-
* Creates a new API router instance.
|
|
55
|
-
* Registers all required services and initializes the user controller.
|
|
56
|
-
* @param application Application instance with database connection and configuration
|
|
57
|
-
*/
|
|
58
|
-
constructor(application, docsRoute = '/openapi') {
|
|
59
|
-
super(application);
|
|
60
|
-
this.registerServices();
|
|
61
|
-
this.jwtService = application.services.get(container_1.ServiceKeys.JWT);
|
|
62
|
-
this.roleService = application.services.get(container_1.ServiceKeys.ROLE);
|
|
63
|
-
this.emailService = application.services.get(container_1.ServiceKeys.EMAIL);
|
|
64
|
-
this.keyWrappingService = application.services.get(container_1.ServiceKeys.KEY_WRAPPING);
|
|
65
|
-
this.eciesService = application.services.get(container_1.ServiceKeys.ECIES);
|
|
66
|
-
this.backupCodeService = application.services.get(container_1.ServiceKeys.BACKUP_CODE);
|
|
67
|
-
this.userService = application.services.get(container_1.ServiceKeys.USER);
|
|
68
|
-
this.userController = new user_1.UserController(application, this.jwtService, this.userService, this.backupCodeService, this.roleService, this.eciesService);
|
|
69
|
-
this.openApiController = new openapi_1.OpenApiController(application);
|
|
70
|
-
this.router.use('/user', this.userController.router);
|
|
71
|
-
if (docsRoute !== undefined && docsRoute !== '') {
|
|
72
|
-
this.router.use(docsRoute, this.openApiController.router);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Registers all required services in the application service container.
|
|
77
|
-
* Services are registered as singletons and lazily instantiated.
|
|
78
|
-
* @private
|
|
79
|
-
*/
|
|
80
|
-
registerServices() {
|
|
81
|
-
const app = this.application;
|
|
82
|
-
if (!app.services.has(container_1.ServiceKeys.JWT)) {
|
|
83
|
-
app.services.register(container_1.ServiceKeys.JWT, () => new jwt_1.JwtService(app));
|
|
84
|
-
}
|
|
85
|
-
if (!app.services.has(container_1.ServiceKeys.ROLE)) {
|
|
86
|
-
app.services.register(container_1.ServiceKeys.ROLE, () => new role_1.RoleService(app));
|
|
87
|
-
}
|
|
88
|
-
if (!app.services.has(container_1.ServiceKeys.EMAIL)) {
|
|
89
|
-
app.services.register(container_1.ServiceKeys.EMAIL, () => registry_1.emailServiceRegistry.getService());
|
|
90
|
-
}
|
|
91
|
-
if (!app.services.has(container_1.ServiceKeys.KEY_WRAPPING)) {
|
|
92
|
-
app.services.register(container_1.ServiceKeys.KEY_WRAPPING, () => new key_wrapping_1.KeyWrappingService());
|
|
93
|
-
}
|
|
94
|
-
if (!app.services.has(container_1.ServiceKeys.ECIES)) {
|
|
95
|
-
app.services.register(container_1.ServiceKeys.ECIES, () => {
|
|
96
|
-
const config = {
|
|
97
|
-
curveName: app.constants.ECIES.CURVE_NAME,
|
|
98
|
-
primaryKeyDerivationPath: app.constants.ECIES.PRIMARY_KEY_DERIVATION_PATH,
|
|
99
|
-
mnemonicStrength: app.constants.ECIES.MNEMONIC_STRENGTH,
|
|
100
|
-
symmetricAlgorithm: app.constants.ECIES.SYMMETRIC_ALGORITHM_CONFIGURATION,
|
|
101
|
-
symmetricKeyBits: app.constants.ECIES.SYMMETRIC.KEY_BITS,
|
|
102
|
-
symmetricKeyMode: app.constants.ECIES.SYMMETRIC.MODE,
|
|
103
|
-
};
|
|
104
|
-
return new node_ecies_lib_1.ECIESService(config);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
if (!app.services.has(container_1.ServiceKeys.BACKUP_CODE)) {
|
|
108
|
-
app.services.register(container_1.ServiceKeys.BACKUP_CODE, () => new backup_code_1.BackupCodeService(app, app.services.get(container_1.ServiceKeys.ECIES), app.services.get(container_1.ServiceKeys.KEY_WRAPPING), app.services.get(container_1.ServiceKeys.ROLE)));
|
|
109
|
-
}
|
|
110
|
-
if (!app.services.has(container_1.ServiceKeys.USER)) {
|
|
111
|
-
app.services.register(container_1.ServiceKeys.USER, () => new user_2.UserService(app, app.services.get(container_1.ServiceKeys.ROLE), app.services.get(container_1.ServiceKeys.EMAIL), app.services.get(container_1.ServiceKeys.KEY_WRAPPING), app.services.get(container_1.ServiceKeys.BACKUP_CODE)));
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.ApiRouter = ApiRouter;
|
|
116
|
-
//# sourceMappingURL=api.js.map
|
package/src/routers/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/routers/api.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,oEAA2E;AAM3E,4CAA2C;AAC3C,8CAAqD;AAMrD,0CAAmD;AACnD,yDAA4D;AAC5D,yCAA6C;AAC7C,2DAA8D;AAC9D,2CAA+C;AAC/C,2CAA+C;AAC/C,iCAAoC;AAEpC,oDAA2D;AAE3D;;;;;;;;;;;;;;GAcG;AACH,MAAa,SAiBX,SAAQ,iBAA6B;IACpB,iBAAiB,CAAyB;IAC3D,8DAA8D;IAC7C,cAAc,CAS7B;IACF,sDAAsD;IACrC,UAAU,CAMzB;IACF,uCAAuC;IACtB,YAAY,CAAgB;IAC7C,kDAAkD;IACjC,WAAW,CAY1B;IACF,kDAAkD;IACjC,WAAW,CAAsC;IAClE,yDAAyD;IACxC,kBAAkB,CAAqB;IACxD,kDAAkD;IACjC,YAAY,CAAoB;IACjD,qEAAqE;IACpD,iBAAiB,CAKhC;IACF;;;;OAIG;IACH,YACE,WAAyB,EACzB,YAAgC,UAAU;QAE1C,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAChD,uBAAW,CAAC,YAAY,CACzB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAc,CAUtC,WAAW,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,2BAAiB,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,gBAAgB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CACnB,uBAAW,CAAC,GAAG,EACf,GAAG,EAAE,CACH,IAAI,gBAAU,CAAmD,GAAG,CAAC,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CACnB,uBAAW,CAAC,IAAI,EAChB,GAAG,EAAE,CAAC,IAAI,kBAAW,CAAyB,GAAG,CAAC,CACnD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAC5C,+BAAoB,CAAC,UAAU,EAAE,CAClC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,YAAY,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,QAAQ,CAAC,QAAQ,CACnB,uBAAW,CAAC,YAAY,EACxB,GAAG,EAAE,CAAC,IAAI,iCAAkB,EAAE,CAC/B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAW,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC5C,MAAM,MAAM,GAAiB;oBAC3B,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU;oBACzC,wBAAwB,EACtB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,2BAA2B;oBACjD,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB;oBACvD,kBAAkB,EAChB,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,iCAAiC;oBACvD,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ;oBACxD,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;iBACrD,CAAC;gBACF,OAAO,IAAI,6BAAY,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,QAAQ,CAAC,QAAQ,CACnB,uBAAW,CAAC,WAAW,EACvB,GAAG,EAAE,CACH,IAAI,+BAAiB,CACnB,GAAG,EACH,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,KAAK,CAAC,EACnC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,YAAY,CAAC,EAC1C,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,IAAI,CAAC,CACnC,CACJ,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CACnB,uBAAW,CAAC,IAAI,EAChB,GAAG,EAAE,CACH,IAAI,kBAAW,CAab,GAAG,EACH,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,IAAI,CAAC,EAClC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,KAAK,CAAC,EACnC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,YAAY,CAAC,EAC1C,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAW,CAAC,WAAW,CAAC,CAC1C,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AApMD,8BAoMC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Email token schema factory for MongoDB.
|
|
3
|
-
* Creates schema for email verification and password reset tokens.
|
|
4
|
-
* @module schemas/email-token
|
|
5
|
-
*/
|
|
6
|
-
import { Schema } from '@digitaldefiance/mongoose-types';
|
|
7
|
-
import { EmailTokenType } from '@digitaldefiance/suite-core-lib';
|
|
8
|
-
import { BaseModelName } from '../enumerations';
|
|
9
|
-
import { IConstants } from '../interfaces';
|
|
10
|
-
/**
|
|
11
|
-
* Configuration options for creating an email token schema.
|
|
12
|
-
* @template TTokenType - Token type enum (defaults to EmailTokenType)
|
|
13
|
-
* @template TModelName - Model name type (defaults to BaseModelName)
|
|
14
|
-
* @template TConstants - Constants type (defaults to IConstants)
|
|
15
|
-
*/
|
|
16
|
-
export interface EmailTokenSchemaOptions<TTokenType extends string = EmailTokenType, TModelName extends string = BaseModelName, TConstants extends IConstants = IConstants> {
|
|
17
|
-
/** Token type enum values to use */
|
|
18
|
-
tokenTypeEnum?: TTokenType[];
|
|
19
|
-
/** Model name for user reference */
|
|
20
|
-
userModelName?: TModelName;
|
|
21
|
-
/** Token expiration time (default: '1d') */
|
|
22
|
-
expiresIn?: string;
|
|
23
|
-
/** Custom email validator function */
|
|
24
|
-
emailValidator?: (v: string) => boolean;
|
|
25
|
-
/** Custom validation error message function */
|
|
26
|
-
validationMessage?: (props: {
|
|
27
|
-
value: string;
|
|
28
|
-
}) => string;
|
|
29
|
-
constants?: TConstants;
|
|
30
|
-
/** ID type for references */
|
|
31
|
-
idType?: any;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Factory function to create an extensible email token schema.
|
|
35
|
-
* Includes TTL index for automatic token expiration.
|
|
36
|
-
* @template TTokenType - Token type enum (defaults to EmailTokenType)
|
|
37
|
-
* @template TModelName - Model name type (defaults to BaseModelName)
|
|
38
|
-
* @template TConstants - Constants type (defaults to IConstants)
|
|
39
|
-
* @param {EmailTokenSchemaOptions<TTokenType, TModelName>} options - Schema configuration options
|
|
40
|
-
* @param {TConstants} [_constants] - Optional constants (reserved for future use)
|
|
41
|
-
* @returns {Schema} Configured email token schema with TTL and unique indexes
|
|
42
|
-
*/
|
|
43
|
-
export declare function createEmailTokenSchema<TTokenType extends string = EmailTokenType, TModelName extends string = BaseModelName, TConstants extends IConstants = IConstants>(options?: EmailTokenSchemaOptions<TTokenType, TModelName>, _constants?: TConstants): Schema;
|
|
44
|
-
/**
|
|
45
|
-
* Default email token schema with base configuration.
|
|
46
|
-
* Pre-configured schema with 1-day TTL and compound unique index.
|
|
47
|
-
*/
|
|
48
|
-
export declare const EmailTokenSchema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, {
|
|
49
|
-
[x: number]: unknown;
|
|
50
|
-
[x: symbol]: unknown;
|
|
51
|
-
[x: string]: unknown;
|
|
52
|
-
}, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
|
|
53
|
-
[x: number]: unknown;
|
|
54
|
-
[x: symbol]: unknown;
|
|
55
|
-
[x: string]: unknown;
|
|
56
|
-
}>, {}, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & import("mongoose").FlatRecord<{
|
|
57
|
-
[x: number]: unknown;
|
|
58
|
-
[x: symbol]: unknown;
|
|
59
|
-
[x: string]: unknown;
|
|
60
|
-
}> & Required<{
|
|
61
|
-
_id: unknown;
|
|
62
|
-
}> & {
|
|
63
|
-
__v: number;
|
|
64
|
-
}>;
|
|
65
|
-
//# sourceMappingURL=email-token.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email-token.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/schemas/email-token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EACL,cAAc,EAGf,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB,CACtC,UAAU,SAAS,MAAM,GAAG,cAAc,EAC1C,UAAU,SAAS,MAAM,GAAG,aAAa,EACzC,UAAU,SAAS,UAAU,GAAG,UAAU;IAE1C,oCAAoC;IACpC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;IAC7B,oCAAoC;IACpC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACzD,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,SAAS,MAAM,GAAG,cAAc,EAC1C,UAAU,SAAS,MAAM,GAAG,aAAa,EACzC,UAAU,SAAS,UAAU,GAAG,UAAU,EAE1C,OAAO,GAAE,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAM,EAC7D,UAAU,CAAC,EAAE,UAAU,GACtB,MAAM,CA8CR;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;EAA2B,CAAC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview Email token schema factory for MongoDB.
|
|
4
|
-
* Creates schema for email verification and password reset tokens.
|
|
5
|
-
* @module schemas/email-token
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.EmailTokenSchema = void 0;
|
|
9
|
-
exports.createEmailTokenSchema = createEmailTokenSchema;
|
|
10
|
-
const tslib_1 = require("tslib");
|
|
11
|
-
const mongoose_types_1 = require("@digitaldefiance/mongoose-types");
|
|
12
|
-
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
13
|
-
const validator_1 = tslib_1.__importDefault(require("validator"));
|
|
14
|
-
const enumerations_1 = require("../enumerations");
|
|
15
|
-
/**
|
|
16
|
-
* Factory function to create an extensible email token schema.
|
|
17
|
-
* Includes TTL index for automatic token expiration.
|
|
18
|
-
* @template TTokenType - Token type enum (defaults to EmailTokenType)
|
|
19
|
-
* @template TModelName - Model name type (defaults to BaseModelName)
|
|
20
|
-
* @template TConstants - Constants type (defaults to IConstants)
|
|
21
|
-
* @param {EmailTokenSchemaOptions<TTokenType, TModelName>} options - Schema configuration options
|
|
22
|
-
* @param {TConstants} [_constants] - Optional constants (reserved for future use)
|
|
23
|
-
* @returns {Schema} Configured email token schema with TTL and unique indexes
|
|
24
|
-
*/
|
|
25
|
-
function createEmailTokenSchema(options = {}, _constants) {
|
|
26
|
-
const { tokenTypeEnum = Object.values(suite_core_lib_1.EmailTokenType), userModelName = enumerations_1.BaseModelName.User, expiresIn = '1d', validationMessage = (props) => (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Error_InvalidEmailTemplate, {
|
|
27
|
-
email: props.value,
|
|
28
|
-
}), idType = mongoose_types_1.Schema.Types.ObjectId, } = options;
|
|
29
|
-
const definition = {
|
|
30
|
-
userId: {
|
|
31
|
-
type: idType,
|
|
32
|
-
required: true,
|
|
33
|
-
ref: userModelName,
|
|
34
|
-
immutable: true,
|
|
35
|
-
},
|
|
36
|
-
type: {
|
|
37
|
-
type: String,
|
|
38
|
-
enum: tokenTypeEnum,
|
|
39
|
-
required: true,
|
|
40
|
-
immutable: true,
|
|
41
|
-
},
|
|
42
|
-
token: { type: String, required: true, immutable: true, unique: true },
|
|
43
|
-
email: {
|
|
44
|
-
type: String,
|
|
45
|
-
required: true,
|
|
46
|
-
immutable: true,
|
|
47
|
-
validate: {
|
|
48
|
-
validator: (v) => validator_1.default.isEmail(v),
|
|
49
|
-
message: validationMessage,
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
lastSent: { type: Date, required: false },
|
|
53
|
-
expiresAt: {
|
|
54
|
-
type: Date,
|
|
55
|
-
default: Date.now,
|
|
56
|
-
index: { expires: expiresIn },
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
const schema = new mongoose_types_1.Schema(definition, { timestamps: true });
|
|
60
|
-
schema.index({ userId: 1, email: 1, type: 1 }, { unique: true });
|
|
61
|
-
return schema;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Default email token schema with base configuration.
|
|
65
|
-
* Pre-configured schema with 1-day TTL and compound unique index.
|
|
66
|
-
*/
|
|
67
|
-
exports.EmailTokenSchema = createEmailTokenSchema();
|
|
68
|
-
//# sourceMappingURL=email-token.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email-token.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/schemas/email-token.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAgDH,wDAqDC;;AAnGD,oEAAyD;AACzD,oEAIyC;AACzC,kEAAkC;AAClC,kDAAgD;AA6BhD;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CAKpC,UAA2D,EAAE,EAC7D,UAAuB;IAEvB,MAAM,EACJ,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,+BAAc,CAAiB,EAC7D,aAAa,GAAG,4BAAa,CAAC,IAAkB,EAChD,SAAS,GAAG,IAAI,EAChB,iBAAiB,GAAG,CAAC,KAAwB,EAAE,EAAE,CAC/C,IAAA,wCAAuB,EAAC,mCAAkB,CAAC,0BAA0B,EAAE;QACrE,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,EACJ,MAAM,GAAG,uBAAM,CAAC,KAAK,CAAC,QAAQ,GAC/B,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,aAAa;YAClB,SAAS,EAAE,IAAI;SAChB;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;SAChB;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QACtE,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE;gBACR,SAAS,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,mBAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,OAAO,EAAE,iBAAiB;aAC3B;SACF;QACD,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;QACzC,SAAS,EAAE;YACT,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;SAC9B;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,uBAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACU,QAAA,gBAAgB,GAAG,sBAAsB,EAAE,CAAC"}
|
package/src/schemas/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
|
package/src/schemas/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./email-token"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./mnemonic"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./role"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./schema"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./used-direct-login-token"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./user"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./user-role"), exports);
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
package/src/schemas/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/schemas/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,qDAA2B;AAC3B,iDAAuB;AACvB,mDAAyB;AACzB,oEAA0C;AAC1C,iDAAuB;AACvB,sDAA4B"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Mnemonic schema factory for MongoDB.
|
|
3
|
-
* Creates schema for storing HMAC-protected mnemonic hashes.
|
|
4
|
-
* @module schemas/mnemonic
|
|
5
|
-
*/
|
|
6
|
-
import { Schema } from '@digitaldefiance/mongoose-types';
|
|
7
|
-
import { IConstants } from '../interfaces/constants';
|
|
8
|
-
/**
|
|
9
|
-
* Creates a mnemonic schema with custom or default constants.
|
|
10
|
-
* @template T - Constants type extending IConstants
|
|
11
|
-
* @param {Function} [validationMessage] - Optional custom validation message function
|
|
12
|
-
* @param {T} constants - Constants for validation (defaults to AppConstants)
|
|
13
|
-
* @returns {Schema} Configured mnemonic schema
|
|
14
|
-
*/
|
|
15
|
-
export declare function createMnemonicSchema<T extends IConstants = IConstants>(validationMessage?: () => string, constants?: T): Schema;
|
|
16
|
-
/**
|
|
17
|
-
* Default mnemonic schema using AppConstants.
|
|
18
|
-
* Pre-configured schema for standard mnemonic storage.
|
|
19
|
-
*/
|
|
20
|
-
export declare const MnemonicSchema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, {
|
|
21
|
-
[x: number]: unknown;
|
|
22
|
-
[x: symbol]: unknown;
|
|
23
|
-
[x: string]: unknown;
|
|
24
|
-
}, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
|
|
25
|
-
[x: number]: unknown;
|
|
26
|
-
[x: symbol]: unknown;
|
|
27
|
-
[x: string]: unknown;
|
|
28
|
-
}>, {}, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & import("mongoose").FlatRecord<{
|
|
29
|
-
[x: number]: unknown;
|
|
30
|
-
[x: symbol]: unknown;
|
|
31
|
-
[x: string]: unknown;
|
|
32
|
-
}> & Required<{
|
|
33
|
-
_id: unknown;
|
|
34
|
-
}> & {
|
|
35
|
-
__v: number;
|
|
36
|
-
}>;
|
|
37
|
-
//# sourceMappingURL=mnemonic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/schemas/mnemonic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAMzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EACpE,iBAAiB,CAAC,EAAE,MAAM,MAAM,EAChC,SAAS,GAAE,CAAqB,GAC/B,MAAM,CAiBR;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;EAAyB,CAAC"}
|