@sprucelabs/data-stores 19.1.67 → 19.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 (33) hide show
  1. package/build/.spruce/errors/dataStores/invalidConnectionStringScheme.schema.d.ts +3 -0
  2. package/build/.spruce/errors/dataStores/invalidConnectionStringScheme.schema.js +18 -0
  3. package/build/.spruce/errors/errors.types.d.ts +19 -0
  4. package/build/.spruce/errors/options.types.d.ts +4 -1
  5. package/build/databases/MongoDatabase.d.ts +2 -6
  6. package/build/errors/SpruceError.js +3 -0
  7. package/build/errors/invalidConnectionStringSchema.builder.d.ts +11 -0
  8. package/build/errors/invalidConnectionStringSchema.builder.js +13 -0
  9. package/build/esm/.spruce/errors/errors.types.d.ts +19 -0
  10. package/build/esm/.spruce/errors/options.types.d.ts +4 -1
  11. package/build/esm/databases/MongoDatabase.d.ts +2 -6
  12. package/build/esm/errors/SpruceError.js +3 -0
  13. package/build/esm/errors/invalidConnectionStringSchema.builder.d.ts +11 -0
  14. package/build/esm/errors/invalidConnectionStringSchema.builder.js +11 -0
  15. package/build/esm/factories/DatabaseFactory.d.ts +4 -1
  16. package/build/esm/factories/DatabaseFactory.js +18 -4
  17. package/build/esm/index.d.ts +1 -0
  18. package/build/esm/index.js +1 -0
  19. package/build/esm/tests/databaseAssertUtil.d.ts +75 -0
  20. package/build/esm/tests/databaseAssertUtil.js +1339 -0
  21. package/build/esm/tests/pluckAssertionMethods.d.ts +2 -0
  22. package/build/esm/tests/pluckAssertionMethods.js +3 -0
  23. package/build/esm/types/database.types.d.ts +5 -0
  24. package/build/factories/DatabaseFactory.d.ts +4 -1
  25. package/build/factories/DatabaseFactory.js +18 -4
  26. package/build/index.d.ts +1 -0
  27. package/build/index.js +3 -1
  28. package/build/tests/databaseAssertUtil.d.ts +75 -0
  29. package/build/tests/databaseAssertUtil.js +1199 -0
  30. package/build/tests/pluckAssertionMethods.d.ts +2 -0
  31. package/build/tests/pluckAssertionMethods.js +6 -0
  32. package/build/types/database.types.d.ts +5 -0
  33. package/package.json +3 -3
@@ -0,0 +1,3 @@
1
+ import { SpruceErrors } from '../errors.types';
2
+ declare const invalidConnectionStringSchemeSchema: SpruceErrors.DataStores.InvalidConnectionStringSchemeSchema;
3
+ export default invalidConnectionStringSchemeSchema;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require("@sprucelabs/schema");
4
+ const invalidConnectionStringSchemeSchema = {
5
+ id: 'invalidConnectionStringScheme',
6
+ namespace: 'DataStores',
7
+ name: 'Invalid connection string scheme',
8
+ fields: {
9
+ /** . */
10
+ 'connectionString': {
11
+ type: 'text',
12
+ isRequired: true,
13
+ options: undefined
14
+ },
15
+ }
16
+ };
17
+ schema_1.SchemaRegistry.getInstance().trackSchema(invalidConnectionStringSchemeSchema);
18
+ exports.default = invalidConnectionStringSchemeSchema;
@@ -213,6 +213,25 @@ export declare namespace SpruceErrors.DataStores {
213
213
  }
214
214
  type InvalidDatabaseNameEntity = SchemaEntity<SpruceErrors.DataStores.InvalidDatabaseNameSchema>;
215
215
  }
216
+ export declare namespace SpruceErrors.DataStores {
217
+ interface InvalidConnectionStringScheme {
218
+ 'connectionString': string;
219
+ }
220
+ interface InvalidConnectionStringSchemeSchema extends SpruceSchema.Schema {
221
+ id: 'invalidConnectionStringScheme';
222
+ namespace: 'DataStores';
223
+ name: 'Invalid connection string scheme';
224
+ fields: {
225
+ /** . */
226
+ 'connectionString': {
227
+ type: 'text';
228
+ isRequired: true;
229
+ options: undefined;
230
+ };
231
+ };
232
+ }
233
+ type InvalidConnectionStringSchemeEntity = SchemaEntity<SpruceErrors.DataStores.InvalidConnectionStringSchemeSchema>;
234
+ }
216
235
  export declare namespace SpruceErrors.DataStores {
217
236
  interface IndexNotFound {
218
237
  /** Missing Index. */
@@ -33,6 +33,9 @@ export interface InvalidDbConnectionStringErrorOptions extends SpruceErrors.Data
33
33
  export interface InvalidDatabaseNameErrorOptions extends SpruceErrors.DataStores.InvalidDatabaseName, ISpruceErrorOptions {
34
34
  code: 'INVALID_DATABASE_NAME';
35
35
  }
36
+ export interface InvalidConnectionStringSchemeErrorOptions extends SpruceErrors.DataStores.InvalidConnectionStringScheme, ISpruceErrorOptions {
37
+ code: 'INVALID_CONNECTION_STRING_SCHEME';
38
+ }
36
39
  export interface IndexNotFoundErrorOptions extends SpruceErrors.DataStores.IndexNotFound, ISpruceErrorOptions {
37
40
  code: 'INDEX_NOT_FOUND';
38
41
  }
@@ -54,5 +57,5 @@ export interface DuplicateKeyErrorOptions extends SpruceErrors.DataStores.Duplic
54
57
  export interface DatabaseNotConnectedErrorOptions extends SpruceErrors.DataStores.DatabaseNotConnected, ISpruceErrorOptions {
55
58
  code: 'DATABASE_NOT_CONNECTED';
56
59
  }
57
- type ErrorOptions = UnknownStoreErrorErrorOptions | UnknownErrorErrorOptions | UnknownDatabaseErrorErrorOptions | UnableToConnectToDbErrorOptions | ScrambleNotConfiguredErrorOptions | RecordNotFoundErrorOptions | MongoIdMappingErrorErrorOptions | InvalidStoreNameErrorOptions | InvalidStoreErrorOptions | InvalidDbConnectionStringErrorOptions | InvalidDatabaseNameErrorOptions | IndexNotFoundErrorOptions | IndexExistsErrorOptions | FailedToLoadStoresErrorOptions | FailedToLoadStoreErrorOptions | DuplicateRecordErrorOptions | DuplicateKeyErrorOptions | DatabaseNotConnectedErrorOptions;
60
+ type ErrorOptions = UnknownStoreErrorErrorOptions | UnknownErrorErrorOptions | UnknownDatabaseErrorErrorOptions | UnableToConnectToDbErrorOptions | ScrambleNotConfiguredErrorOptions | RecordNotFoundErrorOptions | MongoIdMappingErrorErrorOptions | InvalidStoreNameErrorOptions | InvalidStoreErrorOptions | InvalidDbConnectionStringErrorOptions | InvalidDatabaseNameErrorOptions | InvalidConnectionStringSchemeErrorOptions | IndexNotFoundErrorOptions | IndexExistsErrorOptions | FailedToLoadStoresErrorOptions | FailedToLoadStoreErrorOptions | DuplicateRecordErrorOptions | DuplicateKeyErrorOptions | DatabaseNotConnectedErrorOptions;
58
61
  export default ErrorOptions;
@@ -1,6 +1,5 @@
1
- import { Log } from '@sprucelabs/spruce-skill-utils';
2
1
  import { MongoClientOptions, MongoClient } from 'mongodb';
3
- import { Database } from '../types/database.types';
2
+ import { Database, DatabaseOptions } from '../types/database.types';
4
3
  import { QueryOptions } from '../types/query.types';
5
4
  export declare const MONGO_TEST_URI = "mongodb://localhost:27017";
6
5
  export default class MongoDatabase implements Database {
@@ -9,10 +8,7 @@ export default class MongoDatabase implements Database {
9
8
  private dbName;
10
9
  private disableAutoGeneratedIdsOnTheseCollections;
11
10
  private _isConnected;
12
- constructor(url: string, options?: MongoClientOptions & {
13
- dbName?: string;
14
- log?: Log;
15
- });
11
+ constructor(url: string, options?: MongoClientOptions & DatabaseOptions);
16
12
  count(collection: string, query?: Record<string, any>): Promise<number>;
17
13
  generateId(): string;
18
14
  delete(collection: string, query: Record<string, any>): Promise<number>;
@@ -93,6 +93,9 @@ If you are on a mac, using brew is recommended: https://brew.sh`;
93
93
  case 'DUPLICATE_KEY':
94
94
  message = `An index was trying to be created that exists. Original error is:\n\n${(_c = options.friendlyMessage) !== null && _c !== void 0 ? _c : '**missing**'}`;
95
95
  break;
96
+ case 'INVALID_CONNECTION_STRING_SCHEME':
97
+ message = `There is no database adapter setup for: ${options.connectionString.split('://')[0]}`;
98
+ break;
96
99
  default:
97
100
  message = super.friendlyMessage();
98
101
  }
@@ -0,0 +1,11 @@
1
+ declare const _default: {
2
+ id: string;
3
+ name: string;
4
+ fields: {
5
+ connectionString: {
6
+ type: "text";
7
+ isRequired: true;
8
+ };
9
+ };
10
+ };
11
+ export default _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require("@sprucelabs/schema");
4
+ exports.default = (0, schema_1.buildErrorSchema)({
5
+ id: 'invalidConnectionStringScheme',
6
+ name: 'Invalid connection string scheme',
7
+ fields: {
8
+ connectionString: {
9
+ type: 'text',
10
+ isRequired: true,
11
+ },
12
+ },
13
+ });
@@ -213,6 +213,25 @@ export declare namespace SpruceErrors.DataStores {
213
213
  }
214
214
  type InvalidDatabaseNameEntity = SchemaEntity<SpruceErrors.DataStores.InvalidDatabaseNameSchema>;
215
215
  }
216
+ export declare namespace SpruceErrors.DataStores {
217
+ interface InvalidConnectionStringScheme {
218
+ 'connectionString': string;
219
+ }
220
+ interface InvalidConnectionStringSchemeSchema extends SpruceSchema.Schema {
221
+ id: 'invalidConnectionStringScheme';
222
+ namespace: 'DataStores';
223
+ name: 'Invalid connection string scheme';
224
+ fields: {
225
+ /** . */
226
+ 'connectionString': {
227
+ type: 'text';
228
+ isRequired: true;
229
+ options: undefined;
230
+ };
231
+ };
232
+ }
233
+ type InvalidConnectionStringSchemeEntity = SchemaEntity<SpruceErrors.DataStores.InvalidConnectionStringSchemeSchema>;
234
+ }
216
235
  export declare namespace SpruceErrors.DataStores {
217
236
  interface IndexNotFound {
218
237
  /** Missing Index. */
@@ -33,6 +33,9 @@ export interface InvalidDbConnectionStringErrorOptions extends SpruceErrors.Data
33
33
  export interface InvalidDatabaseNameErrorOptions extends SpruceErrors.DataStores.InvalidDatabaseName, ISpruceErrorOptions {
34
34
  code: 'INVALID_DATABASE_NAME';
35
35
  }
36
+ export interface InvalidConnectionStringSchemeErrorOptions extends SpruceErrors.DataStores.InvalidConnectionStringScheme, ISpruceErrorOptions {
37
+ code: 'INVALID_CONNECTION_STRING_SCHEME';
38
+ }
36
39
  export interface IndexNotFoundErrorOptions extends SpruceErrors.DataStores.IndexNotFound, ISpruceErrorOptions {
37
40
  code: 'INDEX_NOT_FOUND';
38
41
  }
@@ -54,5 +57,5 @@ export interface DuplicateKeyErrorOptions extends SpruceErrors.DataStores.Duplic
54
57
  export interface DatabaseNotConnectedErrorOptions extends SpruceErrors.DataStores.DatabaseNotConnected, ISpruceErrorOptions {
55
58
  code: 'DATABASE_NOT_CONNECTED';
56
59
  }
57
- type ErrorOptions = UnknownStoreErrorErrorOptions | UnknownErrorErrorOptions | UnknownDatabaseErrorErrorOptions | UnableToConnectToDbErrorOptions | ScrambleNotConfiguredErrorOptions | RecordNotFoundErrorOptions | MongoIdMappingErrorErrorOptions | InvalidStoreNameErrorOptions | InvalidStoreErrorOptions | InvalidDbConnectionStringErrorOptions | InvalidDatabaseNameErrorOptions | IndexNotFoundErrorOptions | IndexExistsErrorOptions | FailedToLoadStoresErrorOptions | FailedToLoadStoreErrorOptions | DuplicateRecordErrorOptions | DuplicateKeyErrorOptions | DatabaseNotConnectedErrorOptions;
60
+ type ErrorOptions = UnknownStoreErrorErrorOptions | UnknownErrorErrorOptions | UnknownDatabaseErrorErrorOptions | UnableToConnectToDbErrorOptions | ScrambleNotConfiguredErrorOptions | RecordNotFoundErrorOptions | MongoIdMappingErrorErrorOptions | InvalidStoreNameErrorOptions | InvalidStoreErrorOptions | InvalidDbConnectionStringErrorOptions | InvalidDatabaseNameErrorOptions | InvalidConnectionStringSchemeErrorOptions | IndexNotFoundErrorOptions | IndexExistsErrorOptions | FailedToLoadStoresErrorOptions | FailedToLoadStoreErrorOptions | DuplicateRecordErrorOptions | DuplicateKeyErrorOptions | DatabaseNotConnectedErrorOptions;
58
61
  export default ErrorOptions;
@@ -1,6 +1,5 @@
1
- import { Log } from '@sprucelabs/spruce-skill-utils';
2
1
  import { MongoClientOptions, MongoClient } from 'mongodb';
3
- import { Database } from '../types/database.types';
2
+ import { Database, DatabaseOptions } from '../types/database.types';
4
3
  import { QueryOptions } from '../types/query.types';
5
4
  export declare const MONGO_TEST_URI = "mongodb://localhost:27017";
6
5
  export default class MongoDatabase implements Database {
@@ -9,10 +8,7 @@ export default class MongoDatabase implements Database {
9
8
  private dbName;
10
9
  private disableAutoGeneratedIdsOnTheseCollections;
11
10
  private _isConnected;
12
- constructor(url: string, options?: MongoClientOptions & {
13
- dbName?: string;
14
- log?: Log;
15
- });
11
+ constructor(url: string, options?: MongoClientOptions & DatabaseOptions);
16
12
  count(collection: string, query?: Record<string, any>): Promise<number>;
17
13
  generateId(): string;
18
14
  delete(collection: string, query: Record<string, any>): Promise<number>;
@@ -88,6 +88,9 @@ If you are on a mac, using brew is recommended: https://brew.sh`;
88
88
  case 'DUPLICATE_KEY':
89
89
  message = `An index was trying to be created that exists. Original error is:\n\n${(_c = options.friendlyMessage) !== null && _c !== void 0 ? _c : '**missing**'}`;
90
90
  break;
91
+ case 'INVALID_CONNECTION_STRING_SCHEME':
92
+ message = `There is no database adapter setup for: ${options.connectionString.split('://')[0]}`;
93
+ break;
91
94
  default:
92
95
  message = super.friendlyMessage();
93
96
  }
@@ -0,0 +1,11 @@
1
+ declare const _default: {
2
+ id: string;
3
+ name: string;
4
+ fields: {
5
+ connectionString: {
6
+ type: "text";
7
+ isRequired: true;
8
+ };
9
+ };
10
+ };
11
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { buildErrorSchema } from '@sprucelabs/schema';
2
+ export default buildErrorSchema({
3
+ id: 'invalidConnectionStringScheme',
4
+ name: 'Invalid connection string scheme',
5
+ fields: {
6
+ connectionString: {
7
+ type: 'text',
8
+ isRequired: true,
9
+ },
10
+ },
11
+ });
@@ -1,7 +1,9 @@
1
- import { Database } from '../types/database.types';
1
+ import { Database, DatabaseOptions } from '../types/database.types';
2
2
  export default class DatabaseFactory {
3
3
  private static cache;
4
+ private static Adapters;
4
5
  private constructor();
6
+ static addAdapter(scheme: string, Adapter: DatabaseConstructor): void;
5
7
  static Database(options: {
6
8
  dbName?: string;
7
9
  dbConnectionString: string;
@@ -9,3 +11,4 @@ export default class DatabaseFactory {
9
11
  private static generateCacheKey;
10
12
  static reset(): void;
11
13
  }
14
+ export type DatabaseConstructor = new (connectionString: string, options: DatabaseOptions) => Database;
@@ -1,8 +1,12 @@
1
1
  import { SchemaError } from '@sprucelabs/schema';
2
2
  import MongoDatabase from '../databases/MongoDatabase.js';
3
3
  import NeDbDatabase from '../databases/NeDbDatabase.js';
4
+ import SpruceError from '../errors/SpruceError.js';
4
5
  export default class DatabaseFactory {
5
6
  constructor() { }
7
+ static addAdapter(scheme, Adapter) {
8
+ this.Adapters[scheme] = Adapter;
9
+ }
6
10
  static Database(options) {
7
11
  const { dbName, dbConnectionString } = options;
8
12
  let database;
@@ -15,11 +19,17 @@ export default class DatabaseFactory {
15
19
  }
16
20
  const cacheKey = this.generateCacheKey(options);
17
21
  if (!this.cache[cacheKey]) {
18
- if (dbConnectionString.startsWith('memory')) {
19
- database = new NeDbDatabase();
22
+ for (const [key, Adapter] of Object.entries(this.Adapters)) {
23
+ if (dbConnectionString.startsWith(key)) {
24
+ database = new Adapter(dbConnectionString, { dbName });
25
+ break;
26
+ }
20
27
  }
21
- else {
22
- database = new MongoDatabase(dbConnectionString, { dbName });
28
+ if (!database) {
29
+ throw new SpruceError({
30
+ code: 'INVALID_CONNECTION_STRING_SCHEME',
31
+ connectionString: dbConnectionString,
32
+ });
23
33
  }
24
34
  this.cache[cacheKey] = database;
25
35
  }
@@ -39,3 +49,7 @@ export default class DatabaseFactory {
39
49
  }
40
50
  }
41
51
  DatabaseFactory.cache = {};
52
+ DatabaseFactory.Adapters = {
53
+ 'mongodb://': MongoDatabase,
54
+ 'memory://': NeDbDatabase,
55
+ };
@@ -19,3 +19,4 @@ export { default as CursorPager } from './cursors/CursorPager';
19
19
  export * from './cursors/CursorPager';
20
20
  export { default as CursorPagerFaker } from './cursors/CursorPagerFaker';
21
21
  export * from './cursors/CursorPager';
22
+ export { default as databaseAssertUtil } from './tests/databaseAssertUtil';
@@ -19,3 +19,4 @@ export { default as CursorPager } from './cursors/CursorPager.js';
19
19
  export * from './cursors/CursorPager.js';
20
20
  export { default as CursorPagerFaker } from './cursors/CursorPagerFaker.js';
21
21
  export * from './cursors/CursorPager.js';
22
+ export { default as databaseAssertUtil } from './tests/databaseAssertUtil.js';
@@ -0,0 +1,75 @@
1
+ import { Connect } from '../__tests__/behavioral/database/Database.test';
2
+ import { Database, Index, UniqueIndex } from '../types/database.types';
3
+ declare const databaseAssertUtil: {
4
+ collectionName: string;
5
+ runSuite(connect: Connect): Promise<void>;
6
+ _getFilteredIndexes(db: Database): Promise<UniqueIndex[] | Index[]>;
7
+ _filterIdIndex(allIndexes: UniqueIndex[] | Index[]): UniqueIndex[] | Index[];
8
+ _assertUpdateUpdatedRightNumberOfRecords(db: Database, search: Record<string, any>, updates: Record<string, any>, expectedUpdateCount: number): Promise<void>;
9
+ assertCanSortDesc(connect: Connect): Promise<void>;
10
+ assertCanSortAsc(connect: Connect): Promise<void>;
11
+ assertInsertingGeneratesId(connect: Connect): Promise<void>;
12
+ assertThrowsWhenUpdatingRecordNotFound(connect: Connect): Promise<void>;
13
+ shutdown(db: Database): Promise<void>;
14
+ assertCanCreateUniqueIndex(connect: Connect): Promise<void>;
15
+ assertHasNoUniqueIndexToStart(connect: Connect): Promise<void>;
16
+ assertCanShutdown(connect: Connect): Promise<void>;
17
+ assertCanDeleteOne(connect: Connect): Promise<void>;
18
+ assertCanDeleteRecord(connect: Connect): Promise<void>;
19
+ assertCanLimitResultsToZero(connect: Connect): Promise<void>;
20
+ assertCanLimitResults(connect: Connect): Promise<void>;
21
+ assertFindOneOnEmptyDatabaseReturnsNull(connect: Connect): Promise<void>;
22
+ assertEmptyDatabaseReturnsEmptyArray(connect: Connect): Promise<void>;
23
+ assertCanPushOntoArrayValue(connect: Connect): Promise<void>;
24
+ assertCanCreateMany(connect: Connect): Promise<void>;
25
+ assertCanUpdateMany(connect: Connect): Promise<void>;
26
+ assertCanQueryWithOr(connect: Connect): Promise<void>;
27
+ assertCanUpdate(connect: Connect): Promise<void>;
28
+ assertCanSortById(connect: Connect): Promise<void>;
29
+ assertCanCreateMultiFieldUniqueIndex(connect: Connect): Promise<void>;
30
+ assertSettingUniqueIndexViolationThrowsSpruceError(connect: Connect): Promise<void>;
31
+ assertDuplicateKeyThrowsOnInsert(connect: Connect): Promise<void>;
32
+ assertSyncingIndexesDoesNotAddAndRemove(connect: Connect): Promise<void>;
33
+ assertSyncingUniqueIndexesRemovesExtraIndexes(connect: Connect): Promise<void>;
34
+ assertSyncingUniqueIndexsSkipsExistingIndexs(connect: Connect): Promise<void>;
35
+ assertSyncingUniqueIndexsAddsMissingIndexes(connect: Connect): Promise<void>;
36
+ assertCantDropCompoundUniqueIndexThatDoesntExist(connect: Connect): Promise<void>;
37
+ assertCantDropIndexWhenNoIndexExists(connect: Connect): Promise<void>;
38
+ assertCantDropUniqueIndexThatDoesntExist(connect: Connect): Promise<void>;
39
+ assertCanDropCompoundUniqueIndex(connect: Connect): Promise<void>;
40
+ assertCanDropUniqueIndex(connect: Connect): Promise<void>;
41
+ assertCantCreateUniqueIndexTwice(connect: Connect): Promise<void>;
42
+ assertSyncingUniqueIndexesIsRaceProof(connect: Connect): Promise<void>;
43
+ assertUniqueIndexBlocksDuplicates(connect: Connect): Promise<void>;
44
+ assertCanCreateUniqueIndexOnNestedField(connect: Connect): Promise<void>;
45
+ assertCanPushToArrayOnUpsert(connect: Connect): Promise<void>;
46
+ assertCanSearchByRegex(connect: Connect): Promise<void>;
47
+ assertCanReturnOnlySelectFields(connect: Connect): Promise<void>;
48
+ assertThrowsWithoutDatabaseName(connect: Connect): Promise<void>;
49
+ assertThrowsWhenCantConnect(connect: Connect): Promise<void>;
50
+ assertThrowsWithInvalidConnectionString(connect: Connect): Promise<void>;
51
+ assertKnowsIfConnectionClosed(connect: Connect): Promise<void>;
52
+ assertCanQueryPathWithDotSyntax(connect: Connect): Promise<void>;
53
+ assertCanQueryByGtLtGteLte(connect: Connect): Promise<void>;
54
+ assertCanFindWithNe(connect: Connect): Promise<void>;
55
+ assertCanFindWithIn(connect: Connect): Promise<void>;
56
+ assertCanCountOnId(connect: Connect): Promise<void>;
57
+ assertCanCount(connect: Connect): Promise<void>;
58
+ assertCanUpsertNull(connect: Connect): Promise<void>;
59
+ assertCanSaveAndGetNullAndUndefined(connect: Connect): Promise<void>;
60
+ assertSyncIndexesDoesNotRemoveExisting(connect: Connect): Promise<void>;
61
+ assertSyncIndexesRemovesExtraIndexes(connect: Connect): Promise<void>;
62
+ assertSyncIndexesSkipsExisting(connect: Connect): Promise<void>;
63
+ assertCantDropCompoundIndexThatDoesNotExist(connect: Connect): Promise<void>;
64
+ assertCanDropCompoundIndex(connect: Connect): Promise<void>;
65
+ assertCanDropIndex(connect: Connect): Promise<void>;
66
+ assertCanCreateMultiFieldIndex(connect: Connect, fields: any): Promise<void>;
67
+ assertCantCreateSameIndexTwice(connect: Connect): Promise<void>;
68
+ assertCanCreateIndex(connect: Connect): Promise<void>;
69
+ assertHasNoIndexToStart(connect: Connect): Promise<void>;
70
+ assertNestedFieldIndexUpdates(connect: Connect): Promise<void>;
71
+ assertUpsertWithUniqueIndex(connect: Connect): Promise<void>;
72
+ assertSyncIndexesHandlesRaceConditions(connect: Connect): Promise<void>;
73
+ assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected(connect: Connect): Promise<void>;
74
+ };
75
+ export default databaseAssertUtil;