@qp-mongosh/shell-api 0.0.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.js +1 -0
  3. package/AUTHORS +15 -0
  4. package/LICENSE +201 -0
  5. package/bin/report-missing-help.ts +24 -0
  6. package/bin/report-supported-api.ts +14 -0
  7. package/lib/abstract-cursor.d.ts +33 -0
  8. package/lib/abstract-cursor.js +192 -0
  9. package/lib/abstract-cursor.js.map +1 -0
  10. package/lib/aggregation-cursor.d.ts +6 -0
  11. package/lib/aggregation-cursor.js +20 -0
  12. package/lib/aggregation-cursor.js.map +1 -0
  13. package/lib/bulk.d.ts +43 -0
  14. package/lib/bulk.js +224 -0
  15. package/lib/bulk.js.map +1 -0
  16. package/lib/change-stream-cursor.d.ts +28 -0
  17. package/lib/change-stream-cursor.js +112 -0
  18. package/lib/change-stream-cursor.js.map +1 -0
  19. package/lib/collection.d.ts +95 -0
  20. package/lib/collection.js +965 -0
  21. package/lib/collection.js.map +1 -0
  22. package/lib/cursor.d.ts +32 -0
  23. package/lib/cursor.js +216 -0
  24. package/lib/cursor.js.map +1 -0
  25. package/lib/database.d.ts +116 -0
  26. package/lib/database.js +1224 -0
  27. package/lib/database.js.map +1 -0
  28. package/lib/dbquery.d.ts +8 -0
  29. package/lib/dbquery.js +29 -0
  30. package/lib/dbquery.js.map +1 -0
  31. package/lib/decorators.d.ts +73 -0
  32. package/lib/decorators.js +396 -0
  33. package/lib/decorators.js.map +1 -0
  34. package/lib/enums.d.ts +28 -0
  35. package/lib/enums.js +34 -0
  36. package/lib/enums.js.map +1 -0
  37. package/lib/error-codes.d.ts +12 -0
  38. package/lib/error-codes.js +20 -0
  39. package/lib/error-codes.js.map +1 -0
  40. package/lib/explainable-cursor.d.ts +11 -0
  41. package/lib/explainable-cursor.js +32 -0
  42. package/lib/explainable-cursor.js.map +1 -0
  43. package/lib/explainable.d.ts +32 -0
  44. package/lib/explainable.js +167 -0
  45. package/lib/explainable.js.map +1 -0
  46. package/lib/field-level-encryption.d.ts +50 -0
  47. package/lib/field-level-encryption.js +177 -0
  48. package/lib/field-level-encryption.js.map +1 -0
  49. package/lib/help.d.ts +22 -0
  50. package/lib/help.js +27 -0
  51. package/lib/help.js.map +1 -0
  52. package/lib/helpers.d.ts +71 -0
  53. package/lib/helpers.js +589 -0
  54. package/lib/helpers.js.map +1 -0
  55. package/lib/index.d.ts +16 -0
  56. package/lib/index.js +46 -0
  57. package/lib/index.js.map +1 -0
  58. package/lib/interruptor.d.ts +19 -0
  59. package/lib/interruptor.js +63 -0
  60. package/lib/interruptor.js.map +1 -0
  61. package/lib/mongo-errors.d.ts +5 -0
  62. package/lib/mongo-errors.js +38 -0
  63. package/lib/mongo-errors.js.map +1 -0
  64. package/lib/mongo.d.ts +75 -0
  65. package/lib/mongo.js +477 -0
  66. package/lib/mongo.js.map +1 -0
  67. package/lib/no-db.d.ts +5 -0
  68. package/lib/no-db.js +29 -0
  69. package/lib/no-db.js.map +1 -0
  70. package/lib/plan-cache.d.ts +16 -0
  71. package/lib/plan-cache.js +71 -0
  72. package/lib/plan-cache.js.map +1 -0
  73. package/lib/replica-set.d.ts +45 -0
  74. package/lib/replica-set.js +315 -0
  75. package/lib/replica-set.js.map +1 -0
  76. package/lib/result.d.ts +61 -0
  77. package/lib/result.js +105 -0
  78. package/lib/result.js.map +1 -0
  79. package/lib/session.d.ts +25 -0
  80. package/lib/session.js +89 -0
  81. package/lib/session.js.map +1 -0
  82. package/lib/shard.d.ts +42 -0
  83. package/lib/shard.js +415 -0
  84. package/lib/shard.js.map +1 -0
  85. package/lib/shell-api.d.ts +52 -0
  86. package/lib/shell-api.js +299 -0
  87. package/lib/shell-api.js.map +1 -0
  88. package/lib/shell-bson.d.ts +40 -0
  89. package/lib/shell-bson.js +160 -0
  90. package/lib/shell-bson.js.map +1 -0
  91. package/lib/shell-instance-state.d.ts +77 -0
  92. package/lib/shell-instance-state.js +393 -0
  93. package/lib/shell-instance-state.js.map +1 -0
  94. package/package.json +47 -0
  95. package/tsconfig.lint.json +8 -0
package/lib/enums.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ export declare enum ServerVersions {
2
+ latest = "999.999.999",
3
+ earliest = "0.0.0"
4
+ }
5
+ export declare enum Topologies {
6
+ ReplSet = "ReplSet",
7
+ Standalone = "Standalone",
8
+ Sharded = "Sharded",
9
+ LoadBalanced = "LoadBalanced"
10
+ }
11
+ import { ReplPlatform } from '@qp-mongosh/service-provider-core';
12
+ export declare const ALL_SERVER_VERSIONS: ServerVersions[];
13
+ export declare const ALL_TOPOLOGIES: Topologies[];
14
+ export declare const ALL_PLATFORMS: ReplPlatform[];
15
+ export declare const ALL_API_VERSIONS: number[];
16
+ export declare const CURSOR_FLAGS: {
17
+ 2: string;
18
+ 4: string;
19
+ 8: string;
20
+ 16: string;
21
+ 32: string;
22
+ 64: string;
23
+ 128: string;
24
+ };
25
+ export declare const shellApiType: unique symbol;
26
+ export declare const asPrintable: unique symbol;
27
+ export declare const namespaceInfo: unique symbol;
28
+ export declare const ADMIN_DB = "admin";
package/lib/enums.js ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ADMIN_DB = exports.namespaceInfo = exports.asPrintable = exports.shellApiType = exports.CURSOR_FLAGS = exports.ALL_API_VERSIONS = exports.ALL_PLATFORMS = exports.ALL_TOPOLOGIES = exports.ALL_SERVER_VERSIONS = exports.Topologies = exports.ServerVersions = void 0;
4
+ var ServerVersions;
5
+ (function (ServerVersions) {
6
+ ServerVersions["latest"] = "999.999.999";
7
+ ServerVersions["earliest"] = "0.0.0";
8
+ })(ServerVersions = exports.ServerVersions || (exports.ServerVersions = {}));
9
+ var Topologies;
10
+ (function (Topologies) {
11
+ Topologies["ReplSet"] = "ReplSet";
12
+ Topologies["Standalone"] = "Standalone";
13
+ Topologies["Sharded"] = "Sharded";
14
+ Topologies["LoadBalanced"] = "LoadBalanced";
15
+ })(Topologies = exports.Topologies || (exports.Topologies = {}));
16
+ const service_provider_core_1 = require("@qp-mongosh/service-provider-core");
17
+ exports.ALL_SERVER_VERSIONS = [ServerVersions.earliest, ServerVersions.latest];
18
+ exports.ALL_TOPOLOGIES = [Topologies.ReplSet, Topologies.Sharded, Topologies.LoadBalanced, Topologies.Standalone];
19
+ exports.ALL_PLATFORMS = [service_provider_core_1.ReplPlatform.Compass, service_provider_core_1.ReplPlatform.Browser, service_provider_core_1.ReplPlatform.CLI];
20
+ exports.ALL_API_VERSIONS = [0, Infinity];
21
+ exports.CURSOR_FLAGS = {
22
+ 2: 'tailable',
23
+ 4: 'SlaveOk',
24
+ 8: 'oplogReplay',
25
+ 16: 'noTimeout',
26
+ 32: 'awaitData',
27
+ 64: 'exhaust',
28
+ 128: 'partial'
29
+ };
30
+ exports.shellApiType = Symbol.for('@@mongosh.shellApiType');
31
+ exports.asPrintable = Symbol.for('@@mongosh.asPrintable');
32
+ exports.namespaceInfo = Symbol.for('@@mongosh.namespaceInfo');
33
+ exports.ADMIN_DB = 'admin';
34
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,wCAAsB,CAAA;IACtB,oCAAkB,CAAA;AACpB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,uCAAyB,CAAA;IACzB,iCAAmB,CAAA;IACnB,2CAA6B,CAAA;AAC/B,CAAC,EALW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAKrB;AAED,6EAAiE;AAEpD,QAAA,mBAAmB,GAAG,CAAE,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAE,CAAC;AACzE,QAAA,cAAc,GAAG,CAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,UAAU,CAAE,CAAC;AAC5G,QAAA,aAAa,GAAG,CAAE,oCAAY,CAAC,OAAO,EAAE,oCAAY,CAAC,OAAO,EAAE,oCAAY,CAAC,GAAG,CAAE,CAAC;AACjF,QAAA,gBAAgB,GAAG,CAAE,CAAC,EAAE,QAAQ,CAAE,CAAC;AAEnC,QAAA,YAAY,GAAG;IAC1B,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,aAAa;IAChB,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,SAAS;IACb,GAAG,EAAE,SAAS;CACf,CAAC;AAEW,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACpD,QAAA,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAClD,QAAA,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAEtD,QAAA,QAAQ,GAAG,OAAO,CAAC"}
@@ -0,0 +1,12 @@
1
+ declare function blockedByDriverMetadata(apiDetails: string): {
2
+ driverCaused: boolean;
3
+ api: string;
4
+ };
5
+ declare enum ShellApiErrors {
6
+ NotConnectedToShardedCluster = "SHAPI-10001",
7
+ NotConnectedToReplicaSet = "SHAPI-10002",
8
+ NotConnectedToMongos = "SHAPI-10003",
9
+ NotConnected = "SHAPI-10004",
10
+ NotUsingFLE = "SHAPI-10005"
11
+ }
12
+ export { blockedByDriverMetadata, ShellApiErrors };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShellApiErrors = exports.blockedByDriverMetadata = void 0;
4
+ function blockedByDriverMetadata(apiDetails) {
5
+ return {
6
+ driverCaused: true,
7
+ api: apiDetails
8
+ };
9
+ }
10
+ exports.blockedByDriverMetadata = blockedByDriverMetadata;
11
+ var ShellApiErrors;
12
+ (function (ShellApiErrors) {
13
+ ShellApiErrors["NotConnectedToShardedCluster"] = "SHAPI-10001";
14
+ ShellApiErrors["NotConnectedToReplicaSet"] = "SHAPI-10002";
15
+ ShellApiErrors["NotConnectedToMongos"] = "SHAPI-10003";
16
+ ShellApiErrors["NotConnected"] = "SHAPI-10004";
17
+ ShellApiErrors["NotUsingFLE"] = "SHAPI-10005";
18
+ })(ShellApiErrors || (ShellApiErrors = {}));
19
+ exports.ShellApiErrors = ShellApiErrors;
20
+ //# sourceMappingURL=error-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":";;;AAMA,SAAS,uBAAuB,CAAC,UAAkB;IACjD,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE,UAAU;KAChB,CAAC;AACJ,CAAC;AA6CC,0DAAuB;AAxCzB,IAAK,cAqCJ;AArCD,WAAK,cAAc;IAOjB,8DAA4C,CAAA;IAO5C,0DAAwC,CAAA;IAOxC,sDAAoC,CAAA;IAOpC,8CAA4B,CAAA;IAQ5B,6CAA2B,CAAA;AAC7B,CAAC,EArCI,cAAc,KAAd,cAAc,QAqClB;AAIC,wCAAc"}
@@ -0,0 +1,11 @@
1
+ import Cursor from './cursor';
2
+ import type Mongo from './mongo';
3
+ import { asPrintable } from './enums';
4
+ import type { ExplainVerbosityLike } from '@qp-mongosh/service-provider-core';
5
+ export default class ExplainableCursor extends Cursor {
6
+ _baseCursor: Cursor;
7
+ _verbosity: ExplainVerbosityLike;
8
+ _explained: any;
9
+ constructor(mongo: Mongo, cursor: Cursor, verbosity: ExplainVerbosityLike);
10
+ [asPrintable](): Promise<any>;
11
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const decorators_1 = require("./decorators");
13
+ const cursor_1 = __importDefault(require("./cursor"));
14
+ const enums_1 = require("./enums");
15
+ let ExplainableCursor = class ExplainableCursor extends cursor_1.default {
16
+ constructor(mongo, cursor, verbosity) {
17
+ super(mongo, cursor._cursor);
18
+ this._baseCursor = cursor;
19
+ this._verbosity = verbosity;
20
+ this._explained = null;
21
+ }
22
+ async [enums_1.asPrintable]() {
23
+ var _a;
24
+ (_a = this._explained) !== null && _a !== void 0 ? _a : (this._explained = await this._baseCursor.explain(this._verbosity));
25
+ return this._explained;
26
+ }
27
+ };
28
+ ExplainableCursor = __decorate([
29
+ decorators_1.shellApiClassDefault
30
+ ], ExplainableCursor);
31
+ exports.default = ExplainableCursor;
32
+ //# sourceMappingURL=explainable-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainable-cursor.js","sourceRoot":"","sources":["../src/explainable-cursor.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6CAAoD;AACpD,sDAA8B;AAE9B,mCAAsC;AAItC,IAAqB,iBAAiB,GAAtC,MAAqB,iBAAkB,SAAQ,gBAAM;IAKnD,YAAY,KAAY,EAAE,MAAc,EAAE,SAA+B;QACvE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAKD,KAAK,CAAC,CAAC,mBAAW,CAAC;;QAGjB,MAAA,IAAI,CAAC,UAAU,oCAAf,IAAI,CAAC,UAAU,GAAK,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC;QACpE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF,CAAA;AArBoB,iBAAiB;IADrC,iCAAoB;GACA,iBAAiB,CAqBrC;kBArBoB,iBAAiB"}
@@ -0,0 +1,32 @@
1
+ import type Collection from './collection';
2
+ import type Mongo from './mongo';
3
+ import ExplainableCursor from './explainable-cursor';
4
+ import { ShellApiWithMongoClass } from './decorators';
5
+ import { asPrintable } from './enums';
6
+ import { RemoveShellOptions, FindAndModifyShellOptions, FindAndModifyMethodShellOptions, MapReduceShellOptions } from './helpers';
7
+ import type { Document, ExplainVerbosityLike, CountOptions, DistinctOptions, UpdateOptions, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions } from '@qp-mongosh/service-provider-core';
8
+ export default class Explainable extends ShellApiWithMongoClass {
9
+ _mongo: Mongo;
10
+ _collection: Collection;
11
+ _verbosity: ExplainVerbosityLike;
12
+ constructor(mongo: Mongo, collection: Collection, verbosity: ExplainVerbosityLike);
13
+ [asPrintable](): string;
14
+ private _emitExplainableApiCall;
15
+ getCollection(): Collection;
16
+ getVerbosity(): ExplainVerbosityLike;
17
+ setVerbosity(verbosity: ExplainVerbosityLike): void;
18
+ find(query?: Document, projection?: Document): Promise<ExplainableCursor>;
19
+ aggregate(pipeline: Document[], options: Document): Promise<Document>;
20
+ aggregate(...stages: Document[]): Promise<Document>;
21
+ count(query?: {}, options?: CountOptions): Promise<Document>;
22
+ distinct(field: string): Promise<Document>;
23
+ distinct(field: string, query: Document): Promise<Document>;
24
+ distinct(field: string, query: Document, options: DistinctOptions): Promise<Document>;
25
+ findAndModify(options: FindAndModifyMethodShellOptions): Promise<Document>;
26
+ findOneAndDelete(filter: Document, options?: FindOneAndDeleteOptions): Promise<Document>;
27
+ findOneAndReplace(filter: Document, replacement: Document, options?: FindAndModifyShellOptions<FindOneAndReplaceOptions>): Promise<Document>;
28
+ findOneAndUpdate(filter: Document, update: Document, options?: FindAndModifyShellOptions<FindOneAndUpdateOptions>): Promise<Document>;
29
+ remove(query: Document, options?: boolean | RemoveShellOptions): Promise<Document>;
30
+ update(filter: Document, update: Document, options?: UpdateOptions): Promise<Document>;
31
+ mapReduce(map: Function | string, reduce: Function | string, optionsOrOutString: MapReduceShellOptions): Promise<Document>;
32
+ }
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const explainable_cursor_1 = __importDefault(require("./explainable-cursor"));
13
+ const decorators_1 = require("./decorators");
14
+ const enums_1 = require("./enums");
15
+ const helpers_1 = require("./helpers");
16
+ let Explainable = class Explainable extends decorators_1.ShellApiWithMongoClass {
17
+ constructor(mongo, collection, verbosity) {
18
+ super();
19
+ this._mongo = mongo;
20
+ this._collection = collection;
21
+ this._verbosity = verbosity;
22
+ }
23
+ [enums_1.asPrintable]() {
24
+ return `Explainable(${this._collection.getFullName()})`;
25
+ }
26
+ _emitExplainableApiCall(methodName, methodArguments = {}) {
27
+ this._mongo._instanceState.emitApiCallWithArgs({
28
+ method: methodName,
29
+ class: 'Explainable',
30
+ db: this._collection._database._name,
31
+ coll: this._collection._name,
32
+ arguments: methodArguments
33
+ });
34
+ }
35
+ getCollection() {
36
+ this._emitExplainableApiCall('getCollection');
37
+ return this._collection;
38
+ }
39
+ getVerbosity() {
40
+ this._emitExplainableApiCall('getVerbosity');
41
+ return this._verbosity;
42
+ }
43
+ setVerbosity(verbosity) {
44
+ verbosity = (0, helpers_1.validateExplainableVerbosity)(verbosity);
45
+ this._emitExplainableApiCall('setVerbosity', { verbosity });
46
+ this._verbosity = verbosity;
47
+ }
48
+ async find(query, projection) {
49
+ this._emitExplainableApiCall('find', { query, projection });
50
+ const cursor = await this._collection.find(query, projection);
51
+ return new explainable_cursor_1.default(this._mongo, cursor, this._verbosity);
52
+ }
53
+ async aggregate(...args) {
54
+ var _a;
55
+ this._emitExplainableApiCall('aggregate', { args });
56
+ let options;
57
+ let pipeline;
58
+ if (Array.isArray(args[0])) {
59
+ pipeline = args[0];
60
+ options = (_a = args[1]) !== null && _a !== void 0 ? _a : {};
61
+ }
62
+ else {
63
+ pipeline = args;
64
+ options = {};
65
+ }
66
+ return await this._collection.aggregate(pipeline, {
67
+ ...options,
68
+ explain: this._verbosity
69
+ });
70
+ }
71
+ async count(query = {}, options = {}) {
72
+ this._emitExplainableApiCall('count', { query, options });
73
+ return (0, helpers_1.markAsExplainOutput)(await this._collection._database._runCommand({
74
+ explain: {
75
+ count: `${this._collection._name}`,
76
+ query,
77
+ ...options
78
+ },
79
+ verbosity: this._verbosity
80
+ }));
81
+ }
82
+ async distinct(field, query, options = {}) {
83
+ this._emitExplainableApiCall('distinct', { field, query, options });
84
+ return this._collection.distinct(field, query !== null && query !== void 0 ? query : {}, { ...options, explain: this._verbosity });
85
+ }
86
+ async findAndModify(options) {
87
+ this._emitExplainableApiCall('findAndModify', { options });
88
+ return this._collection.findAndModify({ ...options, explain: this._verbosity });
89
+ }
90
+ async findOneAndDelete(filter, options = {}) {
91
+ this._emitExplainableApiCall('findOneAndDelete', { filter, options });
92
+ return this._collection.findOneAndDelete(filter, { ...options, explain: this._verbosity });
93
+ }
94
+ async findOneAndReplace(filter, replacement, options = {}) {
95
+ this._emitExplainableApiCall('findOneAndReplace', { filter, options });
96
+ return this._collection.findOneAndReplace(filter, replacement, { ...options, explain: this._verbosity });
97
+ }
98
+ async findOneAndUpdate(filter, update, options = {}) {
99
+ this._emitExplainableApiCall('findOneAndUpdate', { filter, options });
100
+ return this._collection.findOneAndUpdate(filter, update, { ...options, explain: this._verbosity });
101
+ }
102
+ async remove(query, options = {}) {
103
+ this._emitExplainableApiCall('remove', { query, options });
104
+ options = { ...(0, helpers_1.processRemoveOptions)(options), explain: this._verbosity };
105
+ return this._collection.remove(query, options);
106
+ }
107
+ async update(filter, update, options = {}) {
108
+ this._emitExplainableApiCall('update', { filter, update, options });
109
+ return this._collection.update(filter, update, { ...options, explain: this._verbosity });
110
+ }
111
+ async mapReduce(map, reduce, optionsOrOutString) {
112
+ this._emitExplainableApiCall('mapReduce', { map, reduce, optionsOrOutString });
113
+ const options = { ...(0, helpers_1.processMapReduceOptions)(optionsOrOutString), explain: this._verbosity };
114
+ return this._collection.mapReduce(map, reduce, options);
115
+ }
116
+ };
117
+ __decorate([
118
+ (0, decorators_1.returnType)('ExplainableCursor'),
119
+ (0, decorators_1.apiVersions)([1]),
120
+ decorators_1.returnsPromise
121
+ ], Explainable.prototype, "find", null);
122
+ __decorate([
123
+ decorators_1.returnsPromise,
124
+ (0, decorators_1.apiVersions)([1])
125
+ ], Explainable.prototype, "aggregate", null);
126
+ __decorate([
127
+ decorators_1.returnsPromise,
128
+ (0, decorators_1.apiVersions)([1])
129
+ ], Explainable.prototype, "count", null);
130
+ __decorate([
131
+ decorators_1.returnsPromise,
132
+ (0, decorators_1.apiVersions)([1])
133
+ ], Explainable.prototype, "distinct", null);
134
+ __decorate([
135
+ decorators_1.returnsPromise,
136
+ (0, decorators_1.apiVersions)([1])
137
+ ], Explainable.prototype, "findAndModify", null);
138
+ __decorate([
139
+ decorators_1.returnsPromise,
140
+ (0, decorators_1.apiVersions)([1])
141
+ ], Explainable.prototype, "findOneAndDelete", null);
142
+ __decorate([
143
+ decorators_1.returnsPromise,
144
+ (0, decorators_1.apiVersions)([1])
145
+ ], Explainable.prototype, "findOneAndReplace", null);
146
+ __decorate([
147
+ decorators_1.returnsPromise,
148
+ (0, decorators_1.apiVersions)([1])
149
+ ], Explainable.prototype, "findOneAndUpdate", null);
150
+ __decorate([
151
+ decorators_1.returnsPromise,
152
+ (0, decorators_1.apiVersions)([1])
153
+ ], Explainable.prototype, "remove", null);
154
+ __decorate([
155
+ decorators_1.returnsPromise,
156
+ (0, decorators_1.apiVersions)([1])
157
+ ], Explainable.prototype, "update", null);
158
+ __decorate([
159
+ decorators_1.returnsPromise,
160
+ (0, decorators_1.serverVersions)(['4.4.0', enums_1.ServerVersions.latest]),
161
+ (0, decorators_1.apiVersions)([])
162
+ ], Explainable.prototype, "mapReduce", null);
163
+ Explainable = __decorate([
164
+ decorators_1.shellApiClassDefault
165
+ ], Explainable);
166
+ exports.default = Explainable;
167
+ //# sourceMappingURL=explainable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainable.js","sourceRoot":"","sources":["../src/explainable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /// <reference types="node" />
2
+ import { ShellApiWithMongoClass } from './decorators';
3
+ import { ClientEncryption as MongoCryptClientEncryption, ClientEncryptionDataKeyProvider, ClientEncryptionEncryptOptions, ClientEncryptionTlsOptions, KMSProviders, AWSEncryptionKeyOptions, AzureEncryptionKeyOptions, GCPEncryptionKeyOptions } from '@qp-mongosh/service-provider-core';
4
+ import type { Document, BinaryType } from '@qp-mongosh/service-provider-core';
5
+ import Cursor from './cursor';
6
+ import { DeleteResult } from './result';
7
+ import { asPrintable } from './enums';
8
+ import type Mongo from './mongo';
9
+ import { Binary } from 'qp-mongodb';
10
+ export declare type ClientSideFieldLevelEncryptionKmsProvider = Omit<KMSProviders, 'local'> & {
11
+ local?: {
12
+ key: Buffer | string | BinaryType;
13
+ };
14
+ };
15
+ export interface ClientSideFieldLevelEncryptionOptions {
16
+ keyVaultClient?: Mongo;
17
+ keyVaultNamespace: string;
18
+ kmsProviders: ClientSideFieldLevelEncryptionKmsProvider;
19
+ schemaMap?: Document;
20
+ bypassAutoEncryption?: boolean;
21
+ explicitEncryptionOnly?: boolean;
22
+ tlsOptions?: {
23
+ [k in keyof ClientSideFieldLevelEncryptionKmsProvider]?: ClientEncryptionTlsOptions;
24
+ };
25
+ }
26
+ export declare class ClientEncryption extends ShellApiWithMongoClass {
27
+ _mongo: Mongo;
28
+ _libmongocrypt: MongoCryptClientEncryption;
29
+ constructor(mongo: Mongo);
30
+ [asPrintable](): string;
31
+ encrypt(encryptionId: Binary, value: any, encryptionAlgorithm: ClientEncryptionEncryptOptions['algorithm']): Promise<Binary>;
32
+ decrypt(encryptedValue: Binary): Promise<any>;
33
+ }
34
+ export declare class KeyVault extends ShellApiWithMongoClass {
35
+ _mongo: Mongo;
36
+ _clientEncryption: ClientEncryption;
37
+ private _keyColl;
38
+ constructor(clientEncryption: ClientEncryption);
39
+ [asPrintable](): string;
40
+ createKey(kms: 'local', keyAltNames?: string[]): Promise<Document>;
41
+ createKey(kms: ClientEncryptionDataKeyProvider, legacyMasterKey: string, keyAltNames?: string[]): Promise<Document>;
42
+ createKey(kms: ClientEncryptionDataKeyProvider, options: AWSEncryptionKeyOptions | AzureEncryptionKeyOptions | GCPEncryptionKeyOptions | undefined): Promise<Document>;
43
+ createKey(kms: ClientEncryptionDataKeyProvider, options: AWSEncryptionKeyOptions | AzureEncryptionKeyOptions | GCPEncryptionKeyOptions | undefined, keyAltNames: string[]): Promise<Document>;
44
+ getKey(keyId: BinaryType): Promise<Cursor>;
45
+ getKeyByAltName(keyAltName: string): Promise<Cursor>;
46
+ getKeys(): Promise<Cursor>;
47
+ deleteKey(keyId: BinaryType): Promise<DeleteResult | Document>;
48
+ addKeyAlternateName(keyId: BinaryType, keyAltName: string): Promise<Document>;
49
+ removeKeyAlternateName(keyId: BinaryType, keyAltName: string): Promise<Document>;
50
+ }
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.KeyVault = exports.ClientEncryption = void 0;
10
+ const decorators_1 = require("./decorators");
11
+ const service_provider_core_1 = require("@qp-mongosh/service-provider-core");
12
+ const helpers_1 = require("./helpers");
13
+ const enums_1 = require("./enums");
14
+ const history_1 = require("@qp-mongosh/history");
15
+ const errors_1 = require("@qp-mongosh/errors");
16
+ let ClientEncryption = class ClientEncryption extends decorators_1.ShellApiWithMongoClass {
17
+ constructor(mongo) {
18
+ super();
19
+ this._mongo = mongo;
20
+ const fle = mongo._serviceProvider.fle;
21
+ if (!fle) {
22
+ throw new errors_1.MongoshRuntimeError('FLE API is not available');
23
+ }
24
+ const fleOptions = { ...this._mongo._fleOptions };
25
+ delete fleOptions.schemaMap;
26
+ this._libmongocrypt = new fle.ClientEncryption(mongo._serviceProvider.getRawClient(), fleOptions);
27
+ }
28
+ [enums_1.asPrintable]() {
29
+ return `ClientEncryption class for ${(0, history_1.redactURICredentials)(this._mongo._uri)}`;
30
+ }
31
+ async encrypt(encryptionId, value, encryptionAlgorithm) {
32
+ (0, helpers_1.assertArgsDefinedType)([encryptionId, value, encryptionAlgorithm], [true, true, true], 'ClientEncryption.encrypt');
33
+ return await this._libmongocrypt.encrypt(value, {
34
+ keyId: encryptionId,
35
+ algorithm: encryptionAlgorithm
36
+ });
37
+ }
38
+ async decrypt(encryptedValue) {
39
+ (0, helpers_1.assertArgsDefinedType)([encryptedValue], [true], 'ClientEncryption.decrypt');
40
+ return await this._libmongocrypt.decrypt(encryptedValue);
41
+ }
42
+ };
43
+ __decorate([
44
+ decorators_1.returnsPromise
45
+ ], ClientEncryption.prototype, "encrypt", null);
46
+ __decorate([
47
+ decorators_1.returnsPromise
48
+ ], ClientEncryption.prototype, "decrypt", null);
49
+ ClientEncryption = __decorate([
50
+ decorators_1.shellApiClassDefault,
51
+ (0, decorators_1.classPlatforms)([service_provider_core_1.ReplPlatform.CLI])
52
+ ], ClientEncryption);
53
+ exports.ClientEncryption = ClientEncryption;
54
+ let KeyVault = class KeyVault extends decorators_1.ShellApiWithMongoClass {
55
+ constructor(clientEncryption) {
56
+ super();
57
+ this._mongo = clientEncryption._mongo;
58
+ this._clientEncryption = clientEncryption;
59
+ if (!this._mongo._fleOptions || !this._mongo._fleOptions.keyVaultNamespace) {
60
+ throw new errors_1.MongoshInvalidInputError('FLE options must be passed to the Mongo object');
61
+ }
62
+ const [db, coll] = this._mongo._fleOptions.keyVaultNamespace.split('.');
63
+ this._keyColl = this._mongo.getDB(db).getCollection(coll);
64
+ }
65
+ [enums_1.asPrintable]() {
66
+ return `KeyVault class for ${(0, history_1.redactURICredentials)(this._mongo._uri)}`;
67
+ }
68
+ async createKey(kms, masterKeyOrAltNames, keyAltNames) {
69
+ (0, helpers_1.assertArgsDefinedType)([kms], [true], 'KeyVault.createKey');
70
+ if (typeof masterKeyOrAltNames === 'string') {
71
+ if (kms === 'local' && masterKeyOrAltNames === '') {
72
+ masterKeyOrAltNames = undefined;
73
+ }
74
+ else {
75
+ throw new errors_1.MongoshInvalidInputError('KeyVault.createKey does not support providing masterKey as string anymore. For AWS please use createKey("aws", { region: ..., key: ... })', errors_1.CommonErrors.Deprecated);
76
+ }
77
+ }
78
+ else if (Array.isArray(masterKeyOrAltNames)) {
79
+ if (kms !== 'local') {
80
+ throw new errors_1.MongoshInvalidInputError('KeyVault.createKey requires masterKey to be given as second argument if KMS is not local', errors_1.CommonErrors.InvalidArgument);
81
+ }
82
+ else {
83
+ if (keyAltNames) {
84
+ throw new errors_1.MongoshInvalidInputError('KeyVault.createKey was supplied with an array for the masterKey and keyAltNames - either specify keyAltNames as second argument or set undefined for masterKey', errors_1.CommonErrors.InvalidArgument);
85
+ }
86
+ keyAltNames = masterKeyOrAltNames;
87
+ masterKeyOrAltNames = undefined;
88
+ }
89
+ }
90
+ let options;
91
+ if (masterKeyOrAltNames) {
92
+ options = {
93
+ masterKey: masterKeyOrAltNames
94
+ };
95
+ }
96
+ if (keyAltNames) {
97
+ options = {
98
+ ...(options !== null && options !== void 0 ? options : {}),
99
+ keyAltNames
100
+ };
101
+ }
102
+ return await this._clientEncryption._libmongocrypt.createDataKey(kms, options);
103
+ }
104
+ async getKey(keyId) {
105
+ (0, helpers_1.assertArgsDefinedType)([keyId], [true], 'KeyVault.getKey');
106
+ return this._keyColl.find({ '_id': keyId });
107
+ }
108
+ async getKeyByAltName(keyAltName) {
109
+ (0, helpers_1.assertArgsDefinedType)([keyAltName], ['string'], 'KeyVault.getKeyByAltName');
110
+ return this._keyColl.find({ 'keyAltNames': keyAltName });
111
+ }
112
+ async getKeys() {
113
+ return this._keyColl.find({});
114
+ }
115
+ async deleteKey(keyId) {
116
+ (0, helpers_1.assertArgsDefinedType)([keyId], [true], 'KeyVault.deleteKey');
117
+ return this._keyColl.deleteOne({ '_id': keyId });
118
+ }
119
+ async addKeyAlternateName(keyId, keyAltName) {
120
+ (0, helpers_1.assertArgsDefinedType)([keyId, keyAltName], [true, 'string'], 'KeyVault.addKeyAlternateName');
121
+ return this._keyColl.findAndModify({
122
+ query: { '_id': keyId },
123
+ update: { $push: { 'keyAltNames': keyAltName }, $currentDate: { 'updateDate': true } },
124
+ });
125
+ }
126
+ async removeKeyAlternateName(keyId, keyAltName) {
127
+ (0, helpers_1.assertArgsDefinedType)([keyId, keyAltName], [true, 'string'], 'KeyVault.removeKeyAlternateName');
128
+ const ret = await this._keyColl.findAndModify({
129
+ query: { '_id': keyId },
130
+ update: { $pull: { 'keyAltNames': keyAltName }, $currentDate: { 'updateDate': true } }
131
+ });
132
+ if (ret !== null && ret.keyAltNames !== undefined && ret.keyAltNames.length === 1 && ret.keyAltNames[0] === keyAltName) {
133
+ return this._keyColl.findAndModify({
134
+ query: { '_id': keyId, 'keyAltNames': undefined },
135
+ update: { $unset: { 'keyAltNames': '' }, $currentDate: { 'updateDate': true } }
136
+ });
137
+ }
138
+ return ret;
139
+ }
140
+ };
141
+ __decorate([
142
+ decorators_1.returnsPromise,
143
+ (0, decorators_1.apiVersions)([1])
144
+ ], KeyVault.prototype, "createKey", null);
145
+ __decorate([
146
+ (0, decorators_1.returnType)('Cursor'),
147
+ (0, decorators_1.apiVersions)([1]),
148
+ decorators_1.returnsPromise
149
+ ], KeyVault.prototype, "getKey", null);
150
+ __decorate([
151
+ (0, decorators_1.returnType)('Cursor'),
152
+ (0, decorators_1.apiVersions)([1]),
153
+ decorators_1.returnsPromise
154
+ ], KeyVault.prototype, "getKeyByAltName", null);
155
+ __decorate([
156
+ (0, decorators_1.returnType)('Cursor'),
157
+ (0, decorators_1.apiVersions)([1]),
158
+ decorators_1.returnsPromise
159
+ ], KeyVault.prototype, "getKeys", null);
160
+ __decorate([
161
+ decorators_1.returnsPromise,
162
+ (0, decorators_1.apiVersions)([1])
163
+ ], KeyVault.prototype, "deleteKey", null);
164
+ __decorate([
165
+ decorators_1.returnsPromise,
166
+ (0, decorators_1.apiVersions)([1])
167
+ ], KeyVault.prototype, "addKeyAlternateName", null);
168
+ __decorate([
169
+ decorators_1.returnsPromise,
170
+ (0, decorators_1.apiVersions)([1])
171
+ ], KeyVault.prototype, "removeKeyAlternateName", null);
172
+ KeyVault = __decorate([
173
+ decorators_1.shellApiClassDefault,
174
+ (0, decorators_1.classPlatforms)([service_provider_core_1.ReplPlatform.CLI])
175
+ ], KeyVault);
176
+ exports.KeyVault = KeyVault;
177
+ //# sourceMappingURL=field-level-encryption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-level-encryption.js","sourceRoot":"","sources":["../src/field-level-encryption.ts"],"names":[],"mappings":"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"}
package/lib/help.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import { shellApiType, asPrintable } from './enums';
2
+ declare type HelpPropertiesAttr = {
3
+ name?: string;
4
+ description: string;
5
+ };
6
+ export declare type HelpProperties = {
7
+ help: string;
8
+ docs?: string;
9
+ attr?: HelpPropertiesAttr[];
10
+ };
11
+ declare type HelpOptions = {
12
+ translate(key: string): string | undefined;
13
+ };
14
+ export default class Help {
15
+ private help;
16
+ private docs;
17
+ private attr;
18
+ constructor(properties: HelpProperties, options?: HelpOptions);
19
+ [asPrintable](): HelpProperties;
20
+ get [shellApiType](): string;
21
+ }
22
+ export {};