@tinycloud/node-sdk 3.8.0-beta.0 → 3.8.0-beta.2
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/{TinyCloudNode-BtKzLDJX.d.ts → TinyCloudNode-B6VOBrCb.d.ts} +15 -2
- package/dist/{TinyCloudNode-ggmlnSfI.d.cts → TinyCloudNode-CVO41O12.d.cts} +15 -2
- package/dist/{authority-sJ6buHMj.d.ts → authority-DGi1hIMK.d.ts} +21 -5
- package/dist/{authority-_SYAE-uV.d.cts → authority-DgVV80bI.d.cts} +21 -5
- package/dist/core.cjs +54 -17
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +3 -3
- package/dist/core.d.ts +3 -3
- package/dist/core.js +54 -17
- package/dist/core.js.map +1 -1
- package/dist/encryption-keys.d.cts +1 -1
- package/dist/encryption-keys.d.ts +1 -1
- package/dist/index.cjs +93 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +93 -18
- package/dist/index.js.map +1 -1
- package/dist/replication/authority.cjs +40 -1
- package/dist/replication/authority.cjs.map +1 -1
- package/dist/replication/authority.d.cts +2 -2
- package/dist/replication/authority.d.ts +2 -2
- package/dist/replication/authority.js +39 -1
- package/dist/replication/authority.js.map +1 -1
- package/dist/replication/runtime.cjs.map +1 -1
- package/dist/replication/runtime.d.cts +1 -1
- package/dist/replication/runtime.d.ts +1 -1
- package/dist/replication/runtime.js.map +1 -1
- package/dist/{runtime-v62FzQHz.d.ts → runtime-CO4VXnPq.d.ts} +2 -1
- package/dist/{runtime-D1o9Eybt.d.cts → runtime-mRhSu-vJ.d.cts} +2 -1
- package/package.json +4 -4
package/dist/core.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ReplicationOptions, Manifest, PermissionEntry } from '@tinycloud/sdk-core';
|
|
2
2
|
export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AccountApplication, AccountApplicationListOptions, AccountApplicationRegisterOptions, AccountDelegation, AccountDelegationListOptions, AccountDelegationRevokeOptions, AccountIndexEnsureResult, AccountIndexRebuildResult, AccountIndexStatus, AccountIndexedReadOptions, AccountService, AccountServiceConfig, AccountSpace, AccountSpaceListOptions, AccountStatus, AuthorityRefusal, 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, KVListPage, KVReadThrough, KVReplicaHandle, KVReplicaSpec, KVReplicaStorage, KVReplicationController, KVReplicationDeps, KVResponse, KVService, KVServiceConfig, KVSignedReadUrlResponse, KeyInfo, KeyProvider, KeyType, LocalGetResult, LocalListResult, LocalReadMeta, LocalReplicaStatus, LocalSyncResult, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, OpenKeyCallbackStrategy, OpenKeySigningRequestBody, OpenKeySigningResponseBody, OpenKeySigningStrategyOptions, ParsedSecretCatalogKey, PendingWriteRecord, PendingWriteState, PendingWriteStore, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PinnedKey, PkhDidParts, PrefixedKVService, ProtocolMismatchError, PurgeTarget, QueryOptions, QueryResponse, ReceiveOptions, RegisterBatchSuccess, RegisterPolicyV3Input, RegisterPolicyV3Receipt, ReplicaAuthorityState, ReplicaCoverage, ReplicaDevice, ReplicaGatedHandle, ReplicaGrantInfo, ReplicaInspectedStatus, ReplicaState, ReplicaStatusEntry, ReplicationAuthority, ReplicationControl, ReplicationEvent, ReplicationIdentity, ReplicationOptions, ReplicationPurgeReport, ReplicationReason, ReplicationScheduler, ResolvedCapabilities, ResolvedDelegate, ResolvedReplicationOptions, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretCatalogEntry, 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, parseSecretCatalogKey, parseSpaceUri, pkhDid, principalDid, principalDidEquals, resolveManifest, resolveSecretListPrefix, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, tinyCloudDebugLogger, validateManifest } from '@tinycloud/sdk-core';
|
|
3
3
|
import { _ as __gated_network } from './gated-network-BEF2XSTC.cjs';
|
|
4
|
-
import { _ as __authority } from './authority-
|
|
5
|
-
import { _ as __runtime } from './runtime-
|
|
4
|
+
import { _ as __authority } from './authority-DgVV80bI.cjs';
|
|
5
|
+
import { _ as __runtime } from './runtime-mRhSu-vJ.cjs';
|
|
6
6
|
import { ReplicaDenyInput } from '@tinycloud/sdk-services/kv/replication';
|
|
7
7
|
export { F as FileSessionStorage, M as MemorySessionStorage, W as WasmKeyProvider, a as WasmKeyProviderConfig, c as createWasmKeyProvider } from './WasmKeyProvider-5Ee7fcAw.cjs';
|
|
8
|
-
export { B as BootstrapWarning, C as CreateOwnerDelegationParams, D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, E as EnsureEncryptionNetworkOptions, I as InvalidRestoredSessionError, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, R as RuntimePermissionGrantOptions, S as SecretPermissionHint, e as SecretReadInput, f as SecretReadResult, g as SignStrategy, T as TinyCloudNode, h as TinyCloudNodeConfig, U as UnifiedOwnerRootInput, i as UnifiedOwnerRootReceipt, j as UnsupportedSessionRestoreError, k as defaultSignStrategy } from './TinyCloudNode-
|
|
8
|
+
export { B as BootstrapWarning, C as CreateOwnerDelegationParams, D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, E as EnsureEncryptionNetworkOptions, I as InvalidRestoredSessionError, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, R as RuntimePermissionGrantOptions, S as SecretPermissionHint, e as SecretReadInput, f as SecretReadResult, g as SignStrategy, T as TinyCloudNode, h as TinyCloudNodeConfig, U as UnifiedOwnerRootInput, i as UnifiedOwnerRootReceipt, j as UnsupportedSessionRestoreError, k as defaultSignStrategy } from './TinyCloudNode-CVO41O12.cjs';
|
|
9
9
|
export { C as CompactRuntimeDelegationInput, P as PortableDelegation, V as ValidatedRuntimeDelegation, a as activateCompactRuntimeDelegation, d as deserializeDelegation, s as serializeDelegation } from './delegation-0LKZkmP2.cjs';
|
|
10
10
|
import '@tinycloud/sdk-services';
|
|
11
11
|
import 'events';
|
package/dist/core.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ReplicationOptions, Manifest, PermissionEntry } from '@tinycloud/sdk-core';
|
|
2
2
|
export { ACCOUNT_REGISTRY_PATH, ACCOUNT_REGISTRY_SPACE, AccountApplication, AccountApplicationListOptions, AccountApplicationRegisterOptions, AccountDelegation, AccountDelegationListOptions, AccountDelegationRevokeOptions, AccountIndexEnsureResult, AccountIndexRebuildResult, AccountIndexStatus, AccountIndexedReadOptions, AccountService, AccountServiceConfig, AccountSpace, AccountSpaceListOptions, AccountStatus, AuthorityRefusal, 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, KVListPage, KVReadThrough, KVReplicaHandle, KVReplicaSpec, KVReplicaStorage, KVReplicationController, KVReplicationDeps, KVResponse, KVService, KVServiceConfig, KVSignedReadUrlResponse, KeyInfo, KeyProvider, KeyType, LocalGetResult, LocalListResult, LocalReadMeta, LocalReplicaStatus, LocalSyncResult, Manifest, ManifestDefaults, ManifestRegistryRecord, ManifestSecretActions, ManifestValidationError, OpenKeyCallbackStrategy, OpenKeySigningRequestBody, OpenKeySigningResponseBody, OpenKeySigningStrategyOptions, ParsedSecretCatalogKey, PendingWriteRecord, PendingWriteState, PendingWriteStore, PermissionEntry, PermissionNotInManifestError, PersistedSessionData, PinnedKey, PkhDidParts, PrefixedKVService, ProtocolMismatchError, PurgeTarget, QueryOptions, QueryResponse, ReceiveOptions, RegisterBatchSuccess, RegisterPolicyV3Input, RegisterPolicyV3Receipt, ReplicaAuthorityState, ReplicaCoverage, ReplicaDevice, ReplicaGatedHandle, ReplicaGrantInfo, ReplicaInspectedStatus, ReplicaState, ReplicaStatusEntry, ReplicationAuthority, ReplicationControl, ReplicationEvent, ReplicationIdentity, ReplicationOptions, ReplicationPurgeReport, ReplicationReason, ReplicationScheduler, ResolvedCapabilities, ResolvedDelegate, ResolvedReplicationOptions, ResolvedSecretPath, ResourceCapability, SECRET_NAME_RE, SQLAction, SQLActionType, SQLService, SQLServiceConfig, SchemaInfo, SecretCatalogEntry, 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, parseSecretCatalogKey, parseSpaceUri, pkhDid, principalDid, principalDidEquals, resolveManifest, resolveSecretListPrefix, resolveSecretPath, resourceCapabilitiesToSpaceAbilitiesMap, tinyCloudDebugLogger, validateManifest } from '@tinycloud/sdk-core';
|
|
3
3
|
import { _ as __gated_network } from './gated-network-BEF2XSTC.js';
|
|
4
|
-
import { _ as __authority } from './authority-
|
|
5
|
-
import { _ as __runtime } from './runtime-
|
|
4
|
+
import { _ as __authority } from './authority-DGi1hIMK.js';
|
|
5
|
+
import { _ as __runtime } from './runtime-CO4VXnPq.js';
|
|
6
6
|
import { ReplicaDenyInput } from '@tinycloud/sdk-services/kv/replication';
|
|
7
7
|
export { F as FileSessionStorage, M as MemorySessionStorage, W as WasmKeyProvider, a as WasmKeyProviderConfig, c as createWasmKeyProvider } from './WasmKeyProvider-5Ee7fcAw.js';
|
|
8
|
-
export { B as BootstrapWarning, C as CreateOwnerDelegationParams, D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, E as EnsureEncryptionNetworkOptions, I as InvalidRestoredSessionError, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, R as RuntimePermissionGrantOptions, S as SecretPermissionHint, e as SecretReadInput, f as SecretReadResult, g as SignStrategy, T as TinyCloudNode, h as TinyCloudNodeConfig, U as UnifiedOwnerRootInput, i as UnifiedOwnerRootReceipt, j as UnsupportedSessionRestoreError, k as defaultSignStrategy } from './TinyCloudNode-
|
|
8
|
+
export { B as BootstrapWarning, C as CreateOwnerDelegationParams, D as DelegateToOptions, a as DelegateToResult, b as DelegatedAccess, E as EnsureEncryptionNetworkOptions, I as InvalidRestoredSessionError, N as NodeEventEmitterStrategy, c as NodeUserAuthorization, d as NodeUserAuthorizationConfig, O as OwnerDelegationReceipt, R as RuntimePermissionGrantOptions, S as SecretPermissionHint, e as SecretReadInput, f as SecretReadResult, g as SignStrategy, T as TinyCloudNode, h as TinyCloudNodeConfig, U as UnifiedOwnerRootInput, i as UnifiedOwnerRootReceipt, j as UnsupportedSessionRestoreError, k as defaultSignStrategy } from './TinyCloudNode-B6VOBrCb.js';
|
|
9
9
|
export { C as CompactRuntimeDelegationInput, P as PortableDelegation, V as ValidatedRuntimeDelegation, a as activateCompactRuntimeDelegation, d as deserializeDelegation, s as serializeDelegation } from './delegation-0LKZkmP2.js';
|
|
10
10
|
import '@tinycloud/sdk-services';
|
|
11
11
|
import 'events';
|
package/dist/core.js
CHANGED
|
@@ -306,7 +306,7 @@ function augmentSignInEntriesWithReplication(input) {
|
|
|
306
306
|
}
|
|
307
307
|
eligiblePaths.push(path);
|
|
308
308
|
}
|
|
309
|
-
if (eligiblePaths.length === replication.prefixes.length && eligiblePaths.length > 0 && hasUnrestrictedGetCoverage(input.entries, input.primarySpaceId, "")) {
|
|
309
|
+
if (replication.syncScope !== "prefixes" && eligiblePaths.length === replication.prefixes.length && eligiblePaths.length > 0 && hasUnrestrictedGetCoverage(input.entries, input.primarySpaceId, "")) {
|
|
310
310
|
return [{
|
|
311
311
|
service: KV_SERVICE,
|
|
312
312
|
space: input.primarySpaceId,
|
|
@@ -3774,6 +3774,7 @@ function replicaRestoreRefusal(error) {
|
|
|
3774
3774
|
case "purge_pending":
|
|
3775
3775
|
case "logout_pending":
|
|
3776
3776
|
case "gate_unavailable":
|
|
3777
|
+
case "wallet_provider_required":
|
|
3777
3778
|
return error.gate;
|
|
3778
3779
|
}
|
|
3779
3780
|
}
|
|
@@ -3808,6 +3809,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
3808
3809
|
this.auth = null;
|
|
3809
3810
|
this.tc = null;
|
|
3810
3811
|
this._chainId = 1;
|
|
3812
|
+
this.replicaPurgeFailedHandlers = /* @__PURE__ */ new Set();
|
|
3811
3813
|
/** Mints the replica session stamp on each fresh sign-in (TC-858 §4.1). Undefined when replication is off. */
|
|
3812
3814
|
this.establishReplicaStamp = async (session) => {
|
|
3813
3815
|
const replication = this.config.replication;
|
|
@@ -4014,6 +4016,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
4014
4016
|
return instance ? instance.control.purge(input) : runtime.then((ready) => ready.control.purge(input));
|
|
4015
4017
|
},
|
|
4016
4018
|
clearPending: async () => (await runtime).control.clearPending(),
|
|
4019
|
+
purgeLocalCopy: async () => (await this.eraseReplicaLocalCopy("purge_local_copy"))?.purge ?? { ok: false, retryNow: false },
|
|
4017
4020
|
close: async () => (await runtime).control.close()
|
|
4018
4021
|
};
|
|
4019
4022
|
}
|
|
@@ -4068,18 +4071,14 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
4068
4071
|
get freshEncryptionNetworkCreated() {
|
|
4069
4072
|
return this._freshEncryptionNetworkCreated;
|
|
4070
4073
|
}
|
|
4071
|
-
/**
|
|
4072
|
-
* Subscribe to `storage.full`. It fires on the first write any service had
|
|
4073
|
-
* rejected because the owner's TinyCloud storage is full
|
|
4074
|
-
* (`STORAGE_QUOTA_EXCEEDED` or `STORAGE_LIMIT_REACHED`), so an app can show
|
|
4075
|
-
* one read-only banner. Reads keep working. For the signed-in account's own
|
|
4076
|
-
* storage it fires once per episode: the episode ends only when a write to
|
|
4077
|
-
* that storage succeeds, or on sign-out. A `storage.status()` read does not
|
|
4078
|
-
* end it. A rejection on another owner's delegated space fires once per
|
|
4079
|
-
* owner, until that owner's `storage.status()` reports space again. Returns
|
|
4080
|
-
* the unsubscribe function.
|
|
4081
|
-
*/
|
|
4082
4074
|
on(event, handler) {
|
|
4075
|
+
if (event === "replica.purge.failed") {
|
|
4076
|
+
const listener = handler;
|
|
4077
|
+
this.replicaPurgeFailedHandlers.add(listener);
|
|
4078
|
+
return () => {
|
|
4079
|
+
this.replicaPurgeFailedHandlers.delete(listener);
|
|
4080
|
+
};
|
|
4081
|
+
}
|
|
4083
4082
|
if (event !== "storage.full") {
|
|
4084
4083
|
throw new Error(`Unknown TinyCloud event: ${String(event)}`);
|
|
4085
4084
|
}
|
|
@@ -4299,7 +4298,8 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
4299
4298
|
replication: config.replication?.enabled === true ? {
|
|
4300
4299
|
enabled: true,
|
|
4301
4300
|
prefixes: config.replication.prefixes,
|
|
4302
|
-
allowSecrets: config.replication.allowSecrets === true
|
|
4301
|
+
allowSecrets: config.replication.allowSecrets === true,
|
|
4302
|
+
syncScope: config.replication.syncScope
|
|
4303
4303
|
} : void 0
|
|
4304
4304
|
});
|
|
4305
4305
|
this.tc = new TinyCloud(this.auth, {
|
|
@@ -4559,6 +4559,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
4559
4559
|
const leavingAuth = this.auth;
|
|
4560
4560
|
const leavingContext = this._serviceContext;
|
|
4561
4561
|
let denied;
|
|
4562
|
+
let erased;
|
|
4562
4563
|
try {
|
|
4563
4564
|
this.teardownSession();
|
|
4564
4565
|
} finally {
|
|
@@ -4569,6 +4570,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
4569
4570
|
try {
|
|
4570
4571
|
await this.accountRegistryTail;
|
|
4571
4572
|
await this.quiesceReplicaRuntime();
|
|
4573
|
+
if (denied) erased = await this.eraseReplicaLocalCopy("sign_out", denied.status);
|
|
4572
4574
|
} finally {
|
|
4573
4575
|
if (leavingAddress) {
|
|
4574
4576
|
await (leavingAuth ? leavingAuth.clearPersistedSession(leavingAddress) : this.config.sessionStorage?.clear(leavingAddress));
|
|
@@ -4576,8 +4578,37 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
4576
4578
|
}
|
|
4577
4579
|
}
|
|
4578
4580
|
}
|
|
4579
|
-
if (denied?.status === "unguarded") {
|
|
4580
|
-
throw
|
|
4581
|
+
if (denied?.status === "unguarded" && erased?.outcome.status !== "erased") {
|
|
4582
|
+
throw Object.assign(
|
|
4583
|
+
new Error(`Replica gate was not denied (${denied.code ?? "unknown"}); the replica may still be restorable.`),
|
|
4584
|
+
{
|
|
4585
|
+
code: "REPLICA_PURGE_FAILED",
|
|
4586
|
+
reason: "gate_unavailable",
|
|
4587
|
+
retryNow: erased?.outcome.status === "failed"
|
|
4588
|
+
}
|
|
4589
|
+
);
|
|
4590
|
+
}
|
|
4591
|
+
}
|
|
4592
|
+
/**
|
|
4593
|
+
* Erases the browser local copy after a deny (retry, event and next-load marker live in the lazy
|
|
4594
|
+
* replication authority). Never rejects; `undefined` when replication is off or the storage keeps
|
|
4595
|
+
* no browser database.
|
|
4596
|
+
*/
|
|
4597
|
+
async eraseReplicaLocalCopy(trigger, denyStatus) {
|
|
4598
|
+
const replication = this.config.replication;
|
|
4599
|
+
if (!replication?.enabled) return void 0;
|
|
4600
|
+
try {
|
|
4601
|
+
const { eraseReplicaLocalCopy } = await getNodeReplicationLoaders().authority();
|
|
4602
|
+
const erased = await eraseReplicaLocalCopy(
|
|
4603
|
+
replication.storage.lifecycle,
|
|
4604
|
+
trigger,
|
|
4605
|
+
denyStatus,
|
|
4606
|
+
this.replicaPurgeFailedHandlers
|
|
4607
|
+
);
|
|
4608
|
+
if (erased?.logoutPending) this.replicaRestoreGate = "logout_pending";
|
|
4609
|
+
return erased;
|
|
4610
|
+
} catch {
|
|
4611
|
+
return void 0;
|
|
4581
4612
|
}
|
|
4582
4613
|
}
|
|
4583
4614
|
/**
|
|
@@ -4741,6 +4772,10 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
4741
4772
|
const priorPrincipal = this.replicaSessionPrincipal ?? (this.address ? pkhDid2(this.address, this._chainId) : void 0);
|
|
4742
4773
|
if (this.config.replication?.enabled && priorPrincipal && priorPrincipal !== nextPrincipal) {
|
|
4743
4774
|
const denial = await this.denyReplicaGate({ reason: "account_switch", principal: priorPrincipal, next: nextPrincipal });
|
|
4775
|
+
if (denial) {
|
|
4776
|
+
await this.quiesceReplicaRuntime();
|
|
4777
|
+
await this.eraseReplicaLocalCopy("account_switch", denial.status);
|
|
4778
|
+
}
|
|
4744
4779
|
this.replicaRestoreGate = denial?.status === "unguarded" ? "gate_unavailable" : "stamp_stale";
|
|
4745
4780
|
}
|
|
4746
4781
|
if (address !== this._address || chainId !== this._chainId) {
|
|
@@ -6721,7 +6756,8 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
6721
6756
|
replication: this.config.replication?.enabled === true ? {
|
|
6722
6757
|
enabled: true,
|
|
6723
6758
|
prefixes: this.config.replication.prefixes,
|
|
6724
|
-
allowSecrets: this.config.replication.allowSecrets === true
|
|
6759
|
+
allowSecrets: this.config.replication.allowSecrets === true,
|
|
6760
|
+
syncScope: this.config.replication.syncScope
|
|
6725
6761
|
} : void 0
|
|
6726
6762
|
});
|
|
6727
6763
|
this.tc = new TinyCloud(this.auth, {
|
|
@@ -6783,7 +6819,8 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
6783
6819
|
replication: this.config.replication?.enabled === true ? {
|
|
6784
6820
|
enabled: true,
|
|
6785
6821
|
prefixes: this.config.replication.prefixes,
|
|
6786
|
-
allowSecrets: this.config.replication.allowSecrets === true
|
|
6822
|
+
allowSecrets: this.config.replication.allowSecrets === true,
|
|
6823
|
+
syncScope: this.config.replication.syncScope
|
|
6787
6824
|
} : void 0
|
|
6788
6825
|
});
|
|
6789
6826
|
this.tc = new TinyCloud(this.auth, {
|