@documentdb-js/shell-api-types 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.
@@ -0,0 +1,593 @@
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.SHELL_API_METHODS = void 0;
8
+ exports.getRequiredServerCommands = getRequiredServerCommands;
9
+ exports.getMethodsByTarget = getMethodsByTarget;
10
+ // ---------------------------------------------------------------------------
11
+ // Database methods (db.*)
12
+ // ---------------------------------------------------------------------------
13
+ const databaseMethods = [
14
+ {
15
+ name: 'getCollection',
16
+ target: 'database',
17
+ serverCommands: [],
18
+ shellOnly: true,
19
+ description: 'Returns a collection object by name (client-side only)',
20
+ },
21
+ {
22
+ name: 'getCollectionNames',
23
+ target: 'database',
24
+ serverCommands: ['listCollections'],
25
+ shellOnly: false,
26
+ description: 'Lists collection names in the current database',
27
+ },
28
+ {
29
+ name: 'getCollectionInfos',
30
+ target: 'database',
31
+ serverCommands: ['listCollections'],
32
+ shellOnly: false,
33
+ description: 'Returns metadata for collections',
34
+ },
35
+ {
36
+ name: 'createCollection',
37
+ target: 'database',
38
+ serverCommands: ['create'],
39
+ shellOnly: false,
40
+ description: 'Creates a new collection',
41
+ },
42
+ {
43
+ name: 'dropDatabase',
44
+ target: 'database',
45
+ serverCommands: ['dropDatabase'],
46
+ shellOnly: false,
47
+ description: 'Drops the current database',
48
+ },
49
+ {
50
+ name: 'runCommand',
51
+ target: 'database',
52
+ serverCommands: [],
53
+ shellOnly: true,
54
+ description: 'Executes an arbitrary database command (pass-through)',
55
+ },
56
+ {
57
+ name: 'adminCommand',
58
+ target: 'database',
59
+ serverCommands: [],
60
+ shellOnly: true,
61
+ description: 'Executes a command against the admin database (pass-through)',
62
+ },
63
+ {
64
+ name: 'aggregate',
65
+ target: 'database',
66
+ serverCommands: ['aggregate'],
67
+ shellOnly: false,
68
+ description: 'Runs a database-level aggregation pipeline',
69
+ },
70
+ {
71
+ name: 'getSiblingDB',
72
+ target: 'database',
73
+ serverCommands: [],
74
+ shellOnly: true,
75
+ description: 'Switches database context (client-side only)',
76
+ },
77
+ {
78
+ name: 'getName',
79
+ target: 'database',
80
+ serverCommands: [],
81
+ shellOnly: true,
82
+ description: 'Returns the current database name (client-side only)',
83
+ },
84
+ {
85
+ name: 'stats',
86
+ target: 'database',
87
+ serverCommands: ['dbStats'],
88
+ shellOnly: false,
89
+ description: 'Returns storage statistics for the database',
90
+ },
91
+ {
92
+ name: 'version',
93
+ target: 'database',
94
+ serverCommands: ['buildInfo'],
95
+ shellOnly: false,
96
+ description: 'Returns the server version string',
97
+ },
98
+ {
99
+ name: 'createView',
100
+ target: 'database',
101
+ serverCommands: ['create'],
102
+ shellOnly: false,
103
+ description: 'Creates a read-only view backed by an aggregation pipeline',
104
+ },
105
+ {
106
+ name: 'listCommands',
107
+ target: 'database',
108
+ serverCommands: ['listCommands'],
109
+ shellOnly: false,
110
+ description: 'Lists available database commands',
111
+ },
112
+ {
113
+ name: 'createUser',
114
+ target: 'database',
115
+ serverCommands: ['createUser'],
116
+ shellOnly: false,
117
+ description: 'Creates a new database user',
118
+ },
119
+ {
120
+ name: 'dropUser',
121
+ target: 'database',
122
+ serverCommands: ['dropUser'],
123
+ shellOnly: false,
124
+ description: 'Removes a user from the current database',
125
+ },
126
+ {
127
+ name: 'killOp',
128
+ target: 'database',
129
+ serverCommands: ['killOp'],
130
+ shellOnly: false,
131
+ description: 'Terminates a running operation by its operation ID',
132
+ },
133
+ {
134
+ name: 'getUsers',
135
+ target: 'database',
136
+ serverCommands: ['usersInfo'],
137
+ shellOnly: false,
138
+ description: 'Returns information about users in the current database',
139
+ },
140
+ ];
141
+ // ---------------------------------------------------------------------------
142
+ // Collection methods (db.<collection>.*)
143
+ // ---------------------------------------------------------------------------
144
+ const collectionMethods = [
145
+ {
146
+ name: 'find',
147
+ target: 'collection',
148
+ serverCommands: ['find'],
149
+ shellOnly: false,
150
+ description: 'Queries documents matching a filter',
151
+ },
152
+ {
153
+ name: 'findOne',
154
+ target: 'collection',
155
+ serverCommands: ['find'],
156
+ shellOnly: false,
157
+ description: 'Returns a single document matching the filter',
158
+ },
159
+ {
160
+ name: 'insertOne',
161
+ target: 'collection',
162
+ serverCommands: ['insert'],
163
+ shellOnly: false,
164
+ description: 'Inserts a single document',
165
+ },
166
+ {
167
+ name: 'insertMany',
168
+ target: 'collection',
169
+ serverCommands: ['insert'],
170
+ shellOnly: false,
171
+ description: 'Inserts multiple documents',
172
+ },
173
+ {
174
+ name: 'updateOne',
175
+ target: 'collection',
176
+ serverCommands: ['update'],
177
+ shellOnly: false,
178
+ description: 'Updates a single document',
179
+ },
180
+ {
181
+ name: 'updateMany',
182
+ target: 'collection',
183
+ serverCommands: ['update'],
184
+ shellOnly: false,
185
+ description: 'Updates multiple documents',
186
+ },
187
+ {
188
+ name: 'deleteOne',
189
+ target: 'collection',
190
+ serverCommands: ['delete'],
191
+ shellOnly: false,
192
+ description: 'Deletes a single document',
193
+ },
194
+ {
195
+ name: 'deleteMany',
196
+ target: 'collection',
197
+ serverCommands: ['delete'],
198
+ shellOnly: false,
199
+ description: 'Deletes multiple documents',
200
+ },
201
+ {
202
+ name: 'aggregate',
203
+ target: 'collection',
204
+ serverCommands: ['aggregate'],
205
+ shellOnly: false,
206
+ description: 'Runs an aggregation pipeline',
207
+ },
208
+ {
209
+ name: 'countDocuments',
210
+ target: 'collection',
211
+ serverCommands: ['aggregate'],
212
+ shellOnly: false,
213
+ description: 'Counts documents matching a filter (uses aggregate)',
214
+ },
215
+ {
216
+ name: 'estimatedDocumentCount',
217
+ target: 'collection',
218
+ serverCommands: ['count'],
219
+ shellOnly: false,
220
+ description: 'Returns an estimated document count',
221
+ },
222
+ {
223
+ name: 'distinct',
224
+ target: 'collection',
225
+ serverCommands: ['distinct'],
226
+ shellOnly: false,
227
+ description: 'Returns distinct values for a field',
228
+ },
229
+ {
230
+ name: 'createIndex',
231
+ target: 'collection',
232
+ serverCommands: ['createIndexes'],
233
+ shellOnly: false,
234
+ description: 'Creates an index on the collection',
235
+ },
236
+ {
237
+ name: 'getIndexes',
238
+ target: 'collection',
239
+ serverCommands: ['listIndexes'],
240
+ shellOnly: false,
241
+ description: 'Lists indexes on the collection',
242
+ },
243
+ {
244
+ name: 'dropIndex',
245
+ target: 'collection',
246
+ serverCommands: ['dropIndexes'],
247
+ shellOnly: false,
248
+ description: 'Drops an index from the collection',
249
+ },
250
+ {
251
+ name: 'drop',
252
+ target: 'collection',
253
+ serverCommands: ['drop'],
254
+ shellOnly: false,
255
+ description: 'Drops the collection',
256
+ },
257
+ {
258
+ name: 'bulkWrite',
259
+ target: 'collection',
260
+ serverCommands: ['insert', 'update', 'delete'],
261
+ shellOnly: false,
262
+ description: 'Executes multiple write operations in bulk',
263
+ },
264
+ {
265
+ name: 'replaceOne',
266
+ target: 'collection',
267
+ serverCommands: ['update'],
268
+ shellOnly: false,
269
+ description: 'Replaces a single document',
270
+ },
271
+ {
272
+ name: 'findOneAndUpdate',
273
+ target: 'collection',
274
+ serverCommands: ['findAndModify'],
275
+ shellOnly: false,
276
+ description: 'Finds and updates a document atomically',
277
+ },
278
+ {
279
+ name: 'findOneAndDelete',
280
+ target: 'collection',
281
+ serverCommands: ['findAndModify'],
282
+ shellOnly: false,
283
+ description: 'Finds and deletes a document atomically',
284
+ },
285
+ {
286
+ name: 'findOneAndReplace',
287
+ target: 'collection',
288
+ serverCommands: ['findAndModify'],
289
+ shellOnly: false,
290
+ description: 'Finds and replaces a document atomically',
291
+ },
292
+ {
293
+ name: 'explain',
294
+ target: 'collection',
295
+ serverCommands: ['explain'],
296
+ shellOnly: false,
297
+ description: 'Returns the query execution plan',
298
+ },
299
+ {
300
+ name: 'renameCollection',
301
+ target: 'collection',
302
+ serverCommands: ['renameCollection'],
303
+ shellOnly: false,
304
+ description: 'Renames the collection',
305
+ },
306
+ {
307
+ name: 'stats',
308
+ target: 'collection',
309
+ serverCommands: ['collStats'],
310
+ shellOnly: false,
311
+ description: 'Returns storage statistics for the collection',
312
+ },
313
+ {
314
+ name: 'isCapped',
315
+ target: 'collection',
316
+ serverCommands: ['collStats'],
317
+ shellOnly: false,
318
+ description: 'Checks if the collection is capped',
319
+ },
320
+ ];
321
+ // ---------------------------------------------------------------------------
322
+ // Find cursor methods (db.<collection>.find().*)
323
+ // ---------------------------------------------------------------------------
324
+ const findCursorMethods = [
325
+ {
326
+ name: 'limit',
327
+ target: 'findCursor',
328
+ serverCommands: ['find'],
329
+ shellOnly: false,
330
+ description: 'Limits the number of results',
331
+ },
332
+ {
333
+ name: 'skip',
334
+ target: 'findCursor',
335
+ serverCommands: ['find'],
336
+ shellOnly: false,
337
+ description: 'Skips a number of results',
338
+ },
339
+ {
340
+ name: 'sort',
341
+ target: 'findCursor',
342
+ serverCommands: ['find'],
343
+ shellOnly: false,
344
+ description: 'Sorts the results',
345
+ },
346
+ {
347
+ name: 'toArray',
348
+ target: 'findCursor',
349
+ serverCommands: ['getMore'],
350
+ shellOnly: false,
351
+ description: 'Returns all results as an array',
352
+ },
353
+ {
354
+ name: 'forEach',
355
+ target: 'findCursor',
356
+ serverCommands: ['getMore'],
357
+ shellOnly: false,
358
+ description: 'Iterates over results with a callback',
359
+ },
360
+ {
361
+ name: 'map',
362
+ target: 'findCursor',
363
+ serverCommands: ['getMore'],
364
+ shellOnly: false,
365
+ description: 'Transforms each result with a callback',
366
+ },
367
+ {
368
+ name: 'count',
369
+ target: 'findCursor',
370
+ serverCommands: ['count'],
371
+ shellOnly: false,
372
+ description: 'Returns the count of matching documents',
373
+ },
374
+ {
375
+ name: 'explain',
376
+ target: 'findCursor',
377
+ serverCommands: ['explain'],
378
+ shellOnly: false,
379
+ description: 'Returns the query execution plan',
380
+ },
381
+ {
382
+ name: 'hasNext',
383
+ target: 'findCursor',
384
+ serverCommands: ['getMore'],
385
+ shellOnly: false,
386
+ description: 'Checks if there are more results',
387
+ },
388
+ {
389
+ name: 'next',
390
+ target: 'findCursor',
391
+ serverCommands: ['getMore'],
392
+ shellOnly: false,
393
+ description: 'Returns the next result',
394
+ },
395
+ {
396
+ name: 'batchSize',
397
+ target: 'findCursor',
398
+ serverCommands: ['find'],
399
+ shellOnly: false,
400
+ description: 'Sets the batch size for cursor iteration',
401
+ },
402
+ {
403
+ name: 'close',
404
+ target: 'findCursor',
405
+ serverCommands: ['killCursors'],
406
+ shellOnly: false,
407
+ description: 'Closes the cursor and releases server resources',
408
+ },
409
+ {
410
+ name: 'collation',
411
+ target: 'findCursor',
412
+ serverCommands: ['find'],
413
+ shellOnly: false,
414
+ description: 'Sets the collation for string comparison',
415
+ },
416
+ {
417
+ name: 'hint',
418
+ target: 'findCursor',
419
+ serverCommands: ['find'],
420
+ shellOnly: false,
421
+ description: 'Forces the query to use a specific index',
422
+ },
423
+ {
424
+ name: 'comment',
425
+ target: 'findCursor',
426
+ serverCommands: ['find'],
427
+ shellOnly: false,
428
+ description: 'Attaches a comment for query profiling',
429
+ },
430
+ {
431
+ name: 'maxTimeMS',
432
+ target: 'findCursor',
433
+ serverCommands: ['find'],
434
+ shellOnly: false,
435
+ description: 'Sets the maximum execution time',
436
+ },
437
+ {
438
+ name: 'readConcern',
439
+ target: 'findCursor',
440
+ serverCommands: ['find'],
441
+ shellOnly: false,
442
+ description: 'Sets the read concern level',
443
+ },
444
+ {
445
+ name: 'readPref',
446
+ target: 'findCursor',
447
+ serverCommands: ['find'],
448
+ shellOnly: false,
449
+ description: 'Sets the read preference',
450
+ },
451
+ {
452
+ name: 'returnKey',
453
+ target: 'findCursor',
454
+ serverCommands: ['find'],
455
+ shellOnly: false,
456
+ description: 'Returns only the index keys',
457
+ },
458
+ {
459
+ name: 'showRecordId',
460
+ target: 'findCursor',
461
+ serverCommands: ['find'],
462
+ shellOnly: false,
463
+ description: 'Includes the storage engine record ID',
464
+ },
465
+ ];
466
+ // ---------------------------------------------------------------------------
467
+ // Aggregation cursor methods (db.<collection>.aggregate().*)
468
+ // ---------------------------------------------------------------------------
469
+ const aggregationCursorMethods = [
470
+ {
471
+ name: 'toArray',
472
+ target: 'aggregationCursor',
473
+ serverCommands: ['getMore'],
474
+ shellOnly: false,
475
+ description: 'Returns all results as an array',
476
+ },
477
+ {
478
+ name: 'forEach',
479
+ target: 'aggregationCursor',
480
+ serverCommands: ['getMore'],
481
+ shellOnly: false,
482
+ description: 'Iterates over results with a callback',
483
+ },
484
+ {
485
+ name: 'hasNext',
486
+ target: 'aggregationCursor',
487
+ serverCommands: ['getMore'],
488
+ shellOnly: false,
489
+ description: 'Checks if there are more results',
490
+ },
491
+ {
492
+ name: 'next',
493
+ target: 'aggregationCursor',
494
+ serverCommands: ['getMore'],
495
+ shellOnly: false,
496
+ description: 'Returns the next result',
497
+ },
498
+ {
499
+ name: 'batchSize',
500
+ target: 'aggregationCursor',
501
+ serverCommands: ['aggregate'],
502
+ shellOnly: false,
503
+ description: 'Sets the batch size',
504
+ },
505
+ {
506
+ name: 'close',
507
+ target: 'aggregationCursor',
508
+ serverCommands: ['killCursors'],
509
+ shellOnly: false,
510
+ description: 'Closes the cursor',
511
+ },
512
+ {
513
+ name: 'explain',
514
+ target: 'aggregationCursor',
515
+ serverCommands: ['explain'],
516
+ shellOnly: false,
517
+ description: 'Returns the execution plan',
518
+ },
519
+ {
520
+ name: 'maxTimeMS',
521
+ target: 'aggregationCursor',
522
+ serverCommands: ['aggregate'],
523
+ shellOnly: false,
524
+ description: 'Sets the maximum execution time',
525
+ },
526
+ ];
527
+ // ---------------------------------------------------------------------------
528
+ // Global functions (top-level shell commands)
529
+ // ---------------------------------------------------------------------------
530
+ const globalMethods = [
531
+ {
532
+ name: 'use',
533
+ target: 'global',
534
+ serverCommands: [],
535
+ shellOnly: true,
536
+ description: 'Switches the current database context',
537
+ },
538
+ { name: 'help', target: 'global', serverCommands: [], shellOnly: true, description: 'Displays help information' },
539
+ { name: 'print', target: 'global', serverCommands: [], shellOnly: true, description: 'Prints values to output' },
540
+ {
541
+ name: 'printjson',
542
+ target: 'global',
543
+ serverCommands: [],
544
+ shellOnly: true,
545
+ description: 'Prints values as formatted JSON',
546
+ },
547
+ {
548
+ name: 'sleep',
549
+ target: 'global',
550
+ serverCommands: [],
551
+ shellOnly: true,
552
+ description: 'Pauses execution for a duration',
553
+ },
554
+ {
555
+ name: 'version',
556
+ target: 'global',
557
+ serverCommands: ['buildInfo'],
558
+ shellOnly: false,
559
+ description: 'Returns the shell version string',
560
+ },
561
+ ];
562
+ // ---------------------------------------------------------------------------
563
+ // Combined registry
564
+ // ---------------------------------------------------------------------------
565
+ /** All shell API methods across all target objects. */
566
+ exports.SHELL_API_METHODS = [
567
+ ...databaseMethods,
568
+ ...collectionMethods,
569
+ ...findCursorMethods,
570
+ ...aggregationCursorMethods,
571
+ ...globalMethods,
572
+ ];
573
+ /**
574
+ * Returns all unique server commands referenced by the shell API methods.
575
+ * These are the commands that must be supported by the DocumentDB server
576
+ * for the shell API to function correctly.
577
+ */
578
+ function getRequiredServerCommands() {
579
+ const commands = new Set();
580
+ for (const method of exports.SHELL_API_METHODS) {
581
+ for (const cmd of method.serverCommands) {
582
+ commands.add(cmd);
583
+ }
584
+ }
585
+ return [...commands].sort();
586
+ }
587
+ /**
588
+ * Returns methods filtered by target object.
589
+ */
590
+ function getMethodsByTarget(target) {
591
+ return exports.SHELL_API_METHODS.filter((m) => m.target === target);
592
+ }
593
+ //# sourceMappingURL=methodRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methodRegistry.js","sourceRoot":"","sources":["../src/methodRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=methodRegistry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methodRegistry.test.d.ts","sourceRoot":"","sources":["../src/methodRegistry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
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
+ const methodRegistry_1 = require("./methodRegistry");
8
+ describe('methodRegistry', () => {
9
+ it('should have methods for all target types', () => {
10
+ expect((0, methodRegistry_1.getMethodsByTarget)('database').length).toBeGreaterThan(0);
11
+ expect((0, methodRegistry_1.getMethodsByTarget)('collection').length).toBeGreaterThan(0);
12
+ expect((0, methodRegistry_1.getMethodsByTarget)('findCursor').length).toBeGreaterThan(0);
13
+ expect((0, methodRegistry_1.getMethodsByTarget)('aggregationCursor').length).toBeGreaterThan(0);
14
+ expect((0, methodRegistry_1.getMethodsByTarget)('global').length).toBeGreaterThan(0);
15
+ });
16
+ it('should have unique method names within each target', () => {
17
+ const targets = ['database', 'collection', 'findCursor', 'aggregationCursor', 'global'];
18
+ for (const target of targets) {
19
+ const methods = (0, methodRegistry_1.getMethodsByTarget)(target);
20
+ const names = methods.map((m) => m.name);
21
+ const unique = new Set(names);
22
+ expect(unique.size).toBe(names.length);
23
+ }
24
+ });
25
+ it('should have non-empty server commands for non-shell-only methods', () => {
26
+ for (const method of methodRegistry_1.SHELL_API_METHODS) {
27
+ if (!method.shellOnly) {
28
+ expect(method.serverCommands.length).toBeGreaterThan(0);
29
+ }
30
+ }
31
+ });
32
+ it('should have empty server commands for shell-only methods', () => {
33
+ for (const method of methodRegistry_1.SHELL_API_METHODS) {
34
+ if (method.shellOnly) {
35
+ expect(method.serverCommands).toHaveLength(0);
36
+ }
37
+ }
38
+ });
39
+ it('should return required server commands sorted and deduplicated', () => {
40
+ const commands = (0, methodRegistry_1.getRequiredServerCommands)();
41
+ expect(commands.length).toBeGreaterThan(0);
42
+ // Should be sorted
43
+ const sorted = [...commands].sort();
44
+ expect(commands).toEqual(sorted);
45
+ // Should be unique
46
+ const unique = new Set(commands);
47
+ expect(unique.size).toBe(commands.length);
48
+ });
49
+ it('should include expected high-level commands', () => {
50
+ const commands = (0, methodRegistry_1.getRequiredServerCommands)();
51
+ expect(commands).toContain('find');
52
+ expect(commands).toContain('insert');
53
+ expect(commands).toContain('update');
54
+ expect(commands).toContain('delete');
55
+ expect(commands).toContain('aggregate');
56
+ expect(commands).toContain('createIndexes');
57
+ });
58
+ });
59
+ //# sourceMappingURL=methodRegistry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methodRegistry.test.js","sourceRoot":"","sources":["../src/methodRegistry.test.ts"],"names":[],"mappings":"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"}