@tinycloud/node-sdk 2.2.0-beta.3 → 2.2.0-beta.5
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-NsTndW58.d.cts → core-DdMPUB5s.d.cts} +21 -3
- package/dist/{core-NsTndW58.d.ts → core-DdMPUB5s.d.ts} +21 -3
- package/dist/core.cjs +87 -14
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +89 -15
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +87 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +89 -15
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -189,8 +189,12 @@ interface NodeUserAuthorizationConfig {
|
|
|
189
189
|
autoCreateSpace?: boolean;
|
|
190
190
|
/** Custom space creation handler. If provided, takes precedence over autoCreateSpace. */
|
|
191
191
|
spaceCreationHandler?: ISpaceCreationHandler;
|
|
192
|
-
/** TinyCloud server endpoints
|
|
192
|
+
/** Explicit TinyCloud server endpoints. When omitted, signIn resolves the user's host. */
|
|
193
193
|
tinycloudHosts?: string[];
|
|
194
|
+
/** TinyCloud location registry URL. Default: https://registry.tinycloud.xyz. */
|
|
195
|
+
tinycloudRegistryUrl?: string | null;
|
|
196
|
+
/** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
|
|
197
|
+
tinycloudFallbackHosts?: string[] | null;
|
|
194
198
|
/** Whether to include public space capabilities in the session (default: true) */
|
|
195
199
|
enablePublicSpace?: boolean;
|
|
196
200
|
/** WASM bindings for cryptographic operations. Required. */
|
|
@@ -270,7 +274,9 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
270
274
|
private readonly sessionExpirationMs;
|
|
271
275
|
private readonly autoCreateSpace;
|
|
272
276
|
private readonly spaceCreationHandler?;
|
|
273
|
-
private
|
|
277
|
+
private tinycloudHosts?;
|
|
278
|
+
private readonly tinycloudRegistryUrl?;
|
|
279
|
+
private readonly tinycloudFallbackHosts?;
|
|
274
280
|
private readonly enablePublicSpace;
|
|
275
281
|
private readonly nonce?;
|
|
276
282
|
private readonly siweConfig?;
|
|
@@ -299,6 +305,7 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
299
305
|
*/
|
|
300
306
|
get manifest(): Manifest | Manifest[] | undefined;
|
|
301
307
|
get capabilityRequest(): ComposedManifestRequest | undefined;
|
|
308
|
+
get hosts(): string[];
|
|
302
309
|
/**
|
|
303
310
|
* Install or replace the stored manifest. Takes effect on the next
|
|
304
311
|
* `signIn()` call — the current session (if any) is not touched.
|
|
@@ -314,6 +321,9 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
314
321
|
* Includes spaceId, delegationHeader, and delegationCid.
|
|
315
322
|
*/
|
|
316
323
|
get tinyCloudSession(): TinyCloudSession | undefined;
|
|
324
|
+
private resolveTinyCloudHostsForSignIn;
|
|
325
|
+
private requireTinyCloudHosts;
|
|
326
|
+
private get primaryTinyCloudHost();
|
|
317
327
|
get nodeFeatures(): string[];
|
|
318
328
|
/**
|
|
319
329
|
* Compute the `abilities` map the WASM `prepareSession` call should
|
|
@@ -644,8 +654,12 @@ interface TinyCloudNodeConfig {
|
|
|
644
654
|
privateKey?: string;
|
|
645
655
|
/** Custom signer implementation. If provided, takes precedence over privateKey. */
|
|
646
656
|
signer?: ISigner;
|
|
647
|
-
/** TinyCloud server URL
|
|
657
|
+
/** Explicit TinyCloud server URL. When omitted, signIn resolves the user's host. */
|
|
648
658
|
host?: string;
|
|
659
|
+
/** TinyCloud location registry URL. Default: https://registry.tinycloud.xyz. */
|
|
660
|
+
tinycloudRegistryUrl?: string | null;
|
|
661
|
+
/** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
|
|
662
|
+
tinycloudFallbackHosts?: string[] | null;
|
|
649
663
|
/** Space prefix for this user's space. Optional - only needed for signIn() */
|
|
650
664
|
prefix?: string;
|
|
651
665
|
/** Domain for SIWE messages (default: derived from host) */
|
|
@@ -742,6 +756,7 @@ declare class TinyCloudNode {
|
|
|
742
756
|
/** @internal Register Node.js-specific defaults (NodeWasmBindings, PrivateKeySigner) */
|
|
743
757
|
static registerNodeDefaults(defaults: NodeDefaults): void;
|
|
744
758
|
private config;
|
|
759
|
+
private readonly explicitHost?;
|
|
745
760
|
private signer;
|
|
746
761
|
private auth;
|
|
747
762
|
private tc;
|
|
@@ -800,6 +815,7 @@ declare class TinyCloudNode {
|
|
|
800
815
|
* @internal
|
|
801
816
|
*/
|
|
802
817
|
private setupAuth;
|
|
818
|
+
private syncResolvedHostFromAuth;
|
|
803
819
|
/**
|
|
804
820
|
* Install or replace the manifest that drives the SIWE recap at
|
|
805
821
|
* sign-in. Takes effect on the next `signIn()` call — the current
|
|
@@ -815,6 +831,7 @@ declare class TinyCloudNode {
|
|
|
815
831
|
*/
|
|
816
832
|
get manifest(): Manifest | Manifest[] | undefined;
|
|
817
833
|
get capabilityRequest(): ComposedManifestRequest | undefined;
|
|
834
|
+
get hosts(): string[];
|
|
818
835
|
/**
|
|
819
836
|
* Get the primary identity DID for this user.
|
|
820
837
|
* - If wallet connected and signed in: returns PKH DID (did:pkh:eip155:{chainId}:{address})
|
|
@@ -860,6 +877,7 @@ declare class TinyCloudNode {
|
|
|
860
877
|
signIn(options?: SignInOptions): Promise<void>;
|
|
861
878
|
private ownedSpaceId;
|
|
862
879
|
private writeManifestRegistryRecords;
|
|
880
|
+
private ensureOwnedSpaceHosted;
|
|
863
881
|
/**
|
|
864
882
|
* Restore a previously established session from stored delegation data.
|
|
865
883
|
*
|
|
@@ -189,8 +189,12 @@ interface NodeUserAuthorizationConfig {
|
|
|
189
189
|
autoCreateSpace?: boolean;
|
|
190
190
|
/** Custom space creation handler. If provided, takes precedence over autoCreateSpace. */
|
|
191
191
|
spaceCreationHandler?: ISpaceCreationHandler;
|
|
192
|
-
/** TinyCloud server endpoints
|
|
192
|
+
/** Explicit TinyCloud server endpoints. When omitted, signIn resolves the user's host. */
|
|
193
193
|
tinycloudHosts?: string[];
|
|
194
|
+
/** TinyCloud location registry URL. Default: https://registry.tinycloud.xyz. */
|
|
195
|
+
tinycloudRegistryUrl?: string | null;
|
|
196
|
+
/** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
|
|
197
|
+
tinycloudFallbackHosts?: string[] | null;
|
|
194
198
|
/** Whether to include public space capabilities in the session (default: true) */
|
|
195
199
|
enablePublicSpace?: boolean;
|
|
196
200
|
/** WASM bindings for cryptographic operations. Required. */
|
|
@@ -270,7 +274,9 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
270
274
|
private readonly sessionExpirationMs;
|
|
271
275
|
private readonly autoCreateSpace;
|
|
272
276
|
private readonly spaceCreationHandler?;
|
|
273
|
-
private
|
|
277
|
+
private tinycloudHosts?;
|
|
278
|
+
private readonly tinycloudRegistryUrl?;
|
|
279
|
+
private readonly tinycloudFallbackHosts?;
|
|
274
280
|
private readonly enablePublicSpace;
|
|
275
281
|
private readonly nonce?;
|
|
276
282
|
private readonly siweConfig?;
|
|
@@ -299,6 +305,7 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
299
305
|
*/
|
|
300
306
|
get manifest(): Manifest | Manifest[] | undefined;
|
|
301
307
|
get capabilityRequest(): ComposedManifestRequest | undefined;
|
|
308
|
+
get hosts(): string[];
|
|
302
309
|
/**
|
|
303
310
|
* Install or replace the stored manifest. Takes effect on the next
|
|
304
311
|
* `signIn()` call — the current session (if any) is not touched.
|
|
@@ -314,6 +321,9 @@ declare class NodeUserAuthorization implements IUserAuthorization {
|
|
|
314
321
|
* Includes spaceId, delegationHeader, and delegationCid.
|
|
315
322
|
*/
|
|
316
323
|
get tinyCloudSession(): TinyCloudSession | undefined;
|
|
324
|
+
private resolveTinyCloudHostsForSignIn;
|
|
325
|
+
private requireTinyCloudHosts;
|
|
326
|
+
private get primaryTinyCloudHost();
|
|
317
327
|
get nodeFeatures(): string[];
|
|
318
328
|
/**
|
|
319
329
|
* Compute the `abilities` map the WASM `prepareSession` call should
|
|
@@ -644,8 +654,12 @@ interface TinyCloudNodeConfig {
|
|
|
644
654
|
privateKey?: string;
|
|
645
655
|
/** Custom signer implementation. If provided, takes precedence over privateKey. */
|
|
646
656
|
signer?: ISigner;
|
|
647
|
-
/** TinyCloud server URL
|
|
657
|
+
/** Explicit TinyCloud server URL. When omitted, signIn resolves the user's host. */
|
|
648
658
|
host?: string;
|
|
659
|
+
/** TinyCloud location registry URL. Default: https://registry.tinycloud.xyz. */
|
|
660
|
+
tinycloudRegistryUrl?: string | null;
|
|
661
|
+
/** Fallback TinyCloud hosts. Default: hosted TinyCloud node. */
|
|
662
|
+
tinycloudFallbackHosts?: string[] | null;
|
|
649
663
|
/** Space prefix for this user's space. Optional - only needed for signIn() */
|
|
650
664
|
prefix?: string;
|
|
651
665
|
/** Domain for SIWE messages (default: derived from host) */
|
|
@@ -742,6 +756,7 @@ declare class TinyCloudNode {
|
|
|
742
756
|
/** @internal Register Node.js-specific defaults (NodeWasmBindings, PrivateKeySigner) */
|
|
743
757
|
static registerNodeDefaults(defaults: NodeDefaults): void;
|
|
744
758
|
private config;
|
|
759
|
+
private readonly explicitHost?;
|
|
745
760
|
private signer;
|
|
746
761
|
private auth;
|
|
747
762
|
private tc;
|
|
@@ -800,6 +815,7 @@ declare class TinyCloudNode {
|
|
|
800
815
|
* @internal
|
|
801
816
|
*/
|
|
802
817
|
private setupAuth;
|
|
818
|
+
private syncResolvedHostFromAuth;
|
|
803
819
|
/**
|
|
804
820
|
* Install or replace the manifest that drives the SIWE recap at
|
|
805
821
|
* sign-in. Takes effect on the next `signIn()` call — the current
|
|
@@ -815,6 +831,7 @@ declare class TinyCloudNode {
|
|
|
815
831
|
*/
|
|
816
832
|
get manifest(): Manifest | Manifest[] | undefined;
|
|
817
833
|
get capabilityRequest(): ComposedManifestRequest | undefined;
|
|
834
|
+
get hosts(): string[];
|
|
818
835
|
/**
|
|
819
836
|
* Get the primary identity DID for this user.
|
|
820
837
|
* - If wallet connected and signed in: returns PKH DID (did:pkh:eip155:{chainId}:{address})
|
|
@@ -860,6 +877,7 @@ declare class TinyCloudNode {
|
|
|
860
877
|
signIn(options?: SignInOptions): Promise<void>;
|
|
861
878
|
private ownedSpaceId;
|
|
862
879
|
private writeManifestRegistryRecords;
|
|
880
|
+
private ensureOwnedSpaceHosted;
|
|
863
881
|
/**
|
|
864
882
|
* Restore a previously established session from stored delegation data.
|
|
865
883
|
*
|
package/dist/core.cjs
CHANGED
|
@@ -339,9 +339,9 @@ var NodeUserAuthorization = class {
|
|
|
339
339
|
this.sessionExpirationMs = config.sessionExpirationMs ?? 60 * 60 * 1e3;
|
|
340
340
|
this.autoCreateSpace = config.autoCreateSpace ?? false;
|
|
341
341
|
this.spaceCreationHandler = config.spaceCreationHandler;
|
|
342
|
-
this.tinycloudHosts = config.tinycloudHosts
|
|
343
|
-
|
|
344
|
-
|
|
342
|
+
this.tinycloudHosts = config.tinycloudHosts;
|
|
343
|
+
this.tinycloudRegistryUrl = config.tinycloudRegistryUrl;
|
|
344
|
+
this.tinycloudFallbackHosts = config.tinycloudFallbackHosts;
|
|
345
345
|
this.enablePublicSpace = config.enablePublicSpace ?? true;
|
|
346
346
|
this.nonce = config.nonce;
|
|
347
347
|
this.siweConfig = config.siweConfig;
|
|
@@ -362,6 +362,9 @@ var NodeUserAuthorization = class {
|
|
|
362
362
|
get capabilityRequest() {
|
|
363
363
|
return this.getCapabilityRequest();
|
|
364
364
|
}
|
|
365
|
+
get hosts() {
|
|
366
|
+
return this.tinycloudHosts ? [...this.tinycloudHosts] : [];
|
|
367
|
+
}
|
|
365
368
|
/**
|
|
366
369
|
* Install or replace the stored manifest. Takes effect on the next
|
|
367
370
|
* `signIn()` call — the current session (if any) is not touched.
|
|
@@ -386,6 +389,26 @@ var NodeUserAuthorization = class {
|
|
|
386
389
|
get tinyCloudSession() {
|
|
387
390
|
return this._tinyCloudSession;
|
|
388
391
|
}
|
|
392
|
+
async resolveTinyCloudHostsForSignIn(address, chainId) {
|
|
393
|
+
if (this.tinycloudHosts && this.tinycloudHosts.length > 0) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const subject = `did:pkh:eip155:${chainId}:${address}`;
|
|
397
|
+
const resolved = await (0, import_sdk_core2.resolveTinyCloudHosts)(subject, {
|
|
398
|
+
registryUrl: this.tinycloudRegistryUrl,
|
|
399
|
+
fallbackHosts: this.tinycloudFallbackHosts
|
|
400
|
+
});
|
|
401
|
+
this.tinycloudHosts = resolved.hosts;
|
|
402
|
+
}
|
|
403
|
+
requireTinyCloudHosts() {
|
|
404
|
+
if (!this.tinycloudHosts || this.tinycloudHosts.length === 0) {
|
|
405
|
+
throw new Error("TinyCloud hosts have not been resolved. Call signIn() first.");
|
|
406
|
+
}
|
|
407
|
+
return this.tinycloudHosts;
|
|
408
|
+
}
|
|
409
|
+
get primaryTinyCloudHost() {
|
|
410
|
+
return this.requireTinyCloudHosts()[0];
|
|
411
|
+
}
|
|
389
412
|
get nodeFeatures() {
|
|
390
413
|
return this._nodeFeatures;
|
|
391
414
|
}
|
|
@@ -517,7 +540,7 @@ var NodeUserAuthorization = class {
|
|
|
517
540
|
if (!this._tinyCloudSession || !this._address || !this._chainId) {
|
|
518
541
|
throw new Error("Must be signed in to host space");
|
|
519
542
|
}
|
|
520
|
-
const host = this.
|
|
543
|
+
const host = this.primaryTinyCloudHost;
|
|
521
544
|
const spaceId = targetSpaceId ?? this._tinyCloudSession.spaceId;
|
|
522
545
|
const peerId = await (0, import_sdk_core2.fetchPeerId)(host, spaceId);
|
|
523
546
|
const siwe = this.wasm.generateHostSIWEMessage({
|
|
@@ -559,7 +582,7 @@ var NodeUserAuthorization = class {
|
|
|
559
582
|
if (!this._tinyCloudSession) {
|
|
560
583
|
throw new Error("Must be signed in to ensure space exists");
|
|
561
584
|
}
|
|
562
|
-
const host = this.
|
|
585
|
+
const host = this.primaryTinyCloudHost;
|
|
563
586
|
const primarySpaceId = this._tinyCloudSession.spaceId;
|
|
564
587
|
const result = await (0, import_sdk_core2.activateSessionWithHost)(
|
|
565
588
|
host,
|
|
@@ -668,6 +691,7 @@ var NodeUserAuthorization = class {
|
|
|
668
691
|
this._chainId = await this.signer.getChainId();
|
|
669
692
|
const address = this.wasm.ensureEip55(this._address);
|
|
670
693
|
const chainId = this._chainId;
|
|
694
|
+
await this.resolveTinyCloudHostsForSignIn(address, chainId);
|
|
671
695
|
const keyId = `session-${Date.now()}`;
|
|
672
696
|
this.sessionManager.renameSessionKeyId("default", keyId);
|
|
673
697
|
const jwkString = this.sessionManager.jwk(keyId);
|
|
@@ -746,7 +770,7 @@ var NodeUserAuthorization = class {
|
|
|
746
770
|
this._address = address;
|
|
747
771
|
this._chainId = chainId;
|
|
748
772
|
const nodeInfo = await (0, import_sdk_core2.checkNodeInfo)(
|
|
749
|
-
this.
|
|
773
|
+
this.primaryTinyCloudHost,
|
|
750
774
|
this.wasm.protocolVersion()
|
|
751
775
|
);
|
|
752
776
|
this._nodeFeatures = nodeInfo.features;
|
|
@@ -862,6 +886,7 @@ var NodeUserAuthorization = class {
|
|
|
862
886
|
});
|
|
863
887
|
const address = this.wasm.ensureEip55(await this.signer.getAddress());
|
|
864
888
|
const chainId = await this.signer.getChainId();
|
|
889
|
+
await this.resolveTinyCloudHostsForSignIn(address, chainId);
|
|
865
890
|
const clientSession = {
|
|
866
891
|
address,
|
|
867
892
|
walletAddress: address,
|
|
@@ -911,7 +936,7 @@ var NodeUserAuthorization = class {
|
|
|
911
936
|
this._address = address;
|
|
912
937
|
this._chainId = chainId;
|
|
913
938
|
const nodeInfo = await (0, import_sdk_core2.checkNodeInfo)(
|
|
914
|
-
this.
|
|
939
|
+
this.primaryTinyCloudHost,
|
|
915
940
|
this.wasm.protocolVersion()
|
|
916
941
|
);
|
|
917
942
|
this._nodeFeatures = nodeInfo.features;
|
|
@@ -1258,6 +1283,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1258
1283
|
this.auth = null;
|
|
1259
1284
|
this.tc = null;
|
|
1260
1285
|
this._chainId = 1;
|
|
1286
|
+
this.explicitHost = config.host;
|
|
1261
1287
|
this.config = {
|
|
1262
1288
|
...config,
|
|
1263
1289
|
host: config.host ?? DEFAULT_HOST
|
|
@@ -1339,7 +1365,6 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1339
1365
|
* @internal
|
|
1340
1366
|
*/
|
|
1341
1367
|
setupAuth(config) {
|
|
1342
|
-
const host = this.config.host;
|
|
1343
1368
|
this.auth = new NodeUserAuthorization({
|
|
1344
1369
|
signer: this.signer,
|
|
1345
1370
|
signStrategy: { type: "auto-sign" },
|
|
@@ -1348,7 +1373,9 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1348
1373
|
domain: this.siweDomain,
|
|
1349
1374
|
spacePrefix: config.prefix,
|
|
1350
1375
|
sessionExpirationMs: config.sessionExpirationMs ?? 60 * 60 * 1e3,
|
|
1351
|
-
tinycloudHosts: [
|
|
1376
|
+
tinycloudHosts: this.explicitHost ? [this.explicitHost] : void 0,
|
|
1377
|
+
tinycloudRegistryUrl: config.tinycloudRegistryUrl,
|
|
1378
|
+
tinycloudFallbackHosts: config.tinycloudFallbackHosts,
|
|
1352
1379
|
autoCreateSpace: config.autoCreateSpace,
|
|
1353
1380
|
enablePublicSpace: config.enablePublicSpace ?? true,
|
|
1354
1381
|
spaceCreationHandler: config.spaceCreationHandler,
|
|
@@ -1362,6 +1389,12 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1362
1389
|
invokeAny: this.wasmBindings.invokeAny
|
|
1363
1390
|
});
|
|
1364
1391
|
}
|
|
1392
|
+
syncResolvedHostFromAuth() {
|
|
1393
|
+
const host = this.auth?.hosts[0];
|
|
1394
|
+
if (host) {
|
|
1395
|
+
this.config.host = host;
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1365
1398
|
/**
|
|
1366
1399
|
* Install or replace the manifest that drives the SIWE recap at
|
|
1367
1400
|
* sign-in. Takes effect on the next `signIn()` call — the current
|
|
@@ -1399,6 +1432,10 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1399
1432
|
get capabilityRequest() {
|
|
1400
1433
|
return this.auth?.capabilityRequest;
|
|
1401
1434
|
}
|
|
1435
|
+
get hosts() {
|
|
1436
|
+
const authHosts = this.auth?.hosts ?? [];
|
|
1437
|
+
return authHosts.length > 0 ? authHosts : [this.config.host];
|
|
1438
|
+
}
|
|
1402
1439
|
/**
|
|
1403
1440
|
* Get the primary identity DID for this user.
|
|
1404
1441
|
* - If wallet connected and signed in: returns PKH DID (did:pkh:eip155:{chainId}:{address})
|
|
@@ -1471,6 +1508,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1471
1508
|
this._hooks = void 0;
|
|
1472
1509
|
this._serviceContext = void 0;
|
|
1473
1510
|
await this.tc.signIn(options);
|
|
1511
|
+
this.syncResolvedHostFromAuth();
|
|
1474
1512
|
this.initializeServices();
|
|
1475
1513
|
await this.writeManifestRegistryRecords();
|
|
1476
1514
|
this.notificationHandler.success("Successfully signed in");
|
|
@@ -1490,7 +1528,7 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1490
1528
|
throw new Error("Manifest registry write requires wallet mode");
|
|
1491
1529
|
}
|
|
1492
1530
|
const accountSpaceId = this.ownedSpaceId(import_sdk_core5.ACCOUNT_REGISTRY_SPACE);
|
|
1493
|
-
await this.
|
|
1531
|
+
await this.ensureOwnedSpaceHosted(accountSpaceId);
|
|
1494
1532
|
const accountKV = this.spaces.get(accountSpaceId).kv;
|
|
1495
1533
|
for (const record of request.registryRecords) {
|
|
1496
1534
|
const result = await accountKV.put(record.key, {
|
|
@@ -1505,6 +1543,39 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1505
1543
|
}
|
|
1506
1544
|
}
|
|
1507
1545
|
}
|
|
1546
|
+
async ensureOwnedSpaceHosted(spaceId) {
|
|
1547
|
+
if (!this.auth) {
|
|
1548
|
+
throw new Error("Owned space hosting requires wallet mode");
|
|
1549
|
+
}
|
|
1550
|
+
const session = this.auth.tinyCloudSession;
|
|
1551
|
+
if (!session) {
|
|
1552
|
+
throw new Error("Owned space hosting requires an active session");
|
|
1553
|
+
}
|
|
1554
|
+
const host = this.hosts[0] ?? this.config.host;
|
|
1555
|
+
if (!host) {
|
|
1556
|
+
throw new Error("Owned space hosting requires a TinyCloud host");
|
|
1557
|
+
}
|
|
1558
|
+
const activation = await (0, import_sdk_core5.activateSessionWithHost)(host, session.delegationHeader);
|
|
1559
|
+
if (activation.success && !activation.skipped?.includes(spaceId)) {
|
|
1560
|
+
return;
|
|
1561
|
+
}
|
|
1562
|
+
if (!activation.success && activation.status !== 404) {
|
|
1563
|
+
throw new Error(
|
|
1564
|
+
`Failed to check owned space ${spaceId}: ${activation.error ?? activation.status}`
|
|
1565
|
+
);
|
|
1566
|
+
}
|
|
1567
|
+
const created = await this.auth.hostOwnedSpace(spaceId);
|
|
1568
|
+
if (!created) {
|
|
1569
|
+
throw new Error(`Failed to create owned space: ${spaceId}`);
|
|
1570
|
+
}
|
|
1571
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1572
|
+
const retry = await (0, import_sdk_core5.activateSessionWithHost)(host, session.delegationHeader);
|
|
1573
|
+
if (!retry.success || retry.skipped?.includes(spaceId)) {
|
|
1574
|
+
throw new Error(
|
|
1575
|
+
`Failed to activate session after creating owned space ${spaceId}: ${retry.error ?? "space was skipped"}`
|
|
1576
|
+
);
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1508
1579
|
/**
|
|
1509
1580
|
* Restore a previously established session from stored delegation data.
|
|
1510
1581
|
*
|
|
@@ -1622,7 +1693,6 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1622
1693
|
throw new Error("Wallet already connected. Cannot connect another wallet.");
|
|
1623
1694
|
}
|
|
1624
1695
|
const prefix = options?.prefix ?? "default";
|
|
1625
|
-
const host = this.config.host;
|
|
1626
1696
|
if (!_TinyCloudNode.nodeDefaults) {
|
|
1627
1697
|
throw new Error(
|
|
1628
1698
|
"connectWallet() requires PrivateKeySigner. Use connectSigner() instead, or import from '@tinycloud/node-sdk' (not '/core') for automatic Node.js defaults."
|
|
@@ -1637,7 +1707,9 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1637
1707
|
domain: this.siweDomain,
|
|
1638
1708
|
spacePrefix: prefix,
|
|
1639
1709
|
sessionExpirationMs: this.config.sessionExpirationMs ?? 60 * 60 * 1e3,
|
|
1640
|
-
tinycloudHosts: [
|
|
1710
|
+
tinycloudHosts: this.explicitHost ? [this.explicitHost] : void 0,
|
|
1711
|
+
tinycloudRegistryUrl: this.config.tinycloudRegistryUrl,
|
|
1712
|
+
tinycloudFallbackHosts: this.config.tinycloudFallbackHosts,
|
|
1641
1713
|
autoCreateSpace: this.config.autoCreateSpace,
|
|
1642
1714
|
enablePublicSpace: this.config.enablePublicSpace ?? true,
|
|
1643
1715
|
spaceCreationHandler: this.config.spaceCreationHandler,
|
|
@@ -1670,7 +1742,6 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1670
1742
|
throw new Error("Signer already connected. Cannot connect another signer.");
|
|
1671
1743
|
}
|
|
1672
1744
|
const prefix = options?.prefix ?? "default";
|
|
1673
|
-
const host = this.config.host;
|
|
1674
1745
|
this.signer = signer;
|
|
1675
1746
|
this.auth = new NodeUserAuthorization({
|
|
1676
1747
|
signer: this.signer,
|
|
@@ -1680,7 +1751,9 @@ var _TinyCloudNode = class _TinyCloudNode {
|
|
|
1680
1751
|
domain: this.siweDomain,
|
|
1681
1752
|
spacePrefix: prefix,
|
|
1682
1753
|
sessionExpirationMs: this.config.sessionExpirationMs ?? 60 * 60 * 1e3,
|
|
1683
|
-
tinycloudHosts: [
|
|
1754
|
+
tinycloudHosts: this.explicitHost ? [this.explicitHost] : void 0,
|
|
1755
|
+
tinycloudRegistryUrl: this.config.tinycloudRegistryUrl,
|
|
1756
|
+
tinycloudFallbackHosts: this.config.tinycloudFallbackHosts,
|
|
1684
1757
|
autoCreateSpace: this.config.autoCreateSpace,
|
|
1685
1758
|
enablePublicSpace: this.config.enablePublicSpace ?? true,
|
|
1686
1759
|
spaceCreationHandler: this.config.spaceCreationHandler,
|