@lossless.org/client 0.1.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 (255) hide show
  1. package/.smartconfig.json +37 -0
  2. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  3. package/dist_ts/00_commitinfo_data.js +9 -0
  4. package/dist_ts/classes.losslessorgclient.d.ts +32 -0
  5. package/dist_ts/classes.losslessorgclient.js +103 -0
  6. package/dist_ts/core/classes.error.d.ts +16 -0
  7. package/dist_ts/core/classes.error.js +29 -0
  8. package/dist_ts/core/classes.operation.d.ts +17 -0
  9. package/dist_ts/core/classes.operation.js +70 -0
  10. package/dist_ts/core/interfaces.d.ts +18 -0
  11. package/dist_ts/core/interfaces.js +2 -0
  12. package/dist_ts/index.d.ts +4 -0
  13. package/dist_ts/index.js +3 -0
  14. package/dist_ts/nosqldb/classes.atomicdelete.d.ts +26 -0
  15. package/dist_ts/nosqldb/classes.atomicdelete.js +44 -0
  16. package/dist_ts/nosqldb/classes.atomicfindoneandupdate.d.ts +27 -0
  17. package/dist_ts/nosqldb/classes.atomicfindoneandupdate.js +86 -0
  18. package/dist_ts/nosqldb/classes.atomicupdate.d.ts +26 -0
  19. package/dist_ts/nosqldb/classes.atomicupdate.js +55 -0
  20. package/dist_ts/nosqldb/classes.bootstraprecord.d.ts +14 -0
  21. package/dist_ts/nosqldb/classes.bootstraprecord.js +80 -0
  22. package/dist_ts/nosqldb/classes.bsonassertion.d.ts +2 -0
  23. package/dist_ts/nosqldb/classes.bsonassertion.js +29 -0
  24. package/dist_ts/nosqldb/classes.bsonobjectid.d.ts +2 -0
  25. package/dist_ts/nosqldb/classes.bsonobjectid.js +50 -0
  26. package/dist_ts/nosqldb/classes.bsonsnapshot.d.ts +3 -0
  27. package/dist_ts/nosqldb/classes.bsonsnapshot.js +126 -0
  28. package/dist_ts/nosqldb/classes.cached-document.d.ts +27 -0
  29. package/dist_ts/nosqldb/classes.cached-document.js +112 -0
  30. package/dist_ts/nosqldb/classes.collection.d.ts +302 -0
  31. package/dist_ts/nosqldb/classes.collection.js +1568 -0
  32. package/dist_ts/nosqldb/classes.collectionfactory.d.ts +30 -0
  33. package/dist_ts/nosqldb/classes.collectionfactory.js +65 -0
  34. package/dist_ts/nosqldb/classes.collectionlifecycle.d.ts +4 -0
  35. package/dist_ts/nosqldb/classes.collectionlifecycle.js +15 -0
  36. package/dist_ts/nosqldb/classes.collectionpreparation.d.ts +34 -0
  37. package/dist_ts/nosqldb/classes.collectionpreparation.js +134 -0
  38. package/dist_ts/nosqldb/classes.collectiontopology.d.ts +47 -0
  39. package/dist_ts/nosqldb/classes.collectiontopology.js +388 -0
  40. package/dist_ts/nosqldb/classes.connection.d.ts +18 -0
  41. package/dist_ts/nosqldb/classes.connection.js +23 -0
  42. package/dist_ts/nosqldb/classes.convenience.d.ts +1 -0
  43. package/dist_ts/nosqldb/classes.convenience.js +5 -0
  44. package/dist_ts/nosqldb/classes.cursor.d.ts +15 -0
  45. package/dist_ts/nosqldb/classes.cursor.js +82 -0
  46. package/dist_ts/nosqldb/classes.cursoroperation.d.ts +7 -0
  47. package/dist_ts/nosqldb/classes.cursoroperation.js +36 -0
  48. package/dist_ts/nosqldb/classes.db.d.ts +98 -0
  49. package/dist_ts/nosqldb/classes.db.js +434 -0
  50. package/dist_ts/nosqldb/classes.distributedcoordinator.d.ts +52 -0
  51. package/dist_ts/nosqldb/classes.distributedcoordinator.js +314 -0
  52. package/dist_ts/nosqldb/classes.doc.d.ts +722 -0
  53. package/dist_ts/nosqldb/classes.doc.js +2976 -0
  54. package/dist_ts/nosqldb/classes.easystore.d.ts +42 -0
  55. package/dist_ts/nosqldb/classes.easystore.js +199 -0
  56. package/dist_ts/nosqldb/classes.exactpersistence.d.ts +141 -0
  57. package/dist_ts/nosqldb/classes.exactpersistence.js +1110 -0
  58. package/dist_ts/nosqldb/classes.lucene.adapter.d.ts +173 -0
  59. package/dist_ts/nosqldb/classes.lucene.adapter.js +623 -0
  60. package/dist_ts/nosqldb/classes.mongoadministration.d.ts +73 -0
  61. package/dist_ts/nosqldb/classes.mongoadministration.js +497 -0
  62. package/dist_ts/nosqldb/classes.namespaceinspection.d.ts +42 -0
  63. package/dist_ts/nosqldb/classes.namespaceinspection.js +138 -0
  64. package/dist_ts/nosqldb/classes.operationbudget.d.ts +22 -0
  65. package/dist_ts/nosqldb/classes.operationbudget.js +65 -0
  66. package/dist_ts/nosqldb/classes.ordinarypersistence.d.ts +18 -0
  67. package/dist_ts/nosqldb/classes.ordinarypersistence.js +71 -0
  68. package/dist_ts/nosqldb/classes.persistence.d.ts +14 -0
  69. package/dist_ts/nosqldb/classes.persistence.js +34 -0
  70. package/dist_ts/nosqldb/classes.session.d.ts +28 -0
  71. package/dist_ts/nosqldb/classes.session.js +246 -0
  72. package/dist_ts/nosqldb/classes.storedinspection.d.ts +44 -0
  73. package/dist_ts/nosqldb/classes.storedinspection.js +100 -0
  74. package/dist_ts/nosqldb/classes.testdatabase.d.ts +56 -0
  75. package/dist_ts/nosqldb/classes.testdatabase.js +250 -0
  76. package/dist_ts/nosqldb/classes.watcher.d.ts +37 -0
  77. package/dist_ts/nosqldb/classes.watcher.js +98 -0
  78. package/dist_ts/nosqldb/index.d.ts +27 -0
  79. package/dist_ts/nosqldb/index.js +18 -0
  80. package/dist_ts/nosqldb/logging.d.ts +2 -0
  81. package/dist_ts/nosqldb/logging.js +3 -0
  82. package/dist_ts/nosqldb/plugins.d.ts +17 -0
  83. package/dist_ts/nosqldb/plugins.js +20 -0
  84. package/dist_ts/nosqldb/shim.d.ts +1 -0
  85. package/dist_ts/nosqldb/shim.js +8 -0
  86. package/dist_ts/nosqldb/testsupport.d.ts +3 -0
  87. package/dist_ts/nosqldb/testsupport.js +3 -0
  88. package/dist_ts/objectstorage/classes.bucket.d.ts +227 -0
  89. package/dist_ts/objectstorage/classes.bucket.js +939 -0
  90. package/dist_ts/objectstorage/classes.connection.d.ts +21 -0
  91. package/dist_ts/objectstorage/classes.connection.js +27 -0
  92. package/dist_ts/objectstorage/classes.directory.d.ts +124 -0
  93. package/dist_ts/objectstorage/classes.directory.js +335 -0
  94. package/dist_ts/objectstorage/classes.exactpathpurgeerror.d.ts +5 -0
  95. package/dist_ts/objectstorage/classes.exactpathpurgeerror.js +18 -0
  96. package/dist_ts/objectstorage/classes.exactuploaderror.d.ts +5 -0
  97. package/dist_ts/objectstorage/classes.exactuploaderror.js +19 -0
  98. package/dist_ts/objectstorage/classes.file.d.ts +91 -0
  99. package/dist_ts/objectstorage/classes.file.js +255 -0
  100. package/dist_ts/objectstorage/classes.listcursor.d.ts +41 -0
  101. package/dist_ts/objectstorage/classes.listcursor.js +67 -0
  102. package/dist_ts/objectstorage/classes.metadata.d.ts +57 -0
  103. package/dist_ts/objectstorage/classes.metadata.js +113 -0
  104. package/dist_ts/objectstorage/classes.smartbucket.d.ts +57 -0
  105. package/dist_ts/objectstorage/classes.smartbucket.js +357 -0
  106. package/dist_ts/objectstorage/classes.trash.d.ts +11 -0
  107. package/dist_ts/objectstorage/classes.trash.js +22 -0
  108. package/dist_ts/objectstorage/classes.watcher.d.ts +79 -0
  109. package/dist_ts/objectstorage/classes.watcher.js +249 -0
  110. package/dist_ts/objectstorage/helpers.d.ts +25 -0
  111. package/dist_ts/objectstorage/helpers.js +215 -0
  112. package/dist_ts/objectstorage/index.d.ts +13 -0
  113. package/dist_ts/objectstorage/index.js +13 -0
  114. package/dist_ts/objectstorage/interfaces.d.ts +276 -0
  115. package/dist_ts/objectstorage/interfaces.js +2 -0
  116. package/dist_ts/objectstorage/internal.exactpathpurge.operations.d.ts +11 -0
  117. package/dist_ts/objectstorage/internal.exactpathpurge.operations.js +1069 -0
  118. package/dist_ts/objectstorage/internal.exactupload.capability.d.ts +40 -0
  119. package/dist_ts/objectstorage/internal.exactupload.capability.js +382 -0
  120. package/dist_ts/objectstorage/internal.exactupload.operations.d.ts +11 -0
  121. package/dist_ts/objectstorage/internal.exactupload.operations.js +1104 -0
  122. package/dist_ts/objectstorage/internal.multipart.planner.d.ts +8 -0
  123. package/dist_ts/objectstorage/internal.multipart.planner.js +63 -0
  124. package/dist_ts/objectstorage/internal.multipart.stream.d.ts +17 -0
  125. package/dist_ts/objectstorage/internal.multipart.stream.js +440 -0
  126. package/dist_ts/objectstorage/internal.multipart.types.d.ts +82 -0
  127. package/dist_ts/objectstorage/internal.multipart.types.js +2 -0
  128. package/dist_ts/objectstorage/plugins.d.ts +17 -0
  129. package/dist_ts/objectstorage/plugins.js +23 -0
  130. package/dist_ts/plugins.d.ts +4 -0
  131. package/dist_ts/plugins.js +5 -0
  132. package/dist_ts/sqldb/classes.clickhouseconnection.d.ts +39 -0
  133. package/dist_ts/sqldb/classes.clickhouseconnection.js +225 -0
  134. package/dist_ts/sqldb/classes.sqlconnection.d.ts +50 -0
  135. package/dist_ts/sqldb/classes.sqlconnection.js +376 -0
  136. package/dist_ts/sqldb/classes.sqltable.d.ts +29 -0
  137. package/dist_ts/sqldb/classes.sqltable.js +70 -0
  138. package/dist_ts/sqldb/clickhouse/classes.metricwriter.d.ts +27 -0
  139. package/dist_ts/sqldb/clickhouse/classes.metricwriter.js +89 -0
  140. package/dist_ts/sqldb/clickhouse/index.d.ts +9 -0
  141. package/dist_ts/sqldb/clickhouse/index.js +13 -0
  142. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.d.ts +88 -0
  143. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.js +304 -0
  144. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.d.ts +28 -0
  145. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.js +46 -0
  146. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.d.ts +43 -0
  147. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.js +155 -0
  148. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.resultset.d.ts +13 -0
  149. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.resultset.js +36 -0
  150. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.d.ts +49 -0
  151. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.js +106 -0
  152. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.d.ts +51 -0
  153. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.js +96 -0
  154. package/dist_ts/sqldb/clickhouse/smartclickhouse.plugins.d.ts +5 -0
  155. package/dist_ts/sqldb/clickhouse/smartclickhouse.plugins.js +6 -0
  156. package/dist_ts/sqldb/clickhouse/smartclickhouse.types.d.ts +53 -0
  157. package/dist_ts/sqldb/clickhouse/smartclickhouse.types.js +41 -0
  158. package/dist_ts/sqldb/index.d.ts +6 -0
  159. package/dist_ts/sqldb/index.js +6 -0
  160. package/dist_ts/sqldb/interfaces.d.ts +53 -0
  161. package/dist_ts/sqldb/interfaces.js +19 -0
  162. package/dist_ts/sqldb/internal.sqlpool.d.ts +51 -0
  163. package/dist_ts/sqldb/internal.sqlpool.js +214 -0
  164. package/dist_ts/sqldb/plugins.clickhouse.d.ts +4 -0
  165. package/dist_ts/sqldb/plugins.clickhouse.js +5 -0
  166. package/dist_ts/sqldb/plugins.mariadb.d.ts +4 -0
  167. package/dist_ts/sqldb/plugins.mariadb.js +5 -0
  168. package/docs/source/smartbucket/license.md +19 -0
  169. package/docs/source/smartclickhouse/license.md +19 -0
  170. package/license.md +21 -0
  171. package/package.json +101 -0
  172. package/readme.md +157 -0
  173. package/ts/00_commitinfo_data.ts +8 -0
  174. package/ts/classes.losslessorgclient.ts +104 -0
  175. package/ts/core/classes.error.ts +31 -0
  176. package/ts/core/classes.operation.ts +60 -0
  177. package/ts/core/interfaces.ts +24 -0
  178. package/ts/index.ts +4 -0
  179. package/ts/nosqldb/classes.atomicdelete.ts +81 -0
  180. package/ts/nosqldb/classes.atomicfindoneandupdate.ts +152 -0
  181. package/ts/nosqldb/classes.atomicupdate.ts +99 -0
  182. package/ts/nosqldb/classes.bootstraprecord.ts +107 -0
  183. package/ts/nosqldb/classes.bsonassertion.ts +25 -0
  184. package/ts/nosqldb/classes.bsonobjectid.ts +45 -0
  185. package/ts/nosqldb/classes.bsonsnapshot.ts +105 -0
  186. package/ts/nosqldb/classes.cached-document.ts +67 -0
  187. package/ts/nosqldb/classes.collection.ts +2399 -0
  188. package/ts/nosqldb/classes.collectionfactory.ts +87 -0
  189. package/ts/nosqldb/classes.collectionlifecycle.ts +24 -0
  190. package/ts/nosqldb/classes.collectionpreparation.ts +164 -0
  191. package/ts/nosqldb/classes.collectiontopology.ts +645 -0
  192. package/ts/nosqldb/classes.connection.ts +31 -0
  193. package/ts/nosqldb/classes.convenience.ts +5 -0
  194. package/ts/nosqldb/classes.cursor.ts +88 -0
  195. package/ts/nosqldb/classes.cursoroperation.ts +38 -0
  196. package/ts/nosqldb/classes.db.ts +637 -0
  197. package/ts/nosqldb/classes.distributedcoordinator.ts +305 -0
  198. package/ts/nosqldb/classes.doc.ts +4928 -0
  199. package/ts/nosqldb/classes.easystore.ts +154 -0
  200. package/ts/nosqldb/classes.exactpersistence.ts +1974 -0
  201. package/ts/nosqldb/classes.lucene.adapter.ts +780 -0
  202. package/ts/nosqldb/classes.mongoadministration.ts +867 -0
  203. package/ts/nosqldb/classes.namespaceinspection.ts +199 -0
  204. package/ts/nosqldb/classes.operationbudget.ts +75 -0
  205. package/ts/nosqldb/classes.ordinarypersistence.ts +84 -0
  206. package/ts/nosqldb/classes.persistence.ts +62 -0
  207. package/ts/nosqldb/classes.session.ts +389 -0
  208. package/ts/nosqldb/classes.storedinspection.ts +151 -0
  209. package/ts/nosqldb/classes.testdatabase.ts +272 -0
  210. package/ts/nosqldb/classes.watcher.ts +96 -0
  211. package/ts/nosqldb/index.ts +51 -0
  212. package/ts/nosqldb/logging.ts +3 -0
  213. package/ts/nosqldb/plugins.ts +37 -0
  214. package/ts/nosqldb/shim.ts +6 -0
  215. package/ts/nosqldb/testsupport.ts +13 -0
  216. package/ts/objectstorage/classes.bucket.ts +1114 -0
  217. package/ts/objectstorage/classes.connection.ts +36 -0
  218. package/ts/objectstorage/classes.directory.ts +425 -0
  219. package/ts/objectstorage/classes.exactpathpurgeerror.ts +24 -0
  220. package/ts/objectstorage/classes.exactuploaderror.ts +25 -0
  221. package/ts/objectstorage/classes.file.ts +303 -0
  222. package/ts/objectstorage/classes.listcursor.ts +89 -0
  223. package/ts/objectstorage/classes.metadata.ts +134 -0
  224. package/ts/objectstorage/classes.smartbucket.ts +445 -0
  225. package/ts/objectstorage/classes.trash.ts +30 -0
  226. package/ts/objectstorage/classes.watcher.ts +289 -0
  227. package/ts/objectstorage/helpers.ts +254 -0
  228. package/ts/objectstorage/index.ts +13 -0
  229. package/ts/objectstorage/interfaces.ts +389 -0
  230. package/ts/objectstorage/internal.exactpathpurge.operations.ts +1936 -0
  231. package/ts/objectstorage/internal.exactupload.capability.ts +580 -0
  232. package/ts/objectstorage/internal.exactupload.operations.ts +1715 -0
  233. package/ts/objectstorage/internal.multipart.planner.ts +90 -0
  234. package/ts/objectstorage/internal.multipart.stream.ts +606 -0
  235. package/ts/objectstorage/internal.multipart.types.ts +106 -0
  236. package/ts/objectstorage/plugins.ts +35 -0
  237. package/ts/plugins.ts +4 -0
  238. package/ts/sqldb/classes.clickhouseconnection.ts +189 -0
  239. package/ts/sqldb/classes.sqlconnection.ts +350 -0
  240. package/ts/sqldb/classes.sqltable.ts +70 -0
  241. package/ts/sqldb/clickhouse/classes.metricwriter.ts +72 -0
  242. package/ts/sqldb/clickhouse/index.ts +16 -0
  243. package/ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.ts +372 -0
  244. package/ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.ts +52 -0
  245. package/ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.ts +120 -0
  246. package/ts/sqldb/clickhouse/smartclickhouse.classes.resultset.ts +44 -0
  247. package/ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.ts +123 -0
  248. package/ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.ts +114 -0
  249. package/ts/sqldb/clickhouse/smartclickhouse.plugins.ts +5 -0
  250. package/ts/sqldb/clickhouse/smartclickhouse.types.ts +134 -0
  251. package/ts/sqldb/index.ts +6 -0
  252. package/ts/sqldb/interfaces.ts +61 -0
  253. package/ts/sqldb/internal.sqlpool.ts +179 -0
  254. package/ts/sqldb/plugins.clickhouse.ts +4 -0
  255. package/ts/sqldb/plugins.mariadb.ts +4 -0
@@ -0,0 +1,276 @@
1
+ import type { Readable } from 'node:stream';
2
+ import type { Bucket } from './classes.bucket.js';
3
+ import type { Directory } from './classes.directory.js';
4
+ export interface IPathDecriptor {
5
+ path?: string;
6
+ directory?: Directory;
7
+ }
8
+ export interface IFastGetStreamOptions {
9
+ path: string;
10
+ signal?: AbortSignal;
11
+ }
12
+ export interface IFastPutStreamOptions {
13
+ path: string;
14
+ readableStream: Readable | ReadableStream;
15
+ contentLength?: number;
16
+ nativeMetadata?: Record<string, string>;
17
+ overwrite?: boolean;
18
+ signal?: AbortSignal;
19
+ }
20
+ export interface IFastCopyOptions {
21
+ sourcePath: string;
22
+ destinationPath?: string;
23
+ targetBucket?: Bucket;
24
+ nativeMetadata?: Record<string, string>;
25
+ deleteExistingNativeMetadata?: boolean;
26
+ signal?: AbortSignal;
27
+ }
28
+ export interface IFastRemoveOptions {
29
+ path: string;
30
+ signal?: AbortSignal;
31
+ }
32
+ export interface IFastExistsOptions {
33
+ path: string;
34
+ signal?: AbortSignal;
35
+ }
36
+ export interface IFastStatOptions extends IPathDecriptor {
37
+ signal?: AbortSignal;
38
+ }
39
+ export interface IDirectoryFastPutStreamOptions {
40
+ path: string;
41
+ stream: Readable;
42
+ contentLength?: number;
43
+ signal?: AbortSignal;
44
+ }
45
+ /**
46
+ * Options for a bounded, read-only bucket readiness check.
47
+ */
48
+ export interface ISmartBucketReadinessOptions {
49
+ /** Probe deadline in milliseconds (default: 2000, maximum: 30000) */
50
+ timeoutMs?: number;
51
+ /** Optional caller-owned cancellation signal */
52
+ signal?: AbortSignal;
53
+ }
54
+ /**
55
+ * Sanitized reasons why a SmartBucket readiness probe is unavailable.
56
+ */
57
+ export type TSmartBucketReadinessFailureReason = 'closing' | 'closed' | 'aborted' | 'timeout' | 'unavailable';
58
+ /**
59
+ * Discriminated result returned by SmartBucket.checkReadiness().
60
+ */
61
+ export type TSmartBucketReadinessResult = {
62
+ ready: true;
63
+ status: 'ready';
64
+ durationMs: number;
65
+ } | {
66
+ ready: false;
67
+ status: 'unavailable';
68
+ reason: TSmartBucketReadinessFailureReason;
69
+ durationMs: number;
70
+ };
71
+ declare const exactUploadCapabilityBrand: unique symbol;
72
+ /**
73
+ * Opaque proof that the current bucket provider enforces the conditional
74
+ * operations required by Bucket.fastPutStreamExact().
75
+ *
76
+ * Capabilities can only be minted by Bucket.probeExactUploadCapability().
77
+ * They are bound to one exact Bucket object and its current SmartBucket,
78
+ * bucket name, S3 client, and lifecycle generation.
79
+ */
80
+ export interface IExactUploadCapability {
81
+ readonly [exactUploadCapabilityBrand]: 'smartbucket-exact-upload-v1';
82
+ }
83
+ export interface IExactUploadCapabilityProbeOptions {
84
+ /** Optional caller-owned cancellation signal */
85
+ signal?: AbortSignal;
86
+ }
87
+ export type TExactUploadCapabilityProbeFailureReason = 'aborted' | 'conditional-put-not-enforced' | 'conditional-complete-not-enforced' | 'cleanup-failed' | 'unavailable';
88
+ export type TExactUploadCapabilityProbeResult = {
89
+ supported: true;
90
+ capability: IExactUploadCapability;
91
+ } | {
92
+ supported: false;
93
+ reason: TExactUploadCapabilityProbeFailureReason;
94
+ cause?: unknown;
95
+ };
96
+ export interface IExactUploadResult {
97
+ destinationPath: string;
98
+ contentLength: number;
99
+ etag: string;
100
+ versionId?: string;
101
+ partCount: number;
102
+ peakBufferedBytes: number;
103
+ maximumBufferedBytes: number;
104
+ }
105
+ export interface IExactUploadNativeObjectProperties {
106
+ contentType?: string;
107
+ }
108
+ export interface IFastPutStreamExactOptions {
109
+ capability: IExactUploadCapability;
110
+ path: string;
111
+ /**
112
+ * Every emitted chunk must be no larger than the effective multipart part
113
+ * size (5 MiB by default).
114
+ */
115
+ readableStream: Readable | ReadableStream<Uint8Array>;
116
+ contentLength: number;
117
+ nativeMetadata?: Record<string, string>;
118
+ /**
119
+ * Native S3 object properties that must retain their semantic header
120
+ * identity instead of being encoded as x-amz-meta-* user metadata.
121
+ */
122
+ nativeObjectProperties?: IExactUploadNativeObjectProperties;
123
+ requestedPartSize?: number;
124
+ requestedConcurrency?: number;
125
+ /** Failure teardown wait before non-cooperative callbacks detach (max 30000). */
126
+ failureSettlementTimeoutMs?: number;
127
+ signal?: AbortSignal;
128
+ }
129
+ export type TExactUploadFailurePhase = 'capability' | 'source' | 'put-zero' | 'create-multipart' | 'upload-part' | 'complete-multipart';
130
+ export type TExactUploadMultipartCleanup = {
131
+ status: 'not-required';
132
+ } | {
133
+ status: 'aborted';
134
+ } | {
135
+ /**
136
+ * The provider reports that the multipart upload no longer exists. This
137
+ * does not prove whether an ambiguous completion published the object.
138
+ */
139
+ status: 'absent';
140
+ } | {
141
+ status: 'abort-failed';
142
+ cause: unknown;
143
+ } | {
144
+ /**
145
+ * One or more provider requests ignored cancellation. Multipart cleanup
146
+ * is deferred until those requests settle and remains unverified in this
147
+ * caller-visible result.
148
+ */
149
+ status: 'deferred';
150
+ };
151
+ export interface IExactUploadFailureState {
152
+ phase: TExactUploadFailurePhase;
153
+ destinationPath: string;
154
+ expectedContentLength: number;
155
+ /**
156
+ * Whether this operation can prove that it did not publish the destination.
157
+ * A conditional PutObject or CompleteMultipartUpload response can be lost
158
+ * after the provider has committed the object, so those failures are
159
+ * intentionally reported as ambiguous.
160
+ */
161
+ destinationPublication: 'not-published' | 'ambiguous';
162
+ multipartUploadId?: string;
163
+ multipartCleanup: TExactUploadMultipartCleanup;
164
+ }
165
+ declare const exactPathPurgeCapabilityBrand: unique symbol;
166
+ export type TExactPathPurgeVersioningMode = 'unversioned' | 'enabled' | 'suspended';
167
+ /**
168
+ * Opaque proof that the current provider supports the exact conditional-delete
169
+ * and version-aware cleanup semantics required by Bucket.purgeExactPath().
170
+ */
171
+ export interface IExactPathPurgeCapability {
172
+ readonly [exactPathPurgeCapabilityBrand]: 'smartbucket-exact-path-purge-v1';
173
+ }
174
+ export interface IExactPathPurgeCapabilityProbeOptions {
175
+ /** Probe deadline in milliseconds (default: 30000, maximum: 30000) */
176
+ timeoutMs?: number;
177
+ signal?: AbortSignal;
178
+ }
179
+ export type TExactPathPurgeCapabilityProbeFailureReason = 'aborted' | 'timeout' | 'conditional-delete-not-enforced' | 'cleanup-failed' | 'versioning-mode-changed' | 'unavailable';
180
+ export type TExactPathPurgeCapabilityProbeResult = {
181
+ supported: true;
182
+ capability: IExactPathPurgeCapability;
183
+ versioningMode: TExactPathPurgeVersioningMode;
184
+ } | {
185
+ supported: false;
186
+ reason: TExactPathPurgeCapabilityProbeFailureReason;
187
+ cause?: unknown;
188
+ };
189
+ export interface IExactPathPurgeCounts {
190
+ unversionedObjects: number;
191
+ versions: number;
192
+ nullVersions: number;
193
+ deleteMarkers: number;
194
+ }
195
+ export interface IExactPathPurgeEvidence {
196
+ initialCounts: IExactPathPurgeCounts;
197
+ remainingCounts: IExactPathPurgeCounts;
198
+ initialFingerprint?: string;
199
+ remainingFingerprint?: string;
200
+ inventoryScansCompleted: number;
201
+ verificationScansCompleted: number;
202
+ pagesScanned: number;
203
+ neighborEntriesObserved: number;
204
+ deleteRequestsAttempted: number;
205
+ deleteRequestsAcknowledged: number;
206
+ verifiedAt?: string;
207
+ }
208
+ export interface IExactPathPurgeOptions {
209
+ capability: IExactPathPurgeCapability;
210
+ path: string;
211
+ /** Primary operation deadline (default: 30000, maximum: 300000) */
212
+ timeoutMs?: number;
213
+ signal?: AbortSignal;
214
+ }
215
+ export interface IExactPathPurgeResult {
216
+ destinationPath: string;
217
+ status: 'purged' | 'already-absent';
218
+ versioningMode: TExactPathPurgeVersioningMode;
219
+ purgedCounts: IExactPathPurgeCounts;
220
+ evidence: IExactPathPurgeEvidence;
221
+ }
222
+ export type TExactPathPurgeFailurePhase = 'capability' | 'inventory' | 'consistency' | 'delete' | 'verification';
223
+ export type TExactPathPurgeFailureReason = 'aborted' | 'timeout' | 'malformed-provider-response' | 'inventory-limit-exceeded' | 'concurrent-recreation' | 'delete-unverified' | 'verification-ambiguous' | 'versioning-mode-changed' | 'unavailable';
224
+ export interface IExactPathPurgeFailureState {
225
+ phase: TExactPathPurgeFailurePhase;
226
+ reason: TExactPathPurgeFailureReason;
227
+ destinationPath: string;
228
+ versioningMode?: TExactPathPurgeVersioningMode;
229
+ evidence: IExactPathPurgeEvidence;
230
+ }
231
+ /**
232
+ * Internal state tracking for a storage object
233
+ */
234
+ export interface IStorageObjectState {
235
+ key: string;
236
+ etag: string;
237
+ size: number;
238
+ lastModified: Date;
239
+ }
240
+ /**
241
+ * Change event emitted by BucketWatcher
242
+ */
243
+ export interface IStorageChangeEvent {
244
+ type: 'add' | 'modify' | 'delete';
245
+ key: string;
246
+ size?: number;
247
+ etag?: string;
248
+ lastModified?: Date;
249
+ bucket: string;
250
+ }
251
+ /**
252
+ * Watcher mode - 'poll' is the default, 'websocket' reserved for future implementation
253
+ */
254
+ export type TBucketWatcherMode = 'poll' | 'websocket';
255
+ /**
256
+ * Options for creating a BucketWatcher
257
+ */
258
+ export interface IBucketWatcherOptions {
259
+ /** Watcher mode: 'poll' (default) or 'websocket' (future) */
260
+ mode?: TBucketWatcherMode;
261
+ /** Prefix to filter objects (default: '' for all objects) */
262
+ prefix?: string;
263
+ /** Polling interval in milliseconds (default: 5000, poll mode only) */
264
+ pollIntervalMs?: number;
265
+ /** Optional RxJS buffering time in milliseconds */
266
+ bufferTimeMs?: number;
267
+ /** Emit initial state as 'add' events (default: false) */
268
+ includeInitial?: boolean;
269
+ /** Page size for listing operations (default: 1000) */
270
+ pageSize?: number;
271
+ }
272
+ /** @deprecated Use IStorageObjectState instead */
273
+ export type IS3ObjectState = IStorageObjectState;
274
+ /** @deprecated Use IStorageChangeEvent instead */
275
+ export type IS3ChangeEvent = IStorageChangeEvent;
276
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL29iamVjdHN0b3JhZ2UvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,11 @@
1
+ import * as plugins from './plugins.js';
2
+ import type { IExactPathPurgeCapabilityProbeOptions, IExactPathPurgeOptions, IExactPathPurgeResult, TExactPathPurgeCapabilityProbeResult } from './interfaces.js';
3
+ interface IExactPathPurgeBucketRef {
4
+ name: string;
5
+ smartbucketRef: {
6
+ readonly storageClient: plugins.s3.S3Client;
7
+ };
8
+ }
9
+ export declare const probeExactPathPurgeCapability: (bucketRefArg: IExactPathPurgeBucketRef, optionsArg: IExactPathPurgeCapabilityProbeOptions) => Promise<TExactPathPurgeCapabilityProbeResult>;
10
+ export declare const purgeExactPath: (bucketRefArg: IExactPathPurgeBucketRef, optionsArg: IExactPathPurgeOptions) => Promise<IExactPathPurgeResult>;
11
+ export {};