@mongodb-js/mql-typescript 0.2.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 (48) hide show
  1. package/LICENSE +201 -0
  2. package/bin/runner.js +3 -0
  3. package/dist/.esm-wrapper.mjs +5 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +50 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/driverSchema/docs-crawler.d.ts +13 -0
  9. package/dist/driverSchema/docs-crawler.d.ts.map +1 -0
  10. package/dist/driverSchema/docs-crawler.js +151 -0
  11. package/dist/driverSchema/docs-crawler.js.map +1 -0
  12. package/dist/driverSchema/driver-schema-generator.d.ts +8 -0
  13. package/dist/driverSchema/driver-schema-generator.d.ts.map +1 -0
  14. package/dist/driverSchema/driver-schema-generator.js +98 -0
  15. package/dist/driverSchema/driver-schema-generator.js.map +1 -0
  16. package/dist/driverSchema/static-schemas.d.ts +9 -0
  17. package/dist/driverSchema/static-schemas.d.ts.map +1 -0
  18. package/dist/driverSchema/static-schemas.js +1633 -0
  19. package/dist/driverSchema/static-schemas.js.map +1 -0
  20. package/dist/generator.d.ts +20 -0
  21. package/dist/generator.d.ts.map +1 -0
  22. package/dist/generator.js +288 -0
  23. package/dist/generator.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +8 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/metaschema.d.ts +222 -0
  29. package/dist/metaschema.d.ts.map +1 -0
  30. package/dist/metaschema.js +203 -0
  31. package/dist/metaschema.js.map +1 -0
  32. package/dist/schema-generator.d.ts +15 -0
  33. package/dist/schema-generator.d.ts.map +1 -0
  34. package/dist/schema-generator.js +486 -0
  35. package/dist/schema-generator.js.map +1 -0
  36. package/dist/testGenerator/test-generator.d.ts +11 -0
  37. package/dist/testGenerator/test-generator.d.ts.map +1 -0
  38. package/dist/testGenerator/test-generator.js +211 -0
  39. package/dist/testGenerator/test-generator.js.map +1 -0
  40. package/dist/testGenerator/unsupported-aggregations.d.ts +11 -0
  41. package/dist/testGenerator/unsupported-aggregations.d.ts.map +1 -0
  42. package/dist/testGenerator/unsupported-aggregations.js +254 -0
  43. package/dist/testGenerator/unsupported-aggregations.js.map +1 -0
  44. package/dist/utils.d.ts +9 -0
  45. package/dist/utils.d.ts.map +1 -0
  46. package/dist/utils.js +28 -0
  47. package/dist/utils.js.map +1 -0
  48. package/package.json +89 -0
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.TestGenerator = void 0;
40
+ const path_1 = __importDefault(require("path"));
41
+ const generator_1 = require("../generator");
42
+ const fs = __importStar(require("fs/promises"));
43
+ const metaschema_1 = require("../metaschema");
44
+ const utils_1 = require("../utils");
45
+ const unsupported_aggregations_1 = require("./unsupported-aggregations");
46
+ const bson = __importStar(require("bson"));
47
+ class TestGenerator extends generator_1.GeneratorBase {
48
+ schemaBsonTypeToTS(type) {
49
+ switch (type) {
50
+ case 'Binary':
51
+ return 'bson.Binary';
52
+ case 'Boolean':
53
+ return 'boolean';
54
+ case 'Code':
55
+ return 'bson.Code';
56
+ case 'CodeWScope':
57
+ return 'bson.Code';
58
+ case 'Date':
59
+ return 'Date';
60
+ case 'Decimal128':
61
+ return 'bson.Decimal128';
62
+ case 'Double':
63
+ return 'bson.Double | number';
64
+ case 'Int32':
65
+ return 'bson.Int32 | number';
66
+ case 'Long':
67
+ case 'Int64':
68
+ return 'bson.Long';
69
+ case 'MaxKey':
70
+ return 'bson.MaxKey';
71
+ case 'MinKey':
72
+ return 'bson.MinKey';
73
+ case 'Null':
74
+ return 'null';
75
+ case 'ObjectId':
76
+ return 'bson.ObjectId';
77
+ case 'BSONRegExp':
78
+ return 'bson.BSONRegExp';
79
+ case 'String':
80
+ return 'string';
81
+ case 'BSONSymbol':
82
+ return 'bson.BSONSymbol';
83
+ case 'Timestamp':
84
+ return `bson.Timestamp`;
85
+ case 'Undefined':
86
+ return `undefined`;
87
+ case 'Number':
88
+ return 'number';
89
+ default:
90
+ throw new Error(`Unknown BSON type: ${type}`);
91
+ }
92
+ }
93
+ simplifiedTypesToTS(types) {
94
+ const mappedTypes = [];
95
+ for (const type of types) {
96
+ if (type.bsonType === 'Document' && 'fields' in type) {
97
+ mappedTypes.push(this.simplifiedSchemaToTS(type.fields));
98
+ }
99
+ else if (type.bsonType === 'Array' && 'types' in type) {
100
+ mappedTypes.push(`Array<${this.simplifiedTypesToTS(type.types)}>`);
101
+ }
102
+ else {
103
+ mappedTypes.push(this.schemaBsonTypeToTS(type.bsonType));
104
+ }
105
+ }
106
+ return mappedTypes.join(' | ');
107
+ }
108
+ simplifiedSchemaToTS(schema) {
109
+ let result = '{\n';
110
+ for (const [key, value] of Object.entries(schema)) {
111
+ result += `'${key}': ${this.simplifiedTypesToTS(value.types)};\n`;
112
+ }
113
+ result += '}\n';
114
+ return result;
115
+ }
116
+ stageToTS(stage) {
117
+ switch (typeof stage) {
118
+ case 'object': {
119
+ if (stage === null) {
120
+ return 'null';
121
+ }
122
+ if (Array.isArray(stage)) {
123
+ return `[${stage.map((s) => this.stageToTS(s)).join(', ')}]`;
124
+ }
125
+ if (stage instanceof bson.Binary) {
126
+ return `bson.Binary.createFromBase64('${stage.toString('base64')}', ${stage.sub_type})`;
127
+ }
128
+ if (stage instanceof bson.ObjectId) {
129
+ return `bson.ObjectId.createFromHexString('${stage.toHexString()}')`;
130
+ }
131
+ if (stage instanceof bson.Long) {
132
+ return `new bson.Long('${stage.toString()}')`;
133
+ }
134
+ if (stage instanceof Date) {
135
+ return `new Date('${stage.toISOString()}')`;
136
+ }
137
+ if (stage instanceof bson.BSONRegExp) {
138
+ return `new bson.BSONRegExp('${stage.pattern}', '${stage.options}')`;
139
+ }
140
+ if ('$code' in stage && typeof stage.$code === 'string') {
141
+ return JSON.stringify((0, utils_1.removeNewlines)(stage.$code));
142
+ }
143
+ let result = '{';
144
+ for (const [key, value] of Object.entries(stage)) {
145
+ result += `${JSON.stringify(key)}: ${this.stageToTS(value)},`;
146
+ }
147
+ result += '}';
148
+ return result;
149
+ }
150
+ case 'undefined':
151
+ return 'undefined';
152
+ default:
153
+ return JSON.stringify(stage);
154
+ }
155
+ }
156
+ emitTestBody(category, operator, test) {
157
+ if (!test.pipeline) {
158
+ this.emit(`// TODO: No pipeline found for ${operator}.${test.name}\n`);
159
+ return;
160
+ }
161
+ if (!test.schema || typeof test.schema === 'string') {
162
+ this.emit(`// TODO: no schema found for ${operator}.${test.name}${test.schema ? `: ${test.schema}` : ''}\n`);
163
+ return;
164
+ }
165
+ const collectionName = Object.keys(test.schema)[0];
166
+ const schema = test.schema[collectionName];
167
+ this.emit(`type ${collectionName} = ${this.simplifiedSchemaToTS(schema)}\n`);
168
+ this.emit(`const aggregation: schema.Pipeline<${collectionName}> = [\n`);
169
+ for (let i = 0; i < test.pipeline.length; i++) {
170
+ const stage = test.pipeline[i];
171
+ const unsupportedStage = unsupported_aggregations_1.unsupportedAggregations[category]?.[operator]?.[test.name];
172
+ const isUnsupportedStage = unsupportedStage && i >= unsupportedStage.stage;
173
+ if (isUnsupportedStage) {
174
+ this.emitComment(`This stage is unsupported by the static type system, so we're casting it to 'any' (${unsupportedStage.comment ?? 'it may involve a projected field'}).`);
175
+ }
176
+ this.emit(this.stageToTS(stage));
177
+ if (isUnsupportedStage) {
178
+ this.emit(' as any');
179
+ }
180
+ this.emit(',\n');
181
+ }
182
+ this.emit('];\n');
183
+ }
184
+ async generateImpl(yamlFiles) {
185
+ for await (const file of yamlFiles) {
186
+ const namespace = `${(0, utils_1.capitalize)(file.category)}Operators`;
187
+ const basePath = path_1.default.resolve(__dirname, '..', '..', 'tests', file.category);
188
+ await fs.mkdir(basePath, { recursive: true });
189
+ for await (const operator of file.operators()) {
190
+ const parsed = metaschema_1.Operator.parse(operator.yaml);
191
+ const operatorName = parsed.name.replace(/^\$/, '');
192
+ const filePath = path_1.default.join(basePath, `${operatorName}.spec.ts`);
193
+ await this.emitToFile(filePath);
194
+ this.emit('/* eslint-disable @typescript-eslint/no-unused-vars */\n');
195
+ this.emit('/* eslint-disable filename-rules/match */\n');
196
+ this.emit('/* eslint-disable @typescript-eslint/consistent-type-imports */\n');
197
+ this.emit("import type * as schema from '../../out/schema';\n");
198
+ this.emit("import * as bson from 'bson';\n\n");
199
+ let i = 0;
200
+ for (const test of parsed.tests ?? []) {
201
+ this.emitComment(test.name ?? `Test ${namespace}.${parsed.name}`, test.link);
202
+ this.emit(`function test${i++}() {\n`);
203
+ this.emitTestBody(file.category, operatorName, test);
204
+ this.emit('}\n\n');
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+ exports.TestGenerator = TestGenerator;
211
+ //# sourceMappingURL=test-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-generator.js","sourceRoot":"","sources":["../../src/testGenerator/test-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const unsupportedAggregations: {
2
+ [category: string]: {
3
+ [operator: string]: {
4
+ [test: string]: {
5
+ stage: number;
6
+ comment?: string;
7
+ };
8
+ };
9
+ };
10
+ };
11
+ //# sourceMappingURL=unsupported-aggregations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-aggregations.d.ts","sourceRoot":"","sources":["../../src/testGenerator/unsupported-aggregations.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,EAAE;IACpC,CAAC,QAAQ,EAAE,MAAM,GAAG;QAClB,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,CAAC,IAAI,EAAE,MAAM,GAAG;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SACrD,CAAC;KACH,CAAC;CAmQH,CAAC"}
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unsupportedAggregations = void 0;
4
+ const nestedFieldsExplanation = 'this test accesses nested fields, which is not currently supported';
5
+ exports.unsupportedAggregations = {
6
+ accumulator: {
7
+ derivative: {
8
+ Example: { stage: 1 },
9
+ },
10
+ },
11
+ expression: {
12
+ arrayToObject: {
13
+ ['$objectToArray and $arrayToObject Example']: { stage: 1 },
14
+ },
15
+ convert: {
16
+ Example: { stage: 1 },
17
+ },
18
+ dateDiff: {
19
+ 'Elapsed Time': { stage: 1 },
20
+ },
21
+ dateSubtract: {
22
+ 'Filter by Relative Dates': { stage: 1 },
23
+ },
24
+ let: {
25
+ Example: {
26
+ stage: 0,
27
+ comment: '$multiply references a variable that is not available statically',
28
+ },
29
+ },
30
+ map: {
31
+ 'Add to Each Element of an Array': {
32
+ stage: 0,
33
+ comment: '$map references the variable names defined in the `as` field, which is not available statically',
34
+ },
35
+ 'Truncate Each Array Element': {
36
+ stage: 0,
37
+ comment: '$map references the variable names defined in the `as` field, which is not available statically',
38
+ },
39
+ 'Convert Celsius Temperatures to Fahrenheit': {
40
+ stage: 0,
41
+ comment: '$map references the variable names defined in the `as` field, which is not available statically',
42
+ },
43
+ },
44
+ objectToArray: {
45
+ '$objectToArray to Sum Nested Fields': { stage: 1 },
46
+ },
47
+ pow: {
48
+ Example: {
49
+ stage: 0,
50
+ comment: nestedFieldsExplanation,
51
+ },
52
+ },
53
+ reduce: {
54
+ Multiplication: { stage: 1 },
55
+ 'Computing a Multiple Reductions': {
56
+ stage: 0,
57
+ comment: nestedFieldsExplanation,
58
+ },
59
+ },
60
+ regexFindAll: {
61
+ 'Use Captured Groupings to Parse User Name': { stage: 1 },
62
+ },
63
+ setIntersection: {
64
+ 'Retrieve Documents for Roles Granted to the Current User': {
65
+ stage: 0,
66
+ comment: nestedFieldsExplanation,
67
+ },
68
+ },
69
+ split: {
70
+ Example: { stage: 1 },
71
+ },
72
+ sqrt: {
73
+ Example: { stage: 0, comment: nestedFieldsExplanation },
74
+ },
75
+ stdDevPop: {
76
+ 'Use in $project Stage': { stage: 0, comment: nestedFieldsExplanation },
77
+ },
78
+ toBool: {
79
+ Example: { stage: 1 },
80
+ },
81
+ zip: {
82
+ 'Filtering and Preserving Indexes': {
83
+ stage: 0,
84
+ comment: nestedFieldsExplanation,
85
+ },
86
+ },
87
+ },
88
+ query: {
89
+ eq: {
90
+ 'Field in Embedded Document Equals a Value': {
91
+ stage: 0,
92
+ comment: nestedFieldsExplanation,
93
+ },
94
+ },
95
+ type: {
96
+ 'Querying by MinKey and MaxKey': {
97
+ stage: 0,
98
+ comment: nestedFieldsExplanation,
99
+ },
100
+ },
101
+ },
102
+ search: {
103
+ embeddedDocument: {
104
+ 'Query for Matching Embedded Documents Only': {
105
+ stage: 2,
106
+ comment: nestedFieldsExplanation,
107
+ },
108
+ Basic: {
109
+ stage: 0,
110
+ comment: nestedFieldsExplanation,
111
+ },
112
+ Facet: {
113
+ stage: 0,
114
+ comment: nestedFieldsExplanation,
115
+ },
116
+ ['Query and Sort']: {
117
+ stage: 0,
118
+ comment: nestedFieldsExplanation,
119
+ },
120
+ },
121
+ facet: {
122
+ Facet: {
123
+ stage: 2,
124
+ comment: 'this uses $$SEARCH_META, which is a synthetic field not available statically',
125
+ },
126
+ },
127
+ geoShape: {
128
+ Disjoint: {
129
+ stage: 0,
130
+ comment: nestedFieldsExplanation,
131
+ },
132
+ Intersect: {
133
+ stage: 0,
134
+ comment: nestedFieldsExplanation,
135
+ },
136
+ Within: {
137
+ stage: 0,
138
+ comment: nestedFieldsExplanation,
139
+ },
140
+ },
141
+ exists: {
142
+ Embedded: {
143
+ stage: 0,
144
+ comment: nestedFieldsExplanation,
145
+ },
146
+ },
147
+ geoWithin: {
148
+ box: {
149
+ stage: 0,
150
+ comment: nestedFieldsExplanation,
151
+ },
152
+ circle: {
153
+ stage: 0,
154
+ comment: nestedFieldsExplanation,
155
+ },
156
+ geometry: {
157
+ stage: 0,
158
+ comment: nestedFieldsExplanation,
159
+ },
160
+ },
161
+ near: {
162
+ ['GeoJSON Point']: {
163
+ stage: 0,
164
+ comment: nestedFieldsExplanation,
165
+ },
166
+ Compound: {
167
+ stage: 0,
168
+ comment: nestedFieldsExplanation,
169
+ },
170
+ },
171
+ },
172
+ stage: {
173
+ addFields: {
174
+ 'Using Two $addFields Stages': {
175
+ stage: 1,
176
+ },
177
+ },
178
+ bucket: {
179
+ 'Bucket by Year and Filter by Bucket Results': {
180
+ stage: 1,
181
+ comment: 'the output field of the $bucket stage generates new fields that are not available statically',
182
+ },
183
+ },
184
+ currentOp: {
185
+ 'Inactive Sessions': {
186
+ stage: 1,
187
+ comment: '$currentOp emits new fields that are not available statically',
188
+ },
189
+ 'Sampled Queries': {
190
+ stage: 1,
191
+ comment: '$currentOp emits new fields that are not available statically',
192
+ },
193
+ },
194
+ group: {
195
+ 'Group by Item Having': {
196
+ stage: 1,
197
+ },
198
+ 'Group Documents by author': {
199
+ stage: 1,
200
+ },
201
+ },
202
+ planCacheStats: {
203
+ 'Find Cache Entry Details for a Query Hash': {
204
+ stage: 1,
205
+ comment: '$planCacheStats emits new fields that are not available statically',
206
+ },
207
+ },
208
+ replaceRoot: {
209
+ 'with a Document Nested in an Array': {
210
+ stage: 1,
211
+ comment: nestedFieldsExplanation,
212
+ },
213
+ },
214
+ replaceWith: {
215
+ 'a Document Nested in an Array': {
216
+ stage: 1,
217
+ comment: nestedFieldsExplanation,
218
+ },
219
+ },
220
+ search: {
221
+ Example: {
222
+ stage: 3,
223
+ comment: '$search emits new fields that are not available statically, such as $$SEARCH_META',
224
+ },
225
+ 'Number Search and Sort': {
226
+ stage: 0,
227
+ comment: nestedFieldsExplanation,
228
+ },
229
+ 'Return Stored Source Fields': {
230
+ stage: 1,
231
+ comment: nestedFieldsExplanation,
232
+ },
233
+ },
234
+ set: {
235
+ 'Using Two $set Stages': {
236
+ stage: 1,
237
+ comment: 'second $set stage references fields created in the first',
238
+ },
239
+ },
240
+ unset: {
241
+ 'Remove Embedded Fields': {
242
+ stage: 0,
243
+ comment: nestedFieldsExplanation,
244
+ },
245
+ },
246
+ unwind: {
247
+ 'Unwind Embedded Arrays': {
248
+ stage: 1,
249
+ comment: nestedFieldsExplanation,
250
+ },
251
+ },
252
+ },
253
+ };
254
+ //# sourceMappingURL=unsupported-aggregations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-aggregations.js","sourceRoot":"","sources":["../../src/testGenerator/unsupported-aggregations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class StringWriter {
2
+ private buffer;
3
+ write(text: string): void;
4
+ toString(): string;
5
+ }
6
+ export declare function capitalize(str: string): string;
7
+ export declare function removeNewlines(str: string): string;
8
+ export declare function removeTrailingComments(str: string): string;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAM;IAEb,KAAK,CAAC,IAAI,EAAE,MAAM;IAIlB,QAAQ;CAGhB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D"}
package/dist/utils.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringWriter = void 0;
4
+ exports.capitalize = capitalize;
5
+ exports.removeNewlines = removeNewlines;
6
+ exports.removeTrailingComments = removeTrailingComments;
7
+ class StringWriter {
8
+ constructor() {
9
+ this.buffer = '';
10
+ }
11
+ write(text) {
12
+ this.buffer += text;
13
+ }
14
+ toString() {
15
+ return this.buffer;
16
+ }
17
+ }
18
+ exports.StringWriter = StringWriter;
19
+ function capitalize(str) {
20
+ return str[0].toUpperCase() + str.slice(1);
21
+ }
22
+ function removeNewlines(str) {
23
+ return str.replace(/\r?\n|\r/gm, '');
24
+ }
25
+ function removeTrailingComments(str) {
26
+ return str.replace(/\/\/.*\r?\n/gm, '');
27
+ }
28
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAYA,gCAEC;AAED,wCAEC;AAED,wDAEC;AAtBD,MAAa,YAAY;IAAzB;QACU,WAAM,GAAG,EAAE,CAAC;IAStB,CAAC;IAPQ,KAAK,CAAC,IAAY;QACvB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IACtB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAVD,oCAUC;AAED,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,sBAAsB,CAAC,GAAW;IAChD,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "@mongodb-js/mql-typescript",
3
+ "description": "TS definitions for the MongoDB aggregation API",
4
+ "author": {
5
+ "name": "MongoDB Inc",
6
+ "email": "compass@mongodb.com"
7
+ },
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "bugs": {
12
+ "url": "https://jira.mongodb.org/projects/COMPASS/issues",
13
+ "email": "compass@mongodb.com"
14
+ },
15
+ "homepage": "https://github.com/mongodb-js/devtools-shared",
16
+ "version": "0.2.0",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/mongodb-js/devtools-shared.git"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "bin"
24
+ ],
25
+ "bin": {
26
+ "mql-typescript": "bin/runner.js"
27
+ },
28
+ "license": "Apache-2.0",
29
+ "main": "dist/index.js",
30
+ "exports": {
31
+ "./schema": {
32
+ "types": "./dist/schema/schema.d.ts"
33
+ }
34
+ },
35
+ "types": "./dist/index.d.ts",
36
+ "scripts": {
37
+ "bootstrap": "npm run compile",
38
+ "prepublishOnly": "npm run compile",
39
+ "compile": "tsc -p tsconfig.json && gen-esm-wrapper . ./dist/.esm-wrapper.mjs",
40
+ "typecheck": "tsc --noEmit",
41
+ "eslint": "eslint",
42
+ "prettier": "prettier",
43
+ "lint": "npm run eslint . && npm run prettier -- --check .",
44
+ "depcheck": "depcheck",
45
+ "check": "npm run typecheck && npm run lint && npm run depcheck",
46
+ "check-ci": "npm run check",
47
+ "test": "tsc --noEmit tests/**/*.ts",
48
+ "reformat": "npm run prettier -- --write .",
49
+ "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts",
50
+ "pregenerate-schema": "npm run extract-metaschema",
51
+ "generate-schema": "ts-node src/cli.ts schema",
52
+ "postgenerate-schema": "npm run prettier -- --write out/*",
53
+ "pregenerate-tests": "npm run extract-metaschema",
54
+ "generate-tests": "ts-node src/cli.ts tests",
55
+ "postgenerate-tests": "npm run prettier -- --write tests/**/*.ts",
56
+ "pregenerate-driver-schema": "npm run extract-metaschema",
57
+ "generate-driver-schema": "ts-node src/cli.ts driver-schema",
58
+ "postgenerate-driver-schema": "yamlfix -c mongo-php-library/generator/config/.yamlfix.toml mongo-php-library/generator/config",
59
+ "format-generated-files": "npm run postgenerate-schema && npm run postgenerate-tests && npm run postgenerate-driver-schema"
60
+ },
61
+ "devDependencies": {
62
+ "@mongodb-js/eslint-config-devtools": "0.9.11",
63
+ "@mongodb-js/prettier-config-devtools": "^1.0.2",
64
+ "@mongodb-js/shell-bson-parser": "^1.3.0",
65
+ "@mongodb-js/tsconfig-devtools": "^1.0.3",
66
+ "@types/chai": "^4.2.21",
67
+ "@types/js-yaml": "^4.0.9",
68
+ "@types/jsdom": "^21.1.7",
69
+ "@types/node": "^22.15.30",
70
+ "depcheck": "^1.4.7",
71
+ "eslint": "^7.25.0",
72
+ "gen-esm-wrapper": "^1.1.3",
73
+ "js-yaml": "^4.1.0",
74
+ "jsdom": "^24.1.3",
75
+ "json-refs": "^3.0.15",
76
+ "json-schema-to-zod": "^2.6.0",
77
+ "mongodb-schema": "^12.6.2",
78
+ "prettier": "^3.5.3",
79
+ "ts-node": "^10.9.2",
80
+ "typescript": "^5.0.4",
81
+ "yargs": "^17.7.2",
82
+ "zod": "^3.24.2"
83
+ },
84
+ "dependencies": {
85
+ "bson": "^6.10.3",
86
+ "mongodb": "^6.9.0"
87
+ },
88
+ "gitHead": "005f6263e3a329d916f6936c9adcf35db47cfe9f"
89
+ }