@mongodb-js/compass-editor 0.29.3 → 0.31.1

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 (43) hide show
  1. package/dist/actions.d.ts +1 -1
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +2 -0
  4. package/dist/actions.js.map +1 -1
  5. package/dist/codemirror/ace-compat-autocompleter.d.ts +12 -0
  6. package/dist/codemirror/ace-compat-autocompleter.d.ts.map +1 -1
  7. package/dist/codemirror/ace-compat-autocompleter.js +18 -0
  8. package/dist/codemirror/ace-compat-autocompleter.js.map +1 -1
  9. package/dist/codemirror/aggregation-autocompleter.js +2 -0
  10. package/dist/codemirror/aggregation-autocompleter.js.map +1 -1
  11. package/dist/codemirror/document-autocompleter.d.ts +4 -0
  12. package/dist/codemirror/document-autocompleter.d.ts.map +1 -1
  13. package/dist/codemirror/document-autocompleter.js +16 -2
  14. package/dist/codemirror/document-autocompleter.js.map +1 -1
  15. package/dist/codemirror/query-autocompleter-with-history.d.ts +7 -1
  16. package/dist/codemirror/query-autocompleter-with-history.d.ts.map +1 -1
  17. package/dist/codemirror/query-autocompleter-with-history.js +8 -2
  18. package/dist/codemirror/query-autocompleter-with-history.js.map +1 -1
  19. package/dist/codemirror/query-autocompleter.d.ts +4 -0
  20. package/dist/codemirror/query-autocompleter.d.ts.map +1 -1
  21. package/dist/codemirror/query-autocompleter.js +4 -0
  22. package/dist/codemirror/query-autocompleter.js.map +1 -1
  23. package/dist/codemirror/query-history-autocompleter.d.ts +8 -2
  24. package/dist/codemirror/query-history-autocompleter.d.ts.map +1 -1
  25. package/dist/codemirror/query-history-autocompleter.js +91 -13
  26. package/dist/codemirror/query-history-autocompleter.js.map +1 -1
  27. package/dist/codemirror/stage-autocompleter.js +1 -0
  28. package/dist/codemirror/stage-autocompleter.js.map +1 -1
  29. package/dist/codemirror/utils.d.ts +5 -0
  30. package/dist/codemirror/utils.d.ts.map +1 -1
  31. package/dist/codemirror/utils.js +16 -0
  32. package/dist/codemirror/utils.js.map +1 -1
  33. package/dist/codemirror/validation-autocompleter.js +15 -0
  34. package/dist/codemirror/validation-autocompleter.js.map +1 -1
  35. package/dist/editor.d.ts +19 -2
  36. package/dist/editor.d.ts.map +1 -1
  37. package/dist/editor.js +144 -3
  38. package/dist/editor.js.map +1 -1
  39. package/dist/prettify.js +5 -1
  40. package/dist/prettify.js.map +1 -1
  41. package/dist/types.d.ts +3 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +6 -6
package/dist/actions.d.ts CHANGED
@@ -7,5 +7,5 @@ export declare const ActionButton: React.FunctionComponent<{
7
7
  }>;
8
8
  export declare const FormatIcon: ({ size, ...props }: React.SVGProps<SVGSVGElement> & {
9
9
  size?: number | undefined;
10
- }) => JSX.Element;
10
+ }) => React.JSX.Element;
11
11
  //# sourceMappingURL=actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAqChE,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjD,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CACR,GAAG,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,KAC5D,OAAO,GAAG,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAwEA,CAAC;AAEF,eAAO,MAAM,UAAU;;iBAiBtB,CAAC"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAqChE,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjD,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CACR,GAAG,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,KAC5D,OAAO,GAAG,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAwEA,CAAC;AAEF,eAAO,MAAM,UAAU;;uBAiBtB,CAAC"}
package/dist/actions.js CHANGED
@@ -36,6 +36,7 @@ const actionButtonContentStyle = (0, compass_components_2.css)({
36
36
  });
37
37
  const actionButtonIconContainerStyle = (0, compass_components_2.css)({
38
38
  opacity: 1,
39
+ // leafygreen icon small size
39
40
  width: 14,
40
41
  height: 14,
41
42
  transition: 'opacity .2s linear',
@@ -45,6 +46,7 @@ const actionButtonIconContainerHiddenStyle = (0, compass_components_2.css)({
45
46
  });
46
47
  const actionButtonClickResultIconStyle = (0, compass_components_2.css)({
47
48
  position: 'absolute',
49
+ // leafygreen icon small size
48
50
  width: 14,
49
51
  height: 14,
50
52
  top: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@ type Prefix = {
7
7
  to: number;
8
8
  text: string;
9
9
  };
10
+ /**
11
+ * Ace autocompleter "valid" identifier regex
12
+ */
10
13
  export declare const ID_REGEX: RegExp;
11
14
  export declare function createCompletionResultForIdPrefix({ prefix, completions, escape, }: {
12
15
  prefix: Pick<Prefix, 'from' | 'to'>;
@@ -18,6 +21,15 @@ type AceCompatCompletionSource = (options: {
18
21
  token: Token;
19
22
  context: CompletionContext;
20
23
  }) => ReturnType<CompletionSource>;
24
+ /**
25
+ * Helper method to create a basic autocompleter for codemirror to match our
26
+ * current ace autocompleter behavior:
27
+ *
28
+ * - Ignore empty prefixes and comments
29
+ * - Autocomplete only when cursor is near something that passes as identifier
30
+ * - Have autocopmletion logic split depending on whether or not autocompletion
31
+ * happens inside a string token or not
32
+ */
21
33
  export declare function createAceCompatAutocompleter(completers: {
22
34
  String?: AceCompatCompletionSource;
23
35
  IdentifierLike?: AceCompatCompletionSource;
@@ -1 +1 @@
1
- {"version":3,"file":"ace-compat-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/ace-compat-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAGpF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAgB,0CAA0C,CACxD,UAAU,EAAE,uBAAuB,EACnC,MAAM,GAAE,QAAQ,GAAG,OAAO,GAAG,SAAqB,GACjD,UAAU,CAqCZ;AAED,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAKzD,eAAO,MAAM,QAAQ,QAA+C,CAAC;AAErE,wBAAgB,iCAAiC,CAAC,EAChD,MAAM,EACN,WAAW,EACX,MAAM,GACP,EAAE;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACzC,GAAG,gBAAgB,CASnB;AAED,KAAK,yBAAyB,GAAG,CAAC,OAAO,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;CAC5B,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAWnC,wBAAgB,4BAA4B,CAAC,UAAU,EAAE;IACvD,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,cAAc,CAAC,EAAE,yBAAyB,CAAC;CAC5C,GAAG,gBAAgB,CAqBnB"}
1
+ {"version":3,"file":"ace-compat-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/ace-compat-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAGpF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAgB,0CAA0C,CACxD,UAAU,EAAE,uBAAuB,EACnC,MAAM,GAAE,QAAQ,GAAG,OAAO,GAAG,SAAqB,GACjD,UAAU,CAqCZ;AAED,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,QAAQ,QAA+C,CAAC;AAErE,wBAAgB,iCAAiC,CAAC,EAChD,MAAM,EACN,WAAW,EACX,MAAM,GACP,EAAE;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACzC,GAAG,gBAAgB,CASnB;AAED,KAAK,yBAAyB,GAAG,CAAC,OAAO,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,iBAAiB,CAAC;CAC5B,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAEnC;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE;IACvD,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,cAAc,CAAC,EAAE,yBAAyB,CAAC;CAC5C,GAAG,gBAAgB,CAqBnB"}
@@ -19,6 +19,12 @@ function mapMongoDBCompletionToCodemirrorCompletion(completion, escape = 'invali
19
19
  const infoNode = document.createElement('div');
20
20
  infoNode.classList.add('completion-info');
21
21
  infoNode.addEventListener('mousedown', (evt) => {
22
+ // If we are clicking a link inside the info block, we have to prevent
23
+ // default browser behavior that will remove the focus from the editor
24
+ // and cause the autocompleter to dissapear before browser handles the
25
+ // actual click. This is very similar to how codemirror handles clicks
26
+ // on the list items
27
+ // @see {@link https://github.com/codemirror/autocomplete/blob/82480a7d51d60ad933808e42f6189d841a5a6bc8/src/tooltip.ts#L96-L97}
22
28
  if (evt.target.nodeName === 'A') {
23
29
  evt.preventDefault();
24
30
  }
@@ -33,6 +39,9 @@ function mapMongoDBCompletionToCodemirrorCompletion(completion, escape = 'invali
33
39
  return cmCompletion;
34
40
  }
35
41
  exports.mapMongoDBCompletionToCodemirrorCompletion = mapMongoDBCompletionToCodemirrorCompletion;
42
+ /**
43
+ * Ace autocompleter "valid" identifier regex
44
+ */
36
45
  exports.ID_REGEX = /[a-zA-Z_0-9$\-\u00A2-\u2000\u2070-\uFFFF]+/;
37
46
  function createCompletionResultForIdPrefix({ prefix, completions, escape, }) {
38
47
  return {
@@ -45,6 +54,15 @@ function createCompletionResultForIdPrefix({ prefix, completions, escape, }) {
45
54
  };
46
55
  }
47
56
  exports.createCompletionResultForIdPrefix = createCompletionResultForIdPrefix;
57
+ /**
58
+ * Helper method to create a basic autocompleter for codemirror to match our
59
+ * current ace autocompleter behavior:
60
+ *
61
+ * - Ignore empty prefixes and comments
62
+ * - Autocomplete only when cursor is near something that passes as identifier
63
+ * - Have autocopmletion logic split depending on whether or not autocompletion
64
+ * happens inside a string token or not
65
+ */
48
66
  function createAceCompatAutocompleter(completers) {
49
67
  return function aceCompatAutocompleter(context) {
50
68
  const prefix = context.matchBefore(exports.ID_REGEX);
@@ -1 +1 @@
1
- {"version":3,"file":"ace-compat-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/ace-compat-autocompleter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ace-compat-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/ace-compat-autocompleter.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ function getStageNameForToken(editorState, token) {
15
15
  if (parent.name === 'Property') {
16
16
  const propertyName = (0, utils_2.getPropertyNameFromPropertyToken)(editorState, parent);
17
17
  if (parent.firstChild &&
18
+ // We are inside a stage, but not right at the stage name token (we
19
+ // don't want to autocomplete as stage while the stage is being typed)
18
20
  !(0, utils_2.isTokenEqual)(parent.firstChild, token) &&
19
21
  StageOperatorNames.has(propertyName)) {
20
22
  return propertyName;
@@ -1 +1 @@
1
- {"version":3,"file":"aggregation-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/aggregation-autocompleter.ts"],"names":[],"mappings":";;;AACA,qEAAqE;AAErE,oDAA6C;AAE7C,mCAAkC;AAClC,mCAAyE;AACzE,mCAA4C;AAC5C,yEAA+E;AAC/E,yEAA0E;AAC1E,+DAAiE;AAEjE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,wCAAgC,CAAC,CAAC;AAErE,SAAS,oBAAoB,CAC3B,WAAwB,EACxB,KAAY;IAEZ,KAAK,MAAM,MAAM,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,EAAE;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;YAC9B,MAAM,YAAY,GAAG,IAAA,wCAAgC,EACnD,WAAW,EACX,MAAM,CACP,CAAC;YACF,IACE,MAAM,CAAC,UAAU;gBAGjB,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;gBACvC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,EACpC;gBACA,OAAO,YAAY,CAAC;aACrB;SACF;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,8BAA8B,CAAC,EAC7C,SAAS,EACT,SAAS,EACT,GAAG,OAAO,KAIR,EAAE;IACJ,MAAM,oBAAoB,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE5E,OAAO,IAAA,uDAA4B,EAAC;QAClC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;YACvC,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEjE,IAAI,aAAa,EAAE;gBACjB,OAAO,IAAA,8CAAwB,EAAC;oBAC9B,aAAa;oBACb,SAAS;oBACT,SAAS;oBACT,GAAG,OAAO;iBACX,CAAC,CAAC,OAAO,CAAC,CAAC;aACb;YAED,MAAM,aAAa,GACjB,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,UAAU,CAAC;YAErE,OAAO,IAAA,4DAAiC,EAAC;gBACvC,MAAM;gBACN,WAAW,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACnD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,GAAG,UAAU;wBACb,GAAG,CAAC,UAAU,CAAC,WAAW,IAAI;4BAC5B,WAAW,EACT,MAAM,IAAA,eAAO,EAAC,MAAM,EAAE;gCACpB,SAAS;gCACT,SAAS;6BACV,CAAC,qBAAqB,GAAG,MAAM,UAAU,CAAC,WAAW,MAAM;yBAC/D,CAAC;wBACF,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI;4BACxB,OAAO,EAAE,CAAC,aAAa;gCACrB,CAAC,CAAC,MAAM,IAAA,gBAAQ,EAAC,GAAG,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK;gCACzD,CAAC,CAAC,GAAG,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE;yBACvC,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAjDD,wEAiDC"}
1
+ {"version":3,"file":"aggregation-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/aggregation-autocompleter.ts"],"names":[],"mappings":";;;AACA,qEAAqE;AAErE,oDAA6C;AAE7C,mCAAkC;AAClC,mCAAyE;AACzE,mCAA4C;AAC5C,yEAA+E;AAC/E,yEAA0E;AAC1E,+DAAiE;AAEjE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,wCAAgC,CAAC,CAAC;AAErE,SAAS,oBAAoB,CAC3B,WAAwB,EACxB,KAAY;IAEZ,KAAK,MAAM,MAAM,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,EAAE;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;YAC9B,MAAM,YAAY,GAAG,IAAA,wCAAgC,EACnD,WAAW,EACX,MAAM,CACP,CAAC;YACF,IACE,MAAM,CAAC,UAAU;gBACjB,mEAAmE;gBACnE,sEAAsE;gBACtE,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;gBACvC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,EACpC;gBACA,OAAO,YAAY,CAAC;aACrB;SACF;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,8BAA8B,CAAC,EAC7C,SAAS,EACT,SAAS,EACT,GAAG,OAAO,KAIR,EAAE;IACJ,MAAM,oBAAoB,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE5E,OAAO,IAAA,uDAA4B,EAAC;QAClC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;YACvC,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEjE,IAAI,aAAa,EAAE;gBACjB,OAAO,IAAA,8CAAwB,EAAC;oBAC9B,aAAa;oBACb,SAAS;oBACT,SAAS;oBACT,GAAG,OAAO;iBACX,CAAC,CAAC,OAAO,CAAC,CAAC;aACb;YAED,MAAM,aAAa,GACjB,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,UAAU,CAAC;YAErE,OAAO,IAAA,4DAAiC,EAAC;gBACvC,MAAM;gBACN,WAAW,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACnD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,GAAG,UAAU;wBACb,GAAG,CAAC,UAAU,CAAC,WAAW,IAAI;4BAC5B,WAAW,EACT,MAAM,IAAA,eAAO,EAAC,MAAM,EAAE;gCACpB,SAAS;gCACT,SAAS;6BACV,CAAC,qBAAqB,GAAG,MAAM,UAAU,CAAC,WAAW,MAAM;yBAC/D,CAAC;wBACF,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI;4BACxB,OAAO,EAAE,CAAC,aAAa;gCACrB,CAAC,CAAC,MAAM,IAAA,gBAAQ,EAAC,GAAG,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK;gCACzD,CAAC,CAAC,GAAG,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE;yBACvC,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAjDD,wEAiDC"}
@@ -1,3 +1,7 @@
1
1
  import type { CompletionSource } from '@codemirror/autocomplete';
2
+ /**
3
+ * Autocompleter for the document object, only autocompletes field names in the
4
+ * appropriate format (either escaped or not) both for javascript and json modes
5
+ */
2
6
  export declare const createDocumentAutocompleter: (fields: string[]) => CompletionSource;
3
7
  //# sourceMappingURL=document-autocompleter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"document-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/document-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AA+BjE,eAAO,MAAM,2BAA2B,WAC9B,MAAM,EAAE,KACf,gBAqCF,CAAC"}
1
+ {"version":3,"file":"document-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/document-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AA2BjE;;;GAGG;AACH,eAAO,MAAM,2BAA2B,WAC9B,MAAM,EAAE,KACf,gBAqCF,CAAC"}
@@ -5,14 +5,27 @@ const autocompleter_1 = require("../autocompleter");
5
5
  const editor_1 = require("../editor");
6
6
  const utils_1 = require("./utils");
7
7
  function isJSONPropertyName(token) {
8
- return (token.name === 'PropertyName' ||
8
+ return (
9
+ // Cursor is currently on the valid property name in the object
10
+ token.name === 'PropertyName' ||
11
+ // Cursor is possibly on the invalid property name as indicated by the
12
+ // previous sibling being a property or an open bracket and not a
13
+ // `PropertyName`, which would be the case for property value
9
14
  (token.type.isError &&
10
15
  ['Property', '{'].includes(token.prevSibling?.name ?? '')));
11
16
  }
12
17
  function isJavaScriptPropertyName(token) {
13
- return (token.parent?.name === 'Property' &&
18
+ return (
19
+ // Cursor is currently inside a property
20
+ token.parent?.name === 'Property' &&
21
+ // There is no previous sibling or it's an opening bracket (indicating
22
+ // computed property)
14
23
  (!token.prevSibling || token.prevSibling.name === '['));
15
24
  }
25
+ /**
26
+ * Autocompleter for the document object, only autocompletes field names in the
27
+ * appropriate format (either escaped or not) both for javascript and json modes
28
+ */
16
29
  const createDocumentAutocompleter = (fields) => {
17
30
  const completions = (0, autocompleter_1.completer)('', { fields, meta: ['field:identifier'] });
18
31
  return (context) => {
@@ -34,6 +47,7 @@ const createDocumentAutocompleter = (fields) => {
34
47
  .map((completion) => {
35
48
  return {
36
49
  label: (0, autocompleter_1.wrapField)(completion.value, shouldAlwaysEscapeProperty),
50
+ // https://codemirror.net/docs/ref/#autocomplete.Completion.type
37
51
  type: 'property',
38
52
  detail: 'field',
39
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"document-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/document-autocompleter.ts"],"names":[],"mappings":";;;AACA,oDAAwD;AACxD,sCAAyC;AACzC,mCAAsE;AAGtE,SAAS,kBAAkB,CAAC,KAAY;IACtC,OAAO,CAEL,KAAK,CAAC,IAAI,KAAK,cAAc;QAI7B,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;YACjB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;AACJ,CAAC;AACD,SAAS,wBAAwB,CAAC,KAAY;IAC5C,OAAO,CAEL,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,UAAU;QAGjC,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,CAAC,CACvD,CAAC;AACJ,CAAC;AAMM,MAAM,2BAA2B,GAAG,CACzC,MAAgB,EACE,EAAE;IACpB,MAAM,WAAW,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,0BAA0B,GAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAY,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QAElD,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE;YAChE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;iBACzB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;iBACjC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAEzB,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,WAAW;qBACjB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;oBACrB,OAAO,UAAU,CAAC,KAAK;yBACpB,WAAW,EAAE;yBACb,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC;qBACD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAClB,OAAO;wBACL,KAAK,EAAE,IAAA,yBAAS,EAAC,UAAU,CAAC,KAAK,EAAE,0BAA0B,CAAC;wBAE9D,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE,OAAO;qBAChB,CAAC;gBACJ,CAAC,CAAC;gBACJ,MAAM,EAAE,KAAK;aACd,CAAC;SACH;QAED,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,2BAA2B,+BAuCtC"}
1
+ {"version":3,"file":"document-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/document-autocompleter.ts"],"names":[],"mappings":";;;AACA,oDAAwD;AACxD,sCAAyC;AACzC,mCAAsE;AAGtE,SAAS,kBAAkB,CAAC,KAAY;IACtC,OAAO;IACL,+DAA+D;IAC/D,KAAK,CAAC,IAAI,KAAK,cAAc;QAC7B,sEAAsE;QACtE,iEAAiE;QACjE,6DAA6D;QAC7D,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;YACjB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;AACJ,CAAC;AACD,SAAS,wBAAwB,CAAC,KAAY;IAC5C,OAAO;IACL,wCAAwC;IACxC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,UAAU;QACjC,sEAAsE;QACtE,qBAAqB;QACrB,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACI,MAAM,2BAA2B,GAAG,CACzC,MAAgB,EACE,EAAE;IACpB,MAAM,WAAW,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,0BAA0B,GAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAY,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QAElD,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE;YAChE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;iBACzB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;iBACjC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAEzB,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,WAAW;qBACjB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;oBACrB,OAAO,UAAU,CAAC,KAAK;yBACpB,WAAW,EAAE;yBACb,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC;qBACD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAClB,OAAO;wBACL,KAAK,EAAE,IAAA,yBAAS,EAAC,UAAU,CAAC,KAAK,EAAE,0BAA0B,CAAC;wBAC9D,gEAAgE;wBAChE,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE,OAAO;qBAChB,CAAC;gBACJ,CAAC,CAAC;gBACJ,MAAM,EAAE,KAAK;aACd,CAAC;SACH;QAED,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,2BAA2B,+BAuCtC"}
@@ -2,5 +2,11 @@ import { type SavedQuery } from './query-history-autocompleter';
2
2
  import { type CompletionSource } from '@codemirror/autocomplete';
3
3
  import type { CompletionOptions } from '../autocompleter';
4
4
  import type { CodemirrorThemeType } from '../editor';
5
- export declare const createQueryWithHistoryAutocompleter: (recentQueries: SavedQuery[], options: Pick<CompletionOptions, "fields" | "serverVersion"> | undefined, onApply: (query: SavedQuery['queryProperties']) => void, theme: CodemirrorThemeType) => CompletionSource;
5
+ export declare const createQueryWithHistoryAutocompleter: ({ savedQueries, options, queryProperty, onApply, theme, }: {
6
+ savedQueries: SavedQuery[];
7
+ options?: Pick<CompletionOptions, "fields" | "serverVersion"> | undefined;
8
+ queryProperty: string;
9
+ onApply: (query: SavedQuery['queryProperties']) => void;
10
+ theme: CodemirrorThemeType;
11
+ }) => CompletionSource;
6
12
  //# sourceMappingURL=query-autocompleter-with-history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-autocompleter-with-history.d.ts","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter-with-history.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAEhB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,eAAO,MAAM,mCAAmC,kBAC/B,UAAU,EAAE,6FAEV,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,SAChD,mBAAmB,KACzB,gBA+CF,CAAC"}
1
+ {"version":3,"file":"query-autocompleter-with-history.d.ts","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter-with-history.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAEhB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,eAAO,MAAM,mCAAmC;kBAOhC,UAAU,EAAE;;mBAEX,MAAM;qBACJ,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI;WAChD,mBAAmB;MACxB,gBAgDH,CAAC"}
@@ -4,8 +4,13 @@ exports.createQueryWithHistoryAutocompleter = void 0;
4
4
  const query_history_autocompleter_1 = require("./query-history-autocompleter");
5
5
  const query_autocompleter_1 = require("./query-autocompleter");
6
6
  const compass_components_1 = require("@mongodb-js/compass-components");
7
- const createQueryWithHistoryAutocompleter = (recentQueries, options = {}, onApply, theme) => {
8
- const queryHistoryAutocompleter = (0, query_history_autocompleter_1.createQueryHistoryAutocompleter)(recentQueries, onApply, theme);
7
+ const createQueryWithHistoryAutocompleter = ({ savedQueries, options = {}, queryProperty, onApply, theme, }) => {
8
+ const queryHistoryAutocompleter = (0, query_history_autocompleter_1.createQueryHistoryAutocompleter)({
9
+ savedQueries,
10
+ onApply,
11
+ queryProperty,
12
+ theme,
13
+ });
9
14
  const originalQueryAutocompleter = (0, query_autocompleter_1.createQueryAutocompleter)(options);
10
15
  const historySection = {
11
16
  name: 'Query History',
@@ -16,6 +21,7 @@ const createQueryWithHistoryAutocompleter = (recentQueries, options = {}, onAppl
16
21
  return queryHistoryAutocompleter(context);
17
22
  }
18
23
  const combinedOptions = [];
24
+ // completions assigned to a section appear below ones that are not assigned
19
25
  const baseCompletions = await originalQueryAutocompleter(context);
20
26
  const historyCompletions = await queryHistoryAutocompleter(context);
21
27
  if (baseCompletions) {
@@ -1 +1 @@
1
- {"version":3,"file":"query-autocompleter-with-history.js","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter-with-history.ts"],"names":[],"mappings":";;;AAAA,+EAGuC;AACvC,+DAAiE;AAQjE,uEAAqD;AAG9C,MAAM,mCAAmC,GAAG,CACjD,aAA2B,EAC3B,UAA+D,EAAE,EACjE,OAAuD,EACvD,KAA0B,EACR,EAAE;IACpB,MAAM,yBAAyB,GAAG,IAAA,6DAA+B,EAC/D,aAAa,EACb,OAAO,EACP,KAAK,CACN,CAAC;IAEF,MAAM,0BAA0B,GAAG,IAAA,8CAAwB,EAAC,OAAO,CAAC,CAAC;IACrE,MAAM,cAAc,GAAsB;QACxC,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,gBAAgB;KACzB,CAAC;IAEF,OAAO,KAAK,UAAU,eAAe,CAAC,OAA0B;QAC9D,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACzC,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;SAC3C;QAED,MAAM,eAAe,GAAiB,EAAE,CAAC;QAEzC,MAAM,eAAe,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAEpE,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,IAAI,CAClB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC1C,GAAG,MAAM;aACV,CAAC,CAAC,CACJ,CAAC;SACH;QACD,IAAI,kBAAkB,EAAE;YACtB,eAAe,CAAC,IAAI,CAClB,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7C,GAAG,MAAM;gBACT,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC,CACJ,CAAC;SACH;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CACZ,kBAAkB,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EACvC,eAAe,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CACrC;YACD,OAAO,EAAE,eAAe;SACzB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AApDW,QAAA,mCAAmC,uCAoD9C;AAEF,MAAM,mBAAmB,GAAG,IAAA,wBAAG,EAAC;IAC9B,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,iBAAiB;IAC/B,MAAM,EAAE,OAAO;CAChB,CAAC,CAAC;AAEH,SAAS,gBAAgB;IACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"query-autocompleter-with-history.js","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter-with-history.ts"],"names":[],"mappings":";;;AAAA,+EAGuC;AACvC,+DAAiE;AAQjE,uEAAqD;AAG9C,MAAM,mCAAmC,GAAG,CAAC,EAClD,YAAY,EACZ,OAAO,GAAG,EAAE,EACZ,aAAa,EACb,OAAO,EACP,KAAK,GAON,EAAoB,EAAE;IACrB,MAAM,yBAAyB,GAAG,IAAA,6DAA+B,EAAC;QAChE,YAAY;QACZ,OAAO;QACP,aAAa;QACb,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,0BAA0B,GAAG,IAAA,8CAAwB,EAAC,OAAO,CAAC,CAAC;IACrE,MAAM,cAAc,GAAsB;QACxC,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,gBAAgB;KACzB,CAAC;IAEF,OAAO,KAAK,UAAU,eAAe,CAAC,OAA0B;QAC9D,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACzC,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;SAC3C;QAED,MAAM,eAAe,GAAiB,EAAE,CAAC;QACzC,4EAA4E;QAC5E,MAAM,eAAe,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAEpE,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,IAAI,CAClB,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC1C,GAAG,MAAM;aACV,CAAC,CAAC,CACJ,CAAC;SACH;QACD,IAAI,kBAAkB,EAAE;YACtB,eAAe,CAAC,IAAI,CAClB,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7C,GAAG,MAAM;gBACT,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC,CACJ,CAAC;SACH;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CACZ,kBAAkB,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,EACvC,eAAe,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CACrC;YACD,OAAO,EAAE,eAAe;SACzB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AA5DW,QAAA,mCAAmC,uCA4D9C;AAEF,MAAM,mBAAmB,GAAG,IAAA,wBAAG,EAAC;IAC9B,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,iBAAiB;IAC/B,MAAM,EAAE,OAAO;CAChB,CAAC,CAAC;AAEH,SAAS,gBAAgB;IACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +1,8 @@
1
1
  import type { CompletionSource } from '@codemirror/autocomplete';
2
2
  import type { CompletionOptions } from '../autocompleter';
3
+ /**
4
+ * Autocompleter for the document object, only autocompletes field names in the
5
+ * appropriate format (either escaped or not) both for javascript and json modes
6
+ */
3
7
  export declare const createQueryAutocompleter: (options?: Pick<CompletionOptions, 'fields' | 'serverVersion'>) => CompletionSource;
4
8
  //# sourceMappingURL=query-autocompleter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAY1D,eAAO,MAAM,wBAAwB,aAC1B,KAAK,iBAAiB,EAAE,QAAQ,GAAG,eAAe,CAAC,KAC3D,gBAcF,CAAC"}
1
+ {"version":3,"file":"query-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQ1D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,aAC1B,KAAK,iBAAiB,EAAE,QAAQ,GAAG,eAAe,CAAC,KAC3D,gBAcF,CAAC"}
@@ -4,6 +4,10 @@ exports.createQueryAutocompleter = void 0;
4
4
  const autocompleter_1 = require("../autocompleter");
5
5
  const ace_compat_autocompleter_1 = require("./ace-compat-autocompleter");
6
6
  const utils_1 = require("./utils");
7
+ /**
8
+ * Autocompleter for the document object, only autocompletes field names in the
9
+ * appropriate format (either escaped or not) both for javascript and json modes
10
+ */
7
11
  const createQueryAutocompleter = (options = {}) => {
8
12
  const completions = (0, autocompleter_1.completer)('', {
9
13
  meta: ['query', 'bson', 'field:identifier'],
@@ -1 +1 @@
1
- {"version":3,"file":"query-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAC7C,yEAGoC;AACpC,mCAAgD;AAMzC,MAAM,wBAAwB,GAAG,CACtC,UAA+D,EAAE,EAC/C,EAAE;IACpB,MAAM,WAAW,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC;QAC3C,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAA,uDAA4B,EAAC;QAClC,MAAM,CAAC,EAAE,OAAO,EAAE;YAChB,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,cAAc,CAAC,EAAE,MAAM,EAAE;YACvB,OAAO,IAAA,4DAAiC,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,wBAAwB,4BAgBnC"}
1
+ {"version":3,"file":"query-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/query-autocompleter.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAC7C,yEAGoC;AACpC,mCAAgD;AAEhD;;;GAGG;AACI,MAAM,wBAAwB,GAAG,CACtC,UAA+D,EAAE,EAC/C,EAAE;IACpB,MAAM,WAAW,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC;QAC3C,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAA,uDAA4B,EAAC;QAClC,MAAM,CAAC,EAAE,OAAO,EAAE;YAChB,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,cAAc,CAAC,EAAE,MAAM,EAAE;YACvB,OAAO,IAAA,4DAAiC,EAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,wBAAwB,4BAgBnC"}
@@ -7,7 +7,13 @@ export type SavedQuery = {
7
7
  [propertyName: string]: any;
8
8
  };
9
9
  };
10
- export declare const createQueryHistoryAutocompleter: (savedQueries: SavedQuery[], onApply: (query: SavedQuery['queryProperties']) => void, theme: CodemirrorThemeType) => CompletionSource;
11
- export declare function createQuery(query: SavedQuery): string;
10
+ export declare const createQueryHistoryAutocompleter: ({ savedQueries, onApply, queryProperty, theme, }: {
11
+ savedQueries: SavedQuery[];
12
+ onApply: (query: SavedQuery['queryProperties']) => void;
13
+ queryProperty: string;
14
+ theme: CodemirrorThemeType;
15
+ }) => CompletionSource;
16
+ export declare function createQueryLabel(query: SavedQuery, propertyName: string): string;
17
+ export declare function createQueryDisplayLabel(query: SavedQuery): string;
12
18
  export declare function scaleBetween(unscaledNum: number, newScaleMin: number, newScaleMax: number, originalScaleMin: number, originalScaleMax: number): number;
13
19
  //# sourceMappingURL=query-history-autocompleter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-history-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/query-history-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAAE,KAAK,mBAAmB,EAAmB,MAAM,WAAW,CAAC;AAEtE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,IAAI,CAAC;IACnB,eAAe,EAAE;QACf,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,+BAA+B,iBAC5B,UAAU,EAAE,mBACT,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,SAChD,mBAAmB,KACzB,gBAiCF,CAAC;AAgBF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQrD;AAoED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CASR"}
1
+ {"version":3,"file":"query-history-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/query-history-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,EAAE,KAAK,mBAAmB,EAAmB,MAAM,WAAW,CAAC;AAEtE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,IAAI,CAAC;IACnB,eAAe,EAAE;QACf,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;KAC7B,CAAC;CACH,CAAC;AAiFF,eAAO,MAAM,+BAA+B;kBAM5B,UAAU,EAAE;qBACT,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI;mBACxC,MAAM;WACd,mBAAmB;MACxB,gBA2CH,CAAC;AAgBF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAQR;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAWjE;AAoED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CASR"}
@@ -1,26 +1,89 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scaleBetween = exports.createQuery = exports.createQueryHistoryAutocompleter = void 0;
3
+ exports.scaleBetween = exports.createQueryDisplayLabel = exports.createQueryLabel = exports.createQueryHistoryAutocompleter = void 0;
4
4
  const compass_components_1 = require("@mongodb-js/compass-components");
5
5
  const mongodb_query_parser_1 = require("mongodb-query-parser");
6
6
  const editor_1 = require("../editor");
7
7
  const highlight_1 = require("@lezer/highlight");
8
8
  const editor_2 = require("../editor");
9
- const createQueryHistoryAutocompleter = (savedQueries, onApply, theme) => {
9
+ function simplifyQueryStringForAutocomplete(queryString) {
10
+ return queryString.replace(/[\s'"\n\t{}},]/g, '').toLowerCase();
11
+ }
12
+ /**
13
+ * Codemirror runs a fuzzy search on the completion item labels.
14
+ * Oftentimes the fuzzy search will match on too many query history items.
15
+ * We limit the possible results to be improve accuracy.
16
+ * We give suggestions of queries that either match at least one field,
17
+ * or that contain the prefix the user is typing.
18
+ */
19
+ function getMatchingQueryHistoryItemsForInput({ savedQueries, queryProperty, input: _input, }) {
20
+ const input = simplifyQueryStringForAutocomplete(_input);
21
+ if (input.length === 0) {
22
+ // Everything matches when empty search.
23
+ return savedQueries;
24
+ }
25
+ return savedQueries.filter((query) => {
26
+ const queryValue = query.queryProperties[queryProperty];
27
+ // Only some query properties are objects. For instance limit can be an array.
28
+ if (typeof queryValue !== 'object') {
29
+ const queryValueString = (0, mongodb_query_parser_1.toJSString)(queryValue) || '';
30
+ if (!queryValueString) {
31
+ return false;
32
+ }
33
+ const queryValueSimplified = simplifyQueryStringForAutocomplete(queryValueString);
34
+ return queryValueSimplified.startsWith(input);
35
+ }
36
+ // We subtract parts of the string until there's nothing left.
37
+ // We know it's a possible match if the all of the input is found in the query.
38
+ let inputToMatch = input;
39
+ // We check each top level field as they can be in any order.
40
+ for (const [key, value] of Object.entries(queryValue).slice(0, 30 /* Some queries can have a ton of fields, we slice to avoid long loops on each character typed. */)) {
41
+ const fieldString = (0, mongodb_query_parser_1.toJSString)({ [key]: value }) || '';
42
+ const fieldStringSimplified = simplifyQueryStringForAutocomplete(fieldString);
43
+ if (input === fieldStringSimplified) {
44
+ // Don't show an option if the user has typed the whole field.
45
+ return false;
46
+ }
47
+ if (fieldStringSimplified.startsWith(input)) {
48
+ // When the user is typing their first field, we can return early.
49
+ return true;
50
+ }
51
+ const inputIndex = inputToMatch.indexOf(fieldStringSimplified);
52
+ if (inputIndex !== -1) {
53
+ inputToMatch = inputToMatch.replace(fieldStringSimplified, '');
54
+ }
55
+ }
56
+ if (inputToMatch.length === 0) {
57
+ return true;
58
+ }
59
+ return false;
60
+ });
61
+ }
62
+ const createQueryHistoryAutocompleter = ({ savedQueries, onApply, queryProperty, theme, }) => {
10
63
  return function queryCompletions(context) {
11
64
  if (savedQueries.length === 0) {
12
65
  return null;
13
66
  }
14
67
  const maxTime = savedQueries[savedQueries.length - 1].lastExecuted.getTime();
15
68
  const minTime = savedQueries[0].lastExecuted.getTime();
16
- const options = savedQueries.map((query) => ({
17
- label: createQuery(query),
69
+ const contextValue = context.state.sliceDoc(0, context.pos);
70
+ const matchedQueries = getMatchingQueryHistoryItemsForInput({
71
+ savedQueries,
72
+ queryProperty,
73
+ input: contextValue,
74
+ });
75
+ const options = matchedQueries.map((query) => ({
76
+ // Use a display label to show the query property
77
+ // field names before their respective parts.
78
+ displayLabel: createQueryDisplayLabel(query),
79
+ label: createQueryLabel(query, queryProperty),
18
80
  type: query.type === 'recent' ? 'query-history' : 'favorite',
19
81
  detail: (0, compass_components_1.formatDate)(query.lastExecuted.getTime()),
20
82
  info: () => createInfo(query, theme).dom,
21
83
  apply: () => {
22
84
  onApply(query.queryProperties);
23
85
  },
86
+ // CodeMirror expects boost values to be between -99 and 99
24
87
  boost: scaleBetween(query.lastExecuted.getTime(), -99, 99, minTime, maxTime),
25
88
  }));
26
89
  return {
@@ -42,16 +105,29 @@ const queryCodeStyles = (0, compass_components_1.css)({
42
105
  padding: 0,
43
106
  whiteSpace: 'pre-wrap',
44
107
  });
45
- function createQuery(query) {
46
- let res = '';
47
- Object.entries(query.queryProperties).forEach(([key, value]) => {
48
- const formattedQuery = (0, mongodb_query_parser_1.toJSString)(value);
49
- const noFilterKey = key === 'filter' ? '' : `${key}: `;
50
- res += formattedQuery ? `, ${noFilterKey}${formattedQuery}` : '';
51
- });
52
- return res.slice(2, res.length);
108
+ function createQueryLabel(query, propertyName) {
109
+ if (!query.queryProperties[propertyName]) {
110
+ return '';
111
+ }
112
+ // The autocompletion uses a fuzzy search on the label, we only want to
113
+ // auto complete property that is being edited, not all of them.
114
+ return (0, mongodb_query_parser_1.toJSString)(query.queryProperties[propertyName]) || '';
115
+ }
116
+ exports.createQueryLabel = createQueryLabel;
117
+ function createQueryDisplayLabel(query) {
118
+ return Object.entries(query.queryProperties)
119
+ .map(([key, value]) => {
120
+ const formattedQuery = (0, mongodb_query_parser_1.toJSString)(value, 1);
121
+ if (!formattedQuery)
122
+ return '';
123
+ // Hide the `filter` key in the display label as it's the default field.
124
+ const fieldKey = key === 'filter' ? '' : `${key}: `;
125
+ return `${fieldKey}${formattedQuery}`;
126
+ })
127
+ .filter(Boolean)
128
+ .reduce((acc, curr) => (acc ? `${acc}, ${curr}` : curr), '');
53
129
  }
54
- exports.createQuery = createQuery;
130
+ exports.createQueryDisplayLabel = createQueryDisplayLabel;
55
131
  const javascriptExpressionLanguageParser = editor_1.languages['javascript-expression']().language.parser;
56
132
  function createInfo(query, theme) {
57
133
  const customHighlighter = editor_2.highlightStyles[theme];
@@ -95,7 +171,9 @@ function createInfo(query, theme) {
95
171
  },
96
172
  };
97
173
  }
174
+ // scales a number unscaledNum between [newScaleMin, newScaleMax]
98
175
  function scaleBetween(unscaledNum, newScaleMin, newScaleMax, originalScaleMin, originalScaleMax) {
176
+ // returns midpoint of new range if original range is of size 0
99
177
  if (originalScaleMax === originalScaleMin)
100
178
  return newScaleMin + (newScaleMax - newScaleMin) / 2;
101
179
  return (((newScaleMax - newScaleMin) * (unscaledNum - originalScaleMin)) /
@@ -1 +1 @@
1
- {"version":3,"file":"query-history-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/query-history-autocompleter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-history-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/query-history-autocompleter.ts"],"names":[],"mappings":";;;AAIA,uEAKwC;AACxC,+DAAkD;AAClD,sCAAsC;AACtC,gDAAiD;AACjD,sCAAsE;AAUtE,SAAS,kCAAkC,CAAC,WAAmB;IAC7D,OAAO,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oCAAoC,CAAC,EAC5C,YAAY,EACZ,aAAa,EACb,KAAK,EAAE,MAAM,GAKd;IACC,MAAM,KAAK,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAC;IAEzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,wCAAwC;QACxC,OAAO,YAAY,CAAC;KACrB;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAExD,8EAA8E;QAC9E,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,MAAM,gBAAgB,GAAG,IAAA,iCAAU,EAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACtD,IAAI,CAAC,gBAAgB,EAAE;gBACrB,OAAO,KAAK,CAAC;aACd;YAED,MAAM,oBAAoB,GACxB,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;YACvD,OAAO,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC/C;QAED,8DAA8D;QAC9D,+EAA+E;QAC/E,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,6DAA6D;QAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CACzD,CAAC,EACD,EAAE,CAAC,kGAAkG,CACtG,EAAE;YACD,MAAM,WAAW,GAAG,IAAA,iCAAU,EAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,qBAAqB,GACzB,kCAAkC,CAAC,WAAW,CAAC,CAAC;YAElD,IAAI,KAAK,KAAK,qBAAqB,EAAE;gBACnC,8DAA8D;gBAC9D,OAAO,KAAK,CAAC;aACd;YAED,IAAI,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAC3C,kEAAkE;gBAClE,OAAO,IAAI,CAAC;aACb;YAED,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC/D,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;gBACrB,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;aAChE;SACF;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,MAAM,+BAA+B,GAAG,CAAC,EAC9C,YAAY,EACZ,OAAO,EACP,aAAa,EACb,KAAK,GAMN,EAAoB,EAAE;IACrB,OAAO,SAAS,gBAAgB,CAAC,OAA0B;QACzD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QAED,MAAM,OAAO,GACX,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAEvD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,oCAAoC,CAAC;YAC1D,YAAY;YACZ,aAAa;YACb,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,iDAAiD;YACjD,6CAA6C;YAC7C,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC;YAC5C,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC;YAC7C,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU;YAC5D,MAAM,EAAE,IAAA,+BAAU,EAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAChD,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG;YACxC,KAAK,EAAE,GAAG,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACjC,CAAC;YACD,2DAA2D;YAC3D,KAAK,EAAE,YAAY,CACjB,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,EAC5B,CAAC,EAAE,EACH,EAAE,EACF,OAAO,EACP,OAAO,CACR;SACF,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AArDW,QAAA,+BAA+B,mCAqD1C;AAEF,MAAM,gBAAgB,GAAG,IAAA,wBAAG,EAAC;IAC3B,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,iCAAY,CAAC,OAAO;CACjC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAA,wBAAG,EAAC;IAC1B,UAAU,EAAE,iCAAY,CAAC,IAAI;IAC7B,MAAM,EAAE,GAAG,4BAAO,CAAC,EAAE,CAAC,IAAI;IAC1B,UAAU,EAAE,GAAG,4BAAO,CAAC,GAAG,CAAC,IAAI;IAC/B,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,UAAU;CACvB,CAAC,CAAC;AAEH,SAAgB,gBAAgB,CAC9B,KAAiB,EACjB,YAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;QACxC,OAAO,EAAE,CAAC;KACX;IAED,uEAAuE;IACvE,gEAAgE;IAChE,OAAO,IAAA,iCAAU,EAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAXD,4CAWC;AAED,SAAgB,uBAAuB,CAAC,KAAiB;IACvD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpB,MAAM,cAAc,GAAG,IAAA,iCAAU,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc;YAAE,OAAO,EAAE,CAAC;QAC/B,wEAAwE;QACxE,MAAM,QAAQ,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;QACpD,OAAO,GAAG,QAAQ,GAAG,cAAc,EAAE,CAAC;IACxC,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAXD,0DAWC;AAED,MAAM,kCAAkC,GACtC,kBAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEvD,SAAS,UAAU,CACjB,KAAiB,EACjB,KAA0B;IAK1B,MAAM,iBAAiB,GAAG,wBAAe,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7D,MAAM,cAAc,GAAG,IAAA,iCAAU,EAAC,KAAK,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC;QACnC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;QAEjC,SAAS,IAAI,CAAC,IAAY,EAAE,OAAsB;YAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,OAAO,EAAE;gBACX,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACxB;QACH,CAAC;QAED,SAAS,SAAS;YAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,cAAc,EAAE;YAClB,IAAA,yBAAa,EACX,cAAc,EACd,kCAAkC,CAAC,KAAK,CAAC,cAAc,CAAC,EACxD,iBAAiB,EACjB,IAAI,EACJ,SAAS,CACV,CAAC;SACH;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1B,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,SAAS,CAAC,UAAU,EAAE;gBAC3B,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;aAC7C;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,SAAgB,YAAY,CAC1B,WAAmB,EACnB,WAAmB,EACnB,WAAmB,EACnB,gBAAwB,EACxB,gBAAwB;IAExB,+DAA+D;IAC/D,IAAI,gBAAgB,KAAK,gBAAgB;QACvC,OAAO,WAAW,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,CACL,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,CAAC;QAC9D,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACvC,WAAW,CACZ,CAAC;AACJ,CAAC;AAfD,oCAeC"}
@@ -40,6 +40,7 @@ const createStageAutocompleter = ({ stageOperator, utmSource, utmMedium, ...opti
40
40
  return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
41
41
  prefix,
42
42
  completions: fieldsReferenceCompletions,
43
+ // We don't need escaping, we are inside a string
43
44
  escape: 'never',
44
45
  });
45
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stage-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/stage-autocompleter.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAC7C,yEAGoC;AACpC,mCAAyD;AACzD,+DAAiE;AAE1D,MAAM,wBAAwB,GAAG,CAAC,EACvC,aAAa,EACb,SAAS,EACT,SAAS,EACT,GAAG,OAAO,KAMR,EAAE,EAAoB,EAAE;IAC1B,MAAM,kBAAkB,GAAG,IAAA,8CAAwB,EAAC,OAAO,CAAC,CAAC;IAE7D,MAAM,0BAA0B,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QAC/C,GAAG,OAAO;QACV,IAAI,EAAE,CAAC,iBAAiB,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QACrC,GAAG,OAAO;QACV,IAAI,EAAE;YACJ,QAAQ;YACR,MAAM;YACN,MAAM;YACN,kBAAkB;YAClB,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;gBACtD,CAAC,CAAE,CAAC,aAAa,EAAE,eAAe,CAAW;gBAC7C,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACpB,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YACxC,OAAO;gBACL,GAAG,UAAU;gBACb,WAAW,EAAE,MAAM,IAAA,eAAO,EAAC,UAAU,CAAC,KAAK,EAAE;oBAC3C,SAAS;oBACT,SAAS;iBACV,CAAC,wBAAwB;aAC3B,CAAC;SACH;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAA,uDAA4B,EAAC;QAClC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;YACxB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,IAAA,4DAAiC,EAAC;oBACvC,MAAM;oBACN,WAAW,EAAE,0BAA0B;oBAEvC,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;aACJ;YAED,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;YAChC,IAAI,aAAa,KAAK,QAAQ,EAAE;gBAC9B,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;aACpC;YACD,OAAO,IAAA,4DAAiC,EAAC;gBACvC,MAAM;gBACN,WAAW,EAAE,gBAAgB;aAC9B,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAlEW,QAAA,wBAAwB,4BAkEnC"}
1
+ {"version":3,"file":"stage-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/stage-autocompleter.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAC7C,yEAGoC;AACpC,mCAAyD;AACzD,+DAAiE;AAE1D,MAAM,wBAAwB,GAAG,CAAC,EACvC,aAAa,EACb,SAAS,EACT,SAAS,EACT,GAAG,OAAO,KAMR,EAAE,EAAoB,EAAE;IAC1B,MAAM,kBAAkB,GAAG,IAAA,8CAAwB,EAAC,OAAO,CAAC,CAAC;IAE7D,MAAM,0BAA0B,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QAC/C,GAAG,OAAO;QACV,IAAI,EAAE,CAAC,iBAAiB,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAA,yBAAS,EAAC,EAAE,EAAE;QACrC,GAAG,OAAO;QACV,IAAI,EAAE;YACJ,QAAQ;YACR,MAAM;YACN,MAAM;YACN,kBAAkB;YAClB,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;gBACtD,CAAC,CAAE,CAAC,aAAa,EAAE,eAAe,CAAW;gBAC7C,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACpB,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;YACxC,OAAO;gBACL,GAAG,UAAU;gBACb,WAAW,EAAE,MAAM,IAAA,eAAO,EAAC,UAAU,CAAC,KAAK,EAAE;oBAC3C,SAAS;oBACT,SAAS;iBACV,CAAC,wBAAwB;aAC3B,CAAC;SACH;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,IAAA,uDAA4B,EAAC;QAClC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;YACxB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,IAAA,4DAAiC,EAAC;oBACvC,MAAM;oBACN,WAAW,EAAE,0BAA0B;oBACvC,iDAAiD;oBACjD,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;aACJ;YAED,OAAO,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;YAChC,IAAI,aAAa,KAAK,QAAQ,EAAE;gBAC9B,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;aACpC;YACD,OAAO,IAAA,4DAAiC,EAAC;gBACvC,MAAM;gBACN,WAAW,EAAE,gBAAgB;aAC9B,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAlEW,QAAA,wBAAwB,4BAkEnC"}
@@ -13,5 +13,10 @@ export declare function removeQuotes(str: string): string;
13
13
  export declare function isTokenEqual(a: Token, b: Token): boolean;
14
14
  export declare function getPropertyNameFromPropertyToken(editorState: EditorState, propertyToken: Token): string;
15
15
  export declare function getTokenText(editorState: EditorState, token: Token): string;
16
+ /**
17
+ * Walks the syntax tree from the token and returns a list
18
+ * of all the ancestors of the token. The array indexes are
19
+ * represented as `[0-9]`.
20
+ */
16
21
  export declare function getAncestryOfToken(token: Token, document: string): string[];
17
22
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/codemirror/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,eAAO,MAAM,qBAAqB,qDAAoC,CAAC;AAEvE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,sCAE9D;AAED,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5D,wBAAgB,OAAO,CACrB,EAAE,EAAE,MAAM,EACV,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,MAAM,CAOR;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAO,UAK/C;AAED,wBAAiB,OAAO,CAAC,KAAK,EAAE,KAAK,gEAKpC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAEvC;AAID,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,WAE9C;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,KAAK,GACnB,MAAM,CAKR;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,UAElE;AA0CD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAY3E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/codemirror/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,eAAO,MAAM,qBAAqB,qDAAoC,CAAC;AAEvE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,sCAE9D;AAED,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5D,wBAAgB,OAAO,CACrB,EAAE,EAAE,MAAM,EACV,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,MAAM,CAOR;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAO,UAK/C;AAED,wBAAiB,OAAO,CAAC,KAAK,EAAE,KAAK,gEAKpC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAEvC;AAID,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,WAE9C;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,KAAK,GACnB,MAAM,CAKR;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,UAElE;AAqCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAY3E"}
@@ -33,6 +33,8 @@ function removeQuotes(str) {
33
33
  return str.replace(/(^('|")|('|")$)/g, '');
34
34
  }
35
35
  exports.removeQuotes = removeQuotes;
36
+ // lezer tokens are immutable, we check position in syntax tree to make sure we
37
+ // are looking at the same token
36
38
  function isTokenEqual(a, b) {
37
39
  return a.from === b.from && a.to === b.to;
38
40
  }
@@ -48,11 +50,17 @@ function getTokenText(editorState, token) {
48
50
  return editorState.sliceDoc(token.from, token.to);
49
51
  }
50
52
  exports.getTokenText = getTokenText;
53
+ /**
54
+ * Returns the list of possible ancestors of the token.
55
+ */
51
56
  const getAncestorList = (node, doc) => {
52
57
  const ancestors = [];
53
58
  if (!node?.parent) {
54
59
  return ancestors;
55
60
  }
61
+ // In order to find the index of an node in an array, we have to check for the parent.
62
+ // And then use siblings to find the index. We can't use the node.parent as it does not
63
+ // contain all the childern and reference to the current node.
56
64
  if (['ArrayExpression', 'Array'].includes(node.parent.name)) {
57
65
  let prevSibling = node.prevSibling;
58
66
  let index = 0;
@@ -71,9 +79,17 @@ const getAncestorList = (node, doc) => {
71
79
  }
72
80
  return ancestors.concat(getAncestorList(node.parent, doc));
73
81
  };
82
+ /**
83
+ * Walks the syntax tree from the token and returns a list
84
+ * of all the ancestors of the token. The array indexes are
85
+ * represented as `[0-9]`.
86
+ */
74
87
  function getAncestryOfToken(token, document) {
88
+ // If we are at the property name, we ignore it to correctly
89
+ // find the parent.
75
90
  const isAutocompletingPropertyName = ['ObjectExpression', 'PropertyDefinition'].includes(token.name) ||
76
91
  (token.parent?.parent?.name === 'ObjectExpression' && !token.prevSibling);
92
+ // We reverse the list as we want to start from the root.
77
93
  const list = getAncestorList(isAutocompletingPropertyName ? token.parent?.parent : token, document).reverse();
78
94
  return list;
79
95
  }