@tinycloud/node-sdk 2.3.0-beta.2 → 2.3.0-beta.4

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/index.cjs CHANGED
@@ -17053,6 +17053,7 @@ __export(index_exports, {
17053
17053
  EncryptionService: () => import_sdk_core14.EncryptionService,
17054
17054
  FileSessionStorage: () => FileSessionStorage,
17055
17055
  HooksService: () => import_sdk_core15.HooksService,
17056
+ IdentityParseError: () => import_sdk_core8.IdentityParseError,
17056
17057
  KVService: () => import_sdk_core10.KVService,
17057
17058
  ManifestValidationError: () => import_sdk_core9.ManifestValidationError,
17058
17059
  MemorySessionStorage: () => MemorySessionStorage,
@@ -17083,6 +17084,7 @@ __export(index_exports, {
17083
17084
  VaultPublicSpaceKVActions: () => import_sdk_core13.VaultPublicSpaceKVActions,
17084
17085
  VersionCheckError: () => import_sdk_core19.VersionCheckError,
17085
17086
  WasmKeyProvider: () => WasmKeyProvider,
17087
+ addressStorageKey: () => import_sdk_core8.addressStorageKey,
17086
17088
  buildCanonicalDecryptRequest: () => import_sdk_core14.buildCanonicalDecryptRequest,
17087
17089
  buildDecryptAttenuation: () => import_sdk_core14.buildDecryptAttenuation,
17088
17090
  buildDecryptFacts: () => import_sdk_core14.buildDecryptFacts,
@@ -17091,7 +17093,11 @@ __export(index_exports, {
17091
17093
  buildSpaceUri: () => import_sdk_core18.buildSpaceUri,
17092
17094
  canonicalHashHex: () => import_sdk_core14.canonicalHashHex,
17093
17095
  canonicalSignedResponse: () => import_sdk_core14.canonicalSignedResponse,
17096
+ canonicalizeAddress: () => import_sdk_core8.canonicalizeAddress,
17097
+ canonicalizeDid: () => import_sdk_core8.canonicalizeDid,
17098
+ canonicalizeDidUrl: () => import_sdk_core8.canonicalizeDidUrl,
17094
17099
  canonicalizeEncryptionJson: () => import_sdk_core14.canonicalizeEncryptionJson,
17100
+ canonicalizeNetworkId: () => import_sdk_core8.canonicalizeNetworkId,
17095
17101
  canonicalizeSecretScope: () => import_sdk_core13.canonicalizeSecretScope,
17096
17102
  checkDecryptInvocationInput: () => import_sdk_core14.checkDecryptInvocationInput,
17097
17103
  checkNodeInfo: () => import_sdk_core19.checkNodeInfo,
@@ -17106,6 +17112,8 @@ __export(index_exports, {
17106
17112
  defaultSpaceCreationHandler: () => import_sdk_core8.defaultSpaceCreationHandler,
17107
17113
  deriveSignedReceiverKey: () => import_sdk_core14.deriveSignedReceiverKey,
17108
17114
  deserializeDelegation: () => deserializeDelegation,
17115
+ didCacheKey: () => import_sdk_core8.didCacheKey,
17116
+ didEquals: () => import_sdk_core8.didEquals,
17109
17117
  discoverNetwork: () => import_sdk_core14.discoverNetwork,
17110
17118
  encryptToNetwork: () => import_sdk_core14.encryptToNetwork,
17111
17119
  encryptionBase64Decode: () => import_sdk_core14.encryptionBase64Decode,
@@ -17121,14 +17129,21 @@ __export(index_exports, {
17121
17129
  hexDecode: () => import_sdk_core14.hexDecode,
17122
17130
  hexEncode: () => import_sdk_core14.hexEncode,
17123
17131
  isCapabilitySubset: () => import_sdk_core9.isCapabilitySubset,
17132
+ isEvmAddress: () => import_sdk_core8.isEvmAddress,
17124
17133
  isNetworkId: () => import_sdk_core14.isNetworkId,
17125
17134
  loadManifest: () => import_sdk_core9.loadManifest,
17135
+ makePkhSpaceId: () => import_sdk_core8.makePkhSpaceId,
17126
17136
  makePublicSpaceId: () => import_sdk_core18.makePublicSpaceId,
17127
17137
  networkDiscoveryKey: () => import_sdk_core14.networkDiscoveryKey,
17128
17138
  openWrappedKey: () => import_sdk_core14.openWrappedKey,
17139
+ parseCanonicalNetworkId: () => import_sdk_core8.parseCanonicalNetworkId,
17129
17140
  parseExpiry: () => import_sdk_core9.parseExpiry,
17130
17141
  parseNetworkId: () => import_sdk_core14.parseNetworkId,
17142
+ parsePkhDid: () => import_sdk_core8.parsePkhDid,
17131
17143
  parseSpaceUri: () => import_sdk_core18.parseSpaceUri,
17144
+ pkhDid: () => import_sdk_core8.pkhDid,
17145
+ principalDid: () => import_sdk_core8.principalDid,
17146
+ principalDidEquals: () => import_sdk_core8.principalDidEquals,
17132
17147
  resolveManifest: () => import_sdk_core9.resolveManifest,
17133
17148
  resolveSecretListPrefix: () => import_sdk_core13.resolveSecretListPrefix,
17134
17149
  resolveSecretPath: () => import_sdk_core13.resolveSecretPath,
@@ -17440,15 +17455,16 @@ var NodeUserAuthorization = class {
17440
17455
  * expired-at-epoch-zero.
17441
17456
  */
17442
17457
  setRestoredTinyCloudSession(session) {
17443
- this._tinyCloudSession = session;
17444
- this._address = session.address;
17458
+ const address = (0, import_sdk_core.canonicalizeAddress)(session.address);
17459
+ this._tinyCloudSession = { ...session, address };
17460
+ this._address = address;
17445
17461
  this._chainId = session.chainId;
17446
17462
  }
17447
17463
  async resolveTinyCloudHostsForSignIn(address, chainId) {
17448
17464
  if (this.tinycloudHosts && this.tinycloudHosts.length > 0) {
17449
17465
  return;
17450
17466
  }
17451
- const subject = `did:pkh:eip155:${chainId}:${address}`;
17467
+ const subject = (0, import_sdk_core.pkhDid)(address, chainId);
17452
17468
  const resolved = await (0, import_sdk_core.resolveTinyCloudHosts)(subject, {
17453
17469
  registryUrl: this.tinycloudRegistryUrl,
17454
17470
  fallbackHosts: this.tinycloudFallbackHosts
@@ -17512,19 +17528,19 @@ var NodeUserAuthorization = class {
17512
17528
  if (space.startsWith("tinycloud:")) {
17513
17529
  return space;
17514
17530
  }
17515
- return this.wasm.makeSpaceId(address, chainId, space);
17531
+ return (0, import_sdk_core.makePkhSpaceId)(address, chainId, space);
17516
17532
  }
17517
17533
  defaultEncryptionNetworkId(address, chainId) {
17518
- return `urn:tinycloud:encryption:did:pkh:eip155:${chainId}:${address}:default`;
17534
+ return `urn:tinycloud:encryption:${(0, import_sdk_core.pkhDid)(address, chainId)}:default`;
17519
17535
  }
17520
17536
  resolveSignInCapabilities(address, chainId) {
17521
17537
  const request = this.getCapabilityRequest();
17522
17538
  if (request === void 0) {
17523
17539
  const defaultNetworkId = this.defaultEncryptionNetworkId(address, chainId);
17524
- const secretsSpaceId = this.wasm.makeSpaceId(address, chainId, "secrets");
17540
+ const secretsSpaceId = (0, import_sdk_core.makePkhSpaceId)(address, chainId, "secrets");
17525
17541
  return {
17526
17542
  abilities: this.defaultActions,
17527
- spaceId: this.wasm.makeSpaceId(address, chainId, this.spacePrefix),
17543
+ spaceId: (0, import_sdk_core.makePkhSpaceId)(address, chainId, this.spacePrefix),
17528
17544
  spaceAbilities: {
17529
17545
  [secretsSpaceId]: {
17530
17546
  kv: {
@@ -17786,9 +17802,9 @@ var NodeUserAuthorization = class {
17786
17802
  * @param options - Optional per-call SIWE overrides for this sign-in only
17787
17803
  */
17788
17804
  async signIn(options) {
17789
- this._address = await this.signer.getAddress();
17805
+ this._address = (0, import_sdk_core.canonicalizeAddress)(await this.signer.getAddress());
17790
17806
  this._chainId = await this.signer.getChainId();
17791
- const address = this.wasm.ensureEip55(this._address);
17807
+ const address = this._address;
17792
17808
  const chainId = this._chainId;
17793
17809
  await this.resolveTinyCloudHostsForSignIn(address, chainId);
17794
17810
  const keyId = `session-${Date.now()}`;
@@ -17833,7 +17849,7 @@ var NodeUserAuthorization = class {
17833
17849
  siwe: prepared.siwe,
17834
17850
  signature: signature2
17835
17851
  };
17836
- const spacesMetadata = this.enablePublicSpace ? { public: this.wasm.makeSpaceId(address, chainId, "public") } : void 0;
17852
+ const spacesMetadata = this.enablePublicSpace ? { public: (0, import_sdk_core.makePkhSpaceId)(address, chainId, "public") } : void 0;
17837
17853
  const tinyCloudSession = {
17838
17854
  address,
17839
17855
  chainId,
@@ -17908,7 +17924,7 @@ var NodeUserAuthorization = class {
17908
17924
  */
17909
17925
  async signMessage(message) {
17910
17926
  if (!this._address) {
17911
- this._address = await this.signer.getAddress();
17927
+ this._address = (0, import_sdk_core.canonicalizeAddress)(await this.signer.getAddress());
17912
17928
  }
17913
17929
  if (!this._chainId) {
17914
17930
  this._chainId = await this.signer.getChainId();
@@ -17935,7 +17951,7 @@ var NodeUserAuthorization = class {
17935
17951
  * ```
17936
17952
  */
17937
17953
  async prepareSessionForSigning() {
17938
- const address = this.wasm.ensureEip55(await this.signer.getAddress());
17954
+ const address = (0, import_sdk_core.canonicalizeAddress)(await this.signer.getAddress());
17939
17955
  const chainId = await this.signer.getChainId();
17940
17956
  const keyId = `session-${Date.now()}`;
17941
17957
  this.sessionManager.renameSessionKeyId("default", keyId);
@@ -17985,7 +18001,7 @@ var NodeUserAuthorization = class {
17985
18001
  ...prepared,
17986
18002
  signature: signature2
17987
18003
  });
17988
- const address = this.wasm.ensureEip55(await this.signer.getAddress());
18004
+ const address = (0, import_sdk_core.canonicalizeAddress)(await this.signer.getAddress());
17989
18005
  const chainId = await this.signer.getChainId();
17990
18006
  await this.resolveTinyCloudHostsForSignIn(address, chainId);
17991
18007
  const clientSession = {
@@ -17996,7 +18012,7 @@ var NodeUserAuthorization = class {
17996
18012
  siwe: prepared.siwe,
17997
18013
  signature: signature2
17998
18014
  };
17999
- const spacesMetadata = this.enablePublicSpace ? { public: this.wasm.makeSpaceId(address, chainId, "public") } : void 0;
18015
+ const spacesMetadata = this.enablePublicSpace ? { public: (0, import_sdk_core.makePkhSpaceId)(address, chainId, "public") } : void 0;
18000
18016
  const tinyCloudSession = {
18001
18017
  address,
18002
18018
  chainId,
@@ -18523,6 +18539,13 @@ var NETWORK_CREATE_ACTION = "tinycloud.encryption/network.create";
18523
18539
  var DECRYPT_ACTION = "tinycloud.encryption/decrypt";
18524
18540
  var NETWORK_ADMIN_TYPE = "tinycloud.encryption.network-admin/v1";
18525
18541
  var DEFAULT_SESSION_EXPIRATION_MS = import_sdk_core5.EXPIRY.SESSION_MS;
18542
+ function didPrincipalMatches(actual, expected) {
18543
+ try {
18544
+ return (0, import_sdk_core5.principalDidEquals)(actual, expected);
18545
+ } catch {
18546
+ return actual === expected;
18547
+ }
18548
+ }
18526
18549
  function base64UrlEncode(bytes) {
18527
18550
  const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
18528
18551
  let output = "";
@@ -18819,7 +18842,7 @@ var _TinyCloudNode = class _TinyCloudNode {
18819
18842
  */
18820
18843
  get did() {
18821
18844
  if (this._address) {
18822
- return `did:pkh:eip155:${this._chainId}:${this._address}`;
18845
+ return (0, import_sdk_core5.pkhDid)(this._address, this._chainId);
18823
18846
  }
18824
18847
  return this.sessionManager.getDID(this.sessionKeyId);
18825
18848
  }
@@ -18836,7 +18859,7 @@ var _TinyCloudNode = class _TinyCloudNode {
18836
18859
  * Get the Ethereum address for this user.
18837
18860
  */
18838
18861
  get address() {
18839
- return this._address;
18862
+ return this.auth?.address() ?? this._address;
18840
18863
  }
18841
18864
  /**
18842
18865
  * Check if this instance is in session-only mode (no wallet).
@@ -18874,7 +18897,7 @@ var _TinyCloudNode = class _TinyCloudNode {
18874
18897
  );
18875
18898
  }
18876
18899
  await this.wasmBindings.ensureInitialized?.();
18877
- this._address = await this.signer.getAddress();
18900
+ this._address = (0, import_sdk_core5.canonicalizeAddress)(await this.signer.getAddress());
18878
18901
  this._chainId = await this.signer.getChainId();
18879
18902
  this._kv = void 0;
18880
18903
  this._sql = void 0;
@@ -18981,8 +19004,9 @@ var _TinyCloudNode = class _TinyCloudNode {
18981
19004
  this._spaceService = void 0;
18982
19005
  this._serviceContext = void 0;
18983
19006
  this.runtimePermissionGrants = [];
18984
- if (sessionData.address) {
18985
- this._address = sessionData.address;
19007
+ const restoredAddress = sessionData.address ? (0, import_sdk_core5.canonicalizeAddress)(sessionData.address) : void 0;
19008
+ if (restoredAddress) {
19009
+ this._address = restoredAddress;
18986
19010
  }
18987
19011
  if (sessionData.chainId) {
18988
19012
  this._chainId = sessionData.chainId;
@@ -19017,9 +19041,9 @@ var _TinyCloudNode = class _TinyCloudNode {
19017
19041
  this._vault.initialize(this._serviceContext);
19018
19042
  this._serviceContext.registerService("vault", this._vault);
19019
19043
  this.initializeV2Services(serviceSession);
19020
- if (sessionData.siwe && sessionData.address && sessionData.chainId) {
19044
+ if (sessionData.siwe && restoredAddress && sessionData.chainId) {
19021
19045
  const tcSession = {
19022
- address: sessionData.address,
19046
+ address: restoredAddress,
19023
19047
  chainId: sessionData.chainId,
19024
19048
  sessionKey: JSON.stringify(sessionData.jwk),
19025
19049
  spaceId: sessionData.spaceId,
@@ -19358,8 +19382,8 @@ var _TinyCloudNode = class _TinyCloudNode {
19358
19382
  fetchByNetworkId: (networkId) => this.getEncryptionNetwork(networkId)
19359
19383
  },
19360
19384
  wellKnown: {
19361
- fetchWellKnown: async (ownerDid, discoveryKey) => {
19362
- if (!this._address || ownerDid !== this.did) {
19385
+ fetchWellKnown: async (principal, discoveryKey) => {
19386
+ if (!this._address || !didPrincipalMatches(principal, this.did)) {
19363
19387
  return null;
19364
19388
  }
19365
19389
  if (!this.config.host) {
@@ -19683,7 +19707,7 @@ var _TinyCloudNode = class _TinyCloudNode {
19683
19707
  return {
19684
19708
  cid: delegationSession.delegationCid,
19685
19709
  delegateDID: params.shareKeyDID,
19686
- delegatorDID: `did:pkh:eip155:${session.chainId}:${session.address}`,
19710
+ delegatorDID: (0, import_sdk_core5.pkhDid)(session.address, session.chainId),
19687
19711
  spaceId: params.spaceId,
19688
19712
  path: params.path,
19689
19713
  actions: params.actions,
@@ -20015,13 +20039,8 @@ var _TinyCloudNode = class _TinyCloudNode {
20015
20039
  if (delegation.expiry.getTime() <= Date.now()) {
20016
20040
  throw new import_sdk_core5.SessionExpiredError(delegation.expiry);
20017
20041
  }
20018
- const expectedDids = /* @__PURE__ */ new Set([
20019
- session.verificationMethod,
20020
- this.didWithoutFragment(session.verificationMethod),
20021
- this.sessionDid,
20022
- this.didWithoutFragment(this.sessionDid)
20023
- ]);
20024
- if (!expectedDids.has(delegation.delegateDID)) {
20042
+ const expectedDids = [session.verificationMethod, this.sessionDid];
20043
+ if (!expectedDids.some((did) => didPrincipalMatches(delegation.delegateDID, did))) {
20025
20044
  throw new Error(
20026
20045
  `Runtime delegation targets ${delegation.delegateDID} but this session key is ${session.verificationMethod}.`
20027
20046
  );
@@ -20548,7 +20567,9 @@ var _TinyCloudNode = class _TinyCloudNode {
20548
20567
  "materializeDelegation requires a composed manifest request"
20549
20568
  );
20550
20569
  }
20551
- const target = request.delegationTargets.find((entry) => entry.did === did);
20570
+ const target = request.delegationTargets.find(
20571
+ (entry) => didPrincipalMatches(entry.did, did)
20572
+ );
20552
20573
  if (!target) {
20553
20574
  throw new Error(`No manifest delegation target found for DID ${did}`);
20554
20575
  }
@@ -20856,10 +20877,6 @@ var _TinyCloudNode = class _TinyCloudNode {
20856
20877
  expiresAt: delegation.expiry
20857
20878
  };
20858
20879
  }
20859
- didWithoutFragment(did) {
20860
- const fragment = did.indexOf("#");
20861
- return fragment === -1 ? did : did.slice(0, fragment);
20862
- }
20863
20880
  installRuntimeGrantFromServiceSession(delegation, session, expiresAt) {
20864
20881
  const operations = this.operationsFromDelegation(delegation);
20865
20882
  if (operations.length === 0) {
@@ -21055,7 +21072,7 @@ var _TinyCloudNode = class _TinyCloudNode {
21055
21072
  if (resolvedDelegateDID.endsWith(".eth") && this.config.ensResolver) {
21056
21073
  const address = await this.config.ensResolver.resolveAddress(resolvedDelegateDID);
21057
21074
  if (!address) throw new Error(`Could not resolve ENS name: ${resolvedDelegateDID}`);
21058
- resolvedDelegateDID = `did:pkh:eip155:1:${address}`;
21075
+ resolvedDelegateDID = (0, import_sdk_core5.pkhDid)(address, 1);
21059
21076
  }
21060
21077
  const entries = legacyParamsToPermissionEntries(
21061
21078
  params.actions,
@@ -21212,7 +21229,7 @@ var _TinyCloudNode = class _TinyCloudNode {
21212
21229
  const targetHost = delegation.host ?? this.config.host;
21213
21230
  if (this.isSessionOnly) {
21214
21231
  const myDid = this.did;
21215
- if (delegation.delegateDID !== myDid) {
21232
+ if (!didPrincipalMatches(delegation.delegateDID, myDid)) {
21216
21233
  throw new Error(
21217
21234
  `Delegation targets ${delegation.delegateDID} but this user's DID is ${myDid}. The delegation must target this user's DID.`
21218
21235
  );
@@ -21616,6 +21633,7 @@ var import_sdk_core20 = require("@tinycloud/sdk-core");
21616
21633
  EncryptionService,
21617
21634
  FileSessionStorage,
21618
21635
  HooksService,
21636
+ IdentityParseError,
21619
21637
  KVService,
21620
21638
  ManifestValidationError,
21621
21639
  MemorySessionStorage,
@@ -21646,6 +21664,7 @@ var import_sdk_core20 = require("@tinycloud/sdk-core");
21646
21664
  VaultPublicSpaceKVActions,
21647
21665
  VersionCheckError,
21648
21666
  WasmKeyProvider,
21667
+ addressStorageKey,
21649
21668
  buildCanonicalDecryptRequest,
21650
21669
  buildDecryptAttenuation,
21651
21670
  buildDecryptFacts,
@@ -21654,7 +21673,11 @@ var import_sdk_core20 = require("@tinycloud/sdk-core");
21654
21673
  buildSpaceUri,
21655
21674
  canonicalHashHex,
21656
21675
  canonicalSignedResponse,
21676
+ canonicalizeAddress,
21677
+ canonicalizeDid,
21678
+ canonicalizeDidUrl,
21657
21679
  canonicalizeEncryptionJson,
21680
+ canonicalizeNetworkId,
21658
21681
  canonicalizeSecretScope,
21659
21682
  checkDecryptInvocationInput,
21660
21683
  checkNodeInfo,
@@ -21669,6 +21692,8 @@ var import_sdk_core20 = require("@tinycloud/sdk-core");
21669
21692
  defaultSpaceCreationHandler,
21670
21693
  deriveSignedReceiverKey,
21671
21694
  deserializeDelegation,
21695
+ didCacheKey,
21696
+ didEquals,
21672
21697
  discoverNetwork,
21673
21698
  encryptToNetwork,
21674
21699
  encryptionBase64Decode,
@@ -21684,14 +21709,21 @@ var import_sdk_core20 = require("@tinycloud/sdk-core");
21684
21709
  hexDecode,
21685
21710
  hexEncode,
21686
21711
  isCapabilitySubset,
21712
+ isEvmAddress,
21687
21713
  isNetworkId,
21688
21714
  loadManifest,
21715
+ makePkhSpaceId,
21689
21716
  makePublicSpaceId,
21690
21717
  networkDiscoveryKey,
21691
21718
  openWrappedKey,
21719
+ parseCanonicalNetworkId,
21692
21720
  parseExpiry,
21693
21721
  parseNetworkId,
21722
+ parsePkhDid,
21694
21723
  parseSpaceUri,
21724
+ pkhDid,
21725
+ principalDid,
21726
+ principalDidEquals,
21695
21727
  resolveManifest,
21696
21728
  resolveSecretListPrefix,
21697
21729
  resolveSecretPath,