@sprucelabs/data-stores 30.0.78 → 30.0.80

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.
@@ -1,6 +1,6 @@
1
1
  import { Database, IndexWithFilter, TestConnect } from '../types/database.types';
2
2
  import { DataStore } from '../types/stores.types';
3
- declare const methods: readonly ["assertThrowsWithInvalidConnectionString", "assertThrowsWhenCantConnect", "assertThrowsWithBadDatabaseName", "assertKnowsIfConnectionClosed", "assertCanSortDesc", "assertCanSortAsc", "assertCanSortById", "assertCanQueryWithOr", "assertGeneratesIdDifferentEachTime", "assertInsertingGeneratesId", "assertCanCreateMany", "assertCanCreateWithObjectField", "assertCanCountOnId", "assertCanCount", "assertThrowsWhenUpdatingRecordNotFound", "assertCanUpdate", "assertCanUpdateMany", "assertCanPushOntoArrayValue", "assertCanUpdateWithObjectField", "assertCanUpdateFieldInObjectFieldWithTargettedWhere", "assertCanSaveAndGetNullAndUndefined", "assertUpdateReturnsMatchedCounts", "assertCanUpsertOne", "assertCanUpsertNull", "assertCanPushToArrayOnUpsert", "assertCanSyncUniqueIndexesWithFilterExpression", "assertEmptyDatabaseReturnsEmptyArray", "assertFindOneOnEmptyDatabaseReturnsNull", "assertCanLimitResults", "assertCanLimitResultsToZero", "assertCanFindWithBooleanField", "assertCanQueryByGtLtGteLteNe", "assertCanQueryPathWithDotSyntax", "assertCanReturnOnlySelectFields", "assertCanSearchByRegex", "assertCanFindWithNe", "assertCanFindWithIn", "assertCanDeleteRecord", "assertCanDeleteOne", "assertHasNoUniqueIndexToStart", "assertCanCreateUniqueIndex", "assertCanCreateMultiFieldUniqueIndex", "assertCantCreateUniqueIndexTwice", "assertCanDropUniqueIndex", "assertCanDropCompoundUniqueIndex", "assertCantDropUniqueIndexThatDoesntExist", "assertCantDropIndexWhenNoIndexExists", "assertCantDropCompoundUniqueIndexThatDoesntExist", "assertSyncingUniqueIndexesAddsMissingIndexes", "assertSyncingUniqueIndexesSkipsExistingIndexes", "assertSyncingUniqueIndexesRemovesExtraIndexes", "assertSyncingUniqueIndexesIsRaceProof", "assertSyncingIndexesDoesNotAddAndRemove", "assertUniqueIndexBlocksDuplicates", "assertDuplicateKeyThrowsOnInsert", "assertSettingUniqueIndexViolationThrowsSpruceError", "assertCanCreateUniqueIndexOnNestedField", "assertUpsertWithUniqueIndex", "assertNestedFieldIndexUpdates", "assertHasNoIndexToStart", "assertCanCreateIndex", "assertCantCreateSameIndexTwice", "assertCanCreateMultiFieldIndex", "assertCanDropIndex", "assertCanDropCompoundIndex", "assertCantDropCompoundIndexThatDoesNotExist", "assertSyncIndexesSkipsExisting", "assertSyncIndexesRemovesExtraIndexes", "assertSyncIndexesHandlesRaceConditions", "assertSyncIndexesDoesNotRemoveExisting", "assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected", "assertCanSyncIndexesWithoutPartialThenAgainWithProperlyUpdates"];
3
+ declare const methods: readonly ["assertThrowsWithInvalidConnectionString", "assertThrowsWhenCantConnect", "assertThrowsWithBadDatabaseName", "assertKnowsIfConnectionClosed", "assertCanSortDesc", "assertCanSortAsc", "assertCanSortById", "assertCanQueryWithOr", "assertGeneratesIdDifferentEachTime", "assertInsertingGeneratesId", "assertCanCreateMany", "assertCanCreateWithObjectField", "assertCanCountOnId", "assertCanCount", "assertThrowsWhenUpdatingRecordNotFound", "assertCanUpdate", "assertCanUpdateMany", "assertCanPushOntoArrayValue", "assertCanUpdateWithObjectField", "assertCanUpdateFieldInObjectFieldWithTargettedWhere", "assertCanSaveAndGetNullAndUndefined", "assertUpdateReturnsMatchedCounts", "assertCanUpsertOne", "assertCanUpsertNull", "assertCanPushToArrayOnUpsert", "assertCanSyncUniqueIndexesWithFilterExpression", "assertEmptyDatabaseReturnsEmptyArray", "assertFindOneOnEmptyDatabaseReturnsNull", "assertCanLimitResults", "assertCanLimitResultsToZero", "assertCanFindWithBooleanField", "assertCanQueryByGtLtGteLteNe", "assertCanQueryPathWithDotSyntax", "assertCanReturnOnlySelectFields", "assertCanSearchByRegex", "assertCanFindWithNe", "assertCanFindWithIn", "assertCanFindOrWithBadIdField", "assertCanDeleteRecord", "assertCanDeleteOne", "assertHasNoUniqueIndexToStart", "assertCanCreateUniqueIndex", "assertCanCreateMultiFieldUniqueIndex", "assertCantCreateUniqueIndexTwice", "assertCanDropUniqueIndex", "assertCanDropCompoundUniqueIndex", "assertCantDropUniqueIndexThatDoesntExist", "assertCantDropIndexWhenNoIndexExists", "assertCantDropCompoundUniqueIndexThatDoesntExist", "assertSyncingUniqueIndexesAddsMissingIndexes", "assertSyncingUniqueIndexesSkipsExistingIndexes", "assertSyncingUniqueIndexesRemovesExtraIndexes", "assertSyncingUniqueIndexesIsRaceProof", "assertSyncingIndexesDoesNotAddAndRemove", "assertUniqueIndexBlocksDuplicates", "assertDuplicateKeyThrowsOnInsert", "assertSettingUniqueIndexViolationThrowsSpruceError", "assertCanCreateUniqueIndexOnNestedField", "assertUpsertWithUniqueIndex", "assertNestedFieldIndexUpdates", "assertHasNoIndexToStart", "assertCanCreateIndex", "assertCantCreateSameIndexTwice", "assertCanCreateMultiFieldIndex", "assertCanDropIndex", "assertCanDropCompoundIndex", "assertCantDropCompoundIndexThatDoesNotExist", "assertSyncIndexesSkipsExisting", "assertSyncIndexesRemovesExtraIndexes", "assertSyncIndexesHandlesRaceConditions", "assertSyncIndexesDoesNotRemoveExisting", "assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected", "assertCanSyncIndexesWithoutPartialThenAgainWithProperlyUpdates"];
4
4
  type OriginalMethods = (typeof methods)[number];
5
5
  type BangMethods = `!${OriginalMethods}`;
6
6
  export type DatabaseAssertionName = OriginalMethods | BangMethods;
@@ -61,6 +61,7 @@ declare const databaseAssertUtil: {
61
61
  assertCanQueryByGtLtGteLteNe(connect: TestConnect): Promise<void>;
62
62
  assertCanFindWithNe(connect: TestConnect): Promise<void>;
63
63
  assertCanFindWithIn(connect: TestConnect): Promise<void>;
64
+ assertCanFindOrWithBadIdField(connect: TestConnect): Promise<void>;
64
65
  assertCanFindWithBooleanField(connect: TestConnect): Promise<void>;
65
66
  assertCanCountOnId(connect: TestConnect): Promise<void>;
66
67
  assertCanCount(connect: TestConnect): Promise<void>;
@@ -55,6 +55,7 @@ const methods = [
55
55
  'assertCanSearchByRegex',
56
56
  'assertCanFindWithNe',
57
57
  'assertCanFindWithIn',
58
+ 'assertCanFindOrWithBadIdField',
58
59
  //deleting
59
60
  'assertCanDeleteRecord',
60
61
  'assertCanDeleteOne',
@@ -1332,6 +1333,23 @@ const databaseAssertUtil = {
1332
1333
  yield this.shutdown(db);
1333
1334
  });
1334
1335
  },
1336
+ assertCanFindOrWithBadIdField(connect) {
1337
+ return __awaiter(this, void 0, void 0, function* () {
1338
+ const db = yield connectToDabatase(connect);
1339
+ const record1 = yield db.createOne(this.collectionName, {
1340
+ name: 'bar',
1341
+ otherField: 'world',
1342
+ });
1343
+ yield db.createOne(this.collectionName, {
1344
+ name: 'bar2',
1345
+ otherField: 'world',
1346
+ });
1347
+ const match1 = yield db.findOne(this.collectionName, {
1348
+ $or: [{ id: '<not-an-id>' }, { name: 'bar' }],
1349
+ });
1350
+ assert.isEqualDeep(match1, record1, 'Finding with $or did not return the expected result. First case in $or is a bad id, second should match the record.');
1351
+ });
1352
+ },
1335
1353
  assertCanFindWithBooleanField(connect) {
1336
1354
  return __awaiter(this, void 0, void 0, function* () {
1337
1355
  const db = yield connectToDabatase(connect);
@@ -33,9 +33,14 @@ const mongoUtil = {
33
33
  normalizedValues.$or = $or.map((o) => this.mapQuery(o, options));
34
34
  }
35
35
  else if (typeof id === 'string') {
36
- normalizedValues._id = !shouldTransformIdToObjectId
37
- ? id
38
- : new ObjectId(id);
36
+ try {
37
+ normalizedValues._id = !shouldTransformIdToObjectId
38
+ ? id
39
+ : new ObjectId(id);
40
+ }
41
+ catch (err) {
42
+ normalizedValues._id = id;
43
+ }
39
44
  }
40
45
  else if (id) {
41
46
  normalizedValues._id = mapNestedIdValues(id, options);
@@ -1,6 +1,6 @@
1
1
  import { Database, IndexWithFilter, TestConnect } from '../types/database.types';
2
2
  import { DataStore } from '../types/stores.types';
3
- declare const methods: readonly ["assertThrowsWithInvalidConnectionString", "assertThrowsWhenCantConnect", "assertThrowsWithBadDatabaseName", "assertKnowsIfConnectionClosed", "assertCanSortDesc", "assertCanSortAsc", "assertCanSortById", "assertCanQueryWithOr", "assertGeneratesIdDifferentEachTime", "assertInsertingGeneratesId", "assertCanCreateMany", "assertCanCreateWithObjectField", "assertCanCountOnId", "assertCanCount", "assertThrowsWhenUpdatingRecordNotFound", "assertCanUpdate", "assertCanUpdateMany", "assertCanPushOntoArrayValue", "assertCanUpdateWithObjectField", "assertCanUpdateFieldInObjectFieldWithTargettedWhere", "assertCanSaveAndGetNullAndUndefined", "assertUpdateReturnsMatchedCounts", "assertCanUpsertOne", "assertCanUpsertNull", "assertCanPushToArrayOnUpsert", "assertCanSyncUniqueIndexesWithFilterExpression", "assertEmptyDatabaseReturnsEmptyArray", "assertFindOneOnEmptyDatabaseReturnsNull", "assertCanLimitResults", "assertCanLimitResultsToZero", "assertCanFindWithBooleanField", "assertCanQueryByGtLtGteLteNe", "assertCanQueryPathWithDotSyntax", "assertCanReturnOnlySelectFields", "assertCanSearchByRegex", "assertCanFindWithNe", "assertCanFindWithIn", "assertCanDeleteRecord", "assertCanDeleteOne", "assertHasNoUniqueIndexToStart", "assertCanCreateUniqueIndex", "assertCanCreateMultiFieldUniqueIndex", "assertCantCreateUniqueIndexTwice", "assertCanDropUniqueIndex", "assertCanDropCompoundUniqueIndex", "assertCantDropUniqueIndexThatDoesntExist", "assertCantDropIndexWhenNoIndexExists", "assertCantDropCompoundUniqueIndexThatDoesntExist", "assertSyncingUniqueIndexesAddsMissingIndexes", "assertSyncingUniqueIndexesSkipsExistingIndexes", "assertSyncingUniqueIndexesRemovesExtraIndexes", "assertSyncingUniqueIndexesIsRaceProof", "assertSyncingIndexesDoesNotAddAndRemove", "assertUniqueIndexBlocksDuplicates", "assertDuplicateKeyThrowsOnInsert", "assertSettingUniqueIndexViolationThrowsSpruceError", "assertCanCreateUniqueIndexOnNestedField", "assertUpsertWithUniqueIndex", "assertNestedFieldIndexUpdates", "assertHasNoIndexToStart", "assertCanCreateIndex", "assertCantCreateSameIndexTwice", "assertCanCreateMultiFieldIndex", "assertCanDropIndex", "assertCanDropCompoundIndex", "assertCantDropCompoundIndexThatDoesNotExist", "assertSyncIndexesSkipsExisting", "assertSyncIndexesRemovesExtraIndexes", "assertSyncIndexesHandlesRaceConditions", "assertSyncIndexesDoesNotRemoveExisting", "assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected", "assertCanSyncIndexesWithoutPartialThenAgainWithProperlyUpdates"];
3
+ declare const methods: readonly ["assertThrowsWithInvalidConnectionString", "assertThrowsWhenCantConnect", "assertThrowsWithBadDatabaseName", "assertKnowsIfConnectionClosed", "assertCanSortDesc", "assertCanSortAsc", "assertCanSortById", "assertCanQueryWithOr", "assertGeneratesIdDifferentEachTime", "assertInsertingGeneratesId", "assertCanCreateMany", "assertCanCreateWithObjectField", "assertCanCountOnId", "assertCanCount", "assertThrowsWhenUpdatingRecordNotFound", "assertCanUpdate", "assertCanUpdateMany", "assertCanPushOntoArrayValue", "assertCanUpdateWithObjectField", "assertCanUpdateFieldInObjectFieldWithTargettedWhere", "assertCanSaveAndGetNullAndUndefined", "assertUpdateReturnsMatchedCounts", "assertCanUpsertOne", "assertCanUpsertNull", "assertCanPushToArrayOnUpsert", "assertCanSyncUniqueIndexesWithFilterExpression", "assertEmptyDatabaseReturnsEmptyArray", "assertFindOneOnEmptyDatabaseReturnsNull", "assertCanLimitResults", "assertCanLimitResultsToZero", "assertCanFindWithBooleanField", "assertCanQueryByGtLtGteLteNe", "assertCanQueryPathWithDotSyntax", "assertCanReturnOnlySelectFields", "assertCanSearchByRegex", "assertCanFindWithNe", "assertCanFindWithIn", "assertCanFindOrWithBadIdField", "assertCanDeleteRecord", "assertCanDeleteOne", "assertHasNoUniqueIndexToStart", "assertCanCreateUniqueIndex", "assertCanCreateMultiFieldUniqueIndex", "assertCantCreateUniqueIndexTwice", "assertCanDropUniqueIndex", "assertCanDropCompoundUniqueIndex", "assertCantDropUniqueIndexThatDoesntExist", "assertCantDropIndexWhenNoIndexExists", "assertCantDropCompoundUniqueIndexThatDoesntExist", "assertSyncingUniqueIndexesAddsMissingIndexes", "assertSyncingUniqueIndexesSkipsExistingIndexes", "assertSyncingUniqueIndexesRemovesExtraIndexes", "assertSyncingUniqueIndexesIsRaceProof", "assertSyncingIndexesDoesNotAddAndRemove", "assertUniqueIndexBlocksDuplicates", "assertDuplicateKeyThrowsOnInsert", "assertSettingUniqueIndexViolationThrowsSpruceError", "assertCanCreateUniqueIndexOnNestedField", "assertUpsertWithUniqueIndex", "assertNestedFieldIndexUpdates", "assertHasNoIndexToStart", "assertCanCreateIndex", "assertCantCreateSameIndexTwice", "assertCanCreateMultiFieldIndex", "assertCanDropIndex", "assertCanDropCompoundIndex", "assertCantDropCompoundIndexThatDoesNotExist", "assertSyncIndexesSkipsExisting", "assertSyncIndexesRemovesExtraIndexes", "assertSyncIndexesHandlesRaceConditions", "assertSyncIndexesDoesNotRemoveExisting", "assertDuplicateFieldsWithMultipleUniqueIndexesWorkAsExpected", "assertCanSyncIndexesWithoutPartialThenAgainWithProperlyUpdates"];
4
4
  type OriginalMethods = (typeof methods)[number];
5
5
  type BangMethods = `!${OriginalMethods}`;
6
6
  export type DatabaseAssertionName = OriginalMethods | BangMethods;
@@ -61,6 +61,7 @@ declare const databaseAssertUtil: {
61
61
  assertCanQueryByGtLtGteLteNe(connect: TestConnect): Promise<void>;
62
62
  assertCanFindWithNe(connect: TestConnect): Promise<void>;
63
63
  assertCanFindWithIn(connect: TestConnect): Promise<void>;
64
+ assertCanFindOrWithBadIdField(connect: TestConnect): Promise<void>;
64
65
  assertCanFindWithBooleanField(connect: TestConnect): Promise<void>;
65
66
  assertCanCountOnId(connect: TestConnect): Promise<void>;
66
67
  assertCanCount(connect: TestConnect): Promise<void>;
@@ -51,6 +51,7 @@ const methods = [
51
51
  'assertCanSearchByRegex',
52
52
  'assertCanFindWithNe',
53
53
  'assertCanFindWithIn',
54
+ 'assertCanFindOrWithBadIdField',
54
55
  //deleting
55
56
  'assertCanDeleteRecord',
56
57
  'assertCanDeleteOne',
@@ -1220,6 +1221,21 @@ const databaseAssertUtil = {
1220
1221
  test_utils_1.assert.isLength(results, 3);
1221
1222
  await this.shutdown(db);
1222
1223
  },
1224
+ async assertCanFindOrWithBadIdField(connect) {
1225
+ const db = await connectToDabatase(connect);
1226
+ const record1 = await db.createOne(this.collectionName, {
1227
+ name: 'bar',
1228
+ otherField: 'world',
1229
+ });
1230
+ await db.createOne(this.collectionName, {
1231
+ name: 'bar2',
1232
+ otherField: 'world',
1233
+ });
1234
+ const match1 = await db.findOne(this.collectionName, {
1235
+ $or: [{ id: '<not-an-id>' }, { name: 'bar' }],
1236
+ });
1237
+ test_utils_1.assert.isEqualDeep(match1, record1, 'Finding with $or did not return the expected result. First case in $or is a bad id, second should match the record.');
1238
+ },
1223
1239
  async assertCanFindWithBooleanField(connect) {
1224
1240
  const db = await connectToDabatase(connect);
1225
1241
  const first = await db.createOne(this.collectionName, {
@@ -38,9 +38,14 @@ const mongoUtil = {
38
38
  normalizedValues.$or = $or.map((o) => this.mapQuery(o, options));
39
39
  }
40
40
  else if (typeof id === 'string') {
41
- normalizedValues._id = !shouldTransformIdToObjectId
42
- ? id
43
- : new mongodb_1.ObjectId(id);
41
+ try {
42
+ normalizedValues._id = !shouldTransformIdToObjectId
43
+ ? id
44
+ : new mongodb_1.ObjectId(id);
45
+ }
46
+ catch (err) {
47
+ normalizedValues._id = id;
48
+ }
44
49
  }
45
50
  else if (id) {
46
51
  normalizedValues._id = mapNestedIdValues(id, options);
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "30.0.78",
6
+ "version": "30.0.80",
7
7
  "files": [
8
8
  "build/**/*",
9
9
  "!build/__tests__",
@@ -64,10 +64,10 @@
64
64
  },
65
65
  "dependencies": {
66
66
  "@seald-io/nedb": "^4.1.2",
67
- "@sprucelabs/error": "^7.1.26",
67
+ "@sprucelabs/error": "^7.1.27",
68
68
  "@sprucelabs/globby": "^2.0.506",
69
- "@sprucelabs/schema": "^32.1.57",
70
- "@sprucelabs/spruce-skill-utils": "^32.0.114",
69
+ "@sprucelabs/schema": "^32.1.58",
70
+ "@sprucelabs/spruce-skill-utils": "^32.0.115",
71
71
  "just-clone": "^6.2.0",
72
72
  "lodash": "^4.17.21",
73
73
  "mongodb": "^6.20.0"
@@ -78,7 +78,7 @@
78
78
  "@sprucelabs/resolve-path-aliases": "^3.0.27",
79
79
  "@sprucelabs/semantic-release": "^5.0.2",
80
80
  "@sprucelabs/test": "^10.0.23",
81
- "@sprucelabs/test-utils": "^6.0.92",
81
+ "@sprucelabs/test-utils": "^6.0.93",
82
82
  "@types/lodash": "^4.17.20",
83
83
  "@types/node": "^24.6.2",
84
84
  "chokidar-cli": "^3.0.0",