@tinycloud/sdk-services 2.7.0-beta.3 → 2.7.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/dist/BaseService-BwBU5CQ4.d.cts +158 -0
- package/dist/BaseService-CnPTKR5G.d.ts +158 -0
- package/dist/encryption/index.cjs +46 -6
- package/dist/encryption/index.cjs.map +1 -1
- package/dist/encryption/index.d.cts +9 -1
- package/dist/encryption/index.d.ts +9 -1
- package/dist/encryption/index.js +45 -6
- package/dist/encryption/index.js.map +1 -1
- package/dist/index.cjs +299 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +58 -9
- package/dist/index.d.ts +58 -9
- package/dist/index.js +293 -18
- package/dist/index.js.map +1 -1
- package/dist/internal/decrypt-transport-response-error.cjs +38 -0
- package/dist/internal/decrypt-transport-response-error.cjs.map +1 -0
- package/dist/internal/decrypt-transport-response-error.d.cts +10 -0
- package/dist/internal/decrypt-transport-response-error.d.ts +10 -0
- package/dist/internal/decrypt-transport-response-error.js +13 -0
- package/dist/internal/decrypt-transport-response-error.js.map +1 -0
- package/dist/kv/index.cjs +46 -4
- package/dist/kv/index.cjs.map +1 -1
- package/dist/kv/index.d.cts +2 -1
- package/dist/kv/index.d.ts +2 -1
- package/dist/kv/index.js +46 -4
- package/dist/kv/index.js.map +1 -1
- package/dist/sql/index.cjs +6 -2
- package/dist/sql/index.cjs.map +1 -1
- package/dist/sql/index.d.cts +2 -1
- package/dist/sql/index.d.ts +2 -1
- package/dist/sql/index.js +6 -2
- package/dist/sql/index.js.map +1 -1
- package/dist/{BaseService-C-EsEeGo.d.cts → types-DAY1O1kW.d.cts} +12 -156
- package/dist/{BaseService-C-EsEeGo.d.ts → types-DAY1O1kW.d.ts} +12 -156
- package/package.json +11 -3
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as BaseService } from '../BaseService-BwBU5CQ4.cjs';
|
|
2
|
+
import { P as PermissionHint, I as IService, R as Result } from '../types-DAY1O1kW.cjs';
|
|
3
|
+
export { DecryptTransportResponseError } from '@tinycloud/sdk-services/internal/decrypt-transport-response-error';
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* Canonical JSON serialization and content hashing for TinyCloud
|
|
@@ -298,6 +300,7 @@ type EncryptionErrorInput = {
|
|
|
298
300
|
} | {
|
|
299
301
|
code: "DECRYPT_DENIED";
|
|
300
302
|
message: string;
|
|
303
|
+
permissionHint?: PermissionHint;
|
|
301
304
|
} | {
|
|
302
305
|
code: "INVALID_RESPONSE";
|
|
303
306
|
message: string;
|
|
@@ -481,14 +484,18 @@ interface DecryptTransport {
|
|
|
481
484
|
networkId: string;
|
|
482
485
|
authorization: string;
|
|
483
486
|
canonicalBody: string;
|
|
487
|
+
signal?: AbortSignal;
|
|
484
488
|
}): Promise<DecryptResponseBody>;
|
|
485
489
|
}
|
|
490
|
+
|
|
486
491
|
interface EncryptionServiceConfig {
|
|
487
492
|
crypto: EncryptionCrypto;
|
|
488
493
|
signer: DecryptInvocationSigner;
|
|
489
494
|
transport: DecryptTransport;
|
|
490
495
|
node?: NodeDescriptorFetcher;
|
|
491
496
|
wellKnown?: WellKnownDescriptorFetcher;
|
|
497
|
+
/** Bound by an owning service graph to prevent cross-session authority use. */
|
|
498
|
+
assertActive?: () => void;
|
|
492
499
|
[key: string]: unknown;
|
|
493
500
|
}
|
|
494
501
|
declare class EncryptionService extends BaseService implements IEncryptionService {
|
|
@@ -500,6 +507,7 @@ declare class EncryptionService extends BaseService implements IEncryptionServic
|
|
|
500
507
|
discoverNetwork(identifier: string, ownerDid?: string): Promise<Result<NetworkDescriptor, EncryptionError>>;
|
|
501
508
|
encryptToNetwork(networkId: string, plaintext: Uint8Array, options?: EncryptToNetworkOptions): Promise<Result<InlineEncryptedEnvelope, EncryptionError>>;
|
|
502
509
|
decryptEnvelope(envelope: InlineEncryptedEnvelope, capabilityProof: DecryptCapabilityProof, options?: DecryptEnvelopeOptions): Promise<Result<Uint8Array, EncryptionError>>;
|
|
510
|
+
private assertActive;
|
|
503
511
|
}
|
|
504
512
|
|
|
505
513
|
/**
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as BaseService } from '../BaseService-CnPTKR5G.js';
|
|
2
|
+
import { P as PermissionHint, I as IService, R as Result } from '../types-DAY1O1kW.js';
|
|
3
|
+
export { DecryptTransportResponseError } from '@tinycloud/sdk-services/internal/decrypt-transport-response-error';
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* Canonical JSON serialization and content hashing for TinyCloud
|
|
@@ -298,6 +300,7 @@ type EncryptionErrorInput = {
|
|
|
298
300
|
} | {
|
|
299
301
|
code: "DECRYPT_DENIED";
|
|
300
302
|
message: string;
|
|
303
|
+
permissionHint?: PermissionHint;
|
|
301
304
|
} | {
|
|
302
305
|
code: "INVALID_RESPONSE";
|
|
303
306
|
message: string;
|
|
@@ -481,14 +484,18 @@ interface DecryptTransport {
|
|
|
481
484
|
networkId: string;
|
|
482
485
|
authorization: string;
|
|
483
486
|
canonicalBody: string;
|
|
487
|
+
signal?: AbortSignal;
|
|
484
488
|
}): Promise<DecryptResponseBody>;
|
|
485
489
|
}
|
|
490
|
+
|
|
486
491
|
interface EncryptionServiceConfig {
|
|
487
492
|
crypto: EncryptionCrypto;
|
|
488
493
|
signer: DecryptInvocationSigner;
|
|
489
494
|
transport: DecryptTransport;
|
|
490
495
|
node?: NodeDescriptorFetcher;
|
|
491
496
|
wellKnown?: WellKnownDescriptorFetcher;
|
|
497
|
+
/** Bound by an owning service graph to prevent cross-session authority use. */
|
|
498
|
+
assertActive?: () => void;
|
|
492
499
|
[key: string]: unknown;
|
|
493
500
|
}
|
|
494
501
|
declare class EncryptionService extends BaseService implements IEncryptionService {
|
|
@@ -500,6 +507,7 @@ declare class EncryptionService extends BaseService implements IEncryptionServic
|
|
|
500
507
|
discoverNetwork(identifier: string, ownerDid?: string): Promise<Result<NetworkDescriptor, EncryptionError>>;
|
|
501
508
|
encryptToNetwork(networkId: string, plaintext: Uint8Array, options?: EncryptToNetworkOptions): Promise<Result<InlineEncryptedEnvelope, EncryptionError>>;
|
|
502
509
|
decryptEnvelope(envelope: InlineEncryptedEnvelope, capabilityProof: DecryptCapabilityProof, options?: DecryptEnvelopeOptions): Promise<Result<Uint8Array, EncryptionError>>;
|
|
510
|
+
private assertActive;
|
|
503
511
|
}
|
|
504
512
|
|
|
505
513
|
/**
|
package/dist/encryption/index.js
CHANGED
|
@@ -141,7 +141,7 @@ var BaseService = class {
|
|
|
141
141
|
* Combines the service-level abort with context-level abort.
|
|
142
142
|
*/
|
|
143
143
|
get abortSignal() {
|
|
144
|
-
return this.
|
|
144
|
+
return this.combineSignals();
|
|
145
145
|
}
|
|
146
146
|
/**
|
|
147
147
|
* Check if the service is authenticated.
|
|
@@ -257,7 +257,11 @@ var BaseService = class {
|
|
|
257
257
|
*/
|
|
258
258
|
combineSignals(...signals) {
|
|
259
259
|
const controller = new AbortController();
|
|
260
|
-
const allSignals = [
|
|
260
|
+
const allSignals = [
|
|
261
|
+
this.abortController.signal,
|
|
262
|
+
this.context?.abortSignal,
|
|
263
|
+
...signals.filter(Boolean)
|
|
264
|
+
].filter(Boolean);
|
|
261
265
|
for (const signal of allSignals) {
|
|
262
266
|
if (signal.aborted) {
|
|
263
267
|
controller.abort(signal.reason);
|
|
@@ -1144,6 +1148,8 @@ function openWrappedKey(crypto, receiverPrivateKey, response) {
|
|
|
1144
1148
|
}
|
|
1145
1149
|
|
|
1146
1150
|
// src/encryption/EncryptionService.ts
|
|
1151
|
+
import { DecryptTransportResponseError } from "@tinycloud/sdk-services/internal/decrypt-transport-response-error";
|
|
1152
|
+
import { DecryptTransportResponseError as DecryptTransportResponseError2 } from "@tinycloud/sdk-services/internal/decrypt-transport-response-error";
|
|
1147
1153
|
function encOk(data) {
|
|
1148
1154
|
return { ok: true, data };
|
|
1149
1155
|
}
|
|
@@ -1162,17 +1168,20 @@ var EncryptionService = class extends BaseService {
|
|
|
1162
1168
|
return this._config.crypto;
|
|
1163
1169
|
}
|
|
1164
1170
|
async discoverNetwork(identifier, ownerDid) {
|
|
1171
|
+
this.assertActive();
|
|
1165
1172
|
const result = await discoverNetwork({
|
|
1166
1173
|
identifier,
|
|
1167
1174
|
...ownerDid !== void 0 ? { ownerDid } : {},
|
|
1168
1175
|
...this._config.node !== void 0 ? { node: this._config.node } : {},
|
|
1169
1176
|
...this._config.wellKnown !== void 0 ? { wellKnown: this._config.wellKnown } : {}
|
|
1170
1177
|
});
|
|
1178
|
+
this.assertActive();
|
|
1171
1179
|
if (!result.ok) return result;
|
|
1172
1180
|
return encOk(result.data.descriptor);
|
|
1173
1181
|
}
|
|
1174
1182
|
async encryptToNetwork(networkId, plaintext, options) {
|
|
1175
1183
|
try {
|
|
1184
|
+
this.assertActive();
|
|
1176
1185
|
const discovered = await this.discoverNetwork(networkId);
|
|
1177
1186
|
if (!discovered.ok) return discovered;
|
|
1178
1187
|
const usable = ensureNetworkUsableForDecrypt(discovered.data);
|
|
@@ -1200,6 +1209,7 @@ var EncryptionService = class extends BaseService {
|
|
|
1200
1209
|
}
|
|
1201
1210
|
async decryptEnvelope(envelope, capabilityProof, options) {
|
|
1202
1211
|
try {
|
|
1212
|
+
this.assertActive();
|
|
1203
1213
|
const validated = validateEnvelope(this.crypto, envelope);
|
|
1204
1214
|
if (!validated.ok) return validated;
|
|
1205
1215
|
if (options?.aad !== void 0 && validated.data.aad !== base64Encode(options.aad)) {
|
|
@@ -1265,16 +1275,38 @@ var EncryptionService = class extends BaseService {
|
|
|
1265
1275
|
facts,
|
|
1266
1276
|
proof: capabilityProof
|
|
1267
1277
|
});
|
|
1268
|
-
|
|
1278
|
+
this.assertActive();
|
|
1279
|
+
if (!built.ok) {
|
|
1280
|
+
if (built.error.code !== "TRANSPORT_ERROR") return built;
|
|
1281
|
+
return encErr(
|
|
1282
|
+
encryptionError({
|
|
1283
|
+
code: "INVALID_INPUT",
|
|
1284
|
+
message: "Unable to build decrypt request"
|
|
1285
|
+
})
|
|
1286
|
+
);
|
|
1287
|
+
}
|
|
1269
1288
|
let response;
|
|
1270
1289
|
try {
|
|
1271
1290
|
response = await this._config.transport.postDecrypt({
|
|
1272
1291
|
targetNode,
|
|
1273
1292
|
networkId: envelope.networkId,
|
|
1274
1293
|
authorization: built.data.authorization,
|
|
1275
|
-
canonicalBody: built.data.canonicalBody
|
|
1294
|
+
canonicalBody: built.data.canonicalBody,
|
|
1295
|
+
signal: this.abortSignal
|
|
1276
1296
|
});
|
|
1297
|
+
this.assertActive();
|
|
1277
1298
|
} catch (error) {
|
|
1299
|
+
if (error instanceof DecryptTransportResponseError) {
|
|
1300
|
+
return encErr(
|
|
1301
|
+
encryptionError(
|
|
1302
|
+
error.status === 401 || error.status === 403 ? {
|
|
1303
|
+
code: "DECRYPT_DENIED",
|
|
1304
|
+
message: "Node denied decrypt request",
|
|
1305
|
+
...error.permissionHint === void 0 ? {} : { permissionHint: error.permissionHint }
|
|
1306
|
+
} : { code: "INVALID_RESPONSE", message: "Node decrypt request failed" }
|
|
1307
|
+
)
|
|
1308
|
+
);
|
|
1309
|
+
}
|
|
1278
1310
|
return encErr(
|
|
1279
1311
|
encryptionError({
|
|
1280
1312
|
code: "TRANSPORT_ERROR",
|
|
@@ -1305,20 +1337,27 @@ var EncryptionService = class extends BaseService {
|
|
|
1305
1337
|
} catch (error) {
|
|
1306
1338
|
return encErr(
|
|
1307
1339
|
encryptionError({
|
|
1308
|
-
code: "
|
|
1309
|
-
|
|
1340
|
+
code: "INVALID_RESPONSE",
|
|
1341
|
+
message: "Local decryption failed"
|
|
1310
1342
|
})
|
|
1311
1343
|
);
|
|
1312
1344
|
}
|
|
1313
1345
|
}
|
|
1346
|
+
assertActive() {
|
|
1347
|
+
this._config.assertActive?.();
|
|
1348
|
+
}
|
|
1314
1349
|
};
|
|
1315
1350
|
EncryptionService.serviceName = "encryption";
|
|
1351
|
+
|
|
1352
|
+
// src/encryption/index.ts
|
|
1353
|
+
import { DecryptTransportResponseError as DecryptTransportResponseError3 } from "@tinycloud/sdk-services/internal/decrypt-transport-response-error";
|
|
1316
1354
|
export {
|
|
1317
1355
|
DECRYPT_ACTION,
|
|
1318
1356
|
DECRYPT_FACT_TYPE,
|
|
1319
1357
|
DECRYPT_RESULT_TYPE,
|
|
1320
1358
|
DEFAULT_ENCRYPTION_ALG,
|
|
1321
1359
|
DEFAULT_KEY_VERSION,
|
|
1360
|
+
DecryptTransportResponseError3 as DecryptTransportResponseError,
|
|
1322
1361
|
ENCRYPTION_NETWORK_URN_PREFIX,
|
|
1323
1362
|
ENCRYPTION_SERVICE,
|
|
1324
1363
|
ENCRYPTION_SERVICE_SHORT,
|