@tinycloud/node-sdk 3.6.0-beta.5 → 3.6.0-beta.7
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/core.cjs +2 -22
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +10 -34
- package/dist/core.js.map +1 -1
- package/dist/credential-pending-store.cjs +4 -0
- package/dist/credential-pending-store.cjs.map +1 -1
- package/dist/credential-pending-store.d.cts +6 -2
- package/dist/credential-pending-store.d.ts +6 -2
- package/dist/credential-pending-store.js +2 -0
- package/dist/credential-pending-store.js.map +1 -1
- package/dist/credentials.cjs +53 -3
- package/dist/credentials.cjs.map +1 -1
- package/dist/credentials.d.cts +1 -1
- package/dist/credentials.d.ts +1 -1
- package/dist/credentials.js +51 -2
- package/dist/credentials.js.map +1 -1
- package/dist/{email-proof-Blhdm4ox.d.cts → email-proof-GXXQhIff.d.cts} +23 -2
- package/dist/{email-proof-Blhdm4ox.d.ts → email-proof-GXXQhIff.d.ts} +23 -2
- package/dist/index.cjs +2 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -40
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/core.js
CHANGED
|
@@ -2750,7 +2750,7 @@ import {
|
|
|
2750
2750
|
KV as KV3,
|
|
2751
2751
|
SQL as SQL2,
|
|
2752
2752
|
DUCKDB as DUCKDB2,
|
|
2753
|
-
ENCRYPTION as
|
|
2753
|
+
ENCRYPTION as ENCRYPTION2,
|
|
2754
2754
|
EXPIRY as EXPIRY3,
|
|
2755
2755
|
canonicalHashHex,
|
|
2756
2756
|
canonicalizeEncryptionJson,
|
|
@@ -2762,7 +2762,7 @@ import {
|
|
|
2762
2762
|
createInMemoryRegistrySequenceStore as createInMemoryRegistrySequenceStore2,
|
|
2763
2763
|
publishLocationRecord,
|
|
2764
2764
|
principalDidEquals as principalDidEquals3,
|
|
2765
|
-
parseNetworkId as
|
|
2765
|
+
parseNetworkId as parseNetworkId2,
|
|
2766
2766
|
resolveSecretPath as resolveSecretPath2,
|
|
2767
2767
|
registerPolicyV3,
|
|
2768
2768
|
CREDENTIAL_INVITATION_REQUEST_DOMAIN,
|
|
@@ -2976,11 +2976,7 @@ function createWasmKeyProvider(sessionManager) {
|
|
|
2976
2976
|
|
|
2977
2977
|
// src/delegateToHelpers.ts
|
|
2978
2978
|
import {
|
|
2979
|
-
actionContains,
|
|
2980
|
-
ENCRYPTION as ENCRYPTION2,
|
|
2981
2979
|
parseExpiry,
|
|
2982
|
-
isNetworkId,
|
|
2983
|
-
parseNetworkId as parseNetworkId2,
|
|
2984
2980
|
SiweMessage as SiweMessage2,
|
|
2985
2981
|
EXPIRY as EXPIRY2
|
|
2986
2982
|
} from "@tinycloud/sdk-core";
|
|
@@ -3015,16 +3011,6 @@ function legacyParamsToPermissionEntries(actions, path, spaceIdOverride) {
|
|
|
3015
3011
|
return entries;
|
|
3016
3012
|
}
|
|
3017
3013
|
var DEFAULT_DELEGATION_EXPIRY_MS = EXPIRY2.SESSION_MS;
|
|
3018
|
-
var SHARE_NETWORK_NAME_RE = /^share-[a-z0-9][a-z0-9-]{15,35}$/;
|
|
3019
|
-
function grantsCappedDecrypt(path, actions) {
|
|
3020
|
-
if (!actions.some((action) => actionContains(action, ENCRYPTION2.DECRYPT))) {
|
|
3021
|
-
return false;
|
|
3022
|
-
}
|
|
3023
|
-
return !(isNetworkId(path) && SHARE_NETWORK_NAME_RE.test(parseNetworkId2(path).name));
|
|
3024
|
-
}
|
|
3025
|
-
function includesDecrypt(entries) {
|
|
3026
|
-
return entries.some((entry) => grantsCappedDecrypt(entry.path, entry.actions));
|
|
3027
|
-
}
|
|
3028
3014
|
function resolveExpiryMs(expiry) {
|
|
3029
3015
|
if (expiry === void 0) {
|
|
3030
3016
|
return DEFAULT_DELEGATION_EXPIRY_MS;
|
|
@@ -3214,8 +3200,7 @@ var NodeSecretsService = class {
|
|
|
3214
3200
|
);
|
|
3215
3201
|
}
|
|
3216
3202
|
try {
|
|
3217
|
-
|
|
3218
|
-
await grant(escalation);
|
|
3203
|
+
await this.config.grantPermissions(escalation);
|
|
3219
3204
|
return this.restoreUnlockAfterEscalation();
|
|
3220
3205
|
} catch (error) {
|
|
3221
3206
|
return this.escalationError(action, target, error);
|
|
@@ -3262,8 +3247,8 @@ var NodeSecretsService = class {
|
|
|
3262
3247
|
// src/TinyCloudNode.ts
|
|
3263
3248
|
var DEFAULT_HOST = "https://node.tinycloud.xyz";
|
|
3264
3249
|
var DEFAULT_ENCRYPTION_NETWORK_NAME = "default";
|
|
3265
|
-
var NETWORK_CREATE_ACTION2 =
|
|
3266
|
-
var DECRYPT_ACTION2 =
|
|
3250
|
+
var NETWORK_CREATE_ACTION2 = ENCRYPTION2.NETWORK_CREATE;
|
|
3251
|
+
var DECRYPT_ACTION2 = ENCRYPTION2.DECRYPT;
|
|
3267
3252
|
var BOOTSTRAP_COMPLETION_MARKER_KEY = "system/bootstrap/complete";
|
|
3268
3253
|
var BOOTSTRAP_COMPLETION_MARKER_VERSION = 1;
|
|
3269
3254
|
var ACCEPTED_MARKER_VERSIONS = [BOOTSTRAP_COMPLETION_MARKER_VERSION];
|
|
@@ -3610,7 +3595,7 @@ function ownerDelegationPermissions(params) {
|
|
|
3610
3595
|
}
|
|
3611
3596
|
if (permission.service === ENCRYPTION_PERMISSION_SERVICE2) {
|
|
3612
3597
|
try {
|
|
3613
|
-
|
|
3598
|
+
parseNetworkId2(permission.path);
|
|
3614
3599
|
} catch {
|
|
3615
3600
|
throw new Error("Owner delegation encryption permission requires a canonical network URN");
|
|
3616
3601
|
}
|
|
@@ -3633,8 +3618,6 @@ function ownerPermissionsToAbilities(permissions) {
|
|
|
3633
3618
|
return { abilities, rawAbilities };
|
|
3634
3619
|
}
|
|
3635
3620
|
var TERMINAL_DELEGATION_REQUIRES_SESSION_KEY = "disableSubDelegation requires a session-key delegation to a did:key (not did:pkh); use the session-key DID or drop the flag";
|
|
3636
|
-
var DECRYPT_GRANT_MAX_EXPIRY_MS = 60 * 60 * 1e3;
|
|
3637
|
-
var SECRET_GET_GRANT_EXPIRY_MS = 59 * 60 * 1e3;
|
|
3638
3621
|
function base64UrlEncode(bytes) {
|
|
3639
3622
|
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
|
3640
3623
|
let output = "";
|
|
@@ -5543,7 +5526,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
5543
5526
|
return;
|
|
5544
5527
|
}
|
|
5545
5528
|
for (const networkId of this.requestedEncryptionNetworkIds()) {
|
|
5546
|
-
const parsed =
|
|
5529
|
+
const parsed = parseNetworkId2(networkId);
|
|
5547
5530
|
if (!didPrincipalMatches2(parsed.ownerDid, this.did)) {
|
|
5548
5531
|
continue;
|
|
5549
5532
|
}
|
|
@@ -7362,7 +7345,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
7362
7345
|
if (!session) throw new Error("Owner session is required");
|
|
7363
7346
|
const ownerDid = pkhDid2(session.address, session.chainId);
|
|
7364
7347
|
for (const permission of permissions) {
|
|
7365
|
-
if (permission.service === ENCRYPTION_PERMISSION_SERVICE2 && !principalDidEquals3(
|
|
7348
|
+
if (permission.service === ENCRYPTION_PERMISSION_SERVICE2 && !principalDidEquals3(parseNetworkId2(permission.path).ownerDid, ownerDid)) {
|
|
7366
7349
|
throw new Error("Owner delegation cannot grant a foreign encryption network");
|
|
7367
7350
|
}
|
|
7368
7351
|
}
|
|
@@ -7724,7 +7707,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
7724
7707
|
return existing;
|
|
7725
7708
|
}
|
|
7726
7709
|
}
|
|
7727
|
-
const parsed =
|
|
7710
|
+
const parsed = parseNetworkId2(networkId);
|
|
7728
7711
|
if (!didPrincipalMatches2(parsed.ownerDid, this.did)) {
|
|
7729
7712
|
throw new Error(
|
|
7730
7713
|
`Cannot create encryption network ${networkId}: owner ${parsed.ownerDid} does not match signed-in DID ${this.did}`
|
|
@@ -7757,7 +7740,6 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
7757
7740
|
getManifest: () => this.manifest,
|
|
7758
7741
|
hasPermissions: (permissions) => this.hasRuntimePermissions(permissions),
|
|
7759
7742
|
grantPermissions: (additional) => this.grantRuntimePermissions(additional),
|
|
7760
|
-
grantGetPermissions: (additional) => this.grantRuntimePermissions(additional, { expiry: SECRET_GET_GRANT_EXPIRY_MS }),
|
|
7761
7743
|
uncoveredEntries: (permissions) => permissions.filter((entry) => !this.hasRuntimePermissions([entry])),
|
|
7762
7744
|
canEscalate: () => this.signer !== void 0 && this.tc !== void 0,
|
|
7763
7745
|
getEncryptionNetworkId: () => this.getEncryptionNetworkIdForSpace(resolvedSpace),
|
|
@@ -8106,13 +8088,6 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
8106
8088
|
}
|
|
8107
8089
|
}
|
|
8108
8090
|
const expanded = this.expandPermissionEntries(permissions);
|
|
8109
|
-
const requestsDecrypt = includesDecrypt(expanded);
|
|
8110
|
-
const requestedExpiryMs = requestsDecrypt && options?.expiry === void 0 ? DECRYPT_GRANT_MAX_EXPIRY_MS : resolveExpiryMs(options?.expiry);
|
|
8111
|
-
if (requestsDecrypt && requestedExpiryMs > DECRYPT_GRANT_MAX_EXPIRY_MS) {
|
|
8112
|
-
throw Object.assign(new Error("decrypt grants last at most one hour"), {
|
|
8113
|
-
code: "DECRYPT_EXPIRY_TOO_LONG"
|
|
8114
|
-
});
|
|
8115
|
-
}
|
|
8116
8091
|
if (this.sessionCoversPermissionEntries(session, expanded)) {
|
|
8117
8092
|
return [];
|
|
8118
8093
|
}
|
|
@@ -8143,6 +8118,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
8143
8118
|
bySpace.set(session.spaceId, []);
|
|
8144
8119
|
}
|
|
8145
8120
|
const now = /* @__PURE__ */ new Date();
|
|
8121
|
+
const requestedExpiryMs = resolveExpiryMs(options?.expiry);
|
|
8146
8122
|
let expiresAt = new Date(now.getTime() + requestedExpiryMs);
|
|
8147
8123
|
if (sessionExpiry !== void 0 && sessionExpiry < expiresAt) {
|
|
8148
8124
|
expiresAt = sessionExpiry;
|