@mongosh/autocomplete 1.7.1 → 1.8.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/lib/index.js CHANGED
@@ -9,10 +9,13 @@ const semver_1 = __importDefault(require("semver"));
9
9
  const mongodb_constants_1 = require("@mongodb-js/mongodb-constants");
10
10
  exports.BASE_COMPLETIONS = [].concat(mongodb_constants_1.EXPRESSION_OPERATORS, mongodb_constants_1.CONVERSION_OPERATORS, mongodb_constants_1.BSON_TYPES, mongodb_constants_1.STAGE_OPERATORS);
11
11
  exports.MATCH_COMPLETIONS = [].concat(mongodb_constants_1.QUERY_OPERATORS, mongodb_constants_1.BSON_TYPES);
12
+ const DB_AGGREGATE_COMPLETIONS = mongodb_constants_1.STAGE_OPERATORS.filter(({ namespaces }) => {
13
+ return namespaces.length === 1 && namespaces[0] === mongodb_constants_1.DATABASE;
14
+ });
12
15
  const PROJECT = '$project';
13
16
  const GROUP = '$group';
14
17
  async function completer(params, line) {
15
- var _a, _b;
18
+ var _a, _b, _c;
16
19
  const SHELL_COMPLETIONS = shell_api_1.signatures.ShellApi.attributes;
17
20
  const COLL_COMPLETIONS = shell_api_1.signatures.Collection.attributes;
18
21
  const DB_COMPLETIONS = shell_api_1.signatures.Database.attributes;
@@ -46,6 +49,20 @@ async function completer(params, line) {
46
49
  return [hits.length ? hits : [], line];
47
50
  }
48
51
  else if (firstLineEl.match(/\bdb\b/) && splitLine.length === 2) {
52
+ if (elToComplete.match(/aggregate\s*\(\s*\[\s*\{\s*/)) {
53
+ const splitQuery = line.split('{');
54
+ const prefix = ((_b = splitQuery.pop()) === null || _b === void 0 ? void 0 : _b.trim()) || '';
55
+ const command = prefix ? line.split(prefix).shift() : line;
56
+ const suggestFirstStage = splitQuery.length <= 2;
57
+ const expressions = suggestFirstStage
58
+ ? DB_AGGREGATE_COMPLETIONS
59
+ : [
60
+ ...exports.BASE_COMPLETIONS,
61
+ ...getStageAccumulators(params, elToComplete)
62
+ ];
63
+ const hits = filterQueries(params, expressions, prefix, command);
64
+ return [hits.length ? hits : [], line];
65
+ }
49
66
  const hits = filterShellAPI(params, DB_COMPLETIONS, elToComplete, splitLine);
50
67
  const colls = await params.getCollectionCompletionsForCurrentDb(elToComplete.trim());
51
68
  hits.push(...colls.map(coll => `${splitLine[0]}.${coll}`));
@@ -69,13 +86,16 @@ async function completer(params, line) {
69
86
  if (splitLine[2].includes('([') || splitLine[2].includes('({')) {
70
87
  let expressions;
71
88
  if (splitLine[2].match(/\baggregate\b/)) {
72
- expressions = [].concat(exports.BASE_COMPLETIONS, getStageAccumulators(params, elToComplete));
89
+ expressions = [
90
+ ...exports.BASE_COMPLETIONS,
91
+ ...getStageAccumulators(params, elToComplete)
92
+ ];
73
93
  }
74
94
  else {
75
95
  expressions = exports.MATCH_COMPLETIONS;
76
96
  }
77
97
  const splitQuery = line.split('{');
78
- const prefix = (_b = splitQuery.pop()) === null || _b === void 0 ? void 0 : _b.trim();
98
+ const prefix = (_c = splitQuery.pop()) === null || _c === void 0 ? void 0 : _c.trim();
79
99
  const command = prefix ? line.split(prefix).shift() : line;
80
100
  const hits = filterQueries(params, expressions, prefix || '', command);
81
101
  return [hits.length ? hits : [], line];
@@ -137,7 +157,7 @@ function filterQueries(params, completions, prefix, split) {
137
157
  function filterShellAPI(params, completions, prefix, split) {
138
158
  const hits = Object.keys(completions).filter((c) => {
139
159
  var _a;
140
- if (!c.startsWith(prefix))
160
+ if (!c.toLowerCase().startsWith(prefix.toLowerCase()))
141
161
  return false;
142
162
  if (completions[c].deprecated)
143
163
  return false;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mongosh/autocomplete",
3
- "version": "1.7.1",
3
+ "version": "1.8.0",
4
4
  "description": "MongoDB Shell Autocomplete Package",
5
5
  "homepage": "https://github.com/mongodb-js/mongosh",
6
6
  "license": "Apache-2.0",
@@ -31,9 +31,9 @@
31
31
  "mocha": "^7.1.2"
32
32
  },
33
33
  "dependencies": {
34
- "@mongodb-js/mongodb-constants": "^0.1.0",
35
- "@mongosh/shell-api": "1.7.1",
34
+ "@mongodb-js/mongodb-constants": "^0.2.2",
35
+ "@mongosh/shell-api": "1.8.0",
36
36
  "semver": "^7.3.2"
37
37
  },
38
- "gitHead": "1bf0d7775443ac1849cc2597465d54eca867acea"
38
+ "gitHead": "9cf53bc336c79e505cf034bf5e6f3b3b3796cf25"
39
39
  }
package/src/index.spec.ts CHANGED
@@ -5,6 +5,17 @@ import { expect } from 'chai';
5
5
 
6
6
  let collections: string[];
7
7
  let databases: string[];
8
+ const standalone600 = {
9
+ topology: () => Topologies.Standalone,
10
+ apiVersionInfo: () => undefined,
11
+ connectionInfo: () => ({
12
+ is_atlas: false,
13
+ is_data_federation: false,
14
+ server_version: '6.0.0'
15
+ }),
16
+ getCollectionCompletionsForCurrentDb: () => collections,
17
+ getDatabaseCompletions: () => databases
18
+ };
8
19
  const standalone440 = {
9
20
  topology: () => Topologies.Standalone,
10
21
  apiVersionInfo: () => undefined,
@@ -79,6 +90,16 @@ describe('completer.completer', () => {
79
90
  collections = [];
80
91
  });
81
92
 
93
+ it('returns case-insensitive results', async() => {
94
+ const input = 'db.getr';
95
+ const [completions] = await completer(noParams as any, input);
96
+ expect(completions).to.deep.eq([
97
+ 'db.getRole',
98
+ 'db.getRoles',
99
+ 'db.getReplicationInfo'
100
+ ]);
101
+ });
102
+
82
103
  context('when context is top level shell api', () => {
83
104
  it('matches shell completions', async() => {
84
105
  const i = 'u';
@@ -324,6 +345,53 @@ describe('completer.completer', () => {
324
345
  });
325
346
  });
326
347
 
348
+ context('when context is db aggregation query', () => {
349
+ it('has several matches for db level stages', async() => {
350
+ const query = 'db.aggregate([{';
351
+ expect(await completer(standalone440, query)).to.deep.equal([
352
+ [
353
+ 'db.aggregate([{$changeStream',
354
+ 'db.aggregate([{$currentOp',
355
+ 'db.aggregate([{$listLocalSessions',
356
+ ],
357
+ query
358
+ ]);
359
+ expect(await completer(standalone600, query)).to.deep.equal([
360
+ [
361
+ 'db.aggregate([{$documents',
362
+ 'db.aggregate([{$changeStream',
363
+ 'db.aggregate([{$currentOp',
364
+ 'db.aggregate([{$listLocalSessions',
365
+ ],
366
+ query
367
+ ]);
368
+ });
369
+
370
+ it('does not have a match', async() => {
371
+ const query = 'db.aggregate([{$mat';
372
+ expect(await completer(standalone440, query)).to.deep.equal([[], query]);
373
+ });
374
+
375
+ it('matches a db aggregation stage', async() => {
376
+ const query = 'db.aggregate([{$lis';
377
+ expect(await completer(standalone440, query)).to.deep.equal([
378
+ ['db.aggregate([{$listLocalSessions'],
379
+ query
380
+ ]);
381
+ });
382
+
383
+ it('completes the followup stages', async() => {
384
+ const query = 'db.aggregate([{$currentOp: {}}, {$ma';
385
+ expect(await completer(standalone440, query)).to.deep.equal([
386
+ [
387
+ 'db.aggregate([{$currentOp: {}}, {$map',
388
+ 'db.aggregate([{$currentOp: {}}, {$match'
389
+ ],
390
+ query
391
+ ]);
392
+ });
393
+ });
394
+
327
395
  context('when context is aggregation query', () => {
328
396
  it('has several matches', async() => {
329
397
  const i = 'db.shipwrecks.aggregate([ { $so';
package/src/index.ts CHANGED
@@ -11,7 +11,8 @@ import {
11
11
  BSON_TYPES,
12
12
  ATLAS,
13
13
  ADL,
14
- ON_PREM
14
+ ON_PREM,
15
+ DATABASE
15
16
  } from '@mongodb-js/mongodb-constants';
16
17
 
17
18
  type TypeSignatureAttributes = { [key: string]: TypeSignature };
@@ -49,6 +50,12 @@ export const MATCH_COMPLETIONS = ([] as AnyCompletions).concat(
49
50
  BSON_TYPES
50
51
  );
51
52
 
53
+ // Note: The following list is not a list of all the completions
54
+ // for `db.aggregate` but only for the first stage of `db.aggregate`.
55
+ const DB_AGGREGATE_COMPLETIONS = STAGE_OPERATORS.filter(({ namespaces }) => {
56
+ return namespaces.length === 1 && namespaces[0] === DATABASE;
57
+ });
58
+
52
59
  /**
53
60
  * The project stage operator.
54
61
  */
@@ -116,6 +123,23 @@ async function completer(params: AutocompleteParameters, line: string): Promise<
116
123
  const hits = filterShellAPI(params, SHELL_COMPLETIONS, elToComplete);
117
124
  return [hits.length ? hits : [], line];
118
125
  } else if (firstLineEl.match(/\bdb\b/) && splitLine.length === 2) {
126
+ if (elToComplete.match(/aggregate\s*\(\s*\[\s*\{\s*/)) {
127
+ const splitQuery = line.split('{');
128
+ const prefix = splitQuery.pop()?.trim() || '';
129
+ const command: string = prefix ? line.split(prefix).shift() as string : line;
130
+ const suggestFirstStage = splitQuery.length <= 2;
131
+
132
+ const expressions = suggestFirstStage
133
+ // First stage in `db.aggregate` form can only be 'db' namespaced stages
134
+ ? DB_AGGREGATE_COMPLETIONS
135
+ : [
136
+ ...BASE_COMPLETIONS,
137
+ ...getStageAccumulators(params, elToComplete)
138
+ ];
139
+
140
+ const hits = filterQueries(params, expressions, prefix, command);
141
+ return [hits.length ? hits : [], line];
142
+ }
119
143
  // We're seeing something like 'db.foo' and expand that to all methods on
120
144
  // db which start with 'foo' and all collections on the current db that
121
145
  // start with 'foo'.
@@ -154,10 +178,10 @@ async function completer(params: AutocompleteParameters, line: string): Promise<
154
178
  let expressions;
155
179
  if (splitLine[2].match(/\baggregate\b/)) {
156
180
  // aggregation needs extra accumulators to autocomplete properly
157
- expressions = ([] as AnyCompletions).concat(
158
- BASE_COMPLETIONS,
159
- getStageAccumulators(params, elToComplete)
160
- );
181
+ expressions = [
182
+ ...BASE_COMPLETIONS,
183
+ ...getStageAccumulators(params, elToComplete)
184
+ ];
161
185
  } else {
162
186
  // collection querying just needs MATCH COMPLETIONS
163
187
  expressions = MATCH_COMPLETIONS;
@@ -244,7 +268,7 @@ function filterShellAPI(
244
268
  prefix: string,
245
269
  split?: string[]): string[] {
246
270
  const hits: string[] = Object.keys(completions).filter((c: string) => {
247
- if (!c.startsWith(prefix)) return false;
271
+ if (!c.toLowerCase().startsWith(prefix.toLowerCase())) return false;
248
272
  if (completions[c].deprecated) return false;
249
273
 
250
274
  const apiVersionInfo = params.apiVersionInfo();