@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.
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,627 @@
1
+ /**
2
+ * Tests for delegation type Zod schemas.
3
+ */
4
+ import { describe, it, expect } from "bun:test";
5
+ import { JWKSchema, KeyTypeSchema, KeyInfoSchema, DelegationErrorSchema, DelegationSchema, CapabilityEntrySchema, DelegationRecordSchema, CreateDelegationParamsSchema, DelegationChainSchema, DelegationChainV2Schema, DelegationDirectionSchema, DelegationFiltersSchema, SpaceOwnershipSchema, SpaceInfoSchema, ShareSchemaSchema, ShareLinkSchema, IngestOptionsSchema, GenerateShareParamsSchema, DelegationApiResponseSchema, CreateDelegationWasmParamsSchema, CreateDelegationWasmResultSchema, validateDelegation, validateCreateDelegationParams, validateDelegationFilters, validateShareLink, createValidator, DelegationErrorCodes, } from "./types.schema.js";
6
+ // =============================================================================
7
+ // Test Data Factories
8
+ // =============================================================================
9
+ function createValidJWK() {
10
+ return {
11
+ kty: "EC",
12
+ crv: "P-256",
13
+ x: "test-x-coordinate",
14
+ y: "test-y-coordinate",
15
+ };
16
+ }
17
+ function createValidDelegation() {
18
+ return {
19
+ cid: "bafyrei1234567890",
20
+ delegateDID: "did:key:z6MkTest",
21
+ spaceId: "space-123",
22
+ path: "/kv/test/*",
23
+ actions: ["tinycloud.kv/get", "tinycloud.kv/put"],
24
+ expiry: new Date("2025-12-31"),
25
+ isRevoked: false,
26
+ };
27
+ }
28
+ function createValidKeyInfo() {
29
+ return {
30
+ id: "key-123",
31
+ did: "did:key:z6MkTest",
32
+ type: "session",
33
+ priority: 0,
34
+ };
35
+ }
36
+ // =============================================================================
37
+ // JWK Schema Tests
38
+ // =============================================================================
39
+ describe("JWKSchema", () => {
40
+ it("should validate a minimal JWK", () => {
41
+ const jwk = { kty: "EC" };
42
+ const result = JWKSchema.safeParse(jwk);
43
+ expect(result.success).toBe(true);
44
+ });
45
+ it("should validate a full EC JWK", () => {
46
+ const jwk = createValidJWK();
47
+ const result = JWKSchema.safeParse(jwk);
48
+ expect(result.success).toBe(true);
49
+ if (result.success) {
50
+ expect(result.data.kty).toBe("EC");
51
+ expect(result.data.crv).toBe("P-256");
52
+ }
53
+ });
54
+ it("should validate a JWK with all optional fields", () => {
55
+ const jwk = {
56
+ kty: "RSA",
57
+ n: "test-modulus",
58
+ e: "test-exponent",
59
+ kid: "key-id-123",
60
+ alg: "RS256",
61
+ use: "sig",
62
+ key_ops: ["sign", "verify"],
63
+ };
64
+ const result = JWKSchema.safeParse(jwk);
65
+ expect(result.success).toBe(true);
66
+ });
67
+ it("should reject JWK without kty", () => {
68
+ const jwk = { crv: "P-256" };
69
+ const result = JWKSchema.safeParse(jwk);
70
+ expect(result.success).toBe(false);
71
+ });
72
+ it("should reject JWK with invalid kty type", () => {
73
+ const jwk = { kty: 123 };
74
+ const result = JWKSchema.safeParse(jwk);
75
+ expect(result.success).toBe(false);
76
+ });
77
+ });
78
+ // =============================================================================
79
+ // KeyType Schema Tests
80
+ // =============================================================================
81
+ describe("KeyTypeSchema", () => {
82
+ it("should validate 'main'", () => {
83
+ expect(KeyTypeSchema.safeParse("main").success).toBe(true);
84
+ });
85
+ it("should validate 'session'", () => {
86
+ expect(KeyTypeSchema.safeParse("session").success).toBe(true);
87
+ });
88
+ it("should validate 'ingested'", () => {
89
+ expect(KeyTypeSchema.safeParse("ingested").success).toBe(true);
90
+ });
91
+ it("should reject invalid key type", () => {
92
+ expect(KeyTypeSchema.safeParse("invalid").success).toBe(false);
93
+ });
94
+ it("should reject non-string values", () => {
95
+ expect(KeyTypeSchema.safeParse(123).success).toBe(false);
96
+ });
97
+ });
98
+ // =============================================================================
99
+ // KeyInfo Schema Tests
100
+ // =============================================================================
101
+ describe("KeyInfoSchema", () => {
102
+ it("should validate minimal key info", () => {
103
+ const keyInfo = createValidKeyInfo();
104
+ const result = KeyInfoSchema.safeParse(keyInfo);
105
+ expect(result.success).toBe(true);
106
+ });
107
+ it("should validate key info with JWK", () => {
108
+ const keyInfo = {
109
+ ...createValidKeyInfo(),
110
+ jwk: createValidJWK(),
111
+ };
112
+ const result = KeyInfoSchema.safeParse(keyInfo);
113
+ expect(result.success).toBe(true);
114
+ });
115
+ it("should reject key info without id", () => {
116
+ const { id, ...keyInfo } = createValidKeyInfo();
117
+ const result = KeyInfoSchema.safeParse(keyInfo);
118
+ expect(result.success).toBe(false);
119
+ });
120
+ it("should reject key info with invalid type", () => {
121
+ const keyInfo = { ...createValidKeyInfo(), type: "invalid" };
122
+ const result = KeyInfoSchema.safeParse(keyInfo);
123
+ expect(result.success).toBe(false);
124
+ });
125
+ });
126
+ // =============================================================================
127
+ // DelegationError Schema Tests
128
+ // =============================================================================
129
+ describe("DelegationErrorSchema", () => {
130
+ it("should validate a minimal delegation error", () => {
131
+ const error = {
132
+ code: "AUTH_REQUIRED",
133
+ message: "Authentication required",
134
+ service: "delegation",
135
+ };
136
+ const result = DelegationErrorSchema.safeParse(error);
137
+ expect(result.success).toBe(true);
138
+ });
139
+ it("should validate delegation error with cause and meta", () => {
140
+ const error = {
141
+ code: "NETWORK_ERROR",
142
+ message: "Request failed",
143
+ service: "delegation",
144
+ cause: new Error("Connection timeout"),
145
+ meta: { attempt: 3, url: "https://example.com" },
146
+ };
147
+ const result = DelegationErrorSchema.safeParse(error);
148
+ expect(result.success).toBe(true);
149
+ });
150
+ it("should reject error with wrong service", () => {
151
+ const error = {
152
+ code: "AUTH_REQUIRED",
153
+ message: "Authentication required",
154
+ service: "other",
155
+ };
156
+ const result = DelegationErrorSchema.safeParse(error);
157
+ expect(result.success).toBe(false);
158
+ });
159
+ });
160
+ // =============================================================================
161
+ // Delegation Schema Tests
162
+ // =============================================================================
163
+ describe("DelegationSchema", () => {
164
+ it("should validate a minimal delegation", () => {
165
+ const delegation = createValidDelegation();
166
+ const result = DelegationSchema.safeParse(delegation);
167
+ expect(result.success).toBe(true);
168
+ });
169
+ it("should validate a full delegation", () => {
170
+ const delegation = {
171
+ ...createValidDelegation(),
172
+ delegatorDID: "did:pkh:eip155:1:0x1234",
173
+ createdAt: new Date(),
174
+ parentCid: "bafyrei-parent",
175
+ allowSubDelegation: true,
176
+ authHeader: "Bearer token123",
177
+ };
178
+ const result = DelegationSchema.safeParse(delegation);
179
+ expect(result.success).toBe(true);
180
+ });
181
+ it("should reject delegation without cid", () => {
182
+ const { cid, ...delegation } = createValidDelegation();
183
+ const result = DelegationSchema.safeParse(delegation);
184
+ expect(result.success).toBe(false);
185
+ });
186
+ it("should reject delegation with invalid expiry", () => {
187
+ const delegation = { ...createValidDelegation(), expiry: "not-a-date" };
188
+ const result = DelegationSchema.safeParse(delegation);
189
+ expect(result.success).toBe(false);
190
+ });
191
+ it("should reject delegation with invalid actions type", () => {
192
+ const delegation = { ...createValidDelegation(), actions: "not-an-array" };
193
+ const result = DelegationSchema.safeParse(delegation);
194
+ expect(result.success).toBe(false);
195
+ });
196
+ });
197
+ // =============================================================================
198
+ // CapabilityEntry Schema Tests
199
+ // =============================================================================
200
+ describe("CapabilityEntrySchema", () => {
201
+ it("should validate a capability entry", () => {
202
+ const entry = {
203
+ resource: "tinycloud://space-123/kv/test",
204
+ action: "tinycloud.kv/get",
205
+ keys: [createValidKeyInfo()],
206
+ delegation: createValidDelegation(),
207
+ };
208
+ const result = CapabilityEntrySchema.safeParse(entry);
209
+ expect(result.success).toBe(true);
210
+ });
211
+ it("should validate capability entry with expiresAt", () => {
212
+ const entry = {
213
+ resource: "tinycloud://space-123/kv/test",
214
+ action: "tinycloud.kv/get",
215
+ keys: [],
216
+ delegation: createValidDelegation(),
217
+ expiresAt: new Date("2025-12-31"),
218
+ };
219
+ const result = CapabilityEntrySchema.safeParse(entry);
220
+ expect(result.success).toBe(true);
221
+ });
222
+ });
223
+ // =============================================================================
224
+ // DelegationRecord Schema Tests
225
+ // =============================================================================
226
+ describe("DelegationRecordSchema", () => {
227
+ it("should validate a delegation record", () => {
228
+ const record = {
229
+ cid: "bafyrei1234567890",
230
+ spaceId: "space-123",
231
+ delegator: "did:pkh:eip155:1:0x1234",
232
+ delegatee: "did:key:z6MkTest",
233
+ path: "/kv/test/*",
234
+ actions: ["tinycloud.kv/get"],
235
+ isRevoked: false,
236
+ createdAt: new Date(),
237
+ };
238
+ const result = DelegationRecordSchema.safeParse(record);
239
+ expect(result.success).toBe(true);
240
+ });
241
+ it("should validate a full delegation record", () => {
242
+ const record = {
243
+ cid: "bafyrei1234567890",
244
+ spaceId: "space-123",
245
+ delegator: "did:pkh:eip155:1:0x1234",
246
+ delegatee: "did:key:z6MkTest",
247
+ keyId: "key-123",
248
+ path: "/kv/test/*",
249
+ actions: ["tinycloud.kv/get"],
250
+ expiry: new Date("2025-12-31"),
251
+ notBefore: new Date(),
252
+ isRevoked: false,
253
+ createdAt: new Date(),
254
+ parentCid: "bafyrei-parent",
255
+ };
256
+ const result = DelegationRecordSchema.safeParse(record);
257
+ expect(result.success).toBe(true);
258
+ });
259
+ });
260
+ // =============================================================================
261
+ // CreateDelegationParams Schema Tests
262
+ // =============================================================================
263
+ describe("CreateDelegationParamsSchema", () => {
264
+ it("should validate minimal params", () => {
265
+ const params = {
266
+ delegateDID: "did:key:z6MkTest",
267
+ path: "/kv/test",
268
+ actions: ["tinycloud.kv/get"],
269
+ };
270
+ const result = CreateDelegationParamsSchema.safeParse(params);
271
+ expect(result.success).toBe(true);
272
+ });
273
+ it("should validate full params", () => {
274
+ const params = {
275
+ delegateDID: "did:key:z6MkTest",
276
+ path: "/kv/test",
277
+ actions: ["tinycloud.kv/get", "tinycloud.kv/put"],
278
+ expiry: new Date("2025-12-31"),
279
+ disableSubDelegation: true,
280
+ statement: "Grant access to test data",
281
+ };
282
+ const result = CreateDelegationParamsSchema.safeParse(params);
283
+ expect(result.success).toBe(true);
284
+ });
285
+ });
286
+ // =============================================================================
287
+ // DelegationChain Schema Tests
288
+ // =============================================================================
289
+ describe("DelegationChainSchema", () => {
290
+ it("should validate an empty chain", () => {
291
+ const result = DelegationChainSchema.safeParse([]);
292
+ expect(result.success).toBe(true);
293
+ });
294
+ it("should validate a chain with one delegation", () => {
295
+ const chain = [createValidDelegation()];
296
+ const result = DelegationChainSchema.safeParse(chain);
297
+ expect(result.success).toBe(true);
298
+ });
299
+ it("should validate a chain with multiple delegations", () => {
300
+ const chain = [createValidDelegation(), createValidDelegation()];
301
+ const result = DelegationChainSchema.safeParse(chain);
302
+ expect(result.success).toBe(true);
303
+ });
304
+ });
305
+ // =============================================================================
306
+ // DelegationChainV2 Schema Tests
307
+ // =============================================================================
308
+ describe("DelegationChainV2Schema", () => {
309
+ it("should validate a chain v2", () => {
310
+ const chain = {
311
+ root: createValidDelegation(),
312
+ chain: [],
313
+ leaf: createValidDelegation(),
314
+ };
315
+ const result = DelegationChainV2Schema.safeParse(chain);
316
+ expect(result.success).toBe(true);
317
+ });
318
+ it("should validate a chain v2 with intermediates", () => {
319
+ const chain = {
320
+ root: createValidDelegation(),
321
+ chain: [createValidDelegation(), createValidDelegation()],
322
+ leaf: createValidDelegation(),
323
+ };
324
+ const result = DelegationChainV2Schema.safeParse(chain);
325
+ expect(result.success).toBe(true);
326
+ });
327
+ });
328
+ // =============================================================================
329
+ // Direction and Filter Schema Tests
330
+ // =============================================================================
331
+ describe("DelegationDirectionSchema", () => {
332
+ it("should validate 'granted'", () => {
333
+ expect(DelegationDirectionSchema.safeParse("granted").success).toBe(true);
334
+ });
335
+ it("should validate 'received'", () => {
336
+ expect(DelegationDirectionSchema.safeParse("received").success).toBe(true);
337
+ });
338
+ it("should validate 'all'", () => {
339
+ expect(DelegationDirectionSchema.safeParse("all").success).toBe(true);
340
+ });
341
+ it("should reject invalid direction", () => {
342
+ expect(DelegationDirectionSchema.safeParse("invalid").success).toBe(false);
343
+ });
344
+ });
345
+ describe("DelegationFiltersSchema", () => {
346
+ it("should validate empty filters", () => {
347
+ const result = DelegationFiltersSchema.safeParse({});
348
+ expect(result.success).toBe(true);
349
+ });
350
+ it("should validate full filters", () => {
351
+ const filters = {
352
+ direction: "received",
353
+ path: "/kv/shared/*",
354
+ actions: ["tinycloud.kv/get"],
355
+ includeRevoked: false,
356
+ delegator: "did:pkh:eip155:1:0x1234",
357
+ delegatee: "did:key:z6MkTest",
358
+ validAt: new Date(),
359
+ limit: 10,
360
+ cursor: "cursor-123",
361
+ };
362
+ const result = DelegationFiltersSchema.safeParse(filters);
363
+ expect(result.success).toBe(true);
364
+ });
365
+ });
366
+ // =============================================================================
367
+ // Space Schema Tests
368
+ // =============================================================================
369
+ describe("SpaceOwnershipSchema", () => {
370
+ it("should validate 'owned'", () => {
371
+ expect(SpaceOwnershipSchema.safeParse("owned").success).toBe(true);
372
+ });
373
+ it("should validate 'delegated'", () => {
374
+ expect(SpaceOwnershipSchema.safeParse("delegated").success).toBe(true);
375
+ });
376
+ });
377
+ describe("SpaceInfoSchema", () => {
378
+ it("should validate minimal space info", () => {
379
+ const spaceInfo = {
380
+ id: "space-123",
381
+ owner: "did:pkh:eip155:1:0x1234",
382
+ type: "owned",
383
+ };
384
+ const result = SpaceInfoSchema.safeParse(spaceInfo);
385
+ expect(result.success).toBe(true);
386
+ });
387
+ it("should validate full space info", () => {
388
+ const spaceInfo = {
389
+ id: "space-123",
390
+ name: "My Documents",
391
+ owner: "did:pkh:eip155:1:0x1234",
392
+ type: "delegated",
393
+ permissions: ["tinycloud.kv/*"],
394
+ expiresAt: new Date("2025-12-31"),
395
+ };
396
+ const result = SpaceInfoSchema.safeParse(spaceInfo);
397
+ expect(result.success).toBe(true);
398
+ });
399
+ });
400
+ // =============================================================================
401
+ // Share Link Schema Tests
402
+ // =============================================================================
403
+ describe("ShareSchemaSchema", () => {
404
+ it("should validate 'base64'", () => {
405
+ expect(ShareSchemaSchema.safeParse("base64").success).toBe(true);
406
+ });
407
+ it("should validate 'compact'", () => {
408
+ expect(ShareSchemaSchema.safeParse("compact").success).toBe(true);
409
+ });
410
+ it("should validate 'ipfs'", () => {
411
+ expect(ShareSchemaSchema.safeParse("ipfs").success).toBe(true);
412
+ });
413
+ });
414
+ describe("ShareLinkSchema", () => {
415
+ it("should validate a share link", () => {
416
+ const shareLink = {
417
+ token: "abc123",
418
+ url: "https://app.example.com/share/abc123",
419
+ delegation: createValidDelegation(),
420
+ schema: "base64",
421
+ };
422
+ const result = ShareLinkSchema.safeParse(shareLink);
423
+ expect(result.success).toBe(true);
424
+ });
425
+ it("should validate a full share link", () => {
426
+ const shareLink = {
427
+ token: "abc123",
428
+ url: "https://app.example.com/share/abc123",
429
+ delegation: createValidDelegation(),
430
+ schema: "base64",
431
+ expiresAt: new Date("2025-12-31"),
432
+ description: "Q4 Financial Report",
433
+ };
434
+ const result = ShareLinkSchema.safeParse(shareLink);
435
+ expect(result.success).toBe(true);
436
+ });
437
+ });
438
+ // =============================================================================
439
+ // Ingestion Schema Tests
440
+ // =============================================================================
441
+ describe("IngestOptionsSchema", () => {
442
+ it("should validate empty options", () => {
443
+ const result = IngestOptionsSchema.safeParse({});
444
+ expect(result.success).toBe(true);
445
+ });
446
+ it("should validate full options", () => {
447
+ const options = {
448
+ persist: true,
449
+ validateChain: true,
450
+ keyName: "shared-key",
451
+ createSessionKey: false,
452
+ priority: 2,
453
+ };
454
+ const result = IngestOptionsSchema.safeParse(options);
455
+ expect(result.success).toBe(true);
456
+ });
457
+ });
458
+ // =============================================================================
459
+ // GenerateShareParams Schema Tests
460
+ // =============================================================================
461
+ describe("GenerateShareParamsSchema", () => {
462
+ it("should validate minimal params", () => {
463
+ const params = {
464
+ path: "/kv/test",
465
+ };
466
+ const result = GenerateShareParamsSchema.safeParse(params);
467
+ expect(result.success).toBe(true);
468
+ });
469
+ it("should validate full params", () => {
470
+ const params = {
471
+ path: "/kv/documents/report.pdf",
472
+ actions: ["tinycloud.kv/get"],
473
+ expiry: new Date("2025-12-31"),
474
+ schema: "base64",
475
+ description: "Q4 Financial Report",
476
+ baseUrl: "https://share.example.com",
477
+ };
478
+ const result = GenerateShareParamsSchema.safeParse(params);
479
+ expect(result.success).toBe(true);
480
+ });
481
+ });
482
+ // =============================================================================
483
+ // API Response Schema Tests
484
+ // =============================================================================
485
+ describe("DelegationApiResponseSchema", () => {
486
+ it("should validate a response", () => {
487
+ const response = {
488
+ siwe: "localhost wants you to sign in...",
489
+ signature: "0x1234...",
490
+ version: 1,
491
+ };
492
+ const result = DelegationApiResponseSchema.safeParse(response);
493
+ expect(result.success).toBe(true);
494
+ });
495
+ it("should validate a response with cid", () => {
496
+ const response = {
497
+ siwe: "localhost wants you to sign in...",
498
+ signature: "0x1234...",
499
+ version: 1,
500
+ cid: "bafyrei1234567890",
501
+ };
502
+ const result = DelegationApiResponseSchema.safeParse(response);
503
+ expect(result.success).toBe(true);
504
+ });
505
+ });
506
+ // =============================================================================
507
+ // WASM Types Schema Tests
508
+ // =============================================================================
509
+ describe("CreateDelegationWasmParamsSchema", () => {
510
+ it("should validate params with mock session", () => {
511
+ const params = {
512
+ session: { did: "did:key:z6MkTest", spaceId: "space-123" },
513
+ delegateDID: "did:key:z6MkTarget",
514
+ spaceId: "space-123",
515
+ path: "/kv/test",
516
+ actions: ["tinycloud.kv/get"],
517
+ expirationSecs: 1735689600,
518
+ };
519
+ const result = CreateDelegationWasmParamsSchema.safeParse(params);
520
+ expect(result.success).toBe(true);
521
+ });
522
+ it("should validate params with notBeforeSecs", () => {
523
+ const params = {
524
+ session: { did: "did:key:z6MkTest", spaceId: "space-123" },
525
+ delegateDID: "did:key:z6MkTarget",
526
+ spaceId: "space-123",
527
+ path: "/kv/test",
528
+ actions: ["tinycloud.kv/get"],
529
+ expirationSecs: 1735689600,
530
+ notBeforeSecs: 1704067200,
531
+ };
532
+ const result = CreateDelegationWasmParamsSchema.safeParse(params);
533
+ expect(result.success).toBe(true);
534
+ });
535
+ });
536
+ describe("CreateDelegationWasmResultSchema", () => {
537
+ it("should validate a result", () => {
538
+ const result = {
539
+ delegation: "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSJ9...",
540
+ cid: "bafyrei1234567890",
541
+ delegateDID: "did:key:z6MkTarget",
542
+ path: "/kv/test",
543
+ actions: ["tinycloud.kv/get"],
544
+ expiry: new Date("2025-12-31"),
545
+ };
546
+ const parseResult = CreateDelegationWasmResultSchema.safeParse(result);
547
+ expect(parseResult.success).toBe(true);
548
+ });
549
+ });
550
+ // =============================================================================
551
+ // Validation Helper Tests
552
+ // =============================================================================
553
+ describe("validateDelegation", () => {
554
+ it("should return ok result for valid delegation", () => {
555
+ const delegation = createValidDelegation();
556
+ const result = validateDelegation(delegation);
557
+ expect(result.ok).toBe(true);
558
+ if (result.ok) {
559
+ expect(result.data.cid).toBe(delegation.cid);
560
+ }
561
+ });
562
+ it("should return error result for invalid delegation", () => {
563
+ const delegation = { cid: "test" }; // Missing required fields
564
+ const result = validateDelegation(delegation);
565
+ expect(result.ok).toBe(false);
566
+ if (!result.ok) {
567
+ expect(result.error.code).toBe(DelegationErrorCodes.VALIDATION_ERROR);
568
+ expect(result.error.service).toBe("delegation");
569
+ expect(result.error.meta?.issues).toBeDefined();
570
+ }
571
+ });
572
+ });
573
+ describe("validateCreateDelegationParams", () => {
574
+ it("should return ok result for valid params", () => {
575
+ const params = {
576
+ delegateDID: "did:key:z6MkTest",
577
+ path: "/kv/test",
578
+ actions: ["tinycloud.kv/get"],
579
+ };
580
+ const result = validateCreateDelegationParams(params);
581
+ expect(result.ok).toBe(true);
582
+ });
583
+ it("should return error result for invalid params", () => {
584
+ const params = { path: "/kv/test" }; // Missing delegateDID and actions
585
+ const result = validateCreateDelegationParams(params);
586
+ expect(result.ok).toBe(false);
587
+ });
588
+ });
589
+ describe("validateDelegationFilters", () => {
590
+ it("should return ok result for valid filters", () => {
591
+ const filters = { direction: "received" };
592
+ const result = validateDelegationFilters(filters);
593
+ expect(result.ok).toBe(true);
594
+ });
595
+ it("should return error result for invalid direction", () => {
596
+ const filters = { direction: "invalid" };
597
+ const result = validateDelegationFilters(filters);
598
+ expect(result.ok).toBe(false);
599
+ });
600
+ });
601
+ describe("validateShareLink", () => {
602
+ it("should return ok result for valid share link", () => {
603
+ const shareLink = {
604
+ token: "abc123",
605
+ url: "https://app.example.com/share/abc123",
606
+ delegation: createValidDelegation(),
607
+ schema: "base64",
608
+ };
609
+ const result = validateShareLink(shareLink);
610
+ expect(result.ok).toBe(true);
611
+ });
612
+ it("should return error result for invalid share link", () => {
613
+ const shareLink = { token: "abc123" }; // Missing required fields
614
+ const result = validateShareLink(shareLink);
615
+ expect(result.ok).toBe(false);
616
+ });
617
+ });
618
+ describe("createValidator", () => {
619
+ it("should create a working validator", () => {
620
+ const validateKeyType = createValidator(KeyTypeSchema);
621
+ const validResult = validateKeyType("session");
622
+ expect(validResult.ok).toBe(true);
623
+ const invalidResult = validateKeyType("invalid");
624
+ expect(invalidResult.ok).toBe(false);
625
+ });
626
+ });
627
+ //# sourceMappingURL=types.schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.schema.test.js","sourceRoot":"","sources":["../../src/delegations/types.schema.test.ts"],"names":[],"mappings":"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"}