deps.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.aws4 = void 0;
  4. exports.getKerberos = getKerberos;
  5. exports.getZstdLibrary = getZstdLibrary;
  6. exports.getAwsCredentialProvider = getAwsCredentialProvider;
  7. exports.getGcpMetadata = getGcpMetadata;
  8. exports.getSnappy = getSnappy;
  9. exports.getSocks = getSocks;
  10. exports.getMongoDBClientEncryption = getMongoDBClientEncryption;
  11. const error_1 = require("./error");
  12. function makeErrorModule(error) {
  13. const props = error ? { kModuleError: error } : {};
  14. return new Proxy(props, {
  15. get: (_, key) => {
  16. if (key === 'kModuleError') {
  17. return error;
  18. }
  19. throw error;
  20. },
  21. set: () => {
  22. throw error;
  23. }
  24. });
  25. }
  26. function getKerberos() {
  27. let kerberos;
  28. try {
  29. // Ensure you always wrap an optional require in the try block NODE-3199
  30. // eslint-disable-next-line @typescript-eslint/no-require-imports
  31. kerberos = require('kerberos');
  32. }
  33. catch (error) {
  34. kerberos = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `kerberos` not found. Please install it to enable kerberos authentication', { cause: error, dependencyName: 'kerberos' }));
  35. }
  36. return kerberos;
  37. }
  38. function getZstdLibrary() {
  39. let ZStandard;
  40. try {
  41. // eslint-disable-next-line @typescript-eslint/no-require-imports
  42. ZStandard = require('@mongodb-js/zstd');
  43. }
  44. catch (error) {
  45. ZStandard = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `@mongodb-js/zstd` not found. Please install it to enable zstd compression', { cause: error, dependencyName: 'zstd' }));
  46. }
  47. return ZStandard;
  48. }
  49. function getAwsCredentialProvider() {
  50. try {
  51. // Ensure you always wrap an optional require in the try block NODE-3199
  52. // eslint-disable-next-line @typescript-eslint/no-require-imports
  53. const credentialProvider = require('@aws-sdk/credential-providers');
  54. return credentialProvider;
  55. }
  56. catch (error) {
  57. return makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `@aws-sdk/credential-providers` not found.' +
  58. ' Please install it to enable getting aws credentials via the official sdk.', { cause: error, dependencyName: '@aws-sdk/credential-providers' }));
  59. }
  60. }
  61. function getGcpMetadata() {
  62. try {
  63. // Ensure you always wrap an optional require in the try block NODE-3199
  64. // eslint-disable-next-line @typescript-eslint/no-require-imports
  65. const credentialProvider = require('gcp-metadata');
  66. return credentialProvider;
  67. }
  68. catch (error) {
  69. return makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `gcp-metadata` not found.' +
  70. ' Please install it to enable getting gcp credentials via the official sdk.', { cause: error, dependencyName: 'gcp-metadata' }));
  71. }
  72. }
  73. function getSnappy() {
  74. try {
  75. // Ensure you always wrap an optional require in the try block NODE-3199
  76. // eslint-disable-next-line @typescript-eslint/no-require-imports
  77. const value = require('snappy');
  78. return value;
  79. }
  80. catch (error) {
  81. const kModuleError = new error_1.MongoMissingDependencyError('Optional module `snappy` not found. Please install it to enable snappy compression', { cause: error, dependencyName: 'snappy' });
  82. return { kModuleError };
  83. }
  84. }
  85. function getSocks() {
  86. try {
  87. // Ensure you always wrap an optional require in the try block NODE-3199
  88. // eslint-disable-next-line @typescript-eslint/no-require-imports
  89. const value = require('socks');
  90. return value;
  91. }
  92. catch (error) {
  93. const kModuleError = new error_1.MongoMissingDependencyError('Optional module `socks` not found. Please install it to connections over a SOCKS5 proxy', { cause: error, dependencyName: 'socks' });
  94. return { kModuleError };
  95. }
  96. }
  97. exports.aws4 = loadAws4();
  98. function loadAws4() {
  99. let aws4;
  100. try {
  101. // eslint-disable-next-line @typescript-eslint/no-require-imports
  102. aws4 = require('aws4');
  103. }
  104. catch (error) {
  105. aws4 = makeErrorModule(new error_1.MongoMissingDependencyError('Optional module `aws4` not found. Please install it to enable AWS authentication', { cause: error, dependencyName: 'aws4' }));
  106. }
  107. return aws4;
  108. }
  109. /** A utility function to get the instance of mongodb-client-encryption, if it exists. */
  110. function getMongoDBClientEncryption() {
  111. let mongodbClientEncryption = null;
  112. try {
  113. // NOTE(NODE-3199): Ensure you always wrap an optional require literally in the try block
  114. // Cannot be moved to helper utility function, bundlers search and replace the actual require call
  115. // in a way that makes this line throw at bundle time, not runtime, catching here will make bundling succeed
  116. // eslint-disable-next-line @typescript-eslint/no-require-imports
  117. mongodbClientEncryption = require('mongodb-client-encryption');
  118. }
  119. catch (error) {
  120. const kModuleError = new error_1.MongoMissingDependencyError('Optional module `mongodb-client-encryption` not found. Please install it to use auto encryption or ClientEncryption.', { cause: error, dependencyName: 'mongodb-client-encryption' });
  121. return { kModuleError };
  122. }
  123. return mongodbClientEncryption;
  124. }
  125. //# sourceMappingURL=deps.js.map