@documentdb-js/operator-registry 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 (79) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +92 -0
  3. package/dist/accumulators.d.ts +2 -0
  4. package/dist/accumulators.d.ts.map +1 -0
  5. package/dist/accumulators.js +177 -0
  6. package/dist/accumulators.js.map +1 -0
  7. package/dist/bsonConstructors.d.ts +2 -0
  8. package/dist/bsonConstructors.d.ts.map +1 -0
  9. package/dist/bsonConstructors.js +81 -0
  10. package/dist/bsonConstructors.js.map +1 -0
  11. package/dist/docLinks.d.ts +13 -0
  12. package/dist/docLinks.d.ts.map +1 -0
  13. package/dist/docLinks.js +76 -0
  14. package/dist/docLinks.js.map +1 -0
  15. package/dist/docLinks.test.d.ts +2 -0
  16. package/dist/docLinks.test.d.ts.map +1 -0
  17. package/dist/docLinks.test.js +67 -0
  18. package/dist/docLinks.test.js.map +1 -0
  19. package/dist/expressionOperators.d.ts +2 -0
  20. package/dist/expressionOperators.d.ts.map +1 -0
  21. package/dist/expressionOperators.js +1094 -0
  22. package/dist/expressionOperators.js.map +1 -0
  23. package/dist/getFilteredCompletions.d.ts +48 -0
  24. package/dist/getFilteredCompletions.d.ts.map +1 -0
  25. package/dist/getFilteredCompletions.js +90 -0
  26. package/dist/getFilteredCompletions.js.map +1 -0
  27. package/dist/getFilteredCompletions.test.d.ts +2 -0
  28. package/dist/getFilteredCompletions.test.d.ts.map +1 -0
  29. package/dist/getFilteredCompletions.test.js +202 -0
  30. package/dist/getFilteredCompletions.test.js.map +1 -0
  31. package/dist/index.d.ts +22 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +97 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/metaTags.d.ts +62 -0
  36. package/dist/metaTags.d.ts.map +1 -0
  37. package/dist/metaTags.js +116 -0
  38. package/dist/metaTags.js.map +1 -0
  39. package/dist/operatorReference.test.d.ts +2 -0
  40. package/dist/operatorReference.test.d.ts.map +1 -0
  41. package/dist/operatorReference.test.js +209 -0
  42. package/dist/operatorReference.test.js.map +1 -0
  43. package/dist/parseOperatorReference.d.ts +54 -0
  44. package/dist/parseOperatorReference.d.ts.map +1 -0
  45. package/dist/parseOperatorReference.js +103 -0
  46. package/dist/parseOperatorReference.js.map +1 -0
  47. package/dist/parseOperatorReference.test.d.ts +2 -0
  48. package/dist/parseOperatorReference.test.d.ts.map +1 -0
  49. package/dist/parseOperatorReference.test.js +151 -0
  50. package/dist/parseOperatorReference.test.js.map +1 -0
  51. package/dist/queryOperators.d.ts +2 -0
  52. package/dist/queryOperators.d.ts.map +1 -0
  53. package/dist/queryOperators.js +398 -0
  54. package/dist/queryOperators.js.map +1 -0
  55. package/dist/stages.d.ts +2 -0
  56. package/dist/stages.d.ts.map +1 -0
  57. package/dist/stages.js +265 -0
  58. package/dist/stages.js.map +1 -0
  59. package/dist/structuralInvariants.test.d.ts +2 -0
  60. package/dist/structuralInvariants.test.d.ts.map +1 -0
  61. package/dist/structuralInvariants.test.js +219 -0
  62. package/dist/structuralInvariants.test.js.map +1 -0
  63. package/dist/systemVariables.d.ts +2 -0
  64. package/dist/systemVariables.d.ts.map +1 -0
  65. package/dist/systemVariables.js +64 -0
  66. package/dist/systemVariables.js.map +1 -0
  67. package/dist/types.d.ts +139 -0
  68. package/dist/types.d.ts.map +1 -0
  69. package/dist/types.js +7 -0
  70. package/dist/types.js.map +1 -0
  71. package/dist/updateOperators.d.ts +2 -0
  72. package/dist/updateOperators.d.ts.map +1 -0
  73. package/dist/updateOperators.js +188 -0
  74. package/dist/updateOperators.js.map +1 -0
  75. package/dist/windowOperators.d.ts +2 -0
  76. package/dist/windowOperators.d.ts.map +1 -0
  77. package/dist/windowOperators.js +219 -0
  78. package/dist/windowOperators.js.map +1 -0
  79. package/package.json +25 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaTags.d.ts","sourceRoot":"","sources":["../src/metaTags.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAGH,eAAO,MAAM,UAAU,EAAG,OAAgB,CAAC;AAC3C,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AACjE,eAAO,MAAM,kBAAkB,EAAG,eAAwB,CAAC;AAC3D,eAAO,MAAM,kBAAkB,EAAG,eAAwB,CAAC;AAC3D,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AACjE,eAAO,MAAM,gBAAgB,EAAG,aAAsB,CAAC;AACvD,eAAO,MAAM,kBAAkB,EAAG,eAAwB,CAAC;AAC3D,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AACjE,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AACjE,eAAO,MAAM,eAAe,EAAG,YAAqB,CAAC;AAGrD,eAAO,MAAM,WAAW,EAAG,QAAiB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,EAAG,cAAuB,CAAC;AACzD,eAAO,MAAM,iBAAiB,EAAG,cAAuB,CAAC;AACzD,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAC;AAG7D,eAAO,MAAM,UAAU,EAAG,OAAgB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,EAAG,aAAsB,CAAC;AAGvD,eAAO,MAAM,eAAe,EAAG,YAAqB,CAAC;AACrD,eAAO,MAAM,eAAe,EAAG,YAAqB,CAAC;AACrD,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AACnD,eAAO,MAAM,oBAAoB,EAAG,iBAA0B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AACjE,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AACnD,eAAO,MAAM,gBAAgB,EAAG,aAAsB,CAAC;AACvD,eAAO,MAAM,aAAa,EAAG,UAAmB,CAAC;AACjD,eAAO,MAAM,gBAAgB,EAAG,aAAsB,CAAC;AACvD,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AACnD,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AACnD,eAAO,MAAM,kBAAkB,EAAG,eAAwB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,EAAG,gBAAyB,CAAC;AAC7D,eAAO,MAAM,iBAAiB,EAAG,cAAuB,CAAC;AACzD,eAAO,MAAM,iBAAiB,EAAG,cAAuB,CAAC;AACzD,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AACnD,eAAO,MAAM,kBAAkB,EAAG,eAAwB,CAAC;AAG3D,eAAO,MAAM,WAAW,EAAG,QAAiB,CAAC;AAG7C,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAGzC,eAAO,MAAM,aAAa,EAAG,UAAmB,CAAC;AAGjD,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,aAAa,4jBAsChB,CAAC;AAIX,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAkC,CAAC;AAEvF,mEAAmE;AACnE,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAAqD,CAAC;AAE9G,wEAAwE;AACxE,eAAO,MAAM,gCAAgC,EAAE,SAAS,MAAM,EAAgD,CAAC;AAE/G,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAAiC,CAAC;AAE1F,0CAA0C;AAC1C,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAAe,CAAC;AAEpE,kDAAkD;AAClD,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAc,CAAC;AAElE,mEAAmE;AACnE,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAA0D,CAAC"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.WINDOW_COMPLETION_META = exports.STAGE_COMPLETION_META = exports.UPDATE_COMPLETION_META = exports.EXPRESSION_COMPLETION_META = exports.GROUP_EXPRESSION_COMPLETION_META = exports.PROJECTION_COMPLETION_META = exports.FILTER_COMPLETION_META = exports.ALL_META_TAGS = exports.META_FIELD_IDENTIFIER = exports.META_VARIABLE = exports.META_BSON = exports.META_WINDOW = exports.META_EXPR_VARIABLE = exports.META_EXPR_MISC = exports.META_EXPR_LITERAL = exports.META_EXPR_BITWISE = exports.META_EXPR_TIMESTAMP = exports.META_EXPR_DATASIZE = exports.META_EXPR_TYPE = exports.META_EXPR_TRIG = exports.META_EXPR_STRING = exports.META_EXPR_SET = exports.META_EXPR_OBJECT = exports.META_EXPR_DATE = exports.META_EXPR_CONDITIONAL = exports.META_EXPR_COMPARISON = exports.META_EXPR_BOOL = exports.META_EXPR_ARRAY = exports.META_EXPR_ARITH = exports.META_ACCUMULATOR = exports.META_STAGE = exports.META_UPDATE_BITWISE = exports.META_UPDATE_ARRAY = exports.META_UPDATE_FIELD = exports.META_UPDATE = exports.META_QUERY_MISC = exports.META_QUERY_PROJECTION = exports.META_QUERY_GEOSPATIAL = exports.META_QUERY_BITWISE = exports.META_QUERY_ARRAY = exports.META_QUERY_EVALUATION = exports.META_QUERY_ELEMENT = exports.META_QUERY_LOGICAL = exports.META_QUERY_COMPARISON = exports.META_QUERY = void 0;
8
+ /**
9
+ * Meta tag constants for categorizing operators in the DocumentDB constants package.
10
+ *
11
+ * Tags use a hierarchical scheme where prefix matching is supported:
12
+ * filtering by 'query' matches 'query', 'query:comparison', 'query:logical', etc.
13
+ */
14
+ // -- Query operators --
15
+ exports.META_QUERY = 'query';
16
+ exports.META_QUERY_COMPARISON = 'query:comparison';
17
+ exports.META_QUERY_LOGICAL = 'query:logical';
18
+ exports.META_QUERY_ELEMENT = 'query:element';
19
+ exports.META_QUERY_EVALUATION = 'query:evaluation';
20
+ exports.META_QUERY_ARRAY = 'query:array';
21
+ exports.META_QUERY_BITWISE = 'query:bitwise';
22
+ exports.META_QUERY_GEOSPATIAL = 'query:geospatial';
23
+ exports.META_QUERY_PROJECTION = 'query:projection';
24
+ exports.META_QUERY_MISC = 'query:misc';
25
+ // -- Update operators --
26
+ exports.META_UPDATE = 'update';
27
+ exports.META_UPDATE_FIELD = 'update:field';
28
+ exports.META_UPDATE_ARRAY = 'update:array';
29
+ exports.META_UPDATE_BITWISE = 'update:bitwise';
30
+ // -- Aggregation pipeline --
31
+ exports.META_STAGE = 'stage';
32
+ exports.META_ACCUMULATOR = 'accumulator';
33
+ // -- Expression operators --
34
+ exports.META_EXPR_ARITH = 'expr:arith';
35
+ exports.META_EXPR_ARRAY = 'expr:array';
36
+ exports.META_EXPR_BOOL = 'expr:bool';
37
+ exports.META_EXPR_COMPARISON = 'expr:comparison';
38
+ exports.META_EXPR_CONDITIONAL = 'expr:conditional';
39
+ exports.META_EXPR_DATE = 'expr:date';
40
+ exports.META_EXPR_OBJECT = 'expr:object';
41
+ exports.META_EXPR_SET = 'expr:set';
42
+ exports.META_EXPR_STRING = 'expr:string';
43
+ exports.META_EXPR_TRIG = 'expr:trig';
44
+ exports.META_EXPR_TYPE = 'expr:type';
45
+ exports.META_EXPR_DATASIZE = 'expr:datasize';
46
+ exports.META_EXPR_TIMESTAMP = 'expr:timestamp';
47
+ exports.META_EXPR_BITWISE = 'expr:bitwise';
48
+ exports.META_EXPR_LITERAL = 'expr:literal';
49
+ exports.META_EXPR_MISC = 'expr:misc';
50
+ exports.META_EXPR_VARIABLE = 'expr:variable';
51
+ // -- Window operators --
52
+ exports.META_WINDOW = 'window';
53
+ // -- BSON constructors --
54
+ exports.META_BSON = 'bson';
55
+ // -- System variables --
56
+ exports.META_VARIABLE = 'variable';
57
+ // -- Schema-injected field names (not static — provided at runtime) --
58
+ exports.META_FIELD_IDENTIFIER = 'field:identifier';
59
+ /**
60
+ * All known meta tag values for validation purposes.
61
+ */
62
+ exports.ALL_META_TAGS = [
63
+ exports.META_QUERY,
64
+ exports.META_QUERY_COMPARISON,
65
+ exports.META_QUERY_LOGICAL,
66
+ exports.META_QUERY_ELEMENT,
67
+ exports.META_QUERY_EVALUATION,
68
+ exports.META_QUERY_ARRAY,
69
+ exports.META_QUERY_BITWISE,
70
+ exports.META_QUERY_GEOSPATIAL,
71
+ exports.META_QUERY_PROJECTION,
72
+ exports.META_QUERY_MISC,
73
+ exports.META_UPDATE,
74
+ exports.META_UPDATE_FIELD,
75
+ exports.META_UPDATE_ARRAY,
76
+ exports.META_UPDATE_BITWISE,
77
+ exports.META_STAGE,
78
+ exports.META_ACCUMULATOR,
79
+ exports.META_EXPR_ARITH,
80
+ exports.META_EXPR_ARRAY,
81
+ exports.META_EXPR_BOOL,
82
+ exports.META_EXPR_COMPARISON,
83
+ exports.META_EXPR_CONDITIONAL,
84
+ exports.META_EXPR_DATE,
85
+ exports.META_EXPR_OBJECT,
86
+ exports.META_EXPR_SET,
87
+ exports.META_EXPR_STRING,
88
+ exports.META_EXPR_TRIG,
89
+ exports.META_EXPR_TYPE,
90
+ exports.META_EXPR_DATASIZE,
91
+ exports.META_EXPR_TIMESTAMP,
92
+ exports.META_EXPR_BITWISE,
93
+ exports.META_EXPR_LITERAL,
94
+ exports.META_EXPR_MISC,
95
+ exports.META_EXPR_VARIABLE,
96
+ exports.META_WINDOW,
97
+ exports.META_BSON,
98
+ exports.META_VARIABLE,
99
+ exports.META_FIELD_IDENTIFIER,
100
+ ];
101
+ // -- Completion context presets --
102
+ /** Query filter contexts: find filter bar, $match stage body */
103
+ exports.FILTER_COMPLETION_META = ['query', 'bson', 'variable'];
104
+ /** Projection/sort contexts: field names + projection operators */
105
+ exports.PROJECTION_COMPLETION_META = ['field:identifier', 'query:projection', 'bson'];
106
+ /** $group/$project/$addFields stage body: expressions + accumulators */
107
+ exports.GROUP_EXPRESSION_COMPLETION_META = ['expr', 'accumulator', 'bson', 'variable'];
108
+ /** Other stage bodies: expressions only (no accumulators) */
109
+ exports.EXPRESSION_COMPLETION_META = ['expr', 'bson', 'variable'];
110
+ /** Update operations: update operators */
111
+ exports.UPDATE_COMPLETION_META = ['update'];
112
+ /** Top-level aggregation pipeline: stage names */
113
+ exports.STAGE_COMPLETION_META = ['stage'];
114
+ /** Window fields: window operators + accumulators + expressions */
115
+ exports.WINDOW_COMPLETION_META = ['window', 'accumulator', 'expr', 'bson', 'variable'];
116
+ //# sourceMappingURL=metaTags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaTags.js","sourceRoot":"","sources":["../src/metaTags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=operatorReference.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operatorReference.test.d.ts","sourceRoot":"","sources":["../src/operatorReference.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ /**
41
+ * Dump-vs-implementation verification test.
42
+ *
43
+ * Ensures the TypeScript operator implementation always matches the
44
+ * resource dump (scraped/operator-reference.md). This test is the
45
+ * enforcing contract between "what does DocumentDB support?" (the dump)
46
+ * and "what does our code provide?" (the implementation).
47
+ *
48
+ * See §2.3.3 of docs/plan/03-operator-registry.md for design rationale.
49
+ */
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ const index_1 = require("./index");
53
+ const parseOperatorReference_1 = require("./parseOperatorReference");
54
+ const dumpPath = path.join(__dirname, '..', 'resources', 'scraped', 'operator-reference.md');
55
+ const dumpContent = fs.readFileSync(dumpPath, 'utf-8');
56
+ const parsed = (0, parseOperatorReference_1.parseOperatorReference)(dumpContent);
57
+ const referenceOperators = parsed.operators;
58
+ const notListedOperators = parsed.notListed;
59
+ const implementedOperators = (0, index_1.getAllCompletions)();
60
+ /**
61
+ * Category-to-meta mapping. Maps dump category names to the meta tags
62
+ * used in the implementation. Some dump categories map to the same meta
63
+ * tag (e.g., both accumulator categories map to 'accumulator').
64
+ */
65
+ const CATEGORY_TO_META = {
66
+ 'Comparison Query Operators': 'query:comparison',
67
+ 'Logical Query Operators': 'query:logical',
68
+ 'Element Query Operators': 'query:element',
69
+ 'Evaluation Query Operators': 'query:evaluation',
70
+ 'Geospatial Operators': 'query:geospatial',
71
+ 'Array Query Operators': 'query:array',
72
+ 'Bitwise Query Operators': 'query:bitwise',
73
+ 'Projection Operators': 'query:projection',
74
+ 'Miscellaneous Query Operators': 'query:misc',
75
+ 'Field Update Operators': 'update:field',
76
+ 'Array Update Operators': 'update:array',
77
+ 'Bitwise Update Operators': 'update:bitwise',
78
+ 'Arithmetic Expression Operators': 'expr:arith',
79
+ 'Array Expression Operators': 'expr:array',
80
+ 'Bitwise Operators': 'expr:bitwise',
81
+ 'Boolean Expression Operators': 'expr:bool',
82
+ 'Comparison Expression Operators': 'expr:comparison',
83
+ 'Data Size Operators': 'expr:datasize',
84
+ 'Date Expression Operators': 'expr:date',
85
+ 'Literal Expression Operator': 'expr:literal',
86
+ 'Miscellaneous Operators': 'expr:misc',
87
+ 'Object Expression Operators': 'expr:object',
88
+ 'Set Expression Operators': 'expr:set',
89
+ 'String Expression Operators': 'expr:string',
90
+ 'Timestamp Expression Operators': 'expr:timestamp',
91
+ 'Trigonometry Expression Operators': 'expr:trig',
92
+ 'Type Expression Operators': 'expr:type',
93
+ 'Accumulators ($group, $bucket, $bucketAuto, $setWindowFields)': 'accumulator',
94
+ 'Accumulators (in Other Stages)': 'accumulator',
95
+ 'Variable Expression Operators': 'expr:variable',
96
+ 'Window Operators': 'window',
97
+ 'Conditional Expression Operators': 'expr:conditional',
98
+ 'Aggregation Pipeline Stages': 'stage',
99
+ 'Variables in Aggregation Expressions': 'variable',
100
+ };
101
+ describe('operator reference verification', () => {
102
+ test('dump file exists and is parseable', () => {
103
+ expect(dumpContent.length).toBeGreaterThan(1000);
104
+ expect(referenceOperators.length).toBeGreaterThan(250);
105
+ });
106
+ test('every listed operator in the dump has an implementation entry', () => {
107
+ const implementedValues = new Set(implementedOperators.map((op) => op.value));
108
+ const missing = [];
109
+ for (const ref of referenceOperators) {
110
+ // Some operators appear in multiple dump categories (e.g., $objectToArray
111
+ // in both "Array Expression" and "Object Expression"). The implementation
112
+ // only needs one entry per (value, meta) pair — check by value.
113
+ if (!implementedValues.has(ref.operator)) {
114
+ missing.push(`${ref.operator} (${ref.category})`);
115
+ }
116
+ }
117
+ expect(missing).toEqual([]);
118
+ });
119
+ test('no extra operators in implementation beyond the dump (excluding BSON/variables)', () => {
120
+ // Build a set of all operator values from the dump
121
+ const dumpValues = new Set(referenceOperators.map((r) => r.operator));
122
+ // Filter implementation entries: exclude BSON constructors and system variables
123
+ // (these are hand-authored, not from the compatibility page dump)
124
+ const extras = implementedOperators.filter((op) => !op.meta.startsWith('bson') && !op.meta.startsWith('variable') && !dumpValues.has(op.value));
125
+ expect(extras.map((e) => `${e.value} (${e.meta})`)).toEqual([]);
126
+ });
127
+ test('not-listed operators are NOT in the implementation', () => {
128
+ const leaked = [];
129
+ for (const nl of notListedOperators) {
130
+ // Check the exact meta category from the dump
131
+ const expectedMeta = CATEGORY_TO_META[nl.category];
132
+ if (!expectedMeta) {
133
+ continue;
134
+ }
135
+ const found = implementedOperators.find((op) => op.value === nl.operator && op.meta === expectedMeta);
136
+ if (found) {
137
+ leaked.push(`${nl.operator} (${nl.category}) — ${nl.reason}`);
138
+ }
139
+ }
140
+ expect(leaked).toEqual([]);
141
+ });
142
+ test('all dump categories have a known meta mapping', () => {
143
+ const categories = new Set(referenceOperators.map((r) => r.category));
144
+ const unmapped = [...categories].filter((c) => !CATEGORY_TO_META[c]);
145
+ expect(unmapped).toEqual([]);
146
+ });
147
+ test('reference parser found the expected number of not-listed operators', () => {
148
+ // The plan lists 16 not-listed operators (§2.1)
149
+ expect(notListedOperators.length).toBeGreaterThanOrEqual(14);
150
+ expect(notListedOperators.length).toBeLessThanOrEqual(20);
151
+ });
152
+ });
153
+ // ---------------------------------------------------------------------------
154
+ // Override verification
155
+ //
156
+ // The generator (scripts/generate-from-reference.ts) merges the scraped dump
157
+ // with manual overrides. These tests verify overrides are correctly applied —
158
+ // catching scenarios where:
159
+ // - Someone adds an override but forgets to run `npm run generate`
160
+ // - The override file is accidentally truncated
161
+ // - An override targets a non-existent operator
162
+ // ---------------------------------------------------------------------------
163
+ const overridesPath = path.join(__dirname, '..', 'resources', 'overrides', 'operator-overrides.md');
164
+ const overridesContent = fs.readFileSync(overridesPath, 'utf-8');
165
+ const parsedOverrides = (0, parseOperatorReference_1.parseOperatorReference)(overridesContent);
166
+ const overrideOperators = parsedOverrides.operators;
167
+ describe('override verification', () => {
168
+ test('overrides file exists and has entries', () => {
169
+ expect(overridesContent.length).toBeGreaterThan(100);
170
+ expect(overrideOperators.length).toBeGreaterThan(0);
171
+ });
172
+ test('override count is within expected range (detect truncation)', () => {
173
+ // Currently 56 overrides. Allow some flex for additions/removals,
174
+ // but catch catastrophic truncation (e.g., file emptied to <10).
175
+ expect(overrideOperators.length).toBeGreaterThanOrEqual(40);
176
+ expect(overrideOperators.length).toBeLessThanOrEqual(80);
177
+ });
178
+ test('every override targets an operator that exists in the dump', () => {
179
+ const dumpKeys = new Set(referenceOperators.map((r) => `${r.operator}|${r.category}`));
180
+ const orphans = [];
181
+ for (const ov of overrideOperators) {
182
+ if (!dumpKeys.has(`${ov.operator}|${ov.category}`)) {
183
+ orphans.push(`${ov.operator} (${ov.category})`);
184
+ }
185
+ }
186
+ expect(orphans).toEqual([]);
187
+ });
188
+ test('every override with a description was applied (not silently ignored)', () => {
189
+ const unapplied = [];
190
+ for (const ov of overrideOperators) {
191
+ if (!ov.description) {
192
+ continue;
193
+ }
194
+ const expectedMeta = CATEGORY_TO_META[ov.category];
195
+ if (!expectedMeta) {
196
+ continue;
197
+ }
198
+ const impl = implementedOperators.find((op) => op.value === ov.operator && op.meta === expectedMeta);
199
+ if (!impl) {
200
+ unapplied.push(`${ov.operator} (${ov.category}): no implementation entry found`);
201
+ }
202
+ else if (impl.description !== ov.description) {
203
+ unapplied.push(`${ov.operator} (${ov.category}): override="${ov.description}", ` + `impl="${impl.description}"`);
204
+ }
205
+ }
206
+ expect(unapplied).toEqual([]);
207
+ });
208
+ });
209
+ //# sourceMappingURL=operatorReference.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operatorReference.test.js","sourceRoot":"","sources":["../src/operatorReference.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Parses the scraped/operator-reference.md dump file into structured data
3
+ * for use in the operatorReference verification test.
4
+ *
5
+ * The dump format uses structured headings:
6
+ * ## Category Name — category section
7
+ * ### $operatorName — operator heading
8
+ * - **Description:** text — operator description
9
+ * - **Doc Link:** url — documentation URL
10
+ *
11
+ * ## Not Listed — excluded operators section
12
+ * - **$operator** (Category) — Reason
13
+ */
14
+ /**
15
+ * Represents a single operator entry parsed from the reference dump.
16
+ */
17
+ export interface ReferenceOperator {
18
+ /** Operator name, e.g. "$eq", "$$NOW" */
19
+ readonly operator: string;
20
+ /** Category from the dump, e.g. "Comparison Query Operators" */
21
+ readonly category: string;
22
+ /** Description from the dump (may be empty) */
23
+ readonly description: string;
24
+ /** Documentation URL from the dump (may be empty) */
25
+ readonly docLink: string;
26
+ }
27
+ /**
28
+ * Represents an operator excluded from the package scope.
29
+ */
30
+ export interface NotListedOperator {
31
+ /** Operator name, e.g. "$where", "$meta" */
32
+ readonly operator: string;
33
+ /** Category from the dump */
34
+ readonly category: string;
35
+ /** Reason for exclusion */
36
+ readonly reason: string;
37
+ }
38
+ /**
39
+ * Complete parsed result from the reference dump.
40
+ */
41
+ export interface ParsedReference {
42
+ /** All listed (in-scope) operators */
43
+ readonly operators: readonly ReferenceOperator[];
44
+ /** All not-listed (excluded) operators */
45
+ readonly notListed: readonly NotListedOperator[];
46
+ }
47
+ /**
48
+ * Parses the scraped/operator-reference.md content into structured data.
49
+ *
50
+ * @param content - the full Markdown content of the dump file
51
+ * @returns parsed reference data
52
+ */
53
+ export declare function parseOperatorReference(content: string): ParsedReference;
54
+ //# sourceMappingURL=parseOperatorReference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOperatorReference.d.ts","sourceRoot":"","sources":["../src/parseOperatorReference.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACpD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAkGvE"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.parseOperatorReference = parseOperatorReference;
8
+ /**
9
+ * Parses the scraped/operator-reference.md content into structured data.
10
+ *
11
+ * @param content - the full Markdown content of the dump file
12
+ * @returns parsed reference data
13
+ */
14
+ function parseOperatorReference(content) {
15
+ const lines = content.split('\n');
16
+ const operators = [];
17
+ const notListed = [];
18
+ let currentCategory = '';
19
+ let inNotListed = false;
20
+ let inSummary = false;
21
+ // Temp state for building current operator
22
+ let currentOperator = '';
23
+ let currentDescription = '';
24
+ let currentDocLink = '';
25
+ function flushOperator() {
26
+ if (currentOperator && currentCategory && !inNotListed && !inSummary) {
27
+ operators.push({
28
+ operator: currentOperator,
29
+ category: currentCategory,
30
+ description: currentDescription,
31
+ docLink: currentDocLink,
32
+ });
33
+ }
34
+ currentOperator = '';
35
+ currentDescription = '';
36
+ currentDocLink = '';
37
+ }
38
+ for (const line of lines) {
39
+ const trimmed = line.trim();
40
+ // Detect ## headings (category sections)
41
+ const h2Match = trimmed.match(/^## (.+)$/);
42
+ if (h2Match) {
43
+ flushOperator();
44
+ const heading = h2Match[1].trim();
45
+ if (heading === 'Summary') {
46
+ inSummary = true;
47
+ inNotListed = false;
48
+ currentCategory = '';
49
+ }
50
+ else if (heading === 'Not Listed') {
51
+ inNotListed = true;
52
+ inSummary = false;
53
+ currentCategory = '';
54
+ }
55
+ else {
56
+ currentCategory = heading;
57
+ inNotListed = false;
58
+ inSummary = false;
59
+ }
60
+ continue;
61
+ }
62
+ // Skip summary section
63
+ if (inSummary) {
64
+ continue;
65
+ }
66
+ // Parse "Not Listed" entries: - **$operator** (Category) — Reason
67
+ if (inNotListed) {
68
+ const notListedMatch = trimmed.match(/^- \*\*(.+?)\*\* \((.+?)\) — (.+)$/);
69
+ if (notListedMatch) {
70
+ notListed.push({
71
+ operator: notListedMatch[1],
72
+ category: notListedMatch[2],
73
+ reason: notListedMatch[3],
74
+ });
75
+ }
76
+ continue;
77
+ }
78
+ // Detect ### headings (operator entries)
79
+ const h3Match = trimmed.match(/^### (.+)$/);
80
+ if (h3Match) {
81
+ flushOperator();
82
+ currentOperator = h3Match[1].trim();
83
+ continue;
84
+ }
85
+ // Parse description: - **Description:** text
86
+ const descMatch = trimmed.match(/^- \*\*Description:\*\* (.+)$/);
87
+ if (descMatch && currentOperator) {
88
+ currentDescription = descMatch[1].trim();
89
+ continue;
90
+ }
91
+ // Parse doc link: - **Doc Link:** url ('none' means no page at expected location)
92
+ const linkMatch = trimmed.match(/^- \*\*Doc Link:\*\* (.+)$/);
93
+ if (linkMatch && currentOperator) {
94
+ const rawLink = linkMatch[1].trim();
95
+ currentDocLink = rawLink === 'none' ? '' : rawLink;
96
+ continue;
97
+ }
98
+ }
99
+ // Flush last operator
100
+ flushOperator();
101
+ return { operators, notListed };
102
+ }
103
+ //# sourceMappingURL=parseOperatorReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOperatorReference.js","sourceRoot":"","sources":["../src/parseOperatorReference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parseOperatorReference.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOperatorReference.test.d.ts","sourceRoot":"","sources":["../src/parseOperatorReference.test.ts"],"names":[],"mappings":""}