@tinycloud/sdk-core 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 +342 -197
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +46 -2
- package/dist/index.d.ts +46 -2
- package/dist/index.js +149 -16
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -37,51 +37,52 @@ __export(index_exports, {
|
|
|
37
37
|
CapabilityKeyRegistryErrorCodes: () => CapabilityKeyRegistryErrorCodes,
|
|
38
38
|
ClientSessionSchema: () => ClientSessionSchema,
|
|
39
39
|
CloudLocationResolutionError: () => CloudLocationResolutionError,
|
|
40
|
-
DECRYPT_ACTION: () =>
|
|
41
|
-
DECRYPT_FACT_TYPE: () =>
|
|
42
|
-
DECRYPT_RESULT_TYPE: () =>
|
|
40
|
+
DECRYPT_ACTION: () => import_sdk_services6.DECRYPT_ACTION,
|
|
41
|
+
DECRYPT_FACT_TYPE: () => import_sdk_services6.DECRYPT_FACT_TYPE,
|
|
42
|
+
DECRYPT_RESULT_TYPE: () => import_sdk_services6.DECRYPT_RESULT_TYPE,
|
|
43
43
|
DEFAULT_DEFAULTS: () => DEFAULT_DEFAULTS,
|
|
44
|
-
DEFAULT_ENCRYPTION_ALG: () =>
|
|
44
|
+
DEFAULT_ENCRYPTION_ALG: () => import_sdk_services6.DEFAULT_ENCRYPTION_ALG,
|
|
45
45
|
DEFAULT_EXPIRY: () => DEFAULT_EXPIRY,
|
|
46
|
-
DEFAULT_KEY_VERSION: () =>
|
|
46
|
+
DEFAULT_KEY_VERSION: () => import_sdk_services6.DEFAULT_KEY_VERSION,
|
|
47
47
|
DEFAULT_MANIFEST_SPACE: () => DEFAULT_MANIFEST_SPACE,
|
|
48
48
|
DEFAULT_MANIFEST_VERSION: () => DEFAULT_MANIFEST_VERSION,
|
|
49
49
|
DEFAULT_SIGNED_READ_URL_EXPIRY_MS: () => DEFAULT_SIGNED_READ_URL_EXPIRY_MS,
|
|
50
50
|
DEFAULT_TINYCLOUD_FALLBACK_HOST: () => DEFAULT_TINYCLOUD_FALLBACK_HOST,
|
|
51
51
|
DEFAULT_TINYCLOUD_LOCATION_REGISTRY_URL: () => DEFAULT_TINYCLOUD_LOCATION_REGISTRY_URL,
|
|
52
|
-
DataVaultService: () =>
|
|
53
|
-
DatabaseHandle: () =>
|
|
52
|
+
DataVaultService: () => import_sdk_services6.DataVaultService,
|
|
53
|
+
DatabaseHandle: () => import_sdk_services6.DatabaseHandle,
|
|
54
54
|
DelegationErrorCodes: () => DelegationErrorCodes,
|
|
55
55
|
DelegationManager: () => DelegationManager,
|
|
56
|
-
DuckDbAction: () =>
|
|
57
|
-
DuckDbDatabaseHandle: () =>
|
|
58
|
-
DuckDbService: () =>
|
|
56
|
+
DuckDbAction: () => import_sdk_services6.DuckDbAction,
|
|
57
|
+
DuckDbDatabaseHandle: () => import_sdk_services6.DuckDbDatabaseHandle,
|
|
58
|
+
DuckDbService: () => import_sdk_services6.DuckDbService,
|
|
59
59
|
ENCRYPTION_MANIFEST_SPACE: () => ENCRYPTION_MANIFEST_SPACE,
|
|
60
|
-
ENCRYPTION_NETWORK_URN_PREFIX: () =>
|
|
60
|
+
ENCRYPTION_NETWORK_URN_PREFIX: () => import_sdk_services6.ENCRYPTION_NETWORK_URN_PREFIX,
|
|
61
61
|
ENCRYPTION_PERMISSION_SERVICE: () => ENCRYPTION_PERMISSION_SERVICE,
|
|
62
|
-
ENCRYPTION_SERVICE: () =>
|
|
63
|
-
ENCRYPTION_SERVICE_SHORT: () =>
|
|
64
|
-
ENVELOPE_VERSION: () =>
|
|
62
|
+
ENCRYPTION_SERVICE: () => import_sdk_services6.ENCRYPTION_SERVICE,
|
|
63
|
+
ENCRYPTION_SERVICE_SHORT: () => import_sdk_services6.ENCRYPTION_SERVICE_SHORT,
|
|
64
|
+
ENVELOPE_VERSION: () => import_sdk_services6.ENVELOPE_VERSION,
|
|
65
65
|
EXPIRY: () => EXPIRY,
|
|
66
|
-
EncryptionService: () =>
|
|
66
|
+
EncryptionService: () => import_sdk_services6.EncryptionService,
|
|
67
67
|
EnsDataSchema: () => EnsDataSchema,
|
|
68
|
-
ErrorCodes: () =>
|
|
69
|
-
HooksService: () =>
|
|
70
|
-
|
|
68
|
+
ErrorCodes: () => import_sdk_services6.ErrorCodes,
|
|
69
|
+
HooksService: () => import_sdk_services6.HooksService,
|
|
70
|
+
IdentityParseError: () => IdentityParseError,
|
|
71
|
+
KVService: () => import_sdk_services6.KVService,
|
|
71
72
|
LocationRecordValidationError: () => LocationRecordValidationError,
|
|
72
73
|
ManifestValidationError: () => ManifestValidationError,
|
|
73
|
-
NETWORK_NAME_PATTERN: () =>
|
|
74
|
-
NetworkIdError: () =>
|
|
74
|
+
NETWORK_NAME_PATTERN: () => import_sdk_services6.NETWORK_NAME_PATTERN,
|
|
75
|
+
NetworkIdError: () => import_sdk_services6.NetworkIdError,
|
|
75
76
|
PermissionNotInManifestError: () => PermissionNotInManifestError,
|
|
76
|
-
PrefixedKVService: () =>
|
|
77
|
+
PrefixedKVService: () => import_sdk_services6.PrefixedKVService,
|
|
77
78
|
ProtocolMismatchError: () => ProtocolMismatchError,
|
|
78
|
-
SECRET_NAME_RE: () =>
|
|
79
|
+
SECRET_NAME_RE: () => import_sdk_services6.SECRET_NAME_RE,
|
|
79
80
|
SERVICE_LONG_TO_SHORT: () => SERVICE_LONG_TO_SHORT,
|
|
80
81
|
SERVICE_SHORT_TO_LONG: () => SERVICE_SHORT_TO_LONG,
|
|
81
|
-
SQLAction: () =>
|
|
82
|
-
SQLService: () =>
|
|
83
|
-
SecretsService: () =>
|
|
84
|
-
ServiceContext: () =>
|
|
82
|
+
SQLAction: () => import_sdk_services6.SQLAction,
|
|
83
|
+
SQLService: () => import_sdk_services6.SQLService,
|
|
84
|
+
SecretsService: () => import_sdk_services6.SecretsService,
|
|
85
|
+
ServiceContext: () => import_sdk_services6.ServiceContext,
|
|
85
86
|
SessionExpiredError: () => SessionExpiredError,
|
|
86
87
|
SharingService: () => SharingService,
|
|
87
88
|
SilentNotificationHandler: () => SilentNotificationHandler,
|
|
@@ -93,84 +94,98 @@ __export(index_exports, {
|
|
|
93
94
|
TinyCloud: () => TinyCloud,
|
|
94
95
|
UnsupportedFeatureError: () => UnsupportedFeatureError,
|
|
95
96
|
VAULT_PERMISSION_SERVICE: () => VAULT_PERMISSION_SERVICE,
|
|
96
|
-
VaultHeaders: () =>
|
|
97
|
-
VaultPublicSpaceKVActions: () =>
|
|
97
|
+
VaultHeaders: () => import_sdk_services6.VaultHeaders,
|
|
98
|
+
VaultPublicSpaceKVActions: () => import_sdk_services6.VaultPublicSpaceKVActions,
|
|
98
99
|
VersionCheckError: () => VersionCheckError,
|
|
99
100
|
activateSessionWithHost: () => activateSessionWithHost,
|
|
101
|
+
addressStorageKey: () => addressStorageKey,
|
|
100
102
|
applyPrefix: () => applyPrefix,
|
|
101
|
-
buildCanonicalDecryptRequest: () =>
|
|
102
|
-
buildDecryptAttenuation: () =>
|
|
103
|
-
buildDecryptFacts: () =>
|
|
104
|
-
buildDecryptInvocation: () =>
|
|
105
|
-
buildNetworkId: () =>
|
|
103
|
+
buildCanonicalDecryptRequest: () => import_sdk_services6.buildCanonicalDecryptRequest,
|
|
104
|
+
buildDecryptAttenuation: () => import_sdk_services6.buildDecryptAttenuation,
|
|
105
|
+
buildDecryptFacts: () => import_sdk_services6.buildDecryptFacts,
|
|
106
|
+
buildDecryptInvocation: () => import_sdk_services6.buildDecryptInvocation,
|
|
107
|
+
buildNetworkId: () => import_sdk_services6.buildNetworkId,
|
|
106
108
|
buildSpaceUri: () => buildSpaceUri,
|
|
107
|
-
canonicalHashHex: () =>
|
|
109
|
+
canonicalHashHex: () => import_sdk_services6.canonicalHashHex,
|
|
108
110
|
canonicalLocationPayload: () => canonicalLocationPayload,
|
|
109
|
-
canonicalSignedResponse: () =>
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
canonicalSignedResponse: () => import_sdk_services6.canonicalSignedResponse,
|
|
112
|
+
canonicalizeAddress: () => canonicalizeAddress,
|
|
113
|
+
canonicalizeDid: () => canonicalizeDid,
|
|
114
|
+
canonicalizeDidUrl: () => canonicalizeDidUrl,
|
|
115
|
+
canonicalizeEncryptionJson: () => import_sdk_services6.canonicalizeEncryptionJson,
|
|
116
|
+
canonicalizeNetworkId: () => canonicalizeNetworkId,
|
|
117
|
+
canonicalizeSecretScope: () => import_sdk_services6.canonicalizeSecretScope,
|
|
118
|
+
checkDecryptInvocationInput: () => import_sdk_services6.checkDecryptInvocationInput,
|
|
113
119
|
checkNodeInfo: () => checkNodeInfo,
|
|
114
120
|
composeManifestRequest: () => composeManifestRequest,
|
|
115
121
|
createCapabilityKeyRegistry: () => createCapabilityKeyRegistry,
|
|
116
122
|
createSharingService: () => createSharingService,
|
|
117
123
|
createSpaceService: () => createSpaceService,
|
|
118
|
-
createVaultCrypto: () =>
|
|
119
|
-
decryptEnvelopeWithKey: () =>
|
|
120
|
-
defaultRetryPolicy: () =>
|
|
124
|
+
createVaultCrypto: () => import_sdk_services6.createVaultCrypto,
|
|
125
|
+
decryptEnvelopeWithKey: () => import_sdk_services6.decryptEnvelopeWithKey,
|
|
126
|
+
defaultRetryPolicy: () => import_sdk_services6.defaultRetryPolicy,
|
|
121
127
|
defaultSignStrategy: () => defaultSignStrategy,
|
|
122
128
|
defaultSpaceCreationHandler: () => defaultSpaceCreationHandler,
|
|
123
|
-
deriveSignedReceiverKey: () =>
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
129
|
+
deriveSignedReceiverKey: () => import_sdk_services6.deriveSignedReceiverKey,
|
|
130
|
+
didCacheKey: () => didCacheKey,
|
|
131
|
+
didEquals: () => didEquals,
|
|
132
|
+
discoverNetwork: () => import_sdk_services6.discoverNetwork,
|
|
133
|
+
encryptToNetwork: () => import_sdk_services6.encryptToNetwork,
|
|
134
|
+
encryptionBase64Decode: () => import_sdk_services6.base64Decode,
|
|
135
|
+
encryptionBase64Encode: () => import_sdk_services6.base64Encode,
|
|
136
|
+
encryptionError: () => import_sdk_services6.encryptionError,
|
|
137
|
+
encryptionUtf8Decode: () => import_sdk_services6.utf8Decode,
|
|
138
|
+
encryptionUtf8Encode: () => import_sdk_services6.utf8Encode,
|
|
139
|
+
ensureNetworkUsableForDecrypt: () => import_sdk_services6.ensureNetworkUsableForDecrypt,
|
|
140
|
+
err: () => import_sdk_services6.err,
|
|
133
141
|
expandActionShortNames: () => expandActionShortNames,
|
|
134
142
|
expandPermissionEntries: () => expandPermissionEntries,
|
|
135
143
|
expandPermissionEntry: () => expandPermissionEntry,
|
|
136
144
|
fetchLocationRecord: () => fetchLocationRecord,
|
|
137
145
|
fetchPeerId: () => fetchPeerId,
|
|
138
|
-
generateRandomReceiverKey: () =>
|
|
139
|
-
hexDecode: () =>
|
|
140
|
-
hexEncode: () =>
|
|
146
|
+
generateRandomReceiverKey: () => import_sdk_services6.generateRandomReceiverKey,
|
|
147
|
+
hexDecode: () => import_sdk_services6.hexDecode,
|
|
148
|
+
hexEncode: () => import_sdk_services6.hexEncode,
|
|
141
149
|
httpUrlToMultiaddr: () => httpUrlToMultiaddr,
|
|
142
150
|
isCapabilitySubset: () => isCapabilitySubset,
|
|
143
|
-
|
|
151
|
+
isEvmAddress: () => isEvmAddress,
|
|
152
|
+
isNetworkId: () => import_sdk_services6.isNetworkId,
|
|
144
153
|
loadManifest: () => loadManifest,
|
|
145
154
|
locationPayloadForRecord: () => locationPayloadForRecord,
|
|
155
|
+
makePkhSpaceId: () => makePkhSpaceId,
|
|
146
156
|
makePublicSpaceId: () => makePublicSpaceId,
|
|
147
157
|
manifestAbilitiesUnion: () => manifestAbilitiesUnion,
|
|
148
158
|
multiaddrToHttpUrl: () => multiaddrToHttpUrl,
|
|
149
|
-
networkDiscoveryKey: () =>
|
|
159
|
+
networkDiscoveryKey: () => import_sdk_services6.networkDiscoveryKey,
|
|
150
160
|
normalizeDefaults: () => normalizeDefaults,
|
|
151
|
-
ok: () =>
|
|
152
|
-
openWrappedKey: () =>
|
|
161
|
+
ok: () => import_sdk_services6.ok,
|
|
162
|
+
openWrappedKey: () => import_sdk_services6.openWrappedKey,
|
|
163
|
+
parseCanonicalNetworkId: () => parseCanonicalNetworkId,
|
|
153
164
|
parseExpiry: () => parseExpiry,
|
|
154
|
-
parseNetworkId: () =>
|
|
165
|
+
parseNetworkId: () => import_sdk_services6.parseNetworkId,
|
|
166
|
+
parsePkhDid: () => parsePkhDid,
|
|
155
167
|
parseRecapCapabilities: () => parseRecapCapabilities,
|
|
156
168
|
parseSpaceUri: () => parseSpaceUri,
|
|
169
|
+
pkhDid: () => pkhDid,
|
|
170
|
+
principalDid: () => principalDid,
|
|
171
|
+
principalDidEquals: () => principalDidEquals,
|
|
157
172
|
resolveCloudLocation: () => resolveCloudLocation,
|
|
158
173
|
resolveManifest: () => resolveManifest,
|
|
159
|
-
resolveSecretListPrefix: () =>
|
|
160
|
-
resolveSecretPath: () =>
|
|
174
|
+
resolveSecretListPrefix: () => import_sdk_services6.resolveSecretListPrefix,
|
|
175
|
+
resolveSecretPath: () => import_sdk_services6.resolveSecretPath,
|
|
161
176
|
resolveTinyCloudHosts: () => resolveTinyCloudHosts,
|
|
162
177
|
resourceCapabilitiesToAbilitiesMap: () => resourceCapabilitiesToAbilitiesMap,
|
|
163
178
|
resourceCapabilitiesToSpaceAbilitiesMap: () => resourceCapabilitiesToSpaceAbilitiesMap,
|
|
164
|
-
serviceError: () =>
|
|
179
|
+
serviceError: () => import_sdk_services6.serviceError,
|
|
165
180
|
signLocationRecord: () => signLocationRecord,
|
|
166
181
|
submitHostDelegation: () => submitHostDelegation,
|
|
167
182
|
validateClientSession: () => validateClientSession,
|
|
168
|
-
validateEnvelope: () =>
|
|
183
|
+
validateEnvelope: () => import_sdk_services6.validateEnvelope,
|
|
169
184
|
validateLocationRecord: () => validateLocationRecord,
|
|
170
185
|
validateLocationRecordPayload: () => validateLocationRecordPayload,
|
|
171
186
|
validateManifest: () => validateManifest,
|
|
172
187
|
validatePersistedSessionData: () => validatePersistedSessionData,
|
|
173
|
-
verifyDecryptResponse: () =>
|
|
188
|
+
verifyDecryptResponse: () => import_sdk_services6.verifyDecryptResponse,
|
|
174
189
|
verifyDidKeyEd25519Signature: () => verifyDidKeyEd25519Signature,
|
|
175
190
|
verifyLocationRecord: () => verifyLocationRecord
|
|
176
191
|
});
|
|
@@ -218,6 +233,108 @@ var SilentNotificationHandler = class {
|
|
|
218
233
|
}
|
|
219
234
|
};
|
|
220
235
|
|
|
236
|
+
// src/identity.ts
|
|
237
|
+
var import_viem = require("viem");
|
|
238
|
+
var IdentityParseError = class extends Error {
|
|
239
|
+
constructor(message) {
|
|
240
|
+
super(message);
|
|
241
|
+
this.name = "IdentityParseError";
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
var PKH_DID_RE = /^did:pkh:eip155:(\d+):(0x[a-fA-F0-9]{40})$/;
|
|
245
|
+
var DID_RE = /^did:[a-z0-9]+:.+$/;
|
|
246
|
+
function splitDidUrl(input) {
|
|
247
|
+
const fragmentIndex = input.indexOf("#");
|
|
248
|
+
if (fragmentIndex < 0) {
|
|
249
|
+
return { did: input, fragment: "" };
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
did: input.slice(0, fragmentIndex),
|
|
253
|
+
fragment: input.slice(fragmentIndex)
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
function assertValidChainId(chainId) {
|
|
257
|
+
if (!Number.isSafeInteger(chainId) || chainId <= 0) {
|
|
258
|
+
throw new IdentityParseError(`Invalid EIP-155 chain ID: ${chainId}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function isEvmAddress(input) {
|
|
262
|
+
return (0, import_viem.isAddress)(input, { strict: false });
|
|
263
|
+
}
|
|
264
|
+
function canonicalizeAddress(address) {
|
|
265
|
+
if (!isEvmAddress(address)) {
|
|
266
|
+
throw new IdentityParseError(`Invalid EVM address: ${address}`);
|
|
267
|
+
}
|
|
268
|
+
return (0, import_viem.getAddress)(address);
|
|
269
|
+
}
|
|
270
|
+
function addressStorageKey(address) {
|
|
271
|
+
return canonicalizeAddress(address).toLowerCase();
|
|
272
|
+
}
|
|
273
|
+
function pkhDid(address, chainId = 1) {
|
|
274
|
+
assertValidChainId(chainId);
|
|
275
|
+
return `did:pkh:eip155:${chainId}:${canonicalizeAddress(address)}`;
|
|
276
|
+
}
|
|
277
|
+
function parsePkhDid(did) {
|
|
278
|
+
const match = did.match(PKH_DID_RE);
|
|
279
|
+
if (!match) return null;
|
|
280
|
+
const chainId = Number(match[1]);
|
|
281
|
+
assertValidChainId(chainId);
|
|
282
|
+
return {
|
|
283
|
+
method: "pkh",
|
|
284
|
+
namespace: "eip155",
|
|
285
|
+
chainId,
|
|
286
|
+
address: canonicalizeAddress(match[2])
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
function canonicalizeDid(did) {
|
|
290
|
+
const pkh = parsePkhDid(did);
|
|
291
|
+
if (pkh) {
|
|
292
|
+
return pkhDid(pkh.address, pkh.chainId);
|
|
293
|
+
}
|
|
294
|
+
if (DID_RE.test(did)) {
|
|
295
|
+
return did;
|
|
296
|
+
}
|
|
297
|
+
throw new IdentityParseError(`Invalid DID: ${did}`);
|
|
298
|
+
}
|
|
299
|
+
function canonicalizeDidUrl(didUrl) {
|
|
300
|
+
const { did, fragment } = splitDidUrl(didUrl);
|
|
301
|
+
return `${canonicalizeDid(did)}${fragment}`;
|
|
302
|
+
}
|
|
303
|
+
function principalDid(didUrl) {
|
|
304
|
+
return canonicalizeDid(splitDidUrl(didUrl).did);
|
|
305
|
+
}
|
|
306
|
+
function didEquals(a, b, options = {}) {
|
|
307
|
+
const canonicalize = options.ignoreFragment ? principalDid : canonicalizeDidUrl;
|
|
308
|
+
return canonicalize(a) === canonicalize(b);
|
|
309
|
+
}
|
|
310
|
+
function principalDidEquals(a, b) {
|
|
311
|
+
return didEquals(a, b, { ignoreFragment: true });
|
|
312
|
+
}
|
|
313
|
+
function didCacheKey(input, options = {}) {
|
|
314
|
+
const { did, fragment } = splitDidUrl(input);
|
|
315
|
+
const pkh = parsePkhDid(did);
|
|
316
|
+
const base = pkh ? `did:pkh:eip155:${pkh.chainId}:${addressStorageKey(pkh.address)}` : canonicalizeDid(did);
|
|
317
|
+
return options.preserveFragment ? `${base}${fragment}` : base;
|
|
318
|
+
}
|
|
319
|
+
function makePkhSpaceId(address, chainId, name) {
|
|
320
|
+
assertValidChainId(chainId);
|
|
321
|
+
if (!name) {
|
|
322
|
+
throw new IdentityParseError("Space name cannot be empty");
|
|
323
|
+
}
|
|
324
|
+
return `tinycloud:pkh:eip155:${chainId}:${canonicalizeAddress(address)}:${name}`;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// src/networkId.ts
|
|
328
|
+
var import_sdk_services = require("@tinycloud/sdk-services");
|
|
329
|
+
function canonicalizeNetworkId(networkId) {
|
|
330
|
+
const parsed = (0, import_sdk_services.parseNetworkId)(networkId);
|
|
331
|
+
return (0, import_sdk_services.buildNetworkId)(canonicalizeDid(parsed.ownerDid), parsed.name);
|
|
332
|
+
}
|
|
333
|
+
function parseCanonicalNetworkId(networkId) {
|
|
334
|
+
const canonical = canonicalizeNetworkId(networkId);
|
|
335
|
+
return (0, import_sdk_services.parseNetworkId)(canonical);
|
|
336
|
+
}
|
|
337
|
+
|
|
221
338
|
// src/storage.schema.ts
|
|
222
339
|
var import_zod2 = require("zod");
|
|
223
340
|
var ethereumAddressPattern = /^0x[a-fA-F0-9]{40}$/;
|
|
@@ -306,10 +423,10 @@ function validatePersistedSessionData(data) {
|
|
|
306
423
|
}
|
|
307
424
|
|
|
308
425
|
// src/TinyCloud.ts
|
|
309
|
-
var
|
|
426
|
+
var import_sdk_services3 = require("@tinycloud/sdk-services");
|
|
310
427
|
|
|
311
428
|
// src/spaces/SpaceService.ts
|
|
312
|
-
var
|
|
429
|
+
var import_sdk_services2 = require("@tinycloud/sdk-services");
|
|
313
430
|
|
|
314
431
|
// src/spaces/Space.ts
|
|
315
432
|
var Space = class {
|
|
@@ -915,6 +1032,14 @@ var DEFAULT_SIGNED_READ_URL_EXPIRY_MS = EXPIRY.SIGNED_READ_URL_MS;
|
|
|
915
1032
|
|
|
916
1033
|
// src/spaces/SpaceService.ts
|
|
917
1034
|
var SERVICE_NAME = "space";
|
|
1035
|
+
function ownerDidEquals(a, b) {
|
|
1036
|
+
if (!b) return false;
|
|
1037
|
+
try {
|
|
1038
|
+
return principalDidEquals(a, b);
|
|
1039
|
+
} catch {
|
|
1040
|
+
return a === b;
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
918
1043
|
var SpaceErrorCodes = {
|
|
919
1044
|
/** Space not found */
|
|
920
1045
|
NOT_FOUND: "SPACE_NOT_FOUND",
|
|
@@ -932,7 +1057,7 @@ var SpaceErrorCodes = {
|
|
|
932
1057
|
NOT_INITIALIZED: "NOT_INITIALIZED"
|
|
933
1058
|
};
|
|
934
1059
|
function makePublicSpaceId(address, chainId) {
|
|
935
|
-
return
|
|
1060
|
+
return makePkhSpaceId(address, chainId, "public");
|
|
936
1061
|
}
|
|
937
1062
|
function parseSpaceUri(uri) {
|
|
938
1063
|
const fullUriMatch = uri.match(
|
|
@@ -940,12 +1065,18 @@ function parseSpaceUri(uri) {
|
|
|
940
1065
|
);
|
|
941
1066
|
if (fullUriMatch) {
|
|
942
1067
|
const [, chainId, address, name] = fullUriMatch;
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
1068
|
+
try {
|
|
1069
|
+
const chainIdNumber = Number(chainId);
|
|
1070
|
+
const canonicalAddress = canonicalizeAddress(address);
|
|
1071
|
+
return {
|
|
1072
|
+
owner: pkhDid(canonicalAddress, chainIdNumber),
|
|
1073
|
+
name,
|
|
1074
|
+
chainId: String(chainIdNumber),
|
|
1075
|
+
address: canonicalAddress
|
|
1076
|
+
};
|
|
1077
|
+
} catch {
|
|
1078
|
+
return null;
|
|
1079
|
+
}
|
|
949
1080
|
}
|
|
950
1081
|
if (/^[a-zA-Z0-9_-]+$/.test(uri)) {
|
|
951
1082
|
return {
|
|
@@ -957,10 +1088,9 @@ function parseSpaceUri(uri) {
|
|
|
957
1088
|
return null;
|
|
958
1089
|
}
|
|
959
1090
|
function buildSpaceUri(owner, name) {
|
|
960
|
-
const
|
|
961
|
-
if (
|
|
962
|
-
|
|
963
|
-
return `tinycloud:pkh:eip155:${chainId}:${address}:${name}`;
|
|
1091
|
+
const pkh = parsePkhDid(owner);
|
|
1092
|
+
if (pkh) {
|
|
1093
|
+
return makePkhSpaceId(pkh.address, pkh.chainId, name);
|
|
964
1094
|
}
|
|
965
1095
|
return `tinycloud:${owner}:${name}`;
|
|
966
1096
|
}
|
|
@@ -1070,8 +1200,8 @@ var SpaceService = class {
|
|
|
1070
1200
|
*/
|
|
1071
1201
|
async list() {
|
|
1072
1202
|
if (!this.session) {
|
|
1073
|
-
return (0,
|
|
1074
|
-
(0,
|
|
1203
|
+
return (0, import_sdk_services2.err)(
|
|
1204
|
+
(0, import_sdk_services2.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
|
|
1075
1205
|
);
|
|
1076
1206
|
}
|
|
1077
1207
|
try {
|
|
@@ -1085,10 +1215,10 @@ var SpaceService = class {
|
|
|
1085
1215
|
spaces.push(...delegatedSpaces);
|
|
1086
1216
|
}
|
|
1087
1217
|
const uniqueSpaces = this.deduplicateSpaces(spaces);
|
|
1088
|
-
return (0,
|
|
1218
|
+
return (0, import_sdk_services2.ok)(uniqueSpaces);
|
|
1089
1219
|
} catch (error) {
|
|
1090
|
-
return (0,
|
|
1091
|
-
(0,
|
|
1220
|
+
return (0, import_sdk_services2.err)(
|
|
1221
|
+
(0, import_sdk_services2.serviceError)(
|
|
1092
1222
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1093
1223
|
`Failed to list spaces: ${String(error)}`,
|
|
1094
1224
|
SERVICE_NAME,
|
|
@@ -1109,8 +1239,8 @@ var SpaceService = class {
|
|
|
1109
1239
|
});
|
|
1110
1240
|
if (!response.ok) {
|
|
1111
1241
|
const errorText = await response.text();
|
|
1112
|
-
return (0,
|
|
1113
|
-
(0,
|
|
1242
|
+
return (0, import_sdk_services2.err)(
|
|
1243
|
+
(0, import_sdk_services2.serviceError)(
|
|
1114
1244
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1115
1245
|
`Failed to list owned spaces: ${response.status} - ${errorText}`,
|
|
1116
1246
|
SERVICE_NAME,
|
|
@@ -1121,8 +1251,8 @@ var SpaceService = class {
|
|
|
1121
1251
|
const rawData = await response.json();
|
|
1122
1252
|
const validationResult = validateServerOwnedSpacesResponse(rawData);
|
|
1123
1253
|
if (!validationResult.ok) {
|
|
1124
|
-
return (0,
|
|
1125
|
-
(0,
|
|
1254
|
+
return (0, import_sdk_services2.err)(
|
|
1255
|
+
(0, import_sdk_services2.serviceError)(
|
|
1126
1256
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1127
1257
|
validationResult.error.message,
|
|
1128
1258
|
SERVICE_NAME,
|
|
@@ -1138,10 +1268,10 @@ var SpaceService = class {
|
|
|
1138
1268
|
permissions: ["*"]
|
|
1139
1269
|
// Full permissions for owned spaces
|
|
1140
1270
|
}));
|
|
1141
|
-
return (0,
|
|
1271
|
+
return (0, import_sdk_services2.ok)(spaces);
|
|
1142
1272
|
} catch (error) {
|
|
1143
|
-
return (0,
|
|
1144
|
-
(0,
|
|
1273
|
+
return (0, import_sdk_services2.err)(
|
|
1274
|
+
(0, import_sdk_services2.serviceError)(
|
|
1145
1275
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1146
1276
|
`Network error listing owned spaces: ${String(error)}`,
|
|
1147
1277
|
SERVICE_NAME,
|
|
@@ -1222,13 +1352,13 @@ var SpaceService = class {
|
|
|
1222
1352
|
*/
|
|
1223
1353
|
async create(name) {
|
|
1224
1354
|
if (!this.session) {
|
|
1225
|
-
return (0,
|
|
1226
|
-
(0,
|
|
1355
|
+
return (0, import_sdk_services2.err)(
|
|
1356
|
+
(0, import_sdk_services2.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
|
|
1227
1357
|
);
|
|
1228
1358
|
}
|
|
1229
1359
|
if (!name || !/^[a-zA-Z0-9_-]+$/.test(name)) {
|
|
1230
|
-
return (0,
|
|
1231
|
-
(0,
|
|
1360
|
+
return (0, import_sdk_services2.err)(
|
|
1361
|
+
(0, import_sdk_services2.serviceError)(
|
|
1232
1362
|
SpaceErrorCodes.INVALID_NAME,
|
|
1233
1363
|
"Space name must contain only alphanumeric characters, underscores, and hyphens",
|
|
1234
1364
|
SERVICE_NAME
|
|
@@ -1245,16 +1375,16 @@ var SpaceService = class {
|
|
|
1245
1375
|
if (!response.ok) {
|
|
1246
1376
|
const errorText = await response.text();
|
|
1247
1377
|
if (response.status === 409) {
|
|
1248
|
-
return (0,
|
|
1249
|
-
(0,
|
|
1378
|
+
return (0, import_sdk_services2.err)(
|
|
1379
|
+
(0, import_sdk_services2.serviceError)(
|
|
1250
1380
|
SpaceErrorCodes.ALREADY_EXISTS,
|
|
1251
1381
|
`Space "${name}" already exists`,
|
|
1252
1382
|
SERVICE_NAME
|
|
1253
1383
|
)
|
|
1254
1384
|
);
|
|
1255
1385
|
}
|
|
1256
|
-
return (0,
|
|
1257
|
-
(0,
|
|
1386
|
+
return (0, import_sdk_services2.err)(
|
|
1387
|
+
(0, import_sdk_services2.serviceError)(
|
|
1258
1388
|
SpaceErrorCodes.CREATION_FAILED,
|
|
1259
1389
|
`Failed to create space: ${response.status} - ${errorText}`,
|
|
1260
1390
|
SERVICE_NAME,
|
|
@@ -1265,8 +1395,8 @@ var SpaceService = class {
|
|
|
1265
1395
|
const rawData = await response.json();
|
|
1266
1396
|
const validationResult = validateServerCreateSpaceResponse(rawData);
|
|
1267
1397
|
if (!validationResult.ok) {
|
|
1268
|
-
return (0,
|
|
1269
|
-
(0,
|
|
1398
|
+
return (0, import_sdk_services2.err)(
|
|
1399
|
+
(0, import_sdk_services2.serviceError)(
|
|
1270
1400
|
SpaceErrorCodes.CREATION_FAILED,
|
|
1271
1401
|
validationResult.error.message,
|
|
1272
1402
|
SERVICE_NAME,
|
|
@@ -1282,10 +1412,10 @@ var SpaceService = class {
|
|
|
1282
1412
|
permissions: ["*"]
|
|
1283
1413
|
};
|
|
1284
1414
|
this.infoCache.set(spaceInfo.id, { info: spaceInfo, cachedAt: Date.now() });
|
|
1285
|
-
return (0,
|
|
1415
|
+
return (0, import_sdk_services2.ok)(spaceInfo);
|
|
1286
1416
|
} catch (error) {
|
|
1287
|
-
return (0,
|
|
1288
|
-
(0,
|
|
1417
|
+
return (0, import_sdk_services2.err)(
|
|
1418
|
+
(0, import_sdk_services2.serviceError)(
|
|
1289
1419
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1290
1420
|
`Network error creating space: ${String(error)}`,
|
|
1291
1421
|
SERVICE_NAME,
|
|
@@ -1349,10 +1479,10 @@ var SpaceService = class {
|
|
|
1349
1479
|
const spaceId = this.resolveSpaceId(nameOrUri);
|
|
1350
1480
|
const cached = this.infoCache.get(spaceId);
|
|
1351
1481
|
if (cached && Date.now() - cached.cachedAt < this.cacheTTL) {
|
|
1352
|
-
return (0,
|
|
1482
|
+
return (0, import_sdk_services2.ok)(true);
|
|
1353
1483
|
}
|
|
1354
1484
|
const infoResult = await this.getSpaceInfo(spaceId);
|
|
1355
|
-
return (0,
|
|
1485
|
+
return (0, import_sdk_services2.ok)(infoResult.ok);
|
|
1356
1486
|
}
|
|
1357
1487
|
// ===========================================================================
|
|
1358
1488
|
// Space Info
|
|
@@ -1363,11 +1493,11 @@ var SpaceService = class {
|
|
|
1363
1493
|
async getSpaceInfo(spaceId) {
|
|
1364
1494
|
const cached = this.infoCache.get(spaceId);
|
|
1365
1495
|
if (cached && Date.now() - cached.cachedAt < this.cacheTTL) {
|
|
1366
|
-
return (0,
|
|
1496
|
+
return (0, import_sdk_services2.ok)(cached.info);
|
|
1367
1497
|
}
|
|
1368
1498
|
if (!this.session) {
|
|
1369
|
-
return (0,
|
|
1370
|
-
(0,
|
|
1499
|
+
return (0, import_sdk_services2.err)(
|
|
1500
|
+
(0, import_sdk_services2.serviceError)(SpaceErrorCodes.AUTH_REQUIRED, "Authentication required", SERVICE_NAME)
|
|
1371
1501
|
);
|
|
1372
1502
|
}
|
|
1373
1503
|
try {
|
|
@@ -1379,13 +1509,13 @@ var SpaceService = class {
|
|
|
1379
1509
|
});
|
|
1380
1510
|
if (!response.ok) {
|
|
1381
1511
|
if (response.status === 404) {
|
|
1382
|
-
return (0,
|
|
1383
|
-
(0,
|
|
1512
|
+
return (0, import_sdk_services2.err)(
|
|
1513
|
+
(0, import_sdk_services2.serviceError)(SpaceErrorCodes.NOT_FOUND, `Space not found: ${spaceId}`, SERVICE_NAME)
|
|
1384
1514
|
);
|
|
1385
1515
|
}
|
|
1386
1516
|
const errorText = await response.text();
|
|
1387
|
-
return (0,
|
|
1388
|
-
(0,
|
|
1517
|
+
return (0, import_sdk_services2.err)(
|
|
1518
|
+
(0, import_sdk_services2.serviceError)(
|
|
1389
1519
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1390
1520
|
`Failed to get space info: ${response.status} - ${errorText}`,
|
|
1391
1521
|
SERVICE_NAME
|
|
@@ -1395,8 +1525,8 @@ var SpaceService = class {
|
|
|
1395
1525
|
const rawData = await response.json();
|
|
1396
1526
|
const validationResult = validateServerSpaceInfoResponse(rawData);
|
|
1397
1527
|
if (!validationResult.ok) {
|
|
1398
|
-
return (0,
|
|
1399
|
-
(0,
|
|
1528
|
+
return (0, import_sdk_services2.err)(
|
|
1529
|
+
(0, import_sdk_services2.serviceError)(
|
|
1400
1530
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1401
1531
|
validationResult.error.message,
|
|
1402
1532
|
SERVICE_NAME,
|
|
@@ -1409,15 +1539,15 @@ var SpaceService = class {
|
|
|
1409
1539
|
id: data.id,
|
|
1410
1540
|
name: data.name ?? this.extractNameFromId(data.id),
|
|
1411
1541
|
owner: data.owner,
|
|
1412
|
-
type: data.type ?? (data.owner
|
|
1542
|
+
type: data.type ?? (ownerDidEquals(data.owner, this.userDid) ? "owned" : "delegated"),
|
|
1413
1543
|
permissions: data.permissions,
|
|
1414
1544
|
expiresAt: data.expiresAt ? new Date(data.expiresAt) : void 0
|
|
1415
1545
|
};
|
|
1416
1546
|
this.infoCache.set(spaceId, { info: spaceInfo, cachedAt: Date.now() });
|
|
1417
|
-
return (0,
|
|
1547
|
+
return (0, import_sdk_services2.ok)(spaceInfo);
|
|
1418
1548
|
} catch (error) {
|
|
1419
|
-
return (0,
|
|
1420
|
-
(0,
|
|
1549
|
+
return (0, import_sdk_services2.err)(
|
|
1550
|
+
(0, import_sdk_services2.serviceError)(
|
|
1421
1551
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1422
1552
|
`Network error getting space info: ${String(error)}`,
|
|
1423
1553
|
SERVICE_NAME,
|
|
@@ -1488,8 +1618,8 @@ var SpaceService = class {
|
|
|
1488
1618
|
});
|
|
1489
1619
|
if (!response.ok) {
|
|
1490
1620
|
const errorText = await response.text();
|
|
1491
|
-
return (0,
|
|
1492
|
-
(0,
|
|
1621
|
+
return (0, import_sdk_services2.err)(
|
|
1622
|
+
(0, import_sdk_services2.serviceError)(
|
|
1493
1623
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1494
1624
|
`Failed to list delegations: ${response.status} - ${errorText}`,
|
|
1495
1625
|
SERVICE_NAME
|
|
@@ -1499,8 +1629,8 @@ var SpaceService = class {
|
|
|
1499
1629
|
const rawData = await response.json();
|
|
1500
1630
|
const validationResult = validateServerDelegationsResponse(rawData);
|
|
1501
1631
|
if (!validationResult.ok) {
|
|
1502
|
-
return (0,
|
|
1503
|
-
(0,
|
|
1632
|
+
return (0, import_sdk_services2.err)(
|
|
1633
|
+
(0, import_sdk_services2.serviceError)(
|
|
1504
1634
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1505
1635
|
validationResult.error.message,
|
|
1506
1636
|
SERVICE_NAME,
|
|
@@ -1509,10 +1639,10 @@ var SpaceService = class {
|
|
|
1509
1639
|
);
|
|
1510
1640
|
}
|
|
1511
1641
|
const delegations = transformServerDelegations(validationResult.data, spaceId);
|
|
1512
|
-
return (0,
|
|
1642
|
+
return (0, import_sdk_services2.ok)(delegations);
|
|
1513
1643
|
} catch (error) {
|
|
1514
|
-
return (0,
|
|
1515
|
-
(0,
|
|
1644
|
+
return (0, import_sdk_services2.err)(
|
|
1645
|
+
(0, import_sdk_services2.serviceError)(
|
|
1516
1646
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1517
1647
|
`Network error listing delegations: ${String(error)}`,
|
|
1518
1648
|
SERVICE_NAME
|
|
@@ -1543,8 +1673,8 @@ var SpaceService = class {
|
|
|
1543
1673
|
});
|
|
1544
1674
|
if (!response.ok) {
|
|
1545
1675
|
const errorText = await response.text();
|
|
1546
|
-
return (0,
|
|
1547
|
-
(0,
|
|
1676
|
+
return (0, import_sdk_services2.err)(
|
|
1677
|
+
(0, import_sdk_services2.serviceError)(
|
|
1548
1678
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1549
1679
|
`Failed to list received delegations: ${response.status} - ${errorText}`,
|
|
1550
1680
|
SERVICE_NAME
|
|
@@ -1554,8 +1684,8 @@ var SpaceService = class {
|
|
|
1554
1684
|
const rawData = await response.json();
|
|
1555
1685
|
const validationResult = validateServerDelegationsResponse(rawData);
|
|
1556
1686
|
if (!validationResult.ok) {
|
|
1557
|
-
return (0,
|
|
1558
|
-
(0,
|
|
1687
|
+
return (0, import_sdk_services2.err)(
|
|
1688
|
+
(0, import_sdk_services2.serviceError)(
|
|
1559
1689
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1560
1690
|
validationResult.error.message,
|
|
1561
1691
|
SERVICE_NAME,
|
|
@@ -1564,10 +1694,10 @@ var SpaceService = class {
|
|
|
1564
1694
|
);
|
|
1565
1695
|
}
|
|
1566
1696
|
const delegations = transformServerDelegations(validationResult.data, spaceId);
|
|
1567
|
-
return (0,
|
|
1697
|
+
return (0, import_sdk_services2.ok)(delegations);
|
|
1568
1698
|
} catch (error) {
|
|
1569
|
-
return (0,
|
|
1570
|
-
(0,
|
|
1699
|
+
return (0, import_sdk_services2.err)(
|
|
1700
|
+
(0, import_sdk_services2.serviceError)(
|
|
1571
1701
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1572
1702
|
`Network error listing received delegations: ${String(error)}`,
|
|
1573
1703
|
SERVICE_NAME
|
|
@@ -1579,8 +1709,8 @@ var SpaceService = class {
|
|
|
1579
1709
|
if (self.createDelegationFn) {
|
|
1580
1710
|
return self.createDelegationFn({ ...params, spaceId });
|
|
1581
1711
|
}
|
|
1582
|
-
return (0,
|
|
1583
|
-
(0,
|
|
1712
|
+
return (0, import_sdk_services2.err)(
|
|
1713
|
+
(0, import_sdk_services2.serviceError)(
|
|
1584
1714
|
SpaceErrorCodes.NOT_INITIALIZED,
|
|
1585
1715
|
"Delegation creation requires a createDelegation function. This should be provided by the platform SDK (web-sdk or node-sdk).",
|
|
1586
1716
|
SERVICE_NAME
|
|
@@ -1602,18 +1732,18 @@ var SpaceService = class {
|
|
|
1602
1732
|
});
|
|
1603
1733
|
if (!response.ok) {
|
|
1604
1734
|
const errorText = await response.text();
|
|
1605
|
-
return (0,
|
|
1606
|
-
(0,
|
|
1735
|
+
return (0, import_sdk_services2.err)(
|
|
1736
|
+
(0, import_sdk_services2.serviceError)(
|
|
1607
1737
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1608
1738
|
`Failed to revoke delegation: ${response.status} - ${errorText}`,
|
|
1609
1739
|
SERVICE_NAME
|
|
1610
1740
|
)
|
|
1611
1741
|
);
|
|
1612
1742
|
}
|
|
1613
|
-
return (0,
|
|
1743
|
+
return (0, import_sdk_services2.ok)(void 0);
|
|
1614
1744
|
} catch (error) {
|
|
1615
|
-
return (0,
|
|
1616
|
-
(0,
|
|
1745
|
+
return (0, import_sdk_services2.err)(
|
|
1746
|
+
(0, import_sdk_services2.serviceError)(
|
|
1617
1747
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1618
1748
|
`Network error revoking delegation: ${String(error)}`,
|
|
1619
1749
|
SERVICE_NAME
|
|
@@ -1636,18 +1766,18 @@ var SpaceService = class {
|
|
|
1636
1766
|
if (self.sharingService) {
|
|
1637
1767
|
const result = await self.sharingService.generate(params);
|
|
1638
1768
|
if (!result.ok) {
|
|
1639
|
-
return (0,
|
|
1640
|
-
(0,
|
|
1769
|
+
return (0, import_sdk_services2.err)(
|
|
1770
|
+
(0, import_sdk_services2.serviceError)(
|
|
1641
1771
|
SpaceErrorCodes.NETWORK_ERROR,
|
|
1642
1772
|
result.error.message || "Failed to generate share link",
|
|
1643
1773
|
SERVICE_NAME
|
|
1644
1774
|
)
|
|
1645
1775
|
);
|
|
1646
1776
|
}
|
|
1647
|
-
return (0,
|
|
1777
|
+
return (0, import_sdk_services2.ok)(result.data);
|
|
1648
1778
|
}
|
|
1649
|
-
return (0,
|
|
1650
|
-
(0,
|
|
1779
|
+
return (0, import_sdk_services2.err)(
|
|
1780
|
+
(0, import_sdk_services2.serviceError)(
|
|
1651
1781
|
SpaceErrorCodes.NOT_INITIALIZED,
|
|
1652
1782
|
"SharingService not configured. V2 sharing requires a SharingService instance.",
|
|
1653
1783
|
SERVICE_NAME
|
|
@@ -1655,8 +1785,8 @@ var SpaceService = class {
|
|
|
1655
1785
|
);
|
|
1656
1786
|
},
|
|
1657
1787
|
async list() {
|
|
1658
|
-
return (0,
|
|
1659
|
-
(0,
|
|
1788
|
+
return (0, import_sdk_services2.err)(
|
|
1789
|
+
(0, import_sdk_services2.serviceError)(
|
|
1660
1790
|
SpaceErrorCodes.NOT_INITIALIZED,
|
|
1661
1791
|
"Listing share links is not supported in v2. Share links are self-contained tokens that are not tracked on the server.",
|
|
1662
1792
|
SERVICE_NAME
|
|
@@ -1664,8 +1794,8 @@ var SpaceService = class {
|
|
|
1664
1794
|
);
|
|
1665
1795
|
},
|
|
1666
1796
|
async revoke(token) {
|
|
1667
|
-
return (0,
|
|
1668
|
-
(0,
|
|
1797
|
+
return (0, import_sdk_services2.err)(
|
|
1798
|
+
(0, import_sdk_services2.serviceError)(
|
|
1669
1799
|
SpaceErrorCodes.NOT_INITIALIZED,
|
|
1670
1800
|
"Revoking share links by token is not supported in v2. To revoke access, revoke the underlying delegation using space.delegations.revoke(cid).",
|
|
1671
1801
|
SERVICE_NAME
|
|
@@ -1725,7 +1855,7 @@ var TinyCloud = class _TinyCloud {
|
|
|
1725
1855
|
"hosts are required to initialize services. Provide them via config.hosts or initializeServices()."
|
|
1726
1856
|
);
|
|
1727
1857
|
}
|
|
1728
|
-
this._serviceContext = new
|
|
1858
|
+
this._serviceContext = new import_sdk_services3.ServiceContext({
|
|
1729
1859
|
invoke: effectiveInvoke,
|
|
1730
1860
|
invokeAny: this.config.invokeAny,
|
|
1731
1861
|
fetch: fetchFn ?? this.config.fetch ?? globalThis.fetch.bind(globalThis),
|
|
@@ -1733,10 +1863,10 @@ var TinyCloud = class _TinyCloud {
|
|
|
1733
1863
|
retryPolicy: this.config.retryPolicy
|
|
1734
1864
|
});
|
|
1735
1865
|
const serviceConstructors = {
|
|
1736
|
-
kv:
|
|
1737
|
-
sql:
|
|
1738
|
-
duckdb:
|
|
1739
|
-
hooks:
|
|
1866
|
+
kv: import_sdk_services3.KVService,
|
|
1867
|
+
sql: import_sdk_services3.SQLService,
|
|
1868
|
+
duckdb: import_sdk_services3.DuckDbService,
|
|
1869
|
+
hooks: import_sdk_services3.HooksService,
|
|
1740
1870
|
...this.config.services
|
|
1741
1871
|
};
|
|
1742
1872
|
for (const [name, ServiceClass] of Object.entries(serviceConstructors)) {
|
|
@@ -1991,18 +2121,18 @@ var TinyCloud = class _TinyCloud {
|
|
|
1991
2121
|
const address = this.address();
|
|
1992
2122
|
const chainId = this.chainId();
|
|
1993
2123
|
if (!address || !chainId) {
|
|
1994
|
-
return (0,
|
|
1995
|
-
(0,
|
|
1996
|
-
|
|
2124
|
+
return (0, import_sdk_services3.err)(
|
|
2125
|
+
(0, import_sdk_services3.serviceError)(
|
|
2126
|
+
import_sdk_services3.ErrorCodes.AUTH_REQUIRED,
|
|
1997
2127
|
"Must be signed in to ensure public space",
|
|
1998
2128
|
"public-space"
|
|
1999
2129
|
)
|
|
2000
2130
|
);
|
|
2001
2131
|
}
|
|
2002
2132
|
if (!this._serviceContext) {
|
|
2003
|
-
return (0,
|
|
2004
|
-
(0,
|
|
2005
|
-
|
|
2133
|
+
return (0, import_sdk_services3.err)(
|
|
2134
|
+
(0, import_sdk_services3.serviceError)(
|
|
2135
|
+
import_sdk_services3.ErrorCodes.AUTH_REQUIRED,
|
|
2006
2136
|
"Services not initialized. Call initializeServices() or signIn() first.",
|
|
2007
2137
|
"public-space"
|
|
2008
2138
|
)
|
|
@@ -2012,9 +2142,9 @@ var TinyCloud = class _TinyCloud {
|
|
|
2012
2142
|
try {
|
|
2013
2143
|
const session = this._serviceContext.session;
|
|
2014
2144
|
if (!session) {
|
|
2015
|
-
return (0,
|
|
2016
|
-
(0,
|
|
2017
|
-
|
|
2145
|
+
return (0, import_sdk_services3.err)(
|
|
2146
|
+
(0, import_sdk_services3.serviceError)(
|
|
2147
|
+
import_sdk_services3.ErrorCodes.AUTH_REQUIRED,
|
|
2018
2148
|
"No active session",
|
|
2019
2149
|
"public-space"
|
|
2020
2150
|
)
|
|
@@ -2031,7 +2161,7 @@ var TinyCloud = class _TinyCloud {
|
|
|
2031
2161
|
{ method: "POST", headers, body: JSON.stringify({ spaceId }) }
|
|
2032
2162
|
);
|
|
2033
2163
|
if (response.ok) {
|
|
2034
|
-
return (0,
|
|
2164
|
+
return (0, import_sdk_services3.ok)(void 0);
|
|
2035
2165
|
}
|
|
2036
2166
|
if (response.status === 404) {
|
|
2037
2167
|
const createHeaders = this._serviceContext.invoke(
|
|
@@ -2050,31 +2180,31 @@ var TinyCloud = class _TinyCloud {
|
|
|
2050
2180
|
);
|
|
2051
2181
|
if (!createResponse.ok) {
|
|
2052
2182
|
if (createResponse.status === 409) {
|
|
2053
|
-
return (0,
|
|
2183
|
+
return (0, import_sdk_services3.ok)(void 0);
|
|
2054
2184
|
}
|
|
2055
2185
|
const errorText2 = await createResponse.text();
|
|
2056
|
-
return (0,
|
|
2057
|
-
(0,
|
|
2058
|
-
|
|
2186
|
+
return (0, import_sdk_services3.err)(
|
|
2187
|
+
(0, import_sdk_services3.serviceError)(
|
|
2188
|
+
import_sdk_services3.ErrorCodes.NETWORK_ERROR,
|
|
2059
2189
|
`Failed to create public space: ${createResponse.status} - ${errorText2}`,
|
|
2060
2190
|
"public-space"
|
|
2061
2191
|
)
|
|
2062
2192
|
);
|
|
2063
2193
|
}
|
|
2064
|
-
return (0,
|
|
2194
|
+
return (0, import_sdk_services3.ok)(void 0);
|
|
2065
2195
|
}
|
|
2066
2196
|
const errorText = await response.text();
|
|
2067
|
-
return (0,
|
|
2068
|
-
(0,
|
|
2069
|
-
|
|
2197
|
+
return (0, import_sdk_services3.err)(
|
|
2198
|
+
(0, import_sdk_services3.serviceError)(
|
|
2199
|
+
import_sdk_services3.ErrorCodes.NETWORK_ERROR,
|
|
2070
2200
|
`Failed to check public space: ${response.status} - ${errorText}`,
|
|
2071
2201
|
"public-space"
|
|
2072
2202
|
)
|
|
2073
2203
|
);
|
|
2074
2204
|
} catch (error) {
|
|
2075
|
-
return (0,
|
|
2076
|
-
(0,
|
|
2077
|
-
|
|
2205
|
+
return (0, import_sdk_services3.err)(
|
|
2206
|
+
(0, import_sdk_services3.serviceError)(
|
|
2207
|
+
import_sdk_services3.ErrorCodes.NETWORK_ERROR,
|
|
2078
2208
|
`Network error ensuring public space: ${String(error)}`,
|
|
2079
2209
|
"public-space",
|
|
2080
2210
|
{ cause: error instanceof Error ? error : void 0 }
|
|
@@ -2107,8 +2237,8 @@ var TinyCloud = class _TinyCloud {
|
|
|
2107
2237
|
if (!session) {
|
|
2108
2238
|
throw new Error("No active session. Sign in first.");
|
|
2109
2239
|
}
|
|
2110
|
-
const publicKV = new
|
|
2111
|
-
const publicContext = new
|
|
2240
|
+
const publicKV = new import_sdk_services3.KVService({ prefix: "" });
|
|
2241
|
+
const publicContext = new import_sdk_services3.ServiceContext({
|
|
2112
2242
|
invoke: this._serviceContext.invoke,
|
|
2113
2243
|
fetch: this._serviceContext.fetch,
|
|
2114
2244
|
hosts: this._serviceContext.hosts,
|
|
@@ -2140,18 +2270,18 @@ var TinyCloud = class _TinyCloud {
|
|
|
2140
2270
|
const response = await doFetch(url, { method: "GET" });
|
|
2141
2271
|
if (!response.ok) {
|
|
2142
2272
|
if (response.status === 404) {
|
|
2143
|
-
return (0,
|
|
2144
|
-
(0,
|
|
2145
|
-
|
|
2273
|
+
return (0, import_sdk_services3.err)(
|
|
2274
|
+
(0, import_sdk_services3.serviceError)(
|
|
2275
|
+
import_sdk_services3.ErrorCodes.NOT_FOUND,
|
|
2146
2276
|
`Key not found: ${key} in space ${spaceId}`,
|
|
2147
2277
|
"public-space"
|
|
2148
2278
|
)
|
|
2149
2279
|
);
|
|
2150
2280
|
}
|
|
2151
2281
|
const errorText = await response.text();
|
|
2152
|
-
return (0,
|
|
2153
|
-
(0,
|
|
2154
|
-
|
|
2282
|
+
return (0, import_sdk_services3.err)(
|
|
2283
|
+
(0, import_sdk_services3.serviceError)(
|
|
2284
|
+
import_sdk_services3.ErrorCodes.NETWORK_ERROR,
|
|
2155
2285
|
`Failed to read public space: ${response.status} - ${errorText}`,
|
|
2156
2286
|
"public-space",
|
|
2157
2287
|
{ meta: { status: response.status } }
|
|
@@ -2170,11 +2300,11 @@ var TinyCloud = class _TinyCloud {
|
|
|
2170
2300
|
data = text;
|
|
2171
2301
|
}
|
|
2172
2302
|
}
|
|
2173
|
-
return (0,
|
|
2303
|
+
return (0, import_sdk_services3.ok)(data);
|
|
2174
2304
|
} catch (error) {
|
|
2175
|
-
return (0,
|
|
2176
|
-
(0,
|
|
2177
|
-
|
|
2305
|
+
return (0, import_sdk_services3.err)(
|
|
2306
|
+
(0, import_sdk_services3.serviceError)(
|
|
2307
|
+
import_sdk_services3.ErrorCodes.NETWORK_ERROR,
|
|
2178
2308
|
`Network error reading public space: ${String(error)}`,
|
|
2179
2309
|
"public-space",
|
|
2180
2310
|
{ cause: error instanceof Error ? error : void 0 }
|
|
@@ -2200,7 +2330,7 @@ var TinyCloud = class _TinyCloud {
|
|
|
2200
2330
|
};
|
|
2201
2331
|
|
|
2202
2332
|
// src/index.ts
|
|
2203
|
-
var
|
|
2333
|
+
var import_sdk_services6 = require("@tinycloud/sdk-services");
|
|
2204
2334
|
|
|
2205
2335
|
// src/space.ts
|
|
2206
2336
|
async function fetchPeerId(host, spaceId) {
|
|
@@ -2868,7 +2998,7 @@ function validateEncodedShareData(data) {
|
|
|
2868
2998
|
|
|
2869
2999
|
// src/manifest.ts
|
|
2870
3000
|
var import_ms = __toESM(require("ms"), 1);
|
|
2871
|
-
var
|
|
3001
|
+
var import_sdk_services4 = require("@tinycloud/sdk-services");
|
|
2872
3002
|
var ManifestValidationError = class extends Error {
|
|
2873
3003
|
constructor(message) {
|
|
2874
3004
|
super(`Manifest validation failed: ${message}`);
|
|
@@ -3115,13 +3245,13 @@ function validateManifestSecrets(secrets) {
|
|
|
3115
3245
|
throw new ManifestValidationError("manifest.secrets must be an object");
|
|
3116
3246
|
}
|
|
3117
3247
|
for (const [name, spec] of Object.entries(secrets)) {
|
|
3118
|
-
if (!
|
|
3248
|
+
if (!import_sdk_services4.SECRET_NAME_RE.test(name)) {
|
|
3119
3249
|
throw new ManifestValidationError(
|
|
3120
|
-
`manifest.secrets.${name} must match ${
|
|
3250
|
+
`manifest.secrets.${name} must match ${import_sdk_services4.SECRET_NAME_RE.source}`
|
|
3121
3251
|
);
|
|
3122
3252
|
}
|
|
3123
3253
|
try {
|
|
3124
|
-
(0,
|
|
3254
|
+
(0, import_sdk_services4.resolveSecretPath)(
|
|
3125
3255
|
secretNameFromSpec(name, spec),
|
|
3126
3256
|
{ scope: secretScopeFromSpec(spec) }
|
|
3127
3257
|
);
|
|
@@ -3333,7 +3463,7 @@ function secretEntriesForManifest(secrets) {
|
|
|
3333
3463
|
const entries = [];
|
|
3334
3464
|
for (const [name, spec] of Object.entries(secrets)) {
|
|
3335
3465
|
const actions = secretActionsFromSpec(name, spec);
|
|
3336
|
-
const secretPath = (0,
|
|
3466
|
+
const secretPath = (0, import_sdk_services4.resolveSecretPath)(
|
|
3337
3467
|
secretNameFromSpec(name, spec),
|
|
3338
3468
|
{ scope: secretScopeFromSpec(spec) }
|
|
3339
3469
|
);
|
|
@@ -4264,7 +4394,7 @@ function createSharingService(config) {
|
|
|
4264
4394
|
}
|
|
4265
4395
|
|
|
4266
4396
|
// src/authorization/CapabilityKeyRegistry.ts
|
|
4267
|
-
var
|
|
4397
|
+
var import_sdk_services5 = require("@tinycloud/sdk-services");
|
|
4268
4398
|
var SERVICE_NAME2 = "capability-key-registry";
|
|
4269
4399
|
var CapabilityKeyRegistryErrorCodes = {
|
|
4270
4400
|
/** Key not found in registry */
|
|
@@ -4482,8 +4612,8 @@ var CapabilityKeyRegistry = class {
|
|
|
4482
4612
|
revokeDelegation(cid) {
|
|
4483
4613
|
const stored = this.store.byCid.get(cid);
|
|
4484
4614
|
if (!stored) {
|
|
4485
|
-
return (0,
|
|
4486
|
-
(0,
|
|
4615
|
+
return (0, import_sdk_services5.err)(
|
|
4616
|
+
(0, import_sdk_services5.serviceError)(
|
|
4487
4617
|
CapabilityKeyRegistryErrorCodes.KEY_NOT_FOUND,
|
|
4488
4618
|
`Delegation not found: ${cid}`,
|
|
4489
4619
|
SERVICE_NAME2
|
|
@@ -4505,7 +4635,7 @@ var CapabilityKeyRegistry = class {
|
|
|
4505
4635
|
}
|
|
4506
4636
|
}
|
|
4507
4637
|
}
|
|
4508
|
-
return (0,
|
|
4638
|
+
return (0, import_sdk_services5.ok)(void 0);
|
|
4509
4639
|
}
|
|
4510
4640
|
// ===========================================================================
|
|
4511
4641
|
// Search
|
|
@@ -4762,7 +4892,7 @@ var import_multiaddr_to_uri = require("@multiformats/multiaddr-to-uri");
|
|
|
4762
4892
|
var import_uri_to_multiaddr = require("@multiformats/uri-to-multiaddr");
|
|
4763
4893
|
var import_ed25519 = require("@noble/curves/ed25519");
|
|
4764
4894
|
var import_basics = require("multiformats/basics");
|
|
4765
|
-
var
|
|
4895
|
+
var import_viem2 = require("viem");
|
|
4766
4896
|
var DEFAULT_TINYCLOUD_LOCATION_REGISTRY_URL = "https://registry.tinycloud.xyz";
|
|
4767
4897
|
var DEFAULT_TINYCLOUD_FALLBACK_HOST = "https://node.tinycloud.xyz";
|
|
4768
4898
|
var LocationRecordValidationError = class extends Error {
|
|
@@ -5068,7 +5198,7 @@ async function verifyPkhSignature(did, payload, signature) {
|
|
|
5068
5198
|
if (!/^0x[0-9a-fA-F]+$/.test(signature)) {
|
|
5069
5199
|
throw new LocationRecordValidationError("did:pkh signature must be hex");
|
|
5070
5200
|
}
|
|
5071
|
-
return (0,
|
|
5201
|
+
return (0, import_viem2.verifyMessage)({
|
|
5072
5202
|
address,
|
|
5073
5203
|
message: payload,
|
|
5074
5204
|
signature
|
|
@@ -5303,6 +5433,7 @@ function parseRecapCapabilities(parseWasm, siwe) {
|
|
|
5303
5433
|
EnsDataSchema,
|
|
5304
5434
|
ErrorCodes,
|
|
5305
5435
|
HooksService,
|
|
5436
|
+
IdentityParseError,
|
|
5306
5437
|
KVService,
|
|
5307
5438
|
LocationRecordValidationError,
|
|
5308
5439
|
ManifestValidationError,
|
|
@@ -5333,6 +5464,7 @@ function parseRecapCapabilities(parseWasm, siwe) {
|
|
|
5333
5464
|
VaultPublicSpaceKVActions,
|
|
5334
5465
|
VersionCheckError,
|
|
5335
5466
|
activateSessionWithHost,
|
|
5467
|
+
addressStorageKey,
|
|
5336
5468
|
applyPrefix,
|
|
5337
5469
|
buildCanonicalDecryptRequest,
|
|
5338
5470
|
buildDecryptAttenuation,
|
|
@@ -5343,7 +5475,11 @@ function parseRecapCapabilities(parseWasm, siwe) {
|
|
|
5343
5475
|
canonicalHashHex,
|
|
5344
5476
|
canonicalLocationPayload,
|
|
5345
5477
|
canonicalSignedResponse,
|
|
5478
|
+
canonicalizeAddress,
|
|
5479
|
+
canonicalizeDid,
|
|
5480
|
+
canonicalizeDidUrl,
|
|
5346
5481
|
canonicalizeEncryptionJson,
|
|
5482
|
+
canonicalizeNetworkId,
|
|
5347
5483
|
canonicalizeSecretScope,
|
|
5348
5484
|
checkDecryptInvocationInput,
|
|
5349
5485
|
checkNodeInfo,
|
|
@@ -5357,6 +5493,8 @@ function parseRecapCapabilities(parseWasm, siwe) {
|
|
|
5357
5493
|
defaultSignStrategy,
|
|
5358
5494
|
defaultSpaceCreationHandler,
|
|
5359
5495
|
deriveSignedReceiverKey,
|
|
5496
|
+
didCacheKey,
|
|
5497
|
+
didEquals,
|
|
5360
5498
|
discoverNetwork,
|
|
5361
5499
|
encryptToNetwork,
|
|
5362
5500
|
encryptionBase64Decode,
|
|
@@ -5376,9 +5514,11 @@ function parseRecapCapabilities(parseWasm, siwe) {
|
|
|
5376
5514
|
hexEncode,
|
|
5377
5515
|
httpUrlToMultiaddr,
|
|
5378
5516
|
isCapabilitySubset,
|
|
5517
|
+
isEvmAddress,
|
|
5379
5518
|
isNetworkId,
|
|
5380
5519
|
loadManifest,
|
|
5381
5520
|
locationPayloadForRecord,
|
|
5521
|
+
makePkhSpaceId,
|
|
5382
5522
|
makePublicSpaceId,
|
|
5383
5523
|
manifestAbilitiesUnion,
|
|
5384
5524
|
multiaddrToHttpUrl,
|
|
@@ -5386,10 +5526,15 @@ function parseRecapCapabilities(parseWasm, siwe) {
|
|
|
5386
5526
|
normalizeDefaults,
|
|
5387
5527
|
ok,
|
|
5388
5528
|
openWrappedKey,
|
|
5529
|
+
parseCanonicalNetworkId,
|
|
5389
5530
|
parseExpiry,
|
|
5390
5531
|
parseNetworkId,
|
|
5532
|
+
parsePkhDid,
|
|
5391
5533
|
parseRecapCapabilities,
|
|
5392
5534
|
parseSpaceUri,
|
|
5535
|
+
pkhDid,
|
|
5536
|
+
principalDid,
|
|
5537
|
+
principalDidEquals,
|
|
5393
5538
|
resolveCloudLocation,
|
|
5394
5539
|
resolveManifest,
|
|
5395
5540
|
resolveSecretListPrefix,
|