@mongodb-js/compass-editor 0.29.2 → 0.31.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/dist/actions.js +2 -0
- package/dist/actions.js.map +1 -1
- package/dist/codemirror/ace-compat-autocompleter.d.ts +12 -0
- package/dist/codemirror/ace-compat-autocompleter.d.ts.map +1 -1
- package/dist/codemirror/ace-compat-autocompleter.js +18 -0
- package/dist/codemirror/ace-compat-autocompleter.js.map +1 -1
- package/dist/codemirror/aggregation-autocompleter.js +2 -0
- package/dist/codemirror/aggregation-autocompleter.js.map +1 -1
- package/dist/codemirror/document-autocompleter.d.ts +4 -0
- package/dist/codemirror/document-autocompleter.d.ts.map +1 -1
- package/dist/codemirror/document-autocompleter.js +16 -2
- package/dist/codemirror/document-autocompleter.js.map +1 -1
- package/dist/codemirror/query-autocompleter-with-history.d.ts +7 -1
- package/dist/codemirror/query-autocompleter-with-history.d.ts.map +1 -1
- package/dist/codemirror/query-autocompleter-with-history.js +8 -2
- package/dist/codemirror/query-autocompleter-with-history.js.map +1 -1
- package/dist/codemirror/query-autocompleter.d.ts +4 -0
- package/dist/codemirror/query-autocompleter.d.ts.map +1 -1
- package/dist/codemirror/query-autocompleter.js +4 -0
- package/dist/codemirror/query-autocompleter.js.map +1 -1
- package/dist/codemirror/query-history-autocompleter.d.ts +8 -2
- package/dist/codemirror/query-history-autocompleter.d.ts.map +1 -1
- package/dist/codemirror/query-history-autocompleter.js +91 -13
- package/dist/codemirror/query-history-autocompleter.js.map +1 -1
- package/dist/codemirror/stage-autocompleter.js +1 -0
- package/dist/codemirror/stage-autocompleter.js.map +1 -1
- package/dist/codemirror/utils.d.ts +5 -0
- package/dist/codemirror/utils.d.ts.map +1 -1
- package/dist/codemirror/utils.js +16 -0
- package/dist/codemirror/utils.js.map +1 -1
- package/dist/codemirror/validation-autocompleter.js +15 -0
- package/dist/codemirror/validation-autocompleter.js.map +1 -1
- package/dist/editor.d.ts +19 -2
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +144 -3
- package/dist/editor.js.map +1 -1
- package/dist/prettify.js +5 -1
- package/dist/prettify.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
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,
|
package/dist/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAoD;AACpD,uEAAqD;AACrD,uEAA8D;AAC9D,+CAAgE;AAEhE,MAAM,iBAAiB,GAAG,IAAA,wBAAG,EAAC;IAC5B,IAAI,EAAE,MAAM;CACb,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,IAAA,wBAAG,EAAC;IACnC,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,IAAA,wBAAG,EAAC;IACzC,OAAO,EAAE,CAAC;
|
|
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;
|
|
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":";;;AAMA,2DAA6D;AAE7D,oDAA6C;AAC7C,mCAA+C;AAG/C,SAAgB,0CAA0C,CACxD,UAAmC,EACnC,SAAyC,SAAS;IAElD,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,KAAK,EACH,MAAM,KAAK,OAAO;YAChB,CAAC,CAAC,UAAU,CAAC,KAAK;YAClB,CAAC,CAAC,IAAA,yBAAS,EAAC,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC;QACtD,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;QACxE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QAC/D,IAAI;YACF,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;gBAC3B,OAAO,IAAI,CAAC;aACb;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC1C,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;
|
|
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;
|
|
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;
|
|
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 (
|
|
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 (
|
|
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,
|
|
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: (
|
|
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,
|
|
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 = (
|
|
8
|
-
const queryHistoryAutocompleter = (0, query_history_autocompleter_1.createQueryHistoryAutocompleter)(
|
|
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,
|
|
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;
|
|
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;
|
|
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
|
|
11
|
-
|
|
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;
|
|
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.
|
|
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
|
-
|
|
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
|
|
17
|
-
|
|
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
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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.
|
|
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":";;;AAIA,uEAKwC;AACxC,+DAAkD;AAClD,sCAAsC;AACtC,gDAAiD;AACjD,sCAAsE;
|
|
1
|
+
{"version":3,"file":"query-history-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/query-history-autocompleter.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;
|
|
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"}
|
package/dist/codemirror/utils.js
CHANGED
|
@@ -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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/codemirror/utils.ts"],"names":[],"mappings":";;;AAAA,2DAAiE;AAEjE,mDAAkD;AAElD,uEAAkE;AAErD,QAAA,qBAAqB,GAAG,IAAA,mBAAI,EAAC,CAAC,QAAQ,CAAC,EAAE,8BAAe,CAAC,CAAC;AAEvE,SAAgB,oBAAoB,CAAC,OAA0B;IAC7D,OAAO,IAAA,qBAAU,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAFD,oDAEC;AAID,SAAgB,OAAO,CACrB,EAAU,EACV,EAAE,SAAS,EAAE,SAAS,EAA8C;IAEpE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAA,qCAAgB,EAC3B,sEAAsE,EAAE,GAAG,EAC3E,EAAE,SAAS,EAAE,SAAS,EAAE,CACzB,CAAC;IACF,OAAO,4BAA4B,IAAI,MAAM,EAAE,MAAM,CAAC;AACxD,CAAC;AAVD,0BAUC;AAED,SAAgB,QAAQ,CAAC,GAAW,EAAE,GAAG,GAAG,IAAI;IAC9C,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AALD,4BAKC;AAED,QAAe,CAAC,CAAC,OAAO,CAAC,KAAY;IACnC,IAAI,MAAM,GAAiB,KAAK,CAAC;IACjC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE;QAC/B,MAAM,MAAM,CAAC;KACd;AACH,CAAC;AALD,0BAKC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAFD,oCAEC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/codemirror/utils.ts"],"names":[],"mappings":"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"}
|