@tinycloudlabs/sdk-core 1.0.0
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/LICENSE.md +320 -0
- package/dist/TinyCloud.d.ts +206 -0
- package/dist/TinyCloud.d.ts.map +1 -0
- package/dist/TinyCloud.js +244 -0
- package/dist/TinyCloud.js.map +1 -0
- package/dist/TinyCloud.schema.d.ts +173 -0
- package/dist/TinyCloud.schema.d.ts.map +1 -0
- package/dist/TinyCloud.schema.js +136 -0
- package/dist/TinyCloud.schema.js.map +1 -0
- package/dist/TinyCloud.schema.test.d.ts +5 -0
- package/dist/TinyCloud.schema.test.d.ts.map +1 -0
- package/dist/TinyCloud.schema.test.js +286 -0
- package/dist/TinyCloud.schema.test.js.map +1 -0
- package/dist/authorization/CapabilityKeyRegistry.d.ts +317 -0
- package/dist/authorization/CapabilityKeyRegistry.d.ts.map +1 -0
- package/dist/authorization/CapabilityKeyRegistry.js +509 -0
- package/dist/authorization/CapabilityKeyRegistry.js.map +1 -0
- package/dist/authorization/authorization.schema.d.ts +233 -0
- package/dist/authorization/authorization.schema.d.ts.map +1 -0
- package/dist/authorization/authorization.schema.js +220 -0
- package/dist/authorization/authorization.schema.js.map +1 -0
- package/dist/authorization/authorization.schema.test.d.ts +5 -0
- package/dist/authorization/authorization.schema.test.d.ts.map +1 -0
- package/dist/authorization/authorization.schema.test.js +618 -0
- package/dist/authorization/authorization.schema.test.js.map +1 -0
- package/dist/authorization/index.d.ts +38 -0
- package/dist/authorization/index.d.ts.map +1 -0
- package/dist/authorization/index.js +52 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/authorization/spaceCreation.d.ts +96 -0
- package/dist/authorization/spaceCreation.d.ts.map +1 -0
- package/dist/authorization/spaceCreation.js +35 -0
- package/dist/authorization/spaceCreation.js.map +1 -0
- package/dist/authorization/spaceCreation.schema.d.ts +67 -0
- package/dist/authorization/spaceCreation.schema.d.ts.map +1 -0
- package/dist/authorization/spaceCreation.schema.js +95 -0
- package/dist/authorization/spaceCreation.schema.js.map +1 -0
- package/dist/authorization/spaceCreation.schema.test.d.ts +5 -0
- package/dist/authorization/spaceCreation.schema.test.d.ts.map +1 -0
- package/dist/authorization/spaceCreation.schema.test.js +168 -0
- package/dist/authorization/spaceCreation.schema.test.js.map +1 -0
- package/dist/authorization/strategies.d.ts +134 -0
- package/dist/authorization/strategies.d.ts.map +1 -0
- package/dist/authorization/strategies.js +15 -0
- package/dist/authorization/strategies.js.map +1 -0
- package/dist/authorization/strategies.schema.d.ts +185 -0
- package/dist/authorization/strategies.schema.d.ts.map +1 -0
- package/dist/authorization/strategies.schema.js +147 -0
- package/dist/authorization/strategies.schema.js.map +1 -0
- package/dist/authorization/strategies.schema.test.d.ts +5 -0
- package/dist/authorization/strategies.schema.test.d.ts.map +1 -0
- package/dist/authorization/strategies.schema.test.js +253 -0
- package/dist/authorization/strategies.schema.test.js.map +1 -0
- package/dist/delegations/DelegationManager.d.ts +164 -0
- package/dist/delegations/DelegationManager.d.ts.map +1 -0
- package/dist/delegations/DelegationManager.js +428 -0
- package/dist/delegations/DelegationManager.js.map +1 -0
- package/dist/delegations/SharingService.d.ts +279 -0
- package/dist/delegations/SharingService.d.ts.map +1 -0
- package/dist/delegations/SharingService.js +558 -0
- package/dist/delegations/SharingService.js.map +1 -0
- package/dist/delegations/SharingService.schema.d.ts +401 -0
- package/dist/delegations/SharingService.schema.d.ts.map +1 -0
- package/dist/delegations/SharingService.schema.js +211 -0
- package/dist/delegations/SharingService.schema.js.map +1 -0
- package/dist/delegations/index.d.ts +38 -0
- package/dist/delegations/index.d.ts.map +1 -0
- package/dist/delegations/index.js +42 -0
- package/dist/delegations/index.js.map +1 -0
- package/dist/delegations/types.d.ts +13 -0
- package/dist/delegations/types.d.ts.map +1 -0
- package/dist/delegations/types.js +42 -0
- package/dist/delegations/types.js.map +1 -0
- package/dist/delegations/types.schema.d.ts +1641 -0
- package/dist/delegations/types.schema.d.ts.map +1 -0
- package/dist/delegations/types.schema.js +535 -0
- package/dist/delegations/types.schema.js.map +1 -0
- package/dist/delegations/types.schema.test.d.ts +5 -0
- package/dist/delegations/types.schema.test.d.ts.map +1 -0
- package/dist/delegations/types.schema.test.js +627 -0
- package/dist/delegations/types.schema.test.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/json-schema.d.ts +327 -0
- package/dist/json-schema.d.ts.map +1 -0
- package/dist/json-schema.js +703 -0
- package/dist/json-schema.js.map +1 -0
- package/dist/json-schema.test.d.ts +7 -0
- package/dist/json-schema.test.d.ts.map +1 -0
- package/dist/json-schema.test.js +365 -0
- package/dist/json-schema.test.js.map +1 -0
- package/dist/signer.d.ts +28 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +2 -0
- package/dist/signer.js.map +1 -0
- package/dist/space.d.ts +53 -0
- package/dist/space.d.ts.map +1 -0
- package/dist/space.js +67 -0
- package/dist/space.js.map +1 -0
- package/dist/space.schema.d.ts +65 -0
- package/dist/space.schema.d.ts.map +1 -0
- package/dist/space.schema.js +65 -0
- package/dist/space.schema.js.map +1 -0
- package/dist/space.schema.test.d.ts +5 -0
- package/dist/space.schema.test.d.ts.map +1 -0
- package/dist/space.schema.test.js +148 -0
- package/dist/space.schema.test.js.map +1 -0
- package/dist/spaces/Space.d.ts +175 -0
- package/dist/spaces/Space.d.ts.map +1 -0
- package/dist/spaces/Space.js +84 -0
- package/dist/spaces/Space.js.map +1 -0
- package/dist/spaces/SpaceService.d.ts +271 -0
- package/dist/spaces/SpaceService.d.ts.map +1 -0
- package/dist/spaces/SpaceService.js +715 -0
- package/dist/spaces/SpaceService.js.map +1 -0
- package/dist/spaces/index.d.ts +11 -0
- package/dist/spaces/index.d.ts.map +1 -0
- package/dist/spaces/index.js +20 -0
- package/dist/spaces/index.js.map +1 -0
- package/dist/spaces/spaces.schema.d.ts +421 -0
- package/dist/spaces/spaces.schema.d.ts.map +1 -0
- package/dist/spaces/spaces.schema.js +342 -0
- package/dist/spaces/spaces.schema.js.map +1 -0
- package/dist/spaces/spaces.schema.test.d.ts +5 -0
- package/dist/spaces/spaces.schema.test.d.ts.map +1 -0
- package/dist/spaces/spaces.schema.test.js +471 -0
- package/dist/spaces/spaces.schema.test.js.map +1 -0
- package/dist/storage.d.ts +47 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +14 -0
- package/dist/storage.js.map +1 -0
- package/dist/storage.schema.d.ts +277 -0
- package/dist/storage.schema.d.ts.map +1 -0
- package/dist/storage.schema.js +185 -0
- package/dist/storage.schema.js.map +1 -0
- package/dist/storage.schema.test.d.ts +5 -0
- package/dist/storage.schema.test.d.ts.map +1 -0
- package/dist/storage.schema.test.js +346 -0
- package/dist/storage.schema.test.js.map +1 -0
- package/dist/userAuthorization.d.ts +99 -0
- package/dist/userAuthorization.d.ts.map +1 -0
- package/dist/userAuthorization.js +3 -0
- package/dist/userAuthorization.js.map +1 -0
- package/dist/userAuthorization.schema.d.ts +259 -0
- package/dist/userAuthorization.schema.d.ts.map +1 -0
- package/dist/userAuthorization.schema.js +175 -0
- package/dist/userAuthorization.schema.js.map +1 -0
- package/dist/userAuthorization.schema.test.d.ts +5 -0
- package/dist/userAuthorization.schema.test.d.ts.map +1 -0
- package/dist/userAuthorization.schema.test.js +356 -0
- package/dist/userAuthorization.schema.test.js.map +1 -0
- package/dist/version.d.ts +30 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +54 -0
- package/dist/version.js.map +1 -0
- package/dist/wasm-validation.d.ts +287 -0
- package/dist/wasm-validation.d.ts.map +1 -0
- package/dist/wasm-validation.js +219 -0
- package/dist/wasm-validation.js.map +1 -0
- package/dist/wasm-validation.test.d.ts +5 -0
- package/dist/wasm-validation.test.d.ts.map +1 -0
- package/dist/wasm-validation.test.js +233 -0
- package/dist/wasm-validation.test.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for session persistence types.
|
|
3
|
+
*
|
|
4
|
+
* This is the source of truth for session-related types. TypeScript types
|
|
5
|
+
* are derived from these schemas using z.infer<>.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { Result, ServiceError } from "@tinycloudlabs/sdk-services";
|
|
11
|
+
/**
|
|
12
|
+
* Schema for ENS data associated with a session.
|
|
13
|
+
*/
|
|
14
|
+
export declare const EnsDataSchema: z.ZodObject<{
|
|
15
|
+
/** ENS name/domain. */
|
|
16
|
+
domain: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
17
|
+
/** ENS avatar URL. */
|
|
18
|
+
avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
domain?: string | null | undefined;
|
|
21
|
+
avatarUrl?: string | null | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
domain?: string | null | undefined;
|
|
24
|
+
avatarUrl?: string | null | undefined;
|
|
25
|
+
}>;
|
|
26
|
+
export type EnsData = z.infer<typeof EnsDataSchema>;
|
|
27
|
+
/**
|
|
28
|
+
* Schema for TinyCloud-specific session data that's persisted.
|
|
29
|
+
*/
|
|
30
|
+
export declare const PersistedTinyCloudSessionSchema: z.ZodObject<{
|
|
31
|
+
/** The delegation header containing the UCAN */
|
|
32
|
+
delegationHeader: z.ZodObject<{
|
|
33
|
+
Authorization: z.ZodString;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
Authorization: string;
|
|
36
|
+
}, {
|
|
37
|
+
Authorization: string;
|
|
38
|
+
}>;
|
|
39
|
+
/** The delegation CID */
|
|
40
|
+
delegationCid: z.ZodString;
|
|
41
|
+
/** The space ID for this session */
|
|
42
|
+
spaceId: z.ZodString;
|
|
43
|
+
/** The verification method DID */
|
|
44
|
+
verificationMethod: z.ZodString;
|
|
45
|
+
}, "strip", z.ZodTypeAny, {
|
|
46
|
+
spaceId: string;
|
|
47
|
+
delegationHeader: {
|
|
48
|
+
Authorization: string;
|
|
49
|
+
};
|
|
50
|
+
delegationCid: string;
|
|
51
|
+
verificationMethod: string;
|
|
52
|
+
}, {
|
|
53
|
+
spaceId: string;
|
|
54
|
+
delegationHeader: {
|
|
55
|
+
Authorization: string;
|
|
56
|
+
};
|
|
57
|
+
delegationCid: string;
|
|
58
|
+
verificationMethod: string;
|
|
59
|
+
}>;
|
|
60
|
+
export type PersistedTinyCloudSession = z.infer<typeof PersistedTinyCloudSessionSchema>;
|
|
61
|
+
/**
|
|
62
|
+
* Schema for full persisted session data.
|
|
63
|
+
*
|
|
64
|
+
* Contains all data needed to restore a session without re-authentication.
|
|
65
|
+
*/
|
|
66
|
+
export declare const PersistedSessionDataSchema: z.ZodObject<{
|
|
67
|
+
/** User's Ethereum address */
|
|
68
|
+
address: z.ZodString;
|
|
69
|
+
/** EIP-155 Chain ID */
|
|
70
|
+
chainId: z.ZodNumber;
|
|
71
|
+
/** Session key in JWK format (stringified) */
|
|
72
|
+
sessionKey: z.ZodString;
|
|
73
|
+
/** The signed SIWE message */
|
|
74
|
+
siwe: z.ZodString;
|
|
75
|
+
/** User's signature of the SIWE message */
|
|
76
|
+
signature: z.ZodString;
|
|
77
|
+
/** TinyCloud delegation data if available */
|
|
78
|
+
tinycloudSession: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
/** The delegation header containing the UCAN */
|
|
80
|
+
delegationHeader: z.ZodObject<{
|
|
81
|
+
Authorization: z.ZodString;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
Authorization: string;
|
|
84
|
+
}, {
|
|
85
|
+
Authorization: string;
|
|
86
|
+
}>;
|
|
87
|
+
/** The delegation CID */
|
|
88
|
+
delegationCid: z.ZodString;
|
|
89
|
+
/** The space ID for this session */
|
|
90
|
+
spaceId: z.ZodString;
|
|
91
|
+
/** The verification method DID */
|
|
92
|
+
verificationMethod: z.ZodString;
|
|
93
|
+
}, "strip", z.ZodTypeAny, {
|
|
94
|
+
spaceId: string;
|
|
95
|
+
delegationHeader: {
|
|
96
|
+
Authorization: string;
|
|
97
|
+
};
|
|
98
|
+
delegationCid: string;
|
|
99
|
+
verificationMethod: string;
|
|
100
|
+
}, {
|
|
101
|
+
spaceId: string;
|
|
102
|
+
delegationHeader: {
|
|
103
|
+
Authorization: string;
|
|
104
|
+
};
|
|
105
|
+
delegationCid: string;
|
|
106
|
+
verificationMethod: string;
|
|
107
|
+
}>>;
|
|
108
|
+
/** Session expiration timestamp (ISO 8601 with timezone offset) */
|
|
109
|
+
expiresAt: z.ZodString;
|
|
110
|
+
/** Session creation timestamp (ISO 8601 with timezone offset) */
|
|
111
|
+
createdAt: z.ZodString;
|
|
112
|
+
/** Schema version for migrations */
|
|
113
|
+
version: z.ZodString;
|
|
114
|
+
/** Optional ENS data */
|
|
115
|
+
ens: z.ZodOptional<z.ZodObject<{
|
|
116
|
+
/** ENS name/domain. */
|
|
117
|
+
domain: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
118
|
+
/** ENS avatar URL. */
|
|
119
|
+
avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
120
|
+
}, "strip", z.ZodTypeAny, {
|
|
121
|
+
domain?: string | null | undefined;
|
|
122
|
+
avatarUrl?: string | null | undefined;
|
|
123
|
+
}, {
|
|
124
|
+
domain?: string | null | undefined;
|
|
125
|
+
avatarUrl?: string | null | undefined;
|
|
126
|
+
}>>;
|
|
127
|
+
}, "strip", z.ZodTypeAny, {
|
|
128
|
+
createdAt: string;
|
|
129
|
+
expiresAt: string;
|
|
130
|
+
siwe: string;
|
|
131
|
+
signature: string;
|
|
132
|
+
version: string;
|
|
133
|
+
address: string;
|
|
134
|
+
chainId: number;
|
|
135
|
+
sessionKey: string;
|
|
136
|
+
tinycloudSession?: {
|
|
137
|
+
spaceId: string;
|
|
138
|
+
delegationHeader: {
|
|
139
|
+
Authorization: string;
|
|
140
|
+
};
|
|
141
|
+
delegationCid: string;
|
|
142
|
+
verificationMethod: string;
|
|
143
|
+
} | undefined;
|
|
144
|
+
ens?: {
|
|
145
|
+
domain?: string | null | undefined;
|
|
146
|
+
avatarUrl?: string | null | undefined;
|
|
147
|
+
} | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
createdAt: string;
|
|
150
|
+
expiresAt: string;
|
|
151
|
+
siwe: string;
|
|
152
|
+
signature: string;
|
|
153
|
+
version: string;
|
|
154
|
+
address: string;
|
|
155
|
+
chainId: number;
|
|
156
|
+
sessionKey: string;
|
|
157
|
+
tinycloudSession?: {
|
|
158
|
+
spaceId: string;
|
|
159
|
+
delegationHeader: {
|
|
160
|
+
Authorization: string;
|
|
161
|
+
};
|
|
162
|
+
delegationCid: string;
|
|
163
|
+
verificationMethod: string;
|
|
164
|
+
} | undefined;
|
|
165
|
+
ens?: {
|
|
166
|
+
domain?: string | null | undefined;
|
|
167
|
+
avatarUrl?: string | null | undefined;
|
|
168
|
+
} | undefined;
|
|
169
|
+
}>;
|
|
170
|
+
export type PersistedSessionData = z.infer<typeof PersistedSessionDataSchema>;
|
|
171
|
+
/**
|
|
172
|
+
* Schema for full TinyCloud session with delegation data.
|
|
173
|
+
*
|
|
174
|
+
* This is the runtime session type used for making invocations and delegations.
|
|
175
|
+
*/
|
|
176
|
+
export declare const TinyCloudSessionSchema: z.ZodObject<{
|
|
177
|
+
/** User's Ethereum address */
|
|
178
|
+
address: z.ZodString;
|
|
179
|
+
/** EIP-155 Chain ID */
|
|
180
|
+
chainId: z.ZodNumber;
|
|
181
|
+
/** Session key ID */
|
|
182
|
+
sessionKey: z.ZodString;
|
|
183
|
+
/** The space ID for this session */
|
|
184
|
+
spaceId: z.ZodString;
|
|
185
|
+
/** The delegation CID */
|
|
186
|
+
delegationCid: z.ZodString;
|
|
187
|
+
/** The delegation header for API calls */
|
|
188
|
+
delegationHeader: z.ZodObject<{
|
|
189
|
+
Authorization: z.ZodString;
|
|
190
|
+
}, "strip", z.ZodTypeAny, {
|
|
191
|
+
Authorization: string;
|
|
192
|
+
}, {
|
|
193
|
+
Authorization: string;
|
|
194
|
+
}>;
|
|
195
|
+
/** The verification method DID */
|
|
196
|
+
verificationMethod: z.ZodString;
|
|
197
|
+
/** The session key JWK (required for invoke operations) */
|
|
198
|
+
jwk: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
199
|
+
/** The signed SIWE message */
|
|
200
|
+
siwe: z.ZodString;
|
|
201
|
+
/** User's signature of the SIWE message */
|
|
202
|
+
signature: z.ZodString;
|
|
203
|
+
}, "strip", z.ZodTypeAny, {
|
|
204
|
+
jwk: {} & {
|
|
205
|
+
[k: string]: unknown;
|
|
206
|
+
};
|
|
207
|
+
spaceId: string;
|
|
208
|
+
siwe: string;
|
|
209
|
+
signature: string;
|
|
210
|
+
delegationHeader: {
|
|
211
|
+
Authorization: string;
|
|
212
|
+
};
|
|
213
|
+
delegationCid: string;
|
|
214
|
+
verificationMethod: string;
|
|
215
|
+
address: string;
|
|
216
|
+
chainId: number;
|
|
217
|
+
sessionKey: string;
|
|
218
|
+
}, {
|
|
219
|
+
jwk: {} & {
|
|
220
|
+
[k: string]: unknown;
|
|
221
|
+
};
|
|
222
|
+
spaceId: string;
|
|
223
|
+
siwe: string;
|
|
224
|
+
signature: string;
|
|
225
|
+
delegationHeader: {
|
|
226
|
+
Authorization: string;
|
|
227
|
+
};
|
|
228
|
+
delegationCid: string;
|
|
229
|
+
verificationMethod: string;
|
|
230
|
+
address: string;
|
|
231
|
+
chainId: number;
|
|
232
|
+
sessionKey: string;
|
|
233
|
+
}>;
|
|
234
|
+
export type TinyCloudSession = z.infer<typeof TinyCloudSessionSchema>;
|
|
235
|
+
/**
|
|
236
|
+
* Validation error type for schema validation failures.
|
|
237
|
+
*/
|
|
238
|
+
export interface ValidationError extends ServiceError {
|
|
239
|
+
code: "VALIDATION_ERROR";
|
|
240
|
+
meta?: {
|
|
241
|
+
issues: z.ZodIssue[];
|
|
242
|
+
path?: string;
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Validate persisted session data against the schema.
|
|
247
|
+
*
|
|
248
|
+
* @param data - Unknown data to validate
|
|
249
|
+
* @returns Result with validated data or validation error
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```typescript
|
|
253
|
+
* const result = validatePersistedSessionData(JSON.parse(rawData));
|
|
254
|
+
* if (result.ok) {
|
|
255
|
+
* // result.data is typed as PersistedSessionData
|
|
256
|
+
* console.log(result.data.address);
|
|
257
|
+
* } else {
|
|
258
|
+
* console.error(result.error.message);
|
|
259
|
+
* }
|
|
260
|
+
* ```
|
|
261
|
+
*/
|
|
262
|
+
export declare function validatePersistedSessionData(data: unknown): Result<PersistedSessionData, ValidationError>;
|
|
263
|
+
/**
|
|
264
|
+
* Validate TinyCloud session against the schema.
|
|
265
|
+
*
|
|
266
|
+
* @param data - Unknown data to validate
|
|
267
|
+
* @returns Result with validated data or validation error
|
|
268
|
+
*/
|
|
269
|
+
export declare function validateTinyCloudSession(data: unknown): Result<TinyCloudSession, ValidationError>;
|
|
270
|
+
/**
|
|
271
|
+
* Validate persisted TinyCloud session against the schema.
|
|
272
|
+
*
|
|
273
|
+
* @param data - Unknown data to validate
|
|
274
|
+
* @returns Result with validated data or validation error
|
|
275
|
+
*/
|
|
276
|
+
export declare function validatePersistedTinyCloudSession(data: unknown): Result<PersistedTinyCloudSession, ValidationError>;
|
|
277
|
+
//# sourceMappingURL=storage.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.schema.d.ts","sourceRoot":"","sources":["../src/storage.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAexE;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB,uBAAuB;;IAEvB,sBAAsB;;;;;;;;EAEtB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAMpD;;GAEG;AACH,eAAO,MAAM,+BAA+B;IAC1C,gDAAgD;;;;;;;;IAIhD,yBAAyB;;IAEzB,oCAAoC;;IAEpC,kCAAkC;;;;;;;;;;;;;;;;EAElC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;IACrC,8BAA8B;;IAI9B,uBAAuB;;IAEvB,8CAA8C;;IAE9C,8BAA8B;;IAE9B,2CAA2C;;IAE3C,6CAA6C;;QAtC7C,gDAAgD;;;;;;;;QAIhD,yBAAyB;;QAEzB,oCAAoC;;QAEpC,kCAAkC;;;;;;;;;;;;;;;;;IAgClC,mEAAmE;;IAEnE,iEAAiE;;IAEjE,oCAAoC;;IAEpC,wBAAwB;;QA9DxB,uBAAuB;;QAEvB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8DtB,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAM9E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;IACjC,8BAA8B;;IAE9B,uBAAuB;;IAEvB,qBAAqB;;IAErB,oCAAoC;;IAEpC,yBAAyB;;IAEzB,0CAA0C;;;;;;;;IAI1C,kCAAkC;;IAElC,2DAA2D;;IAE3D,8BAA8B;;IAE9B,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE3C,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAc/C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAc3C;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAcpD"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for session persistence types.
|
|
3
|
+
*
|
|
4
|
+
* This is the source of truth for session-related types. TypeScript types
|
|
5
|
+
* are derived from these schemas using z.infer<>.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Shared Patterns
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Ethereum address pattern (checksummed or lowercase).
|
|
15
|
+
*/
|
|
16
|
+
const ethereumAddressPattern = /^0x[a-fA-F0-9]{40}$/;
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// ENS Data Schema
|
|
19
|
+
// =============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Schema for ENS data associated with a session.
|
|
22
|
+
*/
|
|
23
|
+
export const EnsDataSchema = z.object({
|
|
24
|
+
/** ENS name/domain. */
|
|
25
|
+
domain: z.string().nullable().optional(),
|
|
26
|
+
/** ENS avatar URL. */
|
|
27
|
+
avatarUrl: z.string().nullable().optional(),
|
|
28
|
+
});
|
|
29
|
+
// =============================================================================
|
|
30
|
+
// Persisted TinyCloud Session Schema
|
|
31
|
+
// =============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Schema for TinyCloud-specific session data that's persisted.
|
|
34
|
+
*/
|
|
35
|
+
export const PersistedTinyCloudSessionSchema = z.object({
|
|
36
|
+
/** The delegation header containing the UCAN */
|
|
37
|
+
delegationHeader: z.object({
|
|
38
|
+
Authorization: z.string(),
|
|
39
|
+
}),
|
|
40
|
+
/** The delegation CID */
|
|
41
|
+
delegationCid: z.string(),
|
|
42
|
+
/** The space ID for this session */
|
|
43
|
+
spaceId: z.string(),
|
|
44
|
+
/** The verification method DID */
|
|
45
|
+
verificationMethod: z.string(),
|
|
46
|
+
});
|
|
47
|
+
// =============================================================================
|
|
48
|
+
// Persisted Session Data Schema
|
|
49
|
+
// =============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Schema for full persisted session data.
|
|
52
|
+
*
|
|
53
|
+
* Contains all data needed to restore a session without re-authentication.
|
|
54
|
+
*/
|
|
55
|
+
export const PersistedSessionDataSchema = z.object({
|
|
56
|
+
/** User's Ethereum address */
|
|
57
|
+
address: z
|
|
58
|
+
.string()
|
|
59
|
+
.regex(ethereumAddressPattern, "Invalid Ethereum address"),
|
|
60
|
+
/** EIP-155 Chain ID */
|
|
61
|
+
chainId: z.number().int().positive(),
|
|
62
|
+
/** Session key in JWK format (stringified) */
|
|
63
|
+
sessionKey: z.string(),
|
|
64
|
+
/** The signed SIWE message */
|
|
65
|
+
siwe: z.string(),
|
|
66
|
+
/** User's signature of the SIWE message */
|
|
67
|
+
signature: z.string(),
|
|
68
|
+
/** TinyCloud delegation data if available */
|
|
69
|
+
tinycloudSession: PersistedTinyCloudSessionSchema.optional(),
|
|
70
|
+
/** Session expiration timestamp (ISO 8601 with timezone offset) */
|
|
71
|
+
expiresAt: z.string().datetime({ offset: true }),
|
|
72
|
+
/** Session creation timestamp (ISO 8601 with timezone offset) */
|
|
73
|
+
createdAt: z.string().datetime({ offset: true }),
|
|
74
|
+
/** Schema version for migrations */
|
|
75
|
+
version: z.string(),
|
|
76
|
+
/** Optional ENS data */
|
|
77
|
+
ens: EnsDataSchema.optional(),
|
|
78
|
+
});
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// TinyCloud Session Schema (Runtime)
|
|
81
|
+
// =============================================================================
|
|
82
|
+
/**
|
|
83
|
+
* Schema for full TinyCloud session with delegation data.
|
|
84
|
+
*
|
|
85
|
+
* This is the runtime session type used for making invocations and delegations.
|
|
86
|
+
*/
|
|
87
|
+
export const TinyCloudSessionSchema = z.object({
|
|
88
|
+
/** User's Ethereum address */
|
|
89
|
+
address: z.string().regex(ethereumAddressPattern, "Invalid Ethereum address"),
|
|
90
|
+
/** EIP-155 Chain ID */
|
|
91
|
+
chainId: z.number().int().positive(),
|
|
92
|
+
/** Session key ID */
|
|
93
|
+
sessionKey: z.string(),
|
|
94
|
+
/** The space ID for this session */
|
|
95
|
+
spaceId: z.string(),
|
|
96
|
+
/** The delegation CID */
|
|
97
|
+
delegationCid: z.string(),
|
|
98
|
+
/** The delegation header for API calls */
|
|
99
|
+
delegationHeader: z.object({
|
|
100
|
+
Authorization: z.string(),
|
|
101
|
+
}),
|
|
102
|
+
/** The verification method DID */
|
|
103
|
+
verificationMethod: z.string(),
|
|
104
|
+
/** The session key JWK (required for invoke operations) */
|
|
105
|
+
jwk: z.object({}).passthrough(),
|
|
106
|
+
/** The signed SIWE message */
|
|
107
|
+
siwe: z.string(),
|
|
108
|
+
/** User's signature of the SIWE message */
|
|
109
|
+
signature: z.string(),
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* Validate persisted session data against the schema.
|
|
113
|
+
*
|
|
114
|
+
* @param data - Unknown data to validate
|
|
115
|
+
* @returns Result with validated data or validation error
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const result = validatePersistedSessionData(JSON.parse(rawData));
|
|
120
|
+
* if (result.ok) {
|
|
121
|
+
* // result.data is typed as PersistedSessionData
|
|
122
|
+
* console.log(result.data.address);
|
|
123
|
+
* } else {
|
|
124
|
+
* console.error(result.error.message);
|
|
125
|
+
* }
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export function validatePersistedSessionData(data) {
|
|
129
|
+
const result = PersistedSessionDataSchema.safeParse(data);
|
|
130
|
+
if (!result.success) {
|
|
131
|
+
return {
|
|
132
|
+
ok: false,
|
|
133
|
+
error: {
|
|
134
|
+
code: "VALIDATION_ERROR",
|
|
135
|
+
message: result.error.message,
|
|
136
|
+
service: "session",
|
|
137
|
+
meta: { issues: result.error.issues },
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return { ok: true, data: result.data };
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Validate TinyCloud session against the schema.
|
|
145
|
+
*
|
|
146
|
+
* @param data - Unknown data to validate
|
|
147
|
+
* @returns Result with validated data or validation error
|
|
148
|
+
*/
|
|
149
|
+
export function validateTinyCloudSession(data) {
|
|
150
|
+
const result = TinyCloudSessionSchema.safeParse(data);
|
|
151
|
+
if (!result.success) {
|
|
152
|
+
return {
|
|
153
|
+
ok: false,
|
|
154
|
+
error: {
|
|
155
|
+
code: "VALIDATION_ERROR",
|
|
156
|
+
message: result.error.message,
|
|
157
|
+
service: "session",
|
|
158
|
+
meta: { issues: result.error.issues },
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return { ok: true, data: result.data };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Validate persisted TinyCloud session against the schema.
|
|
166
|
+
*
|
|
167
|
+
* @param data - Unknown data to validate
|
|
168
|
+
* @returns Result with validated data or validation error
|
|
169
|
+
*/
|
|
170
|
+
export function validatePersistedTinyCloudSession(data) {
|
|
171
|
+
const result = PersistedTinyCloudSessionSchema.safeParse(data);
|
|
172
|
+
if (!result.success) {
|
|
173
|
+
return {
|
|
174
|
+
ok: false,
|
|
175
|
+
error: {
|
|
176
|
+
code: "VALIDATION_ERROR",
|
|
177
|
+
message: result.error.message,
|
|
178
|
+
service: "session",
|
|
179
|
+
meta: { issues: result.error.issues },
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
return { ok: true, data: result.data };
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=storage.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.schema.js","sourceRoot":"","sources":["../src/storage.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.schema.test.d.ts","sourceRoot":"","sources":["../src/storage.schema.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|