@tinycloud/node-sdk 2.10.0 → 2.11.0-beta.1

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.d.cts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AccountApplication, AccountApplicationListOptions, AccountDelegation, AccountDelegationListOptions, AccountDelegationRevokeOptions, AccountIndexEnsureResult, AccountIndexRebuildResult, AccountIndexStatus, AccountIndexedReadOptions, AccountService, AccountServiceConfig, AccountSpace, AccountSpaceListOptions, AccountStatus, AutoApproveSpaceCreationHandler, AutoRejectStrategy, AutoSignStrategy, BatchOptions, BatchResponse, CallbackStrategy, CanonicalAddress, CanonicalParsedNetworkId, CapabilityEntry, CapabilityKeyRegistry, CapabilityKeyRegistryErrorCode, CapabilityKeyRegistryErrorCodes, CaveatedDelegationUnsupportedError, ClientSession, ColumnInfo, ComposeManifestOptions, ComposedManifestRequest, CreateDelegationParams, DEFAULT_MANIFEST_SPACE, DEFAULT_MANIFEST_VERSION, DEFAULT_SIGNED_READ_URL_EXPIRY_MS, DataVaultConfig, DataVaultService, DatabaseHandle, DelegateReceivedShareParams, DelegatedShareAccess, Delegation, DelegationChain, DelegationChainV2, DelegationDirection, DelegationError, DelegationErrorCode, DelegationErrorCodes, DelegationFilters, DelegationManager, DelegationManagerConfig, DelegationRecord, DelegationResult, DidCacheKeyOptions, DidEqualsOptions, DuckDbAction, DuckDbActionType, DuckDbBatchOptions, DuckDbBatchResponse, DuckDbDatabaseHandle, DuckDbExecuteOptions, DuckDbExecuteResponse, DuckDbOptions, DuckDbQueryOptions, DuckDbQueryResponse, DuckDbService, DuckDbServiceConfig, DuckDbStatement, DuckDbValue, EncodedShareData, ExecuteOptions, ExecuteResponse, Extension, FetchFunction, GenerateShareParams, ICapabilityKeyRegistry, IDataVaultService, IDatabaseHandle, IDuckDbDatabaseHandle, IDuckDbService, IENSResolver, IKVService, INotificationHandler, IPrefixedKVService, ISQLService, ISecretsService, ISessionManager, ISessionStorage, ISharingService, ISigner, ISpace, ISpaceCreationHandler, ISpaceScopedDelegations, ISpaceScopedSharing, ISpaceService, IUserAuthorization, IWasmBindings, IdentityParseError, IngestOptions, InvokeFunction, JWK, KVBatchReadResponse, KVCreateSignedReadUrlOptions, KVResponse, KVService, KVServiceConfig, KVSignedReadUrlResponse, KeyInfo, KeyProvider, KeyType, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, OpenKeyCallbackStrategy, OpenKeySigningRequestBody, OpenKeySigningResponseBody, OpenKeySigningStrategyOptions, OwnerSharePolicyRegistrationReceipt, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PkhDidParts, PrefixedKVService, ProtocolMismatchError, QueryOptions, QueryResponse, ReceiveOptions, RegisterOwnerSharePolicyParams, ResolvedCapabilities, ResolvedDelegate, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretPayload, SecretScopeOptions, SecretsError, SecretsService, ServiceContext, ServiceContextConfig, ServiceSession, SessionExpiredError, ShareAccess, ShareLink, ShareLinkData, ShareSchema, SharingService, SharingServiceConfig, SignCallback, SignInOptions, SignRequest, SignResponse, SilentNotificationHandler, Space, SpaceAbilitiesMap, SpaceConfig, SpaceCreationContext, SpaceErrorCode, SpaceErrorCodes, SpaceInfo, SpaceOwnership, SpaceService, SpaceServiceConfig, SqlStatement, SqlValue, StoredDelegationChain, TableInfo, TelemetryConfig, TelemetryEventHandler, TinyCloud, TinyCloudConfig, TinyCloudDebugEnableOptions, TinyCloudDebugEvent, TinyCloudDebugLevel, TinyCloudDebugLogger, TinyCloudDebugTimer, TinyCloudSession, UnsupportedFeatureError, VAULT_PERMISSION_SERVICE, VaultCrypto, VaultEntry, VaultError, VaultGetOptions, VaultGrantOptions, VaultHeaders, VaultListOptions, VaultNetworkReadResult, VaultPublicSpaceKVActions, VaultPutOptions, VersionCheckError, ViewInfo, WasmVaultFunctions, addressStorageKey, buildSpaceUri, canonicalizeAddress, canonicalizeDid, canonicalizeDidUrl, canonicalizeNetworkId, canonicalizeSecretScope, checkNodeInfo, clearTinyCloudDebugLogs, composeManifestRequest, createCapabilityKeyRegistry, createOpenKeyCallbackSigningStrategy, createSharingService, createSpaceService, createVaultCrypto, defaultSpaceCreationHandler, didCacheKey, didEquals, disableTinyCloudDebug, enableTinyCloudDebug, expandActionShortNames, expandPermissionEntries, expandPermissionEntry, getTinyCloudDebugLogs, installTinyCloudDebugGlobals, isCapabilitySubset, isEvmAddress, loadManifest, makePkhSpaceId, makePublicSpaceId, parseCanonicalNetworkId, parseExpiry, parsePkhDid, parseSpaceUri, pkhDid, principalDid, principalDidEquals, resolveManifest, resolveSecretListPrefix, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, tinyCloudDebugLogger, validateManifest } from '@tinycloud/sdk-core';
2
- export { C as CreateOwnerDelegationParams, D as DelegateToOptions, b as DelegateToResult, c as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, e as NodeUserAuthorization, f as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, P as PortableDelegation, h as RuntimePermissionGrantOptions, S as SecretPermissionHint, i as SecretReadInput, j as SecretReadResult, k as SignStrategy, T as TinyCloudNode, l as TinyCloudNodeConfig, U as UnsupportedSessionRestoreError, W as WasmKeyProvider, m as WasmKeyProviderConfig, o as createWasmKeyProvider, p as defaultSignStrategy, q as deserializeDelegation, s as serializeDelegation } from './core-B_i2KfID.cjs';
2
+ export { C as CreateOwnerDelegationParams, D as DelegateToOptions, b as DelegateToResult, c as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, e as NodeUserAuthorization, f as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, P as PortableDelegation, h as RuntimePermissionGrantOptions, S as SecretPermissionHint, i as SecretReadInput, j as SecretReadResult, k as SignStrategy, T as TinyCloudNode, l as TinyCloudNodeConfig, U as UnsupportedSessionRestoreError, W as WasmKeyProvider, m as WasmKeyProviderConfig, o as createWasmKeyProvider, p as defaultSignStrategy, q as deserializeDelegation, s as serializeDelegation } from './core-CQ_5wXQT.cjs';
3
3
  import 'events';
4
4
  import '@tinycloud/sdk-services';
package/dist/core.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AccountApplication, AccountApplicationListOptions, AccountDelegation, AccountDelegationListOptions, AccountDelegationRevokeOptions, AccountIndexEnsureResult, AccountIndexRebuildResult, AccountIndexStatus, AccountIndexedReadOptions, AccountService, AccountServiceConfig, AccountSpace, AccountSpaceListOptions, AccountStatus, AutoApproveSpaceCreationHandler, AutoRejectStrategy, AutoSignStrategy, BatchOptions, BatchResponse, CallbackStrategy, CanonicalAddress, CanonicalParsedNetworkId, CapabilityEntry, CapabilityKeyRegistry, CapabilityKeyRegistryErrorCode, CapabilityKeyRegistryErrorCodes, CaveatedDelegationUnsupportedError, ClientSession, ColumnInfo, ComposeManifestOptions, ComposedManifestRequest, CreateDelegationParams, DEFAULT_MANIFEST_SPACE, DEFAULT_MANIFEST_VERSION, DEFAULT_SIGNED_READ_URL_EXPIRY_MS, DataVaultConfig, DataVaultService, DatabaseHandle, DelegateReceivedShareParams, DelegatedShareAccess, Delegation, DelegationChain, DelegationChainV2, DelegationDirection, DelegationError, DelegationErrorCode, DelegationErrorCodes, DelegationFilters, DelegationManager, DelegationManagerConfig, DelegationRecord, DelegationResult, DidCacheKeyOptions, DidEqualsOptions, DuckDbAction, DuckDbActionType, DuckDbBatchOptions, DuckDbBatchResponse, DuckDbDatabaseHandle, DuckDbExecuteOptions, DuckDbExecuteResponse, DuckDbOptions, DuckDbQueryOptions, DuckDbQueryResponse, DuckDbService, DuckDbServiceConfig, DuckDbStatement, DuckDbValue, EncodedShareData, ExecuteOptions, ExecuteResponse, Extension, FetchFunction, GenerateShareParams, ICapabilityKeyRegistry, IDataVaultService, IDatabaseHandle, IDuckDbDatabaseHandle, IDuckDbService, IENSResolver, IKVService, INotificationHandler, IPrefixedKVService, ISQLService, ISecretsService, ISessionManager, ISessionStorage, ISharingService, ISigner, ISpace, ISpaceCreationHandler, ISpaceScopedDelegations, ISpaceScopedSharing, ISpaceService, IUserAuthorization, IWasmBindings, IdentityParseError, IngestOptions, InvokeFunction, JWK, KVBatchReadResponse, KVCreateSignedReadUrlOptions, KVResponse, KVService, KVServiceConfig, KVSignedReadUrlResponse, KeyInfo, KeyProvider, KeyType, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, OpenKeyCallbackStrategy, OpenKeySigningRequestBody, OpenKeySigningResponseBody, OpenKeySigningStrategyOptions, OwnerSharePolicyRegistrationReceipt, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PkhDidParts, PrefixedKVService, ProtocolMismatchError, QueryOptions, QueryResponse, ReceiveOptions, RegisterOwnerSharePolicyParams, ResolvedCapabilities, ResolvedDelegate, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretPayload, SecretScopeOptions, SecretsError, SecretsService, ServiceContext, ServiceContextConfig, ServiceSession, SessionExpiredError, ShareAccess, ShareLink, ShareLinkData, ShareSchema, SharingService, SharingServiceConfig, SignCallback, SignInOptions, SignRequest, SignResponse, SilentNotificationHandler, Space, SpaceAbilitiesMap, SpaceConfig, SpaceCreationContext, SpaceErrorCode, SpaceErrorCodes, SpaceInfo, SpaceOwnership, SpaceService, SpaceServiceConfig, SqlStatement, SqlValue, StoredDelegationChain, TableInfo, TelemetryConfig, TelemetryEventHandler, TinyCloud, TinyCloudConfig, TinyCloudDebugEnableOptions, TinyCloudDebugEvent, TinyCloudDebugLevel, TinyCloudDebugLogger, TinyCloudDebugTimer, TinyCloudSession, UnsupportedFeatureError, VAULT_PERMISSION_SERVICE, VaultCrypto, VaultEntry, VaultError, VaultGetOptions, VaultGrantOptions, VaultHeaders, VaultListOptions, VaultNetworkReadResult, VaultPublicSpaceKVActions, VaultPutOptions, VersionCheckError, ViewInfo, WasmVaultFunctions, addressStorageKey, buildSpaceUri, canonicalizeAddress, canonicalizeDid, canonicalizeDidUrl, canonicalizeNetworkId, canonicalizeSecretScope, checkNodeInfo, clearTinyCloudDebugLogs, composeManifestRequest, createCapabilityKeyRegistry, createOpenKeyCallbackSigningStrategy, createSharingService, createSpaceService, createVaultCrypto, defaultSpaceCreationHandler, didCacheKey, didEquals, disableTinyCloudDebug, enableTinyCloudDebug, expandActionShortNames, expandPermissionEntries, expandPermissionEntry, getTinyCloudDebugLogs, installTinyCloudDebugGlobals, isCapabilitySubset, isEvmAddress, loadManifest, makePkhSpaceId, makePublicSpaceId, parseCanonicalNetworkId, parseExpiry, parsePkhDid, parseSpaceUri, pkhDid, principalDid, principalDidEquals, resolveManifest, resolveSecretListPrefix, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, tinyCloudDebugLogger, validateManifest } from '@tinycloud/sdk-core';
2
- export { C as CreateOwnerDelegationParams, D as DelegateToOptions, b as DelegateToResult, c as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, e as NodeUserAuthorization, f as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, P as PortableDelegation, h as RuntimePermissionGrantOptions, S as SecretPermissionHint, i as SecretReadInput, j as SecretReadResult, k as SignStrategy, T as TinyCloudNode, l as TinyCloudNodeConfig, U as UnsupportedSessionRestoreError, W as WasmKeyProvider, m as WasmKeyProviderConfig, o as createWasmKeyProvider, p as defaultSignStrategy, q as deserializeDelegation, s as serializeDelegation } from './core-B_i2KfID.js';
2
+ export { C as CreateOwnerDelegationParams, D as DelegateToOptions, b as DelegateToResult, c as DelegatedAccess, F as FileSessionStorage, M as MemorySessionStorage, N as NodeEventEmitterStrategy, e as NodeUserAuthorization, f as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, P as PortableDelegation, h as RuntimePermissionGrantOptions, S as SecretPermissionHint, i as SecretReadInput, j as SecretReadResult, k as SignStrategy, T as TinyCloudNode, l as TinyCloudNodeConfig, U as UnsupportedSessionRestoreError, W as WasmKeyProvider, m as WasmKeyProviderConfig, o as createWasmKeyProvider, p as defaultSignStrategy, q as deserializeDelegation, s as serializeDelegation } from './core-CQ_5wXQT.js';
3
3
  import 'events';
4
4
  import '@tinycloud/sdk-services';
package/dist/core.js CHANGED
@@ -1883,19 +1883,87 @@ function persistedExpiry(value) {
1883
1883
  function sameInstant(left, right) {
1884
1884
  return left.getTime() === right.getTime();
1885
1885
  }
1886
- function sharingActionsToAbilities(path, actions) {
1887
- var _a;
1886
+ function ownerDelegationPermissions(params) {
1887
+ const hasPermissions = Object.prototype.hasOwnProperty.call(params, "permissions");
1888
+ const hasLegacy = Object.prototype.hasOwnProperty.call(params, "path") || Object.prototype.hasOwnProperty.call(params, "actions");
1889
+ if (hasPermissions === hasLegacy) {
1890
+ throw new Error("Owner delegation requires exactly one authority shape: path/actions or permissions");
1891
+ }
1892
+ const permissions = [];
1893
+ if (hasPermissions) {
1894
+ if (!Array.isArray(params.permissions)) {
1895
+ throw new Error("Owner delegation permissions are invalid");
1896
+ }
1897
+ permissions.push(...params.permissions.map((permission) => ({
1898
+ service: permission.service,
1899
+ path: permission.path,
1900
+ actions: [...permission.actions]
1901
+ })));
1902
+ } else {
1903
+ if (typeof params.path !== "string" || !Array.isArray(params.actions)) {
1904
+ throw new Error("Owner delegation requires bounded capabilities");
1905
+ }
1906
+ const byService = /* @__PURE__ */ new Map();
1907
+ for (const action of params.actions) {
1908
+ if (typeof action !== "string") {
1909
+ throw new Error("Owner delegation capabilities are unsupported");
1910
+ }
1911
+ const slash = action.indexOf("/");
1912
+ const service = slash === -1 ? "" : action.slice(0, slash);
1913
+ if (SERVICE_LONG_TO_SHORT[service] === void 0) {
1914
+ throw new Error("Owner delegation capabilities are unsupported");
1915
+ }
1916
+ const actions = byService.get(service) ?? [];
1917
+ actions.push(action);
1918
+ byService.set(service, actions);
1919
+ }
1920
+ for (const [service, actions] of byService) {
1921
+ permissions.push({ service, path: params.path, actions });
1922
+ }
1923
+ }
1924
+ if (permissions.length === 0 || permissions.length > 16) {
1925
+ throw new Error("Owner delegation requires bounded capabilities");
1926
+ }
1927
+ const resources = /* @__PURE__ */ new Set();
1928
+ for (const permission of permissions) {
1929
+ if (typeof permission.service !== "string" || SERVICE_LONG_TO_SHORT[permission.service] === void 0 || typeof permission.path !== "string" || permission.path.length === 0 || permission.path.trim() !== permission.path || /[\u0000-\u001f\u007f\\*]/.test(permission.path) || !Array.isArray(permission.actions) || permission.actions.length === 0 || permission.actions.length > 32) {
1930
+ throw new Error("Owner delegation requires bounded capabilities");
1931
+ }
1932
+ const resourceKey = `${permission.service}\0${permission.path}`;
1933
+ if (resources.has(resourceKey)) {
1934
+ throw new Error("Owner delegation permissions contain duplicate resources");
1935
+ }
1936
+ resources.add(resourceKey);
1937
+ const actions = /* @__PURE__ */ new Set();
1938
+ for (const action of permission.actions) {
1939
+ if (typeof action !== "string" || !action.startsWith(`${permission.service}/`) || action.length === permission.service.length + 1 || actions.has(action)) {
1940
+ throw new Error("Owner delegation capabilities are unsupported");
1941
+ }
1942
+ actions.add(action);
1943
+ }
1944
+ if (permission.service === ENCRYPTION_PERMISSION_SERVICE2) {
1945
+ try {
1946
+ parseNetworkId2(permission.path);
1947
+ } catch {
1948
+ throw new Error("Owner delegation encryption permission requires a canonical network URN");
1949
+ }
1950
+ }
1951
+ }
1952
+ return permissions;
1953
+ }
1954
+ function ownerPermissionsToAbilities(permissions) {
1888
1955
  const abilities = {};
1889
- for (const action of actions) {
1890
- const slash = action.indexOf("/");
1891
- if (slash === -1) return void 0;
1892
- const shortService = SERVICE_LONG_TO_SHORT[action.slice(0, slash)];
1893
- if (shortService === void 0) return void 0;
1956
+ const rawAbilities = {};
1957
+ for (const permission of permissions) {
1958
+ if (permission.service === ENCRYPTION_PERMISSION_SERVICE2) {
1959
+ rawAbilities[permission.path] = [...permission.actions];
1960
+ continue;
1961
+ }
1962
+ const shortService = SERVICE_LONG_TO_SHORT[permission.service];
1894
1963
  abilities[shortService] ?? (abilities[shortService] = {});
1895
- (_a = abilities[shortService])[path] ?? (_a[path] = []);
1896
- abilities[shortService][path].push(action);
1964
+ abilities[shortService][permission.path] = [...permission.actions];
1897
1965
  }
1898
- return Object.keys(abilities).length > 0 ? abilities : void 0;
1966
+ return { abilities, rawAbilities };
1899
1967
  }
1900
1968
  function base64UrlEncode(bytes) {
1901
1969
  const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
@@ -4269,21 +4337,29 @@ var _TinyCloudNode = class _TinyCloudNode {
4269
4337
  async createOwnerDelegation(params, assertActive) {
4270
4338
  const assertOwnerGraphActive = assertActive ?? this._serviceGraph.assertActive.bind(this._serviceGraph);
4271
4339
  assertOwnerGraphActive();
4272
- if (!params.delegateDid.startsWith("did:key:") || params.actions.length === 0 || params.path.length === 0) {
4340
+ if (!params.delegateDid.startsWith("did:key:")) {
4273
4341
  throw new Error("Owner delegation requires an external did:key audience and bounded capabilities");
4274
4342
  }
4343
+ const permissions = ownerDelegationPermissions(params);
4275
4344
  const now = /* @__PURE__ */ new Date();
4276
- if (params.expiresAt.getTime() <= now.getTime() || params.expiresAt.getTime() - now.getTime() > EXPIRY3.MAX_MS) {
4345
+ if (!(params.expiresAt instanceof Date) || params.expiresAt.getTime() <= now.getTime() || params.expiresAt.getTime() - now.getTime() > EXPIRY3.MAX_MS) {
4277
4346
  throw new Error("Owner delegation expiry must be explicit, future, and within EXPIRY.MAX_MS");
4278
4347
  }
4279
4348
  if (!this.signer) throw new Error("Owner wallet signer is required");
4280
4349
  const session = this.currentTinyCloudSession();
4281
4350
  if (!session) throw new Error("Owner session is required");
4282
- const abilities = sharingActionsToAbilities(params.path, [...params.actions]);
4283
- if (!abilities) throw new Error("Owner delegation capabilities are unsupported");
4351
+ const ownerDid = pkhDid2(session.address, session.chainId);
4352
+ for (const permission of permissions) {
4353
+ if (permission.service === ENCRYPTION_PERMISSION_SERVICE2 && !principalDidEquals2(parseNetworkId2(permission.path).ownerDid, ownerDid)) {
4354
+ throw new Error("Owner delegation cannot grant a foreign encryption network");
4355
+ }
4356
+ }
4357
+ const { abilities, rawAbilities } = ownerPermissionsToAbilities(permissions);
4358
+ const primary = permissions[0];
4284
4359
  const host = this.config.host;
4285
4360
  const prepared = this.wasmBindings.prepareSession({
4286
4361
  abilities,
4362
+ ...Object.keys(rawAbilities).length === 0 ? {} : { rawAbilities },
4287
4363
  address: this.wasmBindings.ensureEip55(session.address),
4288
4364
  chainId: session.chainId,
4289
4365
  domain: this.siweDomain,
@@ -4303,10 +4379,10 @@ var _TinyCloudNode = class _TinyCloudNode {
4303
4379
  const delegation = {
4304
4380
  cid: delegationSession.delegationCid,
4305
4381
  delegateDID: params.delegateDid,
4306
- delegatorDID: pkhDid2(session.address, session.chainId),
4382
+ delegatorDID: ownerDid,
4307
4383
  spaceId: params.spaceId,
4308
- path: params.path,
4309
- actions: [...params.actions],
4384
+ path: primary.path,
4385
+ actions: [...primary.actions],
4310
4386
  expiry: params.expiresAt,
4311
4387
  isRevoked: false,
4312
4388
  allowSubDelegation: true,
@@ -4317,6 +4393,7 @@ var _TinyCloudNode = class _TinyCloudNode {
4317
4393
  delegation,
4318
4394
  signedDagCbor: decodeAuthorizationBytes(delegationSession.delegationHeader.Authorization),
4319
4395
  delegationCid: delegationSession.delegationCid,
4396
+ permissions,
4320
4397
  nodeReceipt: {
4321
4398
  commitEventCid: activation.commitEventCid,
4322
4399
  activated: activation.activated ?? [],