@lossless.org/client 1.2.0 → 1.4.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 (50) hide show
  1. package/.smartconfig.json +1 -0
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/classes.losslessorgclient.d.ts +2 -2
  4. package/dist_ts/core/drivers.js +3 -3
  5. package/dist_ts/nosqldb/classes.atomicdelete.js +3 -3
  6. package/dist_ts/nosqldb/classes.atomicfindoneandupdate.d.ts +20 -0
  7. package/dist_ts/nosqldb/classes.atomicfindoneandupdate.js +45 -2
  8. package/dist_ts/nosqldb/classes.atomicupdate.js +4 -4
  9. package/dist_ts/nosqldb/classes.collection.d.ts +37 -1
  10. package/dist_ts/nosqldb/classes.collection.js +152 -11
  11. package/dist_ts/nosqldb/classes.collectiontopology.d.ts +8 -0
  12. package/dist_ts/nosqldb/classes.collectiontopology.js +14 -3
  13. package/dist_ts/nosqldb/classes.cursor.d.ts +12 -1
  14. package/dist_ts/nosqldb/classes.cursor.js +20 -3
  15. package/dist_ts/nosqldb/classes.doc.d.ts +130 -11
  16. package/dist_ts/nosqldb/classes.doc.js +464 -89
  17. package/dist_ts/nosqldb/classes.namespaceinspection.js +2 -2
  18. package/dist_ts/nosqldb/classes.session.d.ts +15 -1
  19. package/dist_ts/nosqldb/classes.session.js +32 -6
  20. package/dist_ts/objectstorage/classes.directory.js +6 -3
  21. package/dist_ts/sqldb/classes.sqlconnection.d.ts +14 -1
  22. package/dist_ts/sqldb/classes.sqlconnection.js +1 -1
  23. package/dist_ts/sqldb/clickhouse/index.d.ts +3 -0
  24. package/dist_ts/sqldb/clickhouse/index.js +4 -1
  25. package/dist_ts/sqldb/index.d.ts +2 -5
  26. package/dist_ts/sqldb/index.js +3 -5
  27. package/dist_ts/sqldb/interfaces.d.ts +0 -12
  28. package/dist_ts/sqldb/interfaces.js +1 -1
  29. package/dist_ts/sqldb/mariadb/index.d.ts +6 -0
  30. package/dist_ts/sqldb/mariadb/index.js +5 -0
  31. package/package.json +12 -1
  32. package/readme.md +43 -6
  33. package/ts/00_commitinfo_data.ts +1 -1
  34. package/ts/classes.losslessorgclient.ts +2 -2
  35. package/ts/core/drivers.ts +2 -2
  36. package/ts/nosqldb/classes.atomicdelete.ts +2 -4
  37. package/ts/nosqldb/classes.atomicfindoneandupdate.ts +69 -2
  38. package/ts/nosqldb/classes.atomicupdate.ts +3 -6
  39. package/ts/nosqldb/classes.collection.ts +240 -8
  40. package/ts/nosqldb/classes.collectiontopology.ts +31 -1
  41. package/ts/nosqldb/classes.cursor.ts +22 -2
  42. package/ts/nosqldb/classes.doc.ts +769 -130
  43. package/ts/nosqldb/classes.namespaceinspection.ts +1 -1
  44. package/ts/nosqldb/classes.session.ts +52 -13
  45. package/ts/objectstorage/classes.directory.ts +5 -2
  46. package/ts/sqldb/classes.sqlconnection.ts +14 -1
  47. package/ts/sqldb/clickhouse/index.ts +5 -0
  48. package/ts/sqldb/index.ts +2 -5
  49. package/ts/sqldb/interfaces.ts +0 -12
  50. package/ts/sqldb/mariadb/index.ts +7 -0
package/.smartconfig.json CHANGED
@@ -13,6 +13,7 @@
13
13
  "release": {
14
14
  "preflight": {
15
15
  "test": true,
16
+ "testCommand": "pnpm run test:qualification",
16
17
  "build": true
17
18
  },
18
19
  "targets": {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@lossless.org/client',
6
- version: '1.2.0',
6
+ version: '1.4.0',
7
7
  description: 'One typed client for NoSQLDB, MongoDB, SQLDB, MariaDB, ClickHouse and S3 object storage.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDBGQUEwRjtDQUN4RyxDQUFBIn0=
@@ -1,8 +1,8 @@
1
1
  import type { NoSqlConnection, INoSqlConnectionOptions } from './nosqldb/classes.connection.js';
2
2
  import type { ObjectStorageConnection, IObjectStorageConnectionOptions } from './objectstorage/classes.connection.js';
3
- import type { SqlConnection } from './sqldb/classes.sqlconnection.js';
3
+ import type { SqlConnection, ISqlConnectionOptions } from './sqldb/classes.sqlconnection.js';
4
4
  import type { ClickHouseConnection } from './sqldb/classes.clickhouseconnection.js';
5
- import type { ISqlConnectionOptions, IClickHouseConnectionOptions } from './sqldb/interfaces.js';
5
+ import type { IClickHouseConnectionOptions } from './sqldb/interfaces.js';
6
6
  import type { IOperationOptions, IReadiness } from './core/interfaces.js';
7
7
  export interface ILosslessOrgClientOptions {
8
8
  nosqldb?: Record<string, INoSqlConnectionOptions>;
@@ -1,8 +1,8 @@
1
1
  import { LosslessClientError } from './classes.error.js';
2
2
  export const optionalDrivers = Object.freeze({
3
- mariadb: { package: 'mariadb', subpath: '@lossless.org/client/sqldb',
3
+ mariadb: { package: 'mariadb', subpath: '@lossless.org/client/sqldb/mariadb',
4
4
  usage: 'sqldb connections with backend "sqldb" or "mariadb"' },
5
- clickhouse: { package: '@clickhouse/client', subpath: '@lossless.org/client/sqldb',
5
+ clickhouse: { package: '@clickhouse/client', subpath: '@lossless.org/client/sqldb/clickhouse',
6
6
  usage: 'sqldb connections with backend "clickhouse"' },
7
7
  s3: { package: '@aws-sdk/client-s3', subpath: '@lossless.org/client/objectstorage',
8
8
  usage: 'objectstorage connections with backend "s3"' },
@@ -24,4 +24,4 @@ export const requireDriver = (backend) => (error) => {
24
24
  throw new LosslessClientError('driver_missing', `Install the optional peer dependency "${driver.package}" to use ${driver.usage} (${driver.subpath}). ` +
25
25
  `Run: pnpm add ${driver.package}`, { cause: error, retryability: 'permanent' });
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2NvcmUvZHJpdmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWV6RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQThELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdEcsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ2xFLEtBQUssRUFBRSxxREFBcUQsRUFBRTtJQUNoRSxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLDRCQUE0QjtRQUNoRixLQUFLLEVBQUUsNkNBQTZDLEVBQUU7SUFDeEQsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxvQ0FBb0M7UUFDaEYsS0FBSyxFQUFFLDZDQUE2QyxFQUFFO0NBQ3pELENBQUMsQ0FBQztBQUVILDBIQUEwSDtBQUMxSCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWMsRUFBRSxXQUFtQixFQUFXLEVBQUU7SUFDckUsTUFBTSxPQUFPLEdBQUcsS0FBaUUsQ0FBQztJQUNsRixPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxzQkFBc0I7UUFDekQsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBK0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFjLEVBQVMsRUFBRTtJQUMxRixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUFFLE1BQU0sS0FBSyxDQUFDO0lBQ3ZELE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFDNUMseUNBQXlDLE1BQU0sQ0FBQyxPQUFPLFlBQVksTUFBTSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsT0FBTyxLQUFLO1FBQ3ZHLGlCQUFpQixNQUFNLENBQUMsT0FBTyxFQUFFLEVBQ2pDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMifQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2NvcmUvZHJpdmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWV6RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQThELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdEcsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsb0NBQW9DO1FBQzFFLEtBQUssRUFBRSxxREFBcUQsRUFBRTtJQUNoRSxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLHVDQUF1QztRQUMzRixLQUFLLEVBQUUsNkNBQTZDLEVBQUU7SUFDeEQsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxvQ0FBb0M7UUFDaEYsS0FBSyxFQUFFLDZDQUE2QyxFQUFFO0NBQ3pELENBQUMsQ0FBQztBQUVILDBIQUEwSDtBQUMxSCxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWMsRUFBRSxXQUFtQixFQUFXLEVBQUU7SUFDckUsTUFBTSxPQUFPLEdBQUcsS0FBaUUsQ0FBQztJQUNsRixPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxzQkFBc0I7UUFDekQsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBK0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFjLEVBQVMsRUFBRTtJQUMxRixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUFFLE1BQU0sS0FBSyxDQUFDO0lBQ3ZELE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFDNUMseUNBQXlDLE1BQU0sQ0FBQyxPQUFPLFlBQVksTUFBTSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsT0FBTyxLQUFLO1FBQ3ZHLGlCQUFpQixNQUFNLENBQUMsT0FBTyxFQUFFLEVBQ2pDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMifQ==
@@ -11,7 +11,7 @@ export const executeAtomicDelete = async (collectionArg, filterArg, optsArg) =>
11
11
  return runWithOrdinarySmartdataSession(optsArg?.session, collectionArg.smartdataDb, {
12
12
  ordinaryWrite: true,
13
13
  prepared: collectionArg.isInitializedForCurrentDatabase(),
14
- preparationMessage: `Initialize collection "${collectionArg.collectionName}" before using an owned SmartData session.`,
14
+ collectionName: collectionArg.collectionName,
15
15
  }, async (rawSessionArg) => {
16
16
  await collectionArg.init();
17
17
  return collectionArg.mongoDbCollection.deleteOne(filterArg, {
@@ -32,7 +32,7 @@ export const executeAtomicDeleteMany = async (collectionArg, filterArg, optsArg)
32
32
  return runWithOrdinarySmartdataSession(optsArg?.session, collectionArg.smartdataDb, {
33
33
  ordinaryWrite: true,
34
34
  prepared: collectionArg.isInitializedForCurrentDatabase(),
35
- preparationMessage: `Initialize collection "${collectionArg.collectionName}" before using an owned SmartData session.`,
35
+ collectionName: collectionArg.collectionName,
36
36
  }, async (rawSessionArg) => {
37
37
  await collectionArg.init();
38
38
  return collectionArg.mongoDbCollection.deleteMany(filterArg, {
@@ -41,4 +41,4 @@ export const executeAtomicDeleteMany = async (collectionArg, filterArg, optsArg)
41
41
  });
42
42
  });
43
43
  };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdG9taWNkZWxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9ub3NxbGRiL2NsYXNzZXMuYXRvbWljZGVsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFDTCwrQkFBK0IsR0FFaEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQ3RDLGFBQXFDLEVBQ3JDLFNBQTJELEVBQzNELE9BR0MsRUFDc0MsRUFBRTtJQUN6QyxPQUFPLCtCQUErQixDQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUNoQixhQUFhLENBQUMsV0FBVyxFQUN6QjtRQUNFLGFBQWEsRUFBRSxJQUFJO1FBQ25CLFFBQVEsRUFBRSxhQUFhLENBQUMsK0JBQStCLEVBQUU7UUFDekQsa0JBQWtCLEVBQ2hCLDBCQUEwQixhQUFhLENBQUMsY0FBYyw0Q0FBNEM7S0FDckcsRUFDRCxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUU7UUFDdEIsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsT0FBTyxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUM5QyxTQUFTLEVBQ1Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVM7U0FDOUIsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUMxQyxhQUFxQyxFQUNyQyxTQUEyRCxFQUMzRCxPQUdDLEVBQ3NDLEVBQUU7SUFDekMsT0FBTywrQkFBK0IsQ0FDcEMsT0FBTyxFQUFFLE9BQU8sRUFDaEIsYUFBYSxDQUFDLFdBQVcsRUFDekI7UUFDRSxhQUFhLEVBQUUsSUFBSTtRQUNuQixRQUFRLEVBQUUsYUFBYSxDQUFDLCtCQUErQixFQUFFO1FBQ3pELGtCQUFrQixFQUNoQiwwQkFBMEIsYUFBYSxDQUFDLGNBQWMsNENBQTRDO0tBQ3JHLEVBQ0QsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFO1FBQ3RCLE1BQU0sYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLE9BQU8sYUFBYSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDL0MsU0FBUyxFQUNUO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTO1NBQzlCLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdG9taWNkZWxldGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9ub3NxbGRiL2NsYXNzZXMuYXRvbWljZGVsZXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFDTCwrQkFBK0IsR0FFaEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQ3RDLGFBQXFDLEVBQ3JDLFNBQTJELEVBQzNELE9BR0MsRUFDc0MsRUFBRTtJQUN6QyxPQUFPLCtCQUErQixDQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUNoQixhQUFhLENBQUMsV0FBVyxFQUN6QjtRQUNFLGFBQWEsRUFBRSxJQUFJO1FBQ25CLFFBQVEsRUFBRSxhQUFhLENBQUMsK0JBQStCLEVBQUU7UUFDekQsY0FBYyxFQUFFLGFBQWEsQ0FBQyxjQUFjO0tBQzdDLEVBQ0QsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFO1FBQ3RCLE1BQU0sYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLE9BQU8sYUFBYSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FDOUMsU0FBUyxFQUNUO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTO1NBQzlCLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssRUFDMUMsYUFBcUMsRUFDckMsU0FBMkQsRUFDM0QsT0FHQyxFQUNzQyxFQUFFO0lBQ3pDLE9BQU8sK0JBQStCLENBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLGFBQWEsQ0FBQyxXQUFXLEVBQ3pCO1FBQ0UsYUFBYSxFQUFFLElBQUk7UUFDbkIsUUFBUSxFQUFFLGFBQWEsQ0FBQywrQkFBK0IsRUFBRTtRQUN6RCxjQUFjLEVBQUUsYUFBYSxDQUFDLGNBQWM7S0FDN0MsRUFDRCxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUU7UUFDdEIsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsT0FBTyxhQUFhLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUMvQyxTQUFTLEVBQ1Q7WUFDRSxPQUFPLEVBQUUsYUFBYTtZQUN0QixTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVM7U0FDOUIsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -12,6 +12,13 @@ export type TAtomicFindOneAndUpdateExecutionResult = {
12
12
  status: 'not_matched';
13
13
  document: null;
14
14
  };
15
+ export type TAtomicFindOneAndReplaceExecutionResult = {
16
+ status: 'matched';
17
+ document: TRawDocument;
18
+ } | {
19
+ status: 'not_matched';
20
+ document: null;
21
+ };
15
22
  /**
16
23
  * Executes a model-validated atomic find-one-and-update against MongoDB.
17
24
  *
@@ -24,4 +31,17 @@ export declare const executeAtomicFindOneAndUpdate: <T>(collectionArg: Smartdata
24
31
  sort?: Record<string, 1 | -1>;
25
32
  session?: TSmartdataOrdinarySession;
26
33
  }) => Promise<TAtomicFindOneAndUpdateExecutionResult>;
34
+ /**
35
+ * Executes a model-validated atomic find-one-and-replace against MongoDB.
36
+ *
37
+ * This helper is package-internal. `SmartDataDbDoc.atomicFindOneAndReplace()`
38
+ * owns the public API and must validate the filter and the replacement body
39
+ * before calling this raw persistence boundary. The replacement never carries
40
+ * a stored `_id`, so the matched document keeps its own primary key while its
41
+ * declared identity changes.
42
+ */
43
+ export declare const executeAtomicFindOneAndReplace: <T>(collectionArg: SmartdataCollection<T>, filterArg: plugins.mongodb.Filter<plugins.mongodb.Document>, replacementArg: plugins.mongodb.WithoutId<plugins.mongodb.Document>, optionsArg: {
44
+ returnDocument: "before" | "after";
45
+ session?: TSmartdataOrdinarySession;
46
+ }) => Promise<TAtomicFindOneAndReplaceExecutionResult>;
27
47
  export {};
@@ -50,7 +50,7 @@ export const executeAtomicFindOneAndUpdate = async (collectionArg, filterArg, up
50
50
  return runWithOrdinarySmartdataSession(optionsArg.session, collectionArg.smartdataDb, {
51
51
  ordinaryWrite: true,
52
52
  prepared: collectionArg.isInitializedForCurrentDatabase(),
53
- preparationMessage: `Initialize collection "${collectionArg.collectionName}" before using an owned SmartData session.`,
53
+ collectionName: collectionArg.collectionName,
54
54
  }, async (rawSessionArg) => {
55
55
  if (policy && !rawSessionArg?.inTransaction()) {
56
56
  throw new SmartdataPersistenceError('unsupported_operation', 'Validated ordinary updates require an active owned transaction.');
@@ -83,4 +83,47 @@ export const executeAtomicFindOneAndUpdate = async (collectionArg, filterArg, up
83
83
  }
84
84
  });
85
85
  };
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdG9taWNmaW5kb25lYW5kdXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbm9zcWxkYi9jbGFzc2VzLmF0b21pY2ZpbmRvbmVhbmR1cGRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyx5QkFBeUIsR0FDMUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGtCQUFrQixFQUNsQix3QkFBd0IsR0FHekIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNsRixNQUFNLGlCQUFpQixHQUFHLEdBQVUsRUFBRTtJQUNwQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixtRUFBbUUsQ0FDcEUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQ3JCLFNBQWlFLEVBQ2pFLFVBR0MsRUFDdUMsRUFBRTtJQUMxQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQzNDLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2hFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0UsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUVuQyxJQUNFLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQztXQUNiLFFBQVEsQ0FBQyxlQUFlLEtBQUssSUFBSTtXQUNqQyxDQUFDLFdBQVc7V0FDWixTQUFTLENBQUMsS0FBSyxLQUFLLElBQUksRUFDM0IsQ0FB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
86
+ /**
87
+ * Executes a model-validated atomic find-one-and-replace against MongoDB.
88
+ *
89
+ * This helper is package-internal. `SmartDataDbDoc.atomicFindOneAndReplace()`
90
+ * owns the public API and must validate the filter and the replacement body
91
+ * before calling this raw persistence boundary. The replacement never carries
92
+ * a stored `_id`, so the matched document keeps its own primary key while its
93
+ * declared identity changes.
94
+ */
95
+ export const executeAtomicFindOneAndReplace = async (collectionArg, filterArg, replacementArg, optionsArg) => {
96
+ if (collectionArg.getBoundModelSchema()?.ordinaryPersistence) {
97
+ // A validated ordinary document owns its stored shape and primary key, so
98
+ // it is written through its own postimage path, never replaced wholesale.
99
+ throw new SmartdataPersistenceError('unsupported_operation', 'Validated ordinary models require transactional postimage updates.');
100
+ }
101
+ return runWithOrdinarySmartdataSession(optionsArg.session, collectionArg.smartdataDb, {
102
+ ordinaryWrite: true,
103
+ prepared: collectionArg.isInitializedForCurrentDatabase(),
104
+ collectionName: collectionArg.collectionName,
105
+ }, async (rawSessionArg) => {
106
+ await collectionArg.init();
107
+ try {
108
+ const result = await collectionArg.mongoDbCollection.findOneAndReplace(filterArg, replacementArg, {
109
+ includeResultMetadata: true,
110
+ returnDocument: optionsArg.returnDocument,
111
+ upsert: false,
112
+ session: rawSessionArg,
113
+ });
114
+ const classified = classifyResult(result, {
115
+ returnDocument: optionsArg.returnDocument,
116
+ upsert: false,
117
+ });
118
+ if (classified.status === 'upserted') {
119
+ // Unreachable: this operation never requests an upsert.
120
+ return unsupportedResult();
121
+ }
122
+ return classified;
123
+ }
124
+ catch (errorArg) {
125
+ return normalizeOrdinaryPersistenceError(errorArg, `Atomic find-one-and-replace conflicts with a unique index in collection "${collectionArg.collectionName}".`);
126
+ }
127
+ });
128
+ };
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdG9taWNmaW5kb25lYW5kdXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbm9zcWxkYi9jbGFzc2VzLmF0b21pY2ZpbmRvbmVhbmR1cGRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxFQUNMLGlDQUFpQyxFQUNqQyx5QkFBeUIsR0FDMUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGtCQUFrQixFQUNsQix3QkFBd0IsR0FHekIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQWFsRixNQUFNLGlCQUFpQixHQUFHLEdBQVUsRUFBRTtJQUNwQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixtRUFBbUUsQ0FDcEUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQ3JCLFNBQWlFLEVBQ2pFLFVBR0MsRUFDdUMsRUFBRTtJQUMxQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQzNDLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2hFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0UsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUVuQyxJQUNFLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQztXQUNiLFFBQVEsQ0FBQyxlQUFlLEtBQUssSUFBSTtXQUNqQyxDQUFDLFdBQVc7V0FDWixTQUFTLENBQUMsS0FBSyxLQUFLLElBQUksRUFDM0IsQ0FB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
@@ -12,7 +12,7 @@ export const executeAtomicUpdate = async (collectionArg, filterArg, updateArg, o
12
12
  return runWithOrdinarySmartdataSession(optsArg?.session, collectionArg.smartdataDb, {
13
13
  ordinaryWrite: true,
14
14
  prepared: collectionArg.isInitializedForCurrentDatabase(),
15
- preparationMessage: `Initialize collection "${collectionArg.collectionName}" before using an owned SmartData session.`,
15
+ collectionName: collectionArg.collectionName,
16
16
  }, async (rawSessionArg) => {
17
17
  await collectionArg.init();
18
18
  try {
@@ -39,7 +39,7 @@ export const executeAtomicUpsertMany = async (collectionArg, operationsArg, opts
39
39
  return runWithOrdinarySmartdataSession(optsArg?.session, collectionArg.smartdataDb, {
40
40
  ordinaryWrite: true,
41
41
  prepared: collectionArg.isInitializedForCurrentDatabase(),
42
- preparationMessage: `Initialize collection "${collectionArg.collectionName}" before using an owned SmartData session.`,
42
+ collectionName: collectionArg.collectionName,
43
43
  }, async (rawSessionArg) => {
44
44
  await collectionArg.init();
45
45
  try {
@@ -79,7 +79,7 @@ export const executeAtomicUpdateMany = async (collectionArg, filterArg, updateAr
79
79
  return runWithOrdinarySmartdataSession(optsArg?.session, collectionArg.smartdataDb, {
80
80
  ordinaryWrite: true,
81
81
  prepared: collectionArg.isInitializedForCurrentDatabase(),
82
- preparationMessage: `Initialize collection "${collectionArg.collectionName}" before using an owned SmartData session.`,
82
+ collectionName: collectionArg.collectionName,
83
83
  }, async (rawSessionArg) => {
84
84
  await collectionArg.init();
85
85
  try {
@@ -92,4 +92,4 @@ export const executeAtomicUpdateMany = async (collectionArg, filterArg, updateAr
92
92
  }
93
93
  });
94
94
  };
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdG9taWN1cGRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9ub3NxbGRiL2NsYXNzZXMuYXRvbWljdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdFLE9BQU8sRUFDTCwrQkFBK0IsR0FFaEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQ3RDLGFBQXFDLEVBQ3JDLFNBQTJELEVBQzNELFNBQWlFLEVBQ2pFLE9BR0MsRUFDc0MsRUFBRTtJQUN6QyxPQUFPLCtCQUErQixDQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUNoQixhQUFhLENBQUMsV0FBVyxFQUN6QjtRQUNFLGFBQWEsRUFBRSxJQUFJO1FBQ25CLFFBQVEsRUFBRSxhQUFhLENBQUMsK0JBQStCLEVBQUU7UUFDekQsa0JBQWtCLEVBQ2hCLDBCQUEwQixhQUFhLENBQUMsY0FBYyw0Q0FBNEM7S0FDckcsRUFDRCxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUU7UUFDdEIsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQ3BELFNBQVMsRUFDVCxTQUFTLEVBQ1Q7Z0JBQ0UsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssSUFBSTtnQkFDaEMsT0FBTyxFQUFFLGFBQWE7YUFDdkIsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxpQ0FBaUMsQ0FDdEMsUUFBUSxFQUNSLDhEQUE4RCxhQUFhLENBQUMsY0FBYyxJQUFJLENBQy9GLENBQUM7UUFDSixDQUFD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
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdG9taWN1cGRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9ub3NxbGRiL2NsYXNzZXMuYXRvbWljdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdFLE9BQU8sRUFDTCwrQkFBK0IsR0FFaEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQ3RDLGFBQXFDLEVBQ3JDLFNBQTJELEVBQzNELFNBQWlFLEVBQ2pFLE9BR0MsRUFDc0MsRUFBRTtJQUN6QyxPQUFPLCtCQUErQixDQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUNoQixhQUFhLENBQUMsV0FBVyxFQUN6QjtRQUNFLGFBQWEsRUFBRSxJQUFJO1FBQ25CLFFBQVEsRUFBRSxhQUFhLENBQUMsK0JBQStCLEVBQUU7UUFDekQsY0FBYyxFQUFFLGFBQWEsQ0FBQyxjQUFjO0tBQzdDLEVBQ0QsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFO1FBQ3RCLE1BQU0sYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUNwRCxTQUFTLEVBQ1QsU0FBUyxFQUNUO2dCQUNFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxLQUFLLElBQUk7Z0JBQ2hDLE9BQU8sRUFBRSxhQUFhO2FBQ3ZCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8saUNBQWlDLENBQ3RDLFFBQVEsRUFDUiw4REFBOEQsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUMvRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMsQ0FDRixD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
@@ -30,6 +30,14 @@ export interface ICollectionBindingOptions {
30
30
  * `_id === document[field]`.
31
31
  */
32
32
  identityAsDocumentId?: string;
33
+ /**
34
+ * Names of installed indexes this model accepts without declaring them —
35
+ * typically migration-owned indexes SmartData does not express, such as
36
+ * partial or filtered unique indexes. A tolerated index is never created,
37
+ * never dropped and never verified beyond its name, and it no longer makes
38
+ * the collection topology divergent.
39
+ */
40
+ toleratedIndexNames?: ReadonlyArray<string>;
33
41
  }
34
42
  export type TCollectionModelIndexDirection = 1 | -1 | 'text';
35
43
  export interface ICollectionModelIndexOptions {
@@ -65,6 +73,16 @@ export interface ICollectionModelConfig<TModel extends object = any> {
65
73
  * numeric-field constraint.
66
74
  */
67
75
  numericFields?: ReadonlyArray<TSmartdataNumericDocumentPath<TModel>>;
76
+ /**
77
+ * Persisted top-level fields that only atomic operations may overwrite. Every
78
+ * write that creates a document stores them — `insert()`, `insertMany()`,
79
+ * `insertManyIfAbsent()` and the insert branch of `save()` — and they read
80
+ * like any other declared field, but a `save()` that matches a stored
81
+ * document leaves them untouched, so a stale instance cannot overwrite a
82
+ * value concurrent atomic writers own. An identity field cannot be
83
+ * atomic-only.
84
+ */
85
+ atomicOnlyFields?: ReadonlyArray<keyof TModel & string>;
68
86
  /**
69
87
  * Persisted string identity fields with @unI()-equivalent selector and
70
88
  * immutability semantics. Each field requires an explicit single-field,
@@ -86,12 +104,23 @@ export interface ICollectionModelConfig<TModel extends object = any> {
86
104
  * Stable named MongoDB indexes. Object property order defines key order.
87
105
  */
88
106
  indexes?: ReadonlyArray<ICollectionModelIndex>;
107
+ /**
108
+ * Names of installed indexes this model does not declare but accepts —
109
+ * typically indexes a migration owns, such as partial or filtered unique
110
+ * indexes SmartData does not express. A tolerated index is never created,
111
+ * never dropped and never verified beyond its name, and it no longer makes
112
+ * the collection topology divergent. Every undeclared index outside this
113
+ * list still does.
114
+ */
115
+ toleratedIndexNames?: ReadonlyArray<string>;
89
116
  }
90
117
  export interface INormalizedCollectionModelSchema {
91
118
  readonly ordinaryPersistence?: IOrdinaryPersistencePolicy;
92
119
  readonly collectionName: string;
93
120
  readonly persistedFields: readonly string[];
94
121
  readonly numericFields: readonly string[];
122
+ /** Declared persisted fields a matching instance `save()` never overwrites. */
123
+ readonly atomicOnlyFields: readonly string[];
95
124
  readonly identityFields: readonly string[];
96
125
  /** Declared identity field stored as the document `_id`, if any. */
97
126
  readonly identityAsDocumentId?: string;
@@ -102,6 +131,8 @@ export interface INormalizedCollectionModelSchema {
102
131
  readonly key: ReadonlyArray<readonly [string, TCollectionModelIndexDirection]>;
103
132
  readonly options: Readonly<IIndexOptions>;
104
133
  }>;
134
+ /** Undeclared installed indexes this model accepts by name, never touches. */
135
+ readonly toleratedIndexNames: readonly string[];
105
136
  readonly fingerprint: string;
106
137
  }
107
138
  export type TCompoundIndexDirection = 1 | -1;
@@ -229,8 +260,13 @@ export declare class SmartdataCollection<T> {
229
260
  maxTimeMS?: number;
230
261
  session?: TSmartdataOrdinarySession;
231
262
  }): Promise<any>;
263
+ /**
264
+ * An owned session stays leased until the returned cursor is closed, because
265
+ * the cursor outlives this call and the driver forbids a parallel operation
266
+ * on the same session.
267
+ */
232
268
  getCursor(filterObjectArg: any, dbDocArg: typeof SmartDataDbDoc, opts?: {
233
- session?: plugins.mongodb.ClientSession;
269
+ session?: TSmartdataOrdinarySession;
234
270
  }): Promise<SmartdataDbCursor<any>>;
235
271
  /**
236
272
  * finds an object in the DbCollection