@tinycloud/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.
Files changed (166) hide show
  1. package/LICENSE.md +320 -0
  2. package/dist/TinyCloud.d.ts +206 -0
  3. package/dist/TinyCloud.d.ts.map +1 -0
  4. package/dist/TinyCloud.js +244 -0
  5. package/dist/TinyCloud.js.map +1 -0
  6. package/dist/TinyCloud.schema.d.ts +173 -0
  7. package/dist/TinyCloud.schema.d.ts.map +1 -0
  8. package/dist/TinyCloud.schema.js +136 -0
  9. package/dist/TinyCloud.schema.js.map +1 -0
  10. package/dist/TinyCloud.schema.test.d.ts +5 -0
  11. package/dist/TinyCloud.schema.test.d.ts.map +1 -0
  12. package/dist/TinyCloud.schema.test.js +286 -0
  13. package/dist/TinyCloud.schema.test.js.map +1 -0
  14. package/dist/authorization/CapabilityKeyRegistry.d.ts +317 -0
  15. package/dist/authorization/CapabilityKeyRegistry.d.ts.map +1 -0
  16. package/dist/authorization/CapabilityKeyRegistry.js +509 -0
  17. package/dist/authorization/CapabilityKeyRegistry.js.map +1 -0
  18. package/dist/authorization/authorization.schema.d.ts +233 -0
  19. package/dist/authorization/authorization.schema.d.ts.map +1 -0
  20. package/dist/authorization/authorization.schema.js +220 -0
  21. package/dist/authorization/authorization.schema.js.map +1 -0
  22. package/dist/authorization/authorization.schema.test.d.ts +5 -0
  23. package/dist/authorization/authorization.schema.test.d.ts.map +1 -0
  24. package/dist/authorization/authorization.schema.test.js +618 -0
  25. package/dist/authorization/authorization.schema.test.js.map +1 -0
  26. package/dist/authorization/index.d.ts +38 -0
  27. package/dist/authorization/index.d.ts.map +1 -0
  28. package/dist/authorization/index.js +52 -0
  29. package/dist/authorization/index.js.map +1 -0
  30. package/dist/authorization/spaceCreation.d.ts +96 -0
  31. package/dist/authorization/spaceCreation.d.ts.map +1 -0
  32. package/dist/authorization/spaceCreation.js +35 -0
  33. package/dist/authorization/spaceCreation.js.map +1 -0
  34. package/dist/authorization/spaceCreation.schema.d.ts +67 -0
  35. package/dist/authorization/spaceCreation.schema.d.ts.map +1 -0
  36. package/dist/authorization/spaceCreation.schema.js +95 -0
  37. package/dist/authorization/spaceCreation.schema.js.map +1 -0
  38. package/dist/authorization/spaceCreation.schema.test.d.ts +5 -0
  39. package/dist/authorization/spaceCreation.schema.test.d.ts.map +1 -0
  40. package/dist/authorization/spaceCreation.schema.test.js +168 -0
  41. package/dist/authorization/spaceCreation.schema.test.js.map +1 -0
  42. package/dist/authorization/strategies.d.ts +134 -0
  43. package/dist/authorization/strategies.d.ts.map +1 -0
  44. package/dist/authorization/strategies.js +15 -0
  45. package/dist/authorization/strategies.js.map +1 -0
  46. package/dist/authorization/strategies.schema.d.ts +185 -0
  47. package/dist/authorization/strategies.schema.d.ts.map +1 -0
  48. package/dist/authorization/strategies.schema.js +147 -0
  49. package/dist/authorization/strategies.schema.js.map +1 -0
  50. package/dist/authorization/strategies.schema.test.d.ts +5 -0
  51. package/dist/authorization/strategies.schema.test.d.ts.map +1 -0
  52. package/dist/authorization/strategies.schema.test.js +253 -0
  53. package/dist/authorization/strategies.schema.test.js.map +1 -0
  54. package/dist/delegations/DelegationManager.d.ts +164 -0
  55. package/dist/delegations/DelegationManager.d.ts.map +1 -0
  56. package/dist/delegations/DelegationManager.js +428 -0
  57. package/dist/delegations/DelegationManager.js.map +1 -0
  58. package/dist/delegations/SharingService.d.ts +279 -0
  59. package/dist/delegations/SharingService.d.ts.map +1 -0
  60. package/dist/delegations/SharingService.js +558 -0
  61. package/dist/delegations/SharingService.js.map +1 -0
  62. package/dist/delegations/SharingService.schema.d.ts +401 -0
  63. package/dist/delegations/SharingService.schema.d.ts.map +1 -0
  64. package/dist/delegations/SharingService.schema.js +211 -0
  65. package/dist/delegations/SharingService.schema.js.map +1 -0
  66. package/dist/delegations/index.d.ts +38 -0
  67. package/dist/delegations/index.d.ts.map +1 -0
  68. package/dist/delegations/index.js +42 -0
  69. package/dist/delegations/index.js.map +1 -0
  70. package/dist/delegations/types.d.ts +13 -0
  71. package/dist/delegations/types.d.ts.map +1 -0
  72. package/dist/delegations/types.js +42 -0
  73. package/dist/delegations/types.js.map +1 -0
  74. package/dist/delegations/types.schema.d.ts +1641 -0
  75. package/dist/delegations/types.schema.d.ts.map +1 -0
  76. package/dist/delegations/types.schema.js +535 -0
  77. package/dist/delegations/types.schema.js.map +1 -0
  78. package/dist/delegations/types.schema.test.d.ts +5 -0
  79. package/dist/delegations/types.schema.test.d.ts.map +1 -0
  80. package/dist/delegations/types.schema.test.js +627 -0
  81. package/dist/delegations/types.schema.test.js.map +1 -0
  82. package/dist/index.d.ts +22 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +52 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/json-schema.d.ts +327 -0
  87. package/dist/json-schema.d.ts.map +1 -0
  88. package/dist/json-schema.js +703 -0
  89. package/dist/json-schema.js.map +1 -0
  90. package/dist/json-schema.test.d.ts +7 -0
  91. package/dist/json-schema.test.d.ts.map +1 -0
  92. package/dist/json-schema.test.js +365 -0
  93. package/dist/json-schema.test.js.map +1 -0
  94. package/dist/signer.d.ts +28 -0
  95. package/dist/signer.d.ts.map +1 -0
  96. package/dist/signer.js +2 -0
  97. package/dist/signer.js.map +1 -0
  98. package/dist/space.d.ts +53 -0
  99. package/dist/space.d.ts.map +1 -0
  100. package/dist/space.js +67 -0
  101. package/dist/space.js.map +1 -0
  102. package/dist/space.schema.d.ts +65 -0
  103. package/dist/space.schema.d.ts.map +1 -0
  104. package/dist/space.schema.js +65 -0
  105. package/dist/space.schema.js.map +1 -0
  106. package/dist/space.schema.test.d.ts +5 -0
  107. package/dist/space.schema.test.d.ts.map +1 -0
  108. package/dist/space.schema.test.js +148 -0
  109. package/dist/space.schema.test.js.map +1 -0
  110. package/dist/spaces/Space.d.ts +175 -0
  111. package/dist/spaces/Space.d.ts.map +1 -0
  112. package/dist/spaces/Space.js +84 -0
  113. package/dist/spaces/Space.js.map +1 -0
  114. package/dist/spaces/SpaceService.d.ts +271 -0
  115. package/dist/spaces/SpaceService.d.ts.map +1 -0
  116. package/dist/spaces/SpaceService.js +715 -0
  117. package/dist/spaces/SpaceService.js.map +1 -0
  118. package/dist/spaces/index.d.ts +11 -0
  119. package/dist/spaces/index.d.ts.map +1 -0
  120. package/dist/spaces/index.js +20 -0
  121. package/dist/spaces/index.js.map +1 -0
  122. package/dist/spaces/spaces.schema.d.ts +421 -0
  123. package/dist/spaces/spaces.schema.d.ts.map +1 -0
  124. package/dist/spaces/spaces.schema.js +342 -0
  125. package/dist/spaces/spaces.schema.js.map +1 -0
  126. package/dist/spaces/spaces.schema.test.d.ts +5 -0
  127. package/dist/spaces/spaces.schema.test.d.ts.map +1 -0
  128. package/dist/spaces/spaces.schema.test.js +471 -0
  129. package/dist/spaces/spaces.schema.test.js.map +1 -0
  130. package/dist/storage.d.ts +47 -0
  131. package/dist/storage.d.ts.map +1 -0
  132. package/dist/storage.js +14 -0
  133. package/dist/storage.js.map +1 -0
  134. package/dist/storage.schema.d.ts +277 -0
  135. package/dist/storage.schema.d.ts.map +1 -0
  136. package/dist/storage.schema.js +185 -0
  137. package/dist/storage.schema.js.map +1 -0
  138. package/dist/storage.schema.test.d.ts +5 -0
  139. package/dist/storage.schema.test.d.ts.map +1 -0
  140. package/dist/storage.schema.test.js +346 -0
  141. package/dist/storage.schema.test.js.map +1 -0
  142. package/dist/userAuthorization.d.ts +99 -0
  143. package/dist/userAuthorization.d.ts.map +1 -0
  144. package/dist/userAuthorization.js +3 -0
  145. package/dist/userAuthorization.js.map +1 -0
  146. package/dist/userAuthorization.schema.d.ts +259 -0
  147. package/dist/userAuthorization.schema.d.ts.map +1 -0
  148. package/dist/userAuthorization.schema.js +175 -0
  149. package/dist/userAuthorization.schema.js.map +1 -0
  150. package/dist/userAuthorization.schema.test.d.ts +5 -0
  151. package/dist/userAuthorization.schema.test.d.ts.map +1 -0
  152. package/dist/userAuthorization.schema.test.js +356 -0
  153. package/dist/userAuthorization.schema.test.js.map +1 -0
  154. package/dist/version.d.ts +30 -0
  155. package/dist/version.d.ts.map +1 -0
  156. package/dist/version.js +54 -0
  157. package/dist/version.js.map +1 -0
  158. package/dist/wasm-validation.d.ts +287 -0
  159. package/dist/wasm-validation.d.ts.map +1 -0
  160. package/dist/wasm-validation.js +219 -0
  161. package/dist/wasm-validation.js.map +1 -0
  162. package/dist/wasm-validation.test.d.ts +5 -0
  163. package/dist/wasm-validation.test.d.ts.map +1 -0
  164. package/dist/wasm-validation.test.js +233 -0
  165. package/dist/wasm-validation.test.js.map +1 -0
  166. package/package.json +40 -0
@@ -0,0 +1,471 @@
1
+ /**
2
+ * Tests for spaces.schema.ts Zod schemas.
3
+ */
4
+ import { describe, expect, it } from "bun:test";
5
+ import { SpaceConfigSchema, SpaceServiceConfigSchema, SpaceDelegationParamsSchema, validateSpaceConfig, validateSpaceServiceConfig, validateSpaceDelegationParams, } from "./spaces.schema";
6
+ // =============================================================================
7
+ // Test Fixtures
8
+ // =============================================================================
9
+ const mockFunction = () => { };
10
+ const mockAsyncFunction = async () => ({});
11
+ const validSpaceConfig = {
12
+ id: "tinycloud:pkh:eip155:1:0x1234567890123456789012345678901234567890:default",
13
+ name: "default",
14
+ createKV: mockFunction,
15
+ createDelegations: mockFunction,
16
+ createSharing: mockFunction,
17
+ getInfo: mockAsyncFunction,
18
+ };
19
+ const validSpaceServiceConfig = {
20
+ hosts: ["https://node.tinycloud.xyz"],
21
+ session: { spaceId: "space123", verificationMethod: "did:key:z6Mk..." },
22
+ invoke: mockFunction,
23
+ fetch: mockFunction,
24
+ capabilityRegistry: {},
25
+ createKVService: mockFunction,
26
+ userDid: "did:pkh:eip155:1:0x1234567890123456789012345678901234567890",
27
+ sharingService: {},
28
+ createDelegation: mockAsyncFunction,
29
+ };
30
+ const validSpaceDelegationParams = {
31
+ delegateDID: "did:pkh:eip155:1:0xabcdef7890123456789012345678901234567890",
32
+ path: "/shared/",
33
+ actions: ["tinycloud.kv/get", "tinycloud.kv/list"],
34
+ spaceId: "tinycloud:pkh:eip155:1:0x1234567890123456789012345678901234567890:default",
35
+ };
36
+ // =============================================================================
37
+ // SpaceConfigSchema Tests
38
+ // =============================================================================
39
+ describe("SpaceConfigSchema", () => {
40
+ describe("valid inputs", () => {
41
+ it("accepts valid space config with all fields", () => {
42
+ const result = SpaceConfigSchema.safeParse(validSpaceConfig);
43
+ expect(result.success).toBe(true);
44
+ if (result.success) {
45
+ expect(result.data.id).toBe(validSpaceConfig.id);
46
+ expect(result.data.name).toBe("default");
47
+ }
48
+ });
49
+ it("accepts config with different space names", () => {
50
+ const names = ["default", "photos", "documents", "my-space", "space_123"];
51
+ for (const name of names) {
52
+ const data = { ...validSpaceConfig, name };
53
+ const result = SpaceConfigSchema.safeParse(data);
54
+ expect(result.success).toBe(true);
55
+ }
56
+ });
57
+ it("accepts config with arrow function factories", () => {
58
+ const data = {
59
+ ...validSpaceConfig,
60
+ createKV: (spaceId) => ({ spaceId }),
61
+ createDelegations: (spaceId) => ({ spaceId }),
62
+ createSharing: (spaceId) => ({ spaceId }),
63
+ getInfo: async (spaceId) => ({ ok: true, data: { id: spaceId } }),
64
+ };
65
+ const result = SpaceConfigSchema.safeParse(data);
66
+ expect(result.success).toBe(true);
67
+ });
68
+ });
69
+ describe("invalid inputs", () => {
70
+ it("rejects missing id field", () => {
71
+ const data = { ...validSpaceConfig };
72
+ delete data.id;
73
+ const result = SpaceConfigSchema.safeParse(data);
74
+ expect(result.success).toBe(false);
75
+ });
76
+ it("rejects missing name field", () => {
77
+ const data = { ...validSpaceConfig };
78
+ delete data.name;
79
+ const result = SpaceConfigSchema.safeParse(data);
80
+ expect(result.success).toBe(false);
81
+ });
82
+ it("rejects missing createKV factory", () => {
83
+ const data = { ...validSpaceConfig };
84
+ delete data.createKV;
85
+ const result = SpaceConfigSchema.safeParse(data);
86
+ expect(result.success).toBe(false);
87
+ });
88
+ it("rejects missing createDelegations factory", () => {
89
+ const data = { ...validSpaceConfig };
90
+ delete data.createDelegations;
91
+ const result = SpaceConfigSchema.safeParse(data);
92
+ expect(result.success).toBe(false);
93
+ });
94
+ it("rejects missing createSharing factory", () => {
95
+ const data = { ...validSpaceConfig };
96
+ delete data.createSharing;
97
+ const result = SpaceConfigSchema.safeParse(data);
98
+ expect(result.success).toBe(false);
99
+ });
100
+ it("rejects missing getInfo function", () => {
101
+ const data = { ...validSpaceConfig };
102
+ delete data.getInfo;
103
+ const result = SpaceConfigSchema.safeParse(data);
104
+ expect(result.success).toBe(false);
105
+ });
106
+ it("rejects non-function createKV", () => {
107
+ const data = { ...validSpaceConfig, createKV: "not a function" };
108
+ const result = SpaceConfigSchema.safeParse(data);
109
+ expect(result.success).toBe(false);
110
+ });
111
+ it("rejects null", () => {
112
+ const result = SpaceConfigSchema.safeParse(null);
113
+ expect(result.success).toBe(false);
114
+ });
115
+ it("rejects empty object", () => {
116
+ const result = SpaceConfigSchema.safeParse({});
117
+ expect(result.success).toBe(false);
118
+ });
119
+ });
120
+ });
121
+ // =============================================================================
122
+ // SpaceServiceConfigSchema Tests
123
+ // =============================================================================
124
+ describe("SpaceServiceConfigSchema", () => {
125
+ describe("valid inputs", () => {
126
+ it("accepts valid config with all fields", () => {
127
+ const result = SpaceServiceConfigSchema.safeParse(validSpaceServiceConfig);
128
+ expect(result.success).toBe(true);
129
+ if (result.success) {
130
+ expect(result.data.hosts).toEqual(["https://node.tinycloud.xyz"]);
131
+ expect(result.data.userDid).toBe("did:pkh:eip155:1:0x1234567890123456789012345678901234567890");
132
+ }
133
+ });
134
+ it("accepts config with only required fields", () => {
135
+ const data = {
136
+ hosts: ["https://node.tinycloud.xyz"],
137
+ session: { spaceId: "space123" },
138
+ invoke: mockFunction,
139
+ };
140
+ const result = SpaceServiceConfigSchema.safeParse(data);
141
+ expect(result.success).toBe(true);
142
+ });
143
+ it("accepts config with multiple hosts", () => {
144
+ const data = {
145
+ ...validSpaceServiceConfig,
146
+ hosts: [
147
+ "https://node1.tinycloud.xyz",
148
+ "https://node2.tinycloud.xyz",
149
+ "https://node3.tinycloud.xyz",
150
+ ],
151
+ };
152
+ const result = SpaceServiceConfigSchema.safeParse(data);
153
+ expect(result.success).toBe(true);
154
+ if (result.success) {
155
+ expect(result.data.hosts).toHaveLength(3);
156
+ }
157
+ });
158
+ it("accepts config without optional fields", () => {
159
+ const data = {
160
+ hosts: ["https://node.tinycloud.xyz"],
161
+ session: {},
162
+ invoke: mockFunction,
163
+ };
164
+ const result = SpaceServiceConfigSchema.safeParse(data);
165
+ expect(result.success).toBe(true);
166
+ });
167
+ it("accepts null session (z.unknown allows any value)", () => {
168
+ const data = {
169
+ hosts: ["https://node.tinycloud.xyz"],
170
+ session: null,
171
+ invoke: mockFunction,
172
+ };
173
+ const result = SpaceServiceConfigSchema.safeParse(data);
174
+ expect(result.success).toBe(true);
175
+ });
176
+ });
177
+ describe("invalid inputs", () => {
178
+ it("rejects missing hosts field", () => {
179
+ const data = { ...validSpaceServiceConfig };
180
+ delete data.hosts;
181
+ const result = SpaceServiceConfigSchema.safeParse(data);
182
+ expect(result.success).toBe(false);
183
+ });
184
+ it("accepts missing session field (z.unknown allows undefined)", () => {
185
+ // Note: z.unknown() accepts any value including undefined,
186
+ // so a missing session field will pass validation.
187
+ // Runtime code should check session presence explicitly.
188
+ const data = { ...validSpaceServiceConfig };
189
+ delete data.session;
190
+ const result = SpaceServiceConfigSchema.safeParse(data);
191
+ expect(result.success).toBe(true);
192
+ });
193
+ it("rejects missing invoke field", () => {
194
+ const data = { ...validSpaceServiceConfig };
195
+ delete data.invoke;
196
+ const result = SpaceServiceConfigSchema.safeParse(data);
197
+ expect(result.success).toBe(false);
198
+ });
199
+ it("rejects non-array hosts", () => {
200
+ const data = { ...validSpaceServiceConfig, hosts: "https://node.tinycloud.xyz" };
201
+ const result = SpaceServiceConfigSchema.safeParse(data);
202
+ expect(result.success).toBe(false);
203
+ });
204
+ it("rejects empty hosts array", () => {
205
+ const data = { ...validSpaceServiceConfig, hosts: [] };
206
+ const result = SpaceServiceConfigSchema.safeParse(data);
207
+ // Note: Empty array is technically valid for z.array(z.string())
208
+ // The schema allows it; business logic should enforce non-empty
209
+ expect(result.success).toBe(true);
210
+ });
211
+ it("rejects non-function invoke", () => {
212
+ const data = { ...validSpaceServiceConfig, invoke: "not a function" };
213
+ const result = SpaceServiceConfigSchema.safeParse(data);
214
+ expect(result.success).toBe(false);
215
+ });
216
+ it("rejects non-function fetch when provided", () => {
217
+ const data = { ...validSpaceServiceConfig, fetch: "not a function" };
218
+ const result = SpaceServiceConfigSchema.safeParse(data);
219
+ expect(result.success).toBe(false);
220
+ });
221
+ it("rejects non-string userDid when provided", () => {
222
+ const data = { ...validSpaceServiceConfig, userDid: 12345 };
223
+ const result = SpaceServiceConfigSchema.safeParse(data);
224
+ expect(result.success).toBe(false);
225
+ });
226
+ it("rejects null", () => {
227
+ const result = SpaceServiceConfigSchema.safeParse(null);
228
+ expect(result.success).toBe(false);
229
+ });
230
+ it("rejects empty object", () => {
231
+ const result = SpaceServiceConfigSchema.safeParse({});
232
+ expect(result.success).toBe(false);
233
+ });
234
+ });
235
+ });
236
+ // =============================================================================
237
+ // SpaceDelegationParamsSchema Tests
238
+ // =============================================================================
239
+ describe("SpaceDelegationParamsSchema", () => {
240
+ describe("valid inputs", () => {
241
+ it("accepts valid delegation params with all fields", () => {
242
+ const result = SpaceDelegationParamsSchema.safeParse(validSpaceDelegationParams);
243
+ expect(result.success).toBe(true);
244
+ if (result.success) {
245
+ expect(result.data.delegateDID).toBe(validSpaceDelegationParams.delegateDID);
246
+ expect(result.data.spaceId).toBe(validSpaceDelegationParams.spaceId);
247
+ expect(result.data.path).toBe("/shared/");
248
+ expect(result.data.actions).toEqual(["tinycloud.kv/get", "tinycloud.kv/list"]);
249
+ }
250
+ });
251
+ it("accepts params with optional expiry", () => {
252
+ const data = {
253
+ ...validSpaceDelegationParams,
254
+ expiry: new Date("2026-03-01T00:00:00Z"),
255
+ };
256
+ const result = SpaceDelegationParamsSchema.safeParse(data);
257
+ expect(result.success).toBe(true);
258
+ if (result.success) {
259
+ expect(result.data.expiry).toBeInstanceOf(Date);
260
+ }
261
+ });
262
+ it("accepts params with disableSubDelegation", () => {
263
+ const data = {
264
+ ...validSpaceDelegationParams,
265
+ disableSubDelegation: true,
266
+ };
267
+ const result = SpaceDelegationParamsSchema.safeParse(data);
268
+ expect(result.success).toBe(true);
269
+ if (result.success) {
270
+ expect(result.data.disableSubDelegation).toBe(true);
271
+ }
272
+ });
273
+ it("accepts params with statement", () => {
274
+ const data = {
275
+ ...validSpaceDelegationParams,
276
+ statement: "I authorize this delegation",
277
+ };
278
+ const result = SpaceDelegationParamsSchema.safeParse(data);
279
+ expect(result.success).toBe(true);
280
+ if (result.success) {
281
+ expect(result.data.statement).toBe("I authorize this delegation");
282
+ }
283
+ });
284
+ it("accepts various DID formats", () => {
285
+ const dids = [
286
+ "did:pkh:eip155:1:0x1234567890123456789012345678901234567890",
287
+ "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
288
+ "did:web:example.com",
289
+ ];
290
+ for (const delegateDID of dids) {
291
+ const data = { ...validSpaceDelegationParams, delegateDID };
292
+ const result = SpaceDelegationParamsSchema.safeParse(data);
293
+ expect(result.success).toBe(true);
294
+ }
295
+ });
296
+ it("accepts various path formats", () => {
297
+ const paths = ["/", "/data/", "/shared/photos/", "/a/b/c/d/"];
298
+ for (const path of paths) {
299
+ const data = { ...validSpaceDelegationParams, path };
300
+ const result = SpaceDelegationParamsSchema.safeParse(data);
301
+ expect(result.success).toBe(true);
302
+ }
303
+ });
304
+ it("accepts single action", () => {
305
+ const data = {
306
+ ...validSpaceDelegationParams,
307
+ actions: ["tinycloud.kv/get"],
308
+ };
309
+ const result = SpaceDelegationParamsSchema.safeParse(data);
310
+ expect(result.success).toBe(true);
311
+ });
312
+ it("accepts multiple actions", () => {
313
+ const data = {
314
+ ...validSpaceDelegationParams,
315
+ actions: [
316
+ "tinycloud.kv/get",
317
+ "tinycloud.kv/put",
318
+ "tinycloud.kv/delete",
319
+ "tinycloud.kv/list",
320
+ ],
321
+ };
322
+ const result = SpaceDelegationParamsSchema.safeParse(data);
323
+ expect(result.success).toBe(true);
324
+ if (result.success) {
325
+ expect(result.data.actions).toHaveLength(4);
326
+ }
327
+ });
328
+ });
329
+ describe("invalid inputs", () => {
330
+ it("rejects missing delegateDID", () => {
331
+ const data = { ...validSpaceDelegationParams };
332
+ delete data.delegateDID;
333
+ const result = SpaceDelegationParamsSchema.safeParse(data);
334
+ expect(result.success).toBe(false);
335
+ });
336
+ it("rejects missing path", () => {
337
+ const data = { ...validSpaceDelegationParams };
338
+ delete data.path;
339
+ const result = SpaceDelegationParamsSchema.safeParse(data);
340
+ expect(result.success).toBe(false);
341
+ });
342
+ it("rejects missing actions", () => {
343
+ const data = { ...validSpaceDelegationParams };
344
+ delete data.actions;
345
+ const result = SpaceDelegationParamsSchema.safeParse(data);
346
+ expect(result.success).toBe(false);
347
+ });
348
+ it("rejects missing spaceId", () => {
349
+ const data = { ...validSpaceDelegationParams };
350
+ delete data.spaceId;
351
+ const result = SpaceDelegationParamsSchema.safeParse(data);
352
+ expect(result.success).toBe(false);
353
+ });
354
+ it("rejects non-string delegateDID", () => {
355
+ const data = { ...validSpaceDelegationParams, delegateDID: 12345 };
356
+ const result = SpaceDelegationParamsSchema.safeParse(data);
357
+ expect(result.success).toBe(false);
358
+ });
359
+ it("rejects non-array actions", () => {
360
+ const data = { ...validSpaceDelegationParams, actions: "tinycloud.kv/get" };
361
+ const result = SpaceDelegationParamsSchema.safeParse(data);
362
+ expect(result.success).toBe(false);
363
+ });
364
+ it("rejects non-string spaceId", () => {
365
+ const data = { ...validSpaceDelegationParams, spaceId: 12345 };
366
+ const result = SpaceDelegationParamsSchema.safeParse(data);
367
+ expect(result.success).toBe(false);
368
+ });
369
+ it("rejects null", () => {
370
+ const result = SpaceDelegationParamsSchema.safeParse(null);
371
+ expect(result.success).toBe(false);
372
+ });
373
+ it("rejects empty object", () => {
374
+ const result = SpaceDelegationParamsSchema.safeParse({});
375
+ expect(result.success).toBe(false);
376
+ });
377
+ });
378
+ });
379
+ // =============================================================================
380
+ // Validation Function Tests
381
+ // =============================================================================
382
+ describe("validateSpaceConfig", () => {
383
+ it("returns ok result for valid data", () => {
384
+ const result = validateSpaceConfig(validSpaceConfig);
385
+ expect(result.ok).toBe(true);
386
+ if (result.ok) {
387
+ expect(result.data.id).toBe(validSpaceConfig.id);
388
+ }
389
+ });
390
+ it("returns error result for invalid data", () => {
391
+ const result = validateSpaceConfig({});
392
+ expect(result.ok).toBe(false);
393
+ if (!result.ok) {
394
+ expect(result.error.code).toBe("VALIDATION_ERROR");
395
+ expect(result.error.service).toBe("space");
396
+ expect(result.error.meta?.issues).toBeDefined();
397
+ }
398
+ });
399
+ it("returns error with validation issues for missing id", () => {
400
+ const data = { ...validSpaceConfig };
401
+ delete data.id;
402
+ const result = validateSpaceConfig(data);
403
+ expect(result.ok).toBe(false);
404
+ if (!result.ok) {
405
+ expect(result.error.meta?.issues).toContainEqual(expect.objectContaining({ path: ["id"] }));
406
+ }
407
+ });
408
+ });
409
+ describe("validateSpaceServiceConfig", () => {
410
+ it("returns ok result for valid data", () => {
411
+ const result = validateSpaceServiceConfig(validSpaceServiceConfig);
412
+ expect(result.ok).toBe(true);
413
+ if (result.ok) {
414
+ expect(result.data.hosts).toEqual(["https://node.tinycloud.xyz"]);
415
+ }
416
+ });
417
+ it("returns error result for invalid data", () => {
418
+ const result = validateSpaceServiceConfig({});
419
+ expect(result.ok).toBe(false);
420
+ if (!result.ok) {
421
+ expect(result.error.code).toBe("VALIDATION_ERROR");
422
+ expect(result.error.service).toBe("space");
423
+ }
424
+ });
425
+ it("returns error with validation issues for missing hosts", () => {
426
+ const data = { ...validSpaceServiceConfig };
427
+ delete data.hosts;
428
+ const result = validateSpaceServiceConfig(data);
429
+ expect(result.ok).toBe(false);
430
+ if (!result.ok) {
431
+ expect(result.error.meta?.issues).toContainEqual(expect.objectContaining({ path: ["hosts"] }));
432
+ }
433
+ });
434
+ });
435
+ describe("validateSpaceDelegationParams", () => {
436
+ it("returns ok result for valid data", () => {
437
+ const result = validateSpaceDelegationParams(validSpaceDelegationParams);
438
+ expect(result.ok).toBe(true);
439
+ if (result.ok) {
440
+ expect(result.data.spaceId).toBe(validSpaceDelegationParams.spaceId);
441
+ expect(result.data.delegateDID).toBe(validSpaceDelegationParams.delegateDID);
442
+ }
443
+ });
444
+ it("returns error result for invalid data", () => {
445
+ const result = validateSpaceDelegationParams({});
446
+ expect(result.ok).toBe(false);
447
+ if (!result.ok) {
448
+ expect(result.error.code).toBe("VALIDATION_ERROR");
449
+ expect(result.error.service).toBe("space");
450
+ }
451
+ });
452
+ it("returns error with validation issues for missing spaceId", () => {
453
+ const data = { ...validSpaceDelegationParams };
454
+ delete data.spaceId;
455
+ const result = validateSpaceDelegationParams(data);
456
+ expect(result.ok).toBe(false);
457
+ if (!result.ok) {
458
+ expect(result.error.meta?.issues).toContainEqual(expect.objectContaining({ path: ["spaceId"] }));
459
+ }
460
+ });
461
+ it("returns error with validation issues for missing delegateDID", () => {
462
+ const data = { ...validSpaceDelegationParams };
463
+ delete data.delegateDID;
464
+ const result = validateSpaceDelegationParams(data);
465
+ expect(result.ok).toBe(false);
466
+ if (!result.ok) {
467
+ expect(result.error.meta?.issues).toContainEqual(expect.objectContaining({ path: ["delegateDID"] }));
468
+ }
469
+ });
470
+ });
471
+ //# sourceMappingURL=spaces.schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spaces.schema.test.js","sourceRoot":"","sources":["../../src/spaces/spaces.schema.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Session storage types and interfaces.
3
+ *
4
+ * Types are derived from Zod schemas in storage.schema.ts.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export { type PersistedTinyCloudSession, type TinyCloudSession, type PersistedSessionData, type EnsData, type ValidationError, PersistedTinyCloudSessionSchema, TinyCloudSessionSchema, PersistedSessionDataSchema, EnsDataSchema, validatePersistedSessionData, validateTinyCloudSession, validatePersistedTinyCloudSession, } from "./storage.schema";
9
+ import type { PersistedSessionData } from "./storage.schema";
10
+ /**
11
+ * Session storage interface.
12
+ *
13
+ * Abstracts how sessions are persisted across different platforms.
14
+ * - Browser: localStorage
15
+ * - Node.js: file system or memory
16
+ */
17
+ export interface ISessionStorage {
18
+ /**
19
+ * Save a session for an address.
20
+ * @param address - Ethereum address (key for lookup)
21
+ * @param session - Session data to persist
22
+ */
23
+ save(address: string, session: PersistedSessionData): Promise<void>;
24
+ /**
25
+ * Load a session for an address.
26
+ * @param address - Ethereum address
27
+ * @returns Session data or null if not found
28
+ */
29
+ load(address: string): Promise<PersistedSessionData | null>;
30
+ /**
31
+ * Clear a session for an address.
32
+ * @param address - Ethereum address
33
+ */
34
+ clear(address: string): Promise<void>;
35
+ /**
36
+ * Check if a session exists for an address (synchronous check).
37
+ * @param address - Ethereum address
38
+ * @returns true if session exists
39
+ */
40
+ exists(address: string): boolean;
41
+ /**
42
+ * Check if the storage backend is available.
43
+ * @returns true if storage can be used
44
+ */
45
+ isAvailable(): boolean;
46
+ }
47
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,eAAe,EAEpB,+BAA+B,EAC/B,sBAAsB,EACtB,0BAA0B,EAC1B,aAAa,EAEb,4BAA4B,EAC5B,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAE5D;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjC;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC;CACxB"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Session storage types and interfaces.
3
+ *
4
+ * Types are derived from Zod schemas in storage.schema.ts.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ // Re-export types from schema (source of truth)
9
+ export {
10
+ // Schemas (for advanced use cases)
11
+ PersistedTinyCloudSessionSchema, TinyCloudSessionSchema, PersistedSessionDataSchema, EnsDataSchema,
12
+ // Validation functions
13
+ validatePersistedSessionData, validateTinyCloudSession, validatePersistedTinyCloudSession, } from "./storage.schema";
14
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gDAAgD;AAChD,OAAO;AAOL,mCAAmC;AACnC,+BAA+B,EAC/B,sBAAsB,EACtB,0BAA0B,EAC1B,aAAa;AACb,uBAAuB;AACvB,4BAA4B,EAC5B,wBAAwB,EACxB,iCAAiC,GAClC,MAAM,kBAAkB,CAAC"}