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