@mongodb-js/compass-editor 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/actions.d.ts +11 -0
  2. package/dist/actions.d.ts.map +1 -0
  3. package/dist/{multiline-editor.js → actions.js} +8 -57
  4. package/dist/actions.js.map +1 -0
  5. package/dist/autocompleter.d.ts +22 -7
  6. package/dist/autocompleter.d.ts.map +1 -1
  7. package/dist/autocompleter.js +28 -8
  8. package/dist/autocompleter.js.map +1 -1
  9. package/dist/codemirror/ace-compat-autocompleter.d.ts +26 -0
  10. package/dist/codemirror/ace-compat-autocompleter.d.ts.map +1 -0
  11. package/dist/codemirror/ace-compat-autocompleter.js +67 -0
  12. package/dist/codemirror/ace-compat-autocompleter.js.map +1 -0
  13. package/dist/codemirror/aggregation-autocompleter.d.ts +3 -0
  14. package/dist/codemirror/aggregation-autocompleter.d.ts.map +1 -0
  15. package/dist/codemirror/aggregation-autocompleter.js +58 -0
  16. package/dist/codemirror/aggregation-autocompleter.js.map +1 -0
  17. package/dist/codemirror/document-autocompleter.d.ts +3 -0
  18. package/dist/codemirror/document-autocompleter.d.ts.map +1 -0
  19. package/dist/codemirror/document-autocompleter.js +50 -0
  20. package/dist/codemirror/document-autocompleter.js.map +1 -0
  21. package/dist/codemirror/query-autocompleter.d.ts +4 -0
  22. package/dist/codemirror/query-autocompleter.d.ts.map +1 -0
  23. package/dist/codemirror/query-autocompleter.js +22 -0
  24. package/dist/codemirror/query-autocompleter.js.map +1 -0
  25. package/dist/codemirror/stage-autocompleter.d.ts +6 -0
  26. package/dist/codemirror/stage-autocompleter.d.ts.map +1 -0
  27. package/dist/codemirror/stage-autocompleter.js +58 -0
  28. package/dist/codemirror/stage-autocompleter.js.map +1 -0
  29. package/dist/codemirror/utils.d.ts +14 -0
  30. package/dist/codemirror/utils.d.ts.map +1 -0
  31. package/dist/codemirror/utils.js +80 -0
  32. package/dist/codemirror/utils.js.map +1 -0
  33. package/dist/codemirror/validation-autocompleter.d.ts +4 -0
  34. package/dist/codemirror/validation-autocompleter.d.ts.map +1 -0
  35. package/dist/codemirror/validation-autocompleter.js +123 -0
  36. package/dist/codemirror/validation-autocompleter.js.map +1 -0
  37. package/dist/index.d.ts +7 -13
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +14 -31
  40. package/dist/index.js.map +1 -1
  41. package/dist/json-editor.d.ts +101 -16
  42. package/dist/json-editor.d.ts.map +1 -1
  43. package/dist/json-editor.js +440 -76
  44. package/dist/json-editor.js.map +1 -1
  45. package/dist/prettify.d.ts +1 -1
  46. package/dist/prettify.d.ts.map +1 -1
  47. package/dist/types.d.ts +4 -36
  48. package/dist/types.d.ts.map +1 -1
  49. package/package.json +12 -14
  50. package/dist/ace/aggregation-autocompleter.d.ts +0 -15
  51. package/dist/ace/aggregation-autocompleter.d.ts.map +0 -1
  52. package/dist/ace/aggregation-autocompleter.js +0 -108
  53. package/dist/ace/aggregation-autocompleter.js.map +0 -1
  54. package/dist/ace/index.d.ts +0 -2
  55. package/dist/ace/index.d.ts.map +0 -1
  56. package/dist/ace/index.js +0 -37
  57. package/dist/ace/index.js.map +0 -1
  58. package/dist/ace/mode.d.ts +0 -2
  59. package/dist/ace/mode.d.ts.map +0 -1
  60. package/dist/ace/mode.js +0 -67
  61. package/dist/ace/mode.js.map +0 -1
  62. package/dist/ace/query-autocompleter.d.ts +0 -12
  63. package/dist/ace/query-autocompleter.d.ts.map +0 -1
  64. package/dist/ace/query-autocompleter.js +0 -38
  65. package/dist/ace/query-autocompleter.js.map +0 -1
  66. package/dist/ace/stage-autocompleter.d.ts +0 -16
  67. package/dist/ace/stage-autocompleter.d.ts.map +0 -1
  68. package/dist/ace/stage-autocompleter.js +0 -70
  69. package/dist/ace/stage-autocompleter.js.map +0 -1
  70. package/dist/ace/theme.d.ts +0 -4
  71. package/dist/ace/theme.d.ts.map +0 -1
  72. package/dist/ace/theme.js +0 -297
  73. package/dist/ace/theme.js.map +0 -1
  74. package/dist/ace/util.d.ts +0 -3
  75. package/dist/ace/util.d.ts.map +0 -1
  76. package/dist/ace/util.js +0 -12
  77. package/dist/ace/util.js.map +0 -1
  78. package/dist/ace/validation-autocompleter.d.ts +0 -12
  79. package/dist/ace/validation-autocompleter.d.ts.map +0 -1
  80. package/dist/ace/validation-autocompleter.js +0 -36
  81. package/dist/ace/validation-autocompleter.js.map +0 -1
  82. package/dist/base-editor.d.ts +0 -36
  83. package/dist/base-editor.d.ts.map +0 -1
  84. package/dist/base-editor.js +0 -156
  85. package/dist/base-editor.js.map +0 -1
  86. package/dist/inline-editor.d.ts +0 -8
  87. package/dist/inline-editor.d.ts.map +0 -1
  88. package/dist/inline-editor.js +0 -21
  89. package/dist/inline-editor.js.map +0 -1
  90. package/dist/multiline-editor.d.ts +0 -18
  91. package/dist/multiline-editor.d.ts.map +0 -1
  92. package/dist/multiline-editor.js.map +0 -1
  93. package/dist/syntax-highlight.d.ts +0 -10
  94. package/dist/syntax-highlight.d.ts.map +0 -1
  95. package/dist/syntax-highlight.js +0 -26
  96. package/dist/syntax-highlight.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export declare const ActionButton: React.FunctionComponent<{
3
+ icon: string | React.ReactNode;
4
+ label: string;
5
+ onClick?: (...args: Parameters<React.MouseEventHandler<HTMLButtonElement>>) => boolean | void;
6
+ 'data-testid'?: string;
7
+ }>;
8
+ export declare const FormatIcon: ({ size, ...props }: React.SVGProps<SVGSVGElement> & {
9
+ size?: number | undefined;
10
+ }) => JSX.Element;
11
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +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"}
@@ -23,12 +23,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Editor = void 0;
26
+ exports.FormatIcon = exports.ActionButton = void 0;
27
27
  const compass_components_1 = require("@mongodb-js/compass-components");
28
28
  const compass_components_2 = require("@mongodb-js/compass-components");
29
29
  const compass_components_3 = require("@mongodb-js/compass-components");
30
30
  const react_1 = __importStar(require("react"));
31
- const base_editor_1 = require("./base-editor");
32
31
  const actionButtonStyle = (0, compass_components_2.css)({
33
32
  flex: 'none',
34
33
  });
@@ -56,11 +55,12 @@ const actionButtonClickResultIconStyle = (0, compass_components_2.css)({
56
55
  const actionButtonClickResultIconHiddenStyle = (0, compass_components_2.css)({
57
56
  opacity: 0,
58
57
  });
59
- const ActionButton = ({ label, icon, onClick }) => {
58
+ const ActionButton = ({ label, icon, onClick, ...props }) => {
59
+ var _a;
60
60
  const [clickResult, setClickResult] = (0, react_1.useState)('success');
61
61
  const [clickResultVisible, setClickResultVisible] = (0, react_1.useState)(false);
62
62
  const onButtonClick = (0, react_1.useCallback)((...args) => {
63
- const result = onClick(...args);
63
+ const result = onClick === null || onClick === void 0 ? void 0 : onClick(...args);
64
64
  if (typeof result === 'boolean') {
65
65
  setClickResult(result ? 'success' : 'error');
66
66
  setClickResultVisible(true);
@@ -77,63 +77,14 @@ const ActionButton = ({ label, icon, onClick }) => {
77
77
  clearTimeout(timeoutId);
78
78
  };
79
79
  }, [clickResultVisible]);
80
- return (react_1.default.createElement(compass_components_3.Button, { size: "xsmall", "aria-label": label, title: label, onClick: onButtonClick, className: actionButtonStyle },
80
+ return (react_1.default.createElement(compass_components_3.Button, { size: "xsmall", "aria-label": label, title: label, onClick: onButtonClick, className: actionButtonStyle, "data-testid": (_a = props['data-testid']) !== null && _a !== void 0 ? _a : `editor-action-${label}` },
81
81
  react_1.default.createElement("div", { className: actionButtonContentStyle },
82
82
  react_1.default.createElement("div", { className: (0, compass_components_1.cx)(actionButtonIconContainerStyle, clickResultVisible && actionButtonIconContainerHiddenStyle) }, typeof icon === 'string' ? (react_1.default.createElement(compass_components_3.Icon, { size: "small", role: "presentation", title: null, glyph: icon })) : (icon)),
83
83
  react_1.default.createElement("div", { className: (0, compass_components_1.cx)(actionButtonClickResultIconStyle, !clickResultVisible && actionButtonClickResultIconHiddenStyle) },
84
84
  react_1.default.createElement(compass_components_3.Icon, { size: "small", glyph: clickResult === 'success' ? 'Checkmark' : 'X' })))));
85
85
  };
86
+ exports.ActionButton = ActionButton;
86
87
  const FormatIcon = ({ size = 16, ...props }) => (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", width: size, height: size, viewBox: "0 0 16 16", ...props },
87
88
  react_1.default.createElement("path", { fill: "currentColor", d: "M2 4a1 1 0 0 1 1-1h2a1 1 0 1 1 0 2H3a1 1 0 0 1-1-1Zm0 4a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2H3a1 1 0 0 1-1-1Zm1 3a1 1 0 1 0 0 2h10a1 1 0 1 0 0-2H3Zm4-7a1 1 0 0 1 1-1h5a1 1 0 1 1 0 2H8a1 1 0 0 1-1-1Zm4 4a1 1 0 0 1 1-1h1a1 1 0 1 1 0 2h-1a1 1 0 0 1-1-1Z" })));
88
- const multilineEditorContainerStyle = (0, compass_components_2.css)({
89
- position: 'relative',
90
- height: '100%',
91
- [`&:focus-within > .multiline-editor-actions,
92
- &:hover > .multiline-editor-actions`]: {
93
- display: 'flex',
94
- },
95
- });
96
- const editorContainerStyle = (0, compass_components_2.css)({
97
- overflow: 'auto',
98
- paddingTop: compass_components_2.spacing[1],
99
- height: `calc(100% - ${compass_components_2.spacing[1]}px)`,
100
- minHeight: 'inherit',
101
- });
102
- const actionsContainerStyle = (0, compass_components_2.css)({
103
- position: 'absolute',
104
- top: compass_components_2.spacing[1],
105
- right: compass_components_2.spacing[2],
106
- display: 'none',
107
- gap: compass_components_2.spacing[2],
108
- });
109
- const MultilineEditor = ({ copyable = true, formattable = true, customActions = [], onAction, onLoad, className, ...props }) => {
110
- const editorRef = (0, react_1.useRef)();
111
- const actions = (0, react_1.useMemo)(() => {
112
- return [
113
- copyable && (react_1.default.createElement(ActionButton, { key: "Copy", label: "Copy", icon: "Copy", onClick: () => {
114
- var _a;
115
- (_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.execCommand('copy-all');
116
- return true;
117
- } })),
118
- formattable && (react_1.default.createElement(ActionButton, { key: "Format", label: "Format", icon: react_1.default.createElement(FormatIcon, { size: 14, role: "presentation" }), onClick: () => {
119
- var _a;
120
- (_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.execCommand('prettify');
121
- return true;
122
- } })),
123
- ...customActions.map((action) => {
124
- return (react_1.default.createElement(ActionButton, { key: action.action, icon: action.icon, label: action.label, onClick: () => {
125
- onAction === null || onAction === void 0 ? void 0 : onAction(editorRef.current, action.action);
126
- } }));
127
- }),
128
- ];
129
- }, [copyable, formattable, customActions, onAction]);
130
- return (react_1.default.createElement("div", { className: (0, compass_components_1.cx)(multilineEditorContainerStyle, className) },
131
- react_1.default.createElement("div", { className: editorContainerStyle },
132
- react_1.default.createElement(base_editor_1.BaseEditor, { onLoad: (editor) => {
133
- editorRef.current = editor;
134
- onLoad === null || onLoad === void 0 ? void 0 : onLoad(editor);
135
- }, ...props })),
136
- actions.length > 0 && (react_1.default.createElement("div", { className: (0, compass_components_1.cx)('multiline-editor-actions', actionsContainerStyle) }, actions))));
137
- };
138
- exports.Editor = MultilineEditor;
139
- //# sourceMappingURL=multiline-editor.js.map
89
+ exports.FormatIcon = FormatIcon;
90
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.tsx"],"names":[],"mappings":"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"}
@@ -114,6 +114,12 @@ declare const ALL_COMPLETIONS: ({
114
114
  readonly score: 1;
115
115
  readonly meta: "accumulator";
116
116
  readonly version: "5.2.0";
117
+ } | {
118
+ readonly name: "$median";
119
+ readonly value: "$median";
120
+ readonly score: 1;
121
+ readonly meta: "accumulator";
122
+ readonly version: "7.0.0";
117
123
  } | {
118
124
  readonly name: "$min";
119
125
  readonly value: "$min";
@@ -127,6 +133,12 @@ declare const ALL_COMPLETIONS: ({
127
133
  readonly score: 1;
128
134
  readonly meta: "accumulator";
129
135
  readonly version: "5.2.0";
136
+ } | {
137
+ readonly name: "$percentile";
138
+ readonly value: "$percentile";
139
+ readonly score: 1;
140
+ readonly meta: "accumulator";
141
+ readonly version: "7.0.0";
130
142
  } | {
131
143
  readonly name: "$push";
132
144
  readonly value: "$push";
@@ -2224,8 +2236,8 @@ declare const ALL_COMPLETIONS: ({
2224
2236
  readonly comment: "/**\n * users: Optional list of users for which local sessions need to be returned.\n * allUsers: Optional boolean value to specify whether to return local sessions for all users or not.\n */\n";
2225
2237
  readonly snippet: "{\n allUsers: ${1:false},\n users: [\n { user: '${2:string}', db: '${3:string}' }\n ]\n}";
2226
2238
  })[];
2227
- declare type Meta = typeof ALL_COMPLETIONS[number]['meta'] | 'field:identifier' | 'field:reference';
2228
- export declare type Completion = {
2239
+ type Meta = typeof ALL_COMPLETIONS[number]['meta'] | 'field:identifier' | 'field:reference';
2240
+ export type Completion = {
2229
2241
  value: string;
2230
2242
  version: string;
2231
2243
  meta: Meta;
@@ -2233,20 +2245,23 @@ export declare type Completion = {
2233
2245
  snippet?: string;
2234
2246
  score?: number;
2235
2247
  };
2236
- export declare function createCompletionFilter(prefix: string, serverVersion: string, filterMeta?: string[]): ({ value, version, meta }: Completion) => boolean;
2237
- export declare type CompleteOptions = {
2248
+ export declare function createCompletionFilter(prefix: string, serverVersion: string, filterMeta?: string[]): ({ value, version: minServerVersion, meta }: Completion) => boolean;
2249
+ export type CompleteOptions = {
2238
2250
  serverVersion?: string;
2239
- fields?: string[];
2251
+ fields?: (string | {
2252
+ name: string;
2253
+ description?: string;
2254
+ })[];
2240
2255
  meta?: (Meta | 'field:*' | 'accumulator:*' | 'expr:*')[];
2241
2256
  };
2242
- export declare type CompletionResult = {
2257
+ export type CompletionResult = {
2243
2258
  value: string;
2244
2259
  meta?: string;
2245
2260
  description?: string;
2246
2261
  snippet?: string;
2247
2262
  score: number;
2248
2263
  };
2249
- export declare function wrapField(field: string): string;
2264
+ export declare function wrapField(field: string, force?: boolean): string;
2250
2265
  export declare function completer(prefix?: string, options?: CompleteOptions, completions?: Completion[]): CompletionResult[];
2251
2266
  export {};
2252
2267
  //# sourceMappingURL=autocompleter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocompleter.d.ts","sourceRoot":"","sources":["../src/autocompleter.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASpB,CAAC;AAEF,aAAK,IAAI,GACL,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GACtC,kBAAkB,GAClB,iBAAiB,CAAC;AAQtB,oBAAY,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAeF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EAAE,8BAK+B,UAAU,aAO/D;AAED,oBAAY,eAAe,GAAG;IAE5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC1D,CAAC;AAEF,oBAAY,gBAAgB,GAAG;IAE7B,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAsBF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,UAItC;AAED,wBAAgB,SAAS,CACvB,MAAM,SAAK,EACX,OAAO,GAAE,eAAoB,EAC7B,WAAW,GAAE,UAAU,EAAoB,GAC1C,gBAAgB,EAAE,CA0BpB"}
1
+ {"version":3,"file":"autocompleter.d.ts","sourceRoot":"","sources":["../src/autocompleter.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.completer = exports.wrapField = exports.createCompletionFilter = void 0;
4
4
  const semver_1 = require("semver");
5
5
  const mongodb_constants_1 = require("@mongodb-js/mongodb-constants");
6
+ const DEFAULT_SERVER_VERSION = '999.999.999';
6
7
  const ALL_COMPLETIONS = [
7
8
  ...mongodb_constants_1.ACCUMULATORS,
8
9
  ...mongodb_constants_1.BSON_TYPES,
@@ -25,7 +26,7 @@ function matchesMeta(filter, meta) {
25
26
  }
26
27
  function createCompletionFilter(prefix, serverVersion, filterMeta) {
27
28
  var _a, _b, _c;
28
- const currentServerVersion = (_c = (_b = (_a = serverVersion.match(/^(?<version>\d+?\.\d+?\.\d+?)/)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.version) !== null && _c !== void 0 ? _c : serverVersion;
29
+ const currentServerVersion = (_c = (_b = (_a = serverVersion.match(/^(?<version>\d+?\.\d+?\.\d+?)/)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.version) !== null && _c !== void 0 ? _c : DEFAULT_SERVER_VERSION;
29
30
  return ({ value, version: minServerVersion, meta }) => {
30
31
  return (value.toLowerCase().startsWith(prefix.toLowerCase()) &&
31
32
  (0, semver_1.gte)(currentServerVersion, minServerVersion) &&
@@ -45,19 +46,38 @@ function isValidIdentifier(identifier) {
45
46
  return false;
46
47
  }
47
48
  }
48
- function wrapField(field) {
49
- return isValidIdentifier(field)
50
- ? field
51
- : `"${field.replace(/["\\]/g, '\\$&')}"`;
49
+ function wrapField(field, force = false) {
50
+ return force || !isValidIdentifier(field)
51
+ ? `"${field.replace(/["\\]/g, '\\$&')}"`
52
+ : field;
52
53
  }
53
54
  exports.wrapField = wrapField;
55
+ function normalizeField(field) {
56
+ return typeof field === 'string'
57
+ ? { value: field }
58
+ : {
59
+ value: field.name,
60
+ description: field.description,
61
+ };
62
+ }
54
63
  function completer(prefix = '', options = {}, completions = ALL_COMPLETIONS) {
55
- const { serverVersion = '999.999.999', fields = [], meta } = options;
64
+ const { serverVersion = DEFAULT_SERVER_VERSION, fields = [], meta } = options;
56
65
  const completionsFilter = createCompletionFilter(prefix, serverVersion, meta);
57
66
  const completionsWithFields = [].concat(completions, fields.flatMap((field) => {
67
+ const { value, description } = normalizeField(field);
58
68
  return [
59
- { value: field, meta: 'field:identifier', version: '0.0.0' },
60
- { value: `$${field}`, meta: 'field:reference', version: '0.0.0' },
69
+ {
70
+ value: value,
71
+ meta: 'field:identifier',
72
+ version: '0.0.0',
73
+ description,
74
+ },
75
+ {
76
+ value: `$${value}`,
77
+ meta: 'field:reference',
78
+ version: '0.0.0',
79
+ description,
80
+ },
61
81
  ];
62
82
  }));
63
83
  return completionsWithFields
@@ -1 +1 @@
1
- {"version":3,"file":"autocompleter.js","sourceRoot":"","sources":["../src/autocompleter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autocompleter.js","sourceRoot":"","sources":["../src/autocompleter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Completion, CompletionContext, CompletionResult, CompletionSource } from '@codemirror/autocomplete';
2
+ import type { CompletionResult as MongoDBCompletionResult } from '../autocompleter';
3
+ import type { Token } from './utils';
4
+ export declare function mapMongoDBCompletionToCodemirrorCompletion(completion: MongoDBCompletionResult, escape?: 'always' | 'never' | 'invalid'): Completion;
5
+ type Prefix = {
6
+ from: number;
7
+ to: number;
8
+ text: string;
9
+ };
10
+ export declare const ID_REGEX: RegExp;
11
+ export declare function createCompletionResultForIdPrefix({ prefix, completions, escape, }: {
12
+ prefix: Pick<Prefix, 'from' | 'to'>;
13
+ completions: MongoDBCompletionResult[];
14
+ escape?: 'always' | 'never' | 'invalid';
15
+ }): CompletionResult;
16
+ type AceCompatCompletionSource = (options: {
17
+ prefix: Prefix;
18
+ token: Token;
19
+ context: CompletionContext;
20
+ }) => ReturnType<CompletionSource>;
21
+ export declare function createAceCompatAutocompleter(completers: {
22
+ String?: AceCompatCompletionSource;
23
+ IdentifierLike?: AceCompatCompletionSource;
24
+ }): CompletionSource;
25
+ export {};
26
+ //# sourceMappingURL=ace-compat-autocompleter.d.ts.map
@@ -0,0 +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,CAoCZ;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"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAceCompatAutocompleter = exports.createCompletionResultForIdPrefix = exports.ID_REGEX = exports.mapMongoDBCompletionToCodemirrorCompletion = void 0;
4
+ const autocomplete_1 = require("@codemirror/autocomplete");
5
+ const autocompleter_1 = require("../autocompleter");
6
+ const utils_1 = require("./utils");
7
+ function mapMongoDBCompletionToCodemirrorCompletion(completion, escape = 'invalid') {
8
+ var _a;
9
+ const cmCompletion = {
10
+ label: completion.value,
11
+ apply: escape === 'never'
12
+ ? completion.value
13
+ : (0, autocompleter_1.wrapField)(completion.value, escape === 'always'),
14
+ detail: ((_a = completion.meta) === null || _a === void 0 ? void 0 : _a.startsWith('field')) ? 'field' : completion.meta,
15
+ info() {
16
+ if (!completion.description) {
17
+ return null;
18
+ }
19
+ const infoNode = document.createElement('div');
20
+ infoNode.classList.add('completion-info');
21
+ infoNode.addEventListener('mousedown', (evt) => {
22
+ if (evt.target.nodeName === 'A') {
23
+ evt.preventDefault();
24
+ }
25
+ });
26
+ infoNode.innerHTML = completion.description;
27
+ return infoNode;
28
+ },
29
+ };
30
+ if (completion.snippet) {
31
+ return (0, autocomplete_1.snippetCompletion)(completion.snippet, cmCompletion);
32
+ }
33
+ return cmCompletion;
34
+ }
35
+ exports.mapMongoDBCompletionToCodemirrorCompletion = mapMongoDBCompletionToCodemirrorCompletion;
36
+ exports.ID_REGEX = /[a-zA-Z_0-9$\-\u00A2-\u2000\u2070-\uFFFF]+/;
37
+ function createCompletionResultForIdPrefix({ prefix, completions, escape, }) {
38
+ return {
39
+ from: prefix.from,
40
+ to: prefix.to,
41
+ options: completions.map((completion) => {
42
+ return mapMongoDBCompletionToCodemirrorCompletion(completion, escape);
43
+ }),
44
+ validFor: exports.ID_REGEX,
45
+ };
46
+ }
47
+ exports.createCompletionResultForIdPrefix = createCompletionResultForIdPrefix;
48
+ function createAceCompatAutocompleter(completers) {
49
+ return function aceCompatAutocompleter(context) {
50
+ var _a, _b, _c;
51
+ const prefix = context.matchBefore(exports.ID_REGEX);
52
+ const token = (0, utils_1.resolveTokenAtCursor)(context);
53
+ if (!prefix || prefix.text === '') {
54
+ return null;
55
+ }
56
+ if (['BlockComment', 'LineComment'].includes(token.type.name)) {
57
+ return null;
58
+ }
59
+ const opts = { context, prefix, token };
60
+ if (token.type.name === 'String' && completers.String) {
61
+ return (_a = completers.String(opts)) !== null && _a !== void 0 ? _a : null;
62
+ }
63
+ return (_c = (_b = completers.IdentifierLike) === null || _b === void 0 ? void 0 : _b.call(completers, opts)) !== null && _c !== void 0 ? _c : null;
64
+ };
65
+ }
66
+ exports.createAceCompatAutocompleter = createAceCompatAutocompleter;
67
+ //# sourceMappingURL=ace-compat-autocompleter.js.map
@@ -0,0 +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,CAAA,MAAA,UAAU,CAAC,IAAI,0CAAE,UAAU,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;QACxE,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;gBAO7C,IAAK,GAAG,CAAC,MAAsB,CAAC,QAAQ,KAAK,GAAG,EAAE;oBAChD,GAAG,CAAC,cAAc,EAAE,CAAC;iBACtB;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC;YAC5C,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;IAEF,IAAI,UAAU,CAAC,OAAO,EAAE;QACtB,OAAO,IAAA,gCAAiB,EAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;KAC5D;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAvCD,gGAuCC;AAOY,QAAA,QAAQ,GAAG,4CAA4C,CAAC;AAErE,SAAgB,iCAAiC,CAAC,EAChD,MAAM,EACN,WAAW,EACX,MAAM,GAKP;IACC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YACtC,OAAO,0CAA0C,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACxE,CAAC,CAAC;QACF,QAAQ,EAAE,gBAAQ;KACnB,CAAC;AACJ,CAAC;AAjBD,8EAiBC;AAiBD,SAAgB,4BAA4B,CAAC,UAG5C;IACC,OAAO,SAAS,sBAAsB,CAAC,OAAO;;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAQ,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7D,OAAO,IAAI,CAAC;SACb;QAED,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAExC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE;YACrD,OAAO,MAAA,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAI,IAAI,CAAC;SACxC;QAED,OAAO,MAAA,MAAA,UAAU,CAAC,cAAc,2DAAG,IAAI,CAAC,mCAAI,IAAI,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC;AAxBD,oEAwBC"}
@@ -0,0 +1,3 @@
1
+ import type { CompleteOptions } from '../autocompleter';
2
+ export declare function createAggregationAutocompleter(options?: Pick<CompleteOptions, 'fields' | 'serverVersion'>): import("@codemirror/autocomplete").CompletionSource;
3
+ //# sourceMappingURL=aggregation-autocompleter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/aggregation-autocompleter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAoCxD,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,eAAe,CAAM,uDAoChE"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAggregationAutocompleter = void 0;
4
+ const mongodb_constants_1 = require("@mongodb-js/mongodb-constants");
5
+ const autocompleter_1 = require("../autocompleter");
6
+ const utils_1 = require("./utils");
7
+ const utils_2 = require("./utils");
8
+ const utils_3 = require("./utils");
9
+ const ace_compat_autocompleter_1 = require("./ace-compat-autocompleter");
10
+ const ace_compat_autocompleter_2 = require("./ace-compat-autocompleter");
11
+ const stage_autocompleter_1 = require("./stage-autocompleter");
12
+ const StageOperatorNames = new Set(mongodb_constants_1.STAGE_OPERATOR_NAMES);
13
+ function getStageNameForToken(editorState, token) {
14
+ for (const parent of (0, utils_1.parents)(token)) {
15
+ if (parent.name === 'Property') {
16
+ const propertyName = (0, utils_2.getPropertyNameFromPropertyToken)(editorState, parent);
17
+ if (parent.firstChild &&
18
+ !(0, utils_2.isTokenEqual)(parent.firstChild, token) &&
19
+ StageOperatorNames.has(propertyName)) {
20
+ return propertyName;
21
+ }
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ function createAggregationAutocompleter(options = {}) {
27
+ const stageAutocompletions = (0, autocompleter_1.completer)('', { ...options, meta: ['stage'] });
28
+ return (0, ace_compat_autocompleter_2.createAceCompatAutocompleter)({
29
+ IdentifierLike({ context, prefix, token }) {
30
+ var _a;
31
+ const stageOperator = getStageNameForToken(context.state, token);
32
+ if (stageOperator) {
33
+ return (0, stage_autocompleter_1.createStageAutocompleter)({ stageOperator, ...options })(context);
34
+ }
35
+ const isInsideBlock = token.name === 'PropertyName' || ((_a = token.parent) === null || _a === void 0 ? void 0 : _a.name) === 'Property';
36
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({
37
+ prefix,
38
+ completions: stageAutocompletions.map((completion) => {
39
+ const opName = completion.value;
40
+ return {
41
+ ...completion,
42
+ ...(completion.description && {
43
+ description: `<p>${(0, utils_3.aggLink)(opName)} pipeline stage</p>` +
44
+ `<p>${completion.description}</p>`,
45
+ }),
46
+ ...(completion.snippet && {
47
+ snippet: !isInsideBlock
48
+ ? `{\n${(0, utils_3.padLines)(`${opName}: ${completion.snippet}`)}\n}`
49
+ : `${opName}: ${completion.snippet}`,
50
+ }),
51
+ };
52
+ }),
53
+ });
54
+ },
55
+ });
56
+ }
57
+ exports.createAggregationAutocompleter = createAggregationAutocompleter;
58
+ //# sourceMappingURL=aggregation-autocompleter.js.map
@@ -0,0 +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,CAC5C,UAA6D,EAAE;IAE/D,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,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;aACzE;YAED,MAAM,aAAa,GACjB,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,CAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,IAAI,MAAK,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,CAAC,qBAAqB;gCAC1C,MAAM,UAAU,CAAC,WAAW,MAAM;yBACrC,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;AArCD,wEAqCC"}
@@ -0,0 +1,3 @@
1
+ import type { CompletionSource } from '@codemirror/autocomplete';
2
+ export declare const createDocumentAutocompleter: (fields: string[]) => CompletionSource;
3
+ //# sourceMappingURL=document-autocompleter.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDocumentAutocompleter = void 0;
4
+ const autocompleter_1 = require("../autocompleter");
5
+ const json_editor_1 = require("../json-editor");
6
+ const utils_1 = require("./utils");
7
+ function isJSONPropertyName(token) {
8
+ var _a, _b;
9
+ return (token.name === 'PropertyName' ||
10
+ (token.type.isError &&
11
+ ['Property', '{'].includes((_b = (_a = token.prevSibling) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '')));
12
+ }
13
+ function isJavaScriptPropertyName(token) {
14
+ var _a;
15
+ return (((_a = token.parent) === null || _a === void 0 ? void 0 : _a.name) === 'Property' &&
16
+ (!token.prevSibling || token.prevSibling.name === '['));
17
+ }
18
+ const createDocumentAutocompleter = (fields) => {
19
+ const completions = (0, autocompleter_1.completer)('', { fields, meta: ['field:identifier'] });
20
+ return (context) => {
21
+ const token = (0, utils_1.resolveTokenAtCursor)(context);
22
+ const shouldAlwaysEscapeProperty = context.state.facet(json_editor_1.languageName)[0] === 'json';
23
+ if (isJSONPropertyName(token) || isJavaScriptPropertyName(token)) {
24
+ const prefix = context.state
25
+ .sliceDoc(token.from, context.pos)
26
+ .replace(/^("|')/, '');
27
+ return {
28
+ from: token.from,
29
+ to: token.to,
30
+ options: completions
31
+ .filter((completion) => {
32
+ return completion.value
33
+ .toLowerCase()
34
+ .startsWith(prefix.toLowerCase());
35
+ })
36
+ .map((completion) => {
37
+ return {
38
+ label: (0, autocompleter_1.wrapField)(completion.value, shouldAlwaysEscapeProperty),
39
+ type: 'property',
40
+ detail: 'field',
41
+ };
42
+ }),
43
+ filter: false,
44
+ };
45
+ }
46
+ return (0, utils_1.completeWordsInString)(context);
47
+ };
48
+ };
49
+ exports.createDocumentAutocompleter = createDocumentAutocompleter;
50
+ //# sourceMappingURL=document-autocompleter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-autocompleter.js","sourceRoot":"","sources":["../../src/codemirror/document-autocompleter.ts"],"names":[],"mappings":";;;AACA,oDAAwD;AACxD,gDAA8C;AAC9C,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,MAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,IAAI,mCAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;AACJ,CAAC;AACD,SAAS,wBAAwB,CAAC,KAAY;;IAC5C,OAAO,CAEL,CAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,IAAI,MAAK,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,0BAAY,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"}
@@ -0,0 +1,4 @@
1
+ import type { CompletionSource } from '@codemirror/autocomplete';
2
+ import type { CompleteOptions } from '../autocompleter';
3
+ export declare const createQueryAutocompleter: (options?: Pick<CompleteOptions, 'fields' | 'serverVersion'>) => CompletionSource;
4
+ //# sourceMappingURL=query-autocompleter.d.ts.map
@@ -0,0 +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,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAYxD,eAAO,MAAM,wBAAwB,aAC1B,KAAK,eAAe,EAAE,QAAQ,GAAG,eAAe,CAAC,KACzD,gBAcF,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createQueryAutocompleter = void 0;
4
+ const autocompleter_1 = require("../autocompleter");
5
+ const ace_compat_autocompleter_1 = require("./ace-compat-autocompleter");
6
+ const utils_1 = require("./utils");
7
+ const createQueryAutocompleter = (options = {}) => {
8
+ const completions = (0, autocompleter_1.completer)('', {
9
+ meta: ['query', 'bson', 'field:identifier'],
10
+ ...options,
11
+ });
12
+ return (0, ace_compat_autocompleter_1.createAceCompatAutocompleter)({
13
+ String({ context }) {
14
+ return (0, utils_1.completeWordsInString)(context);
15
+ },
16
+ IdentifierLike({ prefix }) {
17
+ return (0, ace_compat_autocompleter_1.createCompletionResultForIdPrefix)({ prefix, completions });
18
+ },
19
+ });
20
+ };
21
+ exports.createQueryAutocompleter = createQueryAutocompleter;
22
+ //# sourceMappingURL=query-autocompleter.js.map
@@ -0,0 +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,UAA6D,EAAE,EAC7C,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"}
@@ -0,0 +1,6 @@
1
+ import type { CompletionSource } from '@codemirror/autocomplete';
2
+ import type { CompleteOptions } from '../autocompleter';
3
+ export declare const createStageAutocompleter: ({ stageOperator, ...options }?: Pick<CompleteOptions, "serverVersion" | "fields"> & {
4
+ stageOperator?: string | undefined;
5
+ }) => CompletionSource;
6
+ //# sourceMappingURL=stage-autocompleter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-autocompleter.d.ts","sourceRoot":"","sources":["../../src/codemirror/stage-autocompleter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASxD,eAAO,MAAM,wBAAwB;;MAK5B,gBAqDR,CAAC"}