@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,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for UserAuthorization configuration schemas.
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from "bun:test";
|
|
5
|
+
import { PartialSiweMessageSchema, UserAuthorizationConfigSchema, validateUserAuthorizationConfig, validatePartialSiweMessage, } from "./userAuthorization.schema";
|
|
6
|
+
describe("PartialSiweMessageSchema", () => {
|
|
7
|
+
it("should accept empty object", () => {
|
|
8
|
+
const result = PartialSiweMessageSchema.safeParse({});
|
|
9
|
+
expect(result.success).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it("should accept minimal fields", () => {
|
|
12
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
13
|
+
address: "0x1234567890123456789012345678901234567890",
|
|
14
|
+
});
|
|
15
|
+
expect(result.success).toBe(true);
|
|
16
|
+
});
|
|
17
|
+
it("should accept all fields", () => {
|
|
18
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
19
|
+
address: "0x1234567890123456789012345678901234567890",
|
|
20
|
+
chainId: 1,
|
|
21
|
+
uri: "https://example.com",
|
|
22
|
+
version: "1",
|
|
23
|
+
domain: "example.com",
|
|
24
|
+
statement: "Sign in to Example",
|
|
25
|
+
nonce: "abc123",
|
|
26
|
+
issuedAt: "2024-01-01T00:00:00Z",
|
|
27
|
+
expirationTime: "2024-01-02T00:00:00Z",
|
|
28
|
+
notBefore: "2024-01-01T00:00:00Z",
|
|
29
|
+
requestId: "req-123",
|
|
30
|
+
resources: ["https://example.com/resource"],
|
|
31
|
+
});
|
|
32
|
+
expect(result.success).toBe(true);
|
|
33
|
+
});
|
|
34
|
+
it("should accept valid chainId", () => {
|
|
35
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
36
|
+
chainId: 1,
|
|
37
|
+
});
|
|
38
|
+
expect(result.success).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
it("should accept chainId for polygon", () => {
|
|
41
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
42
|
+
chainId: 137,
|
|
43
|
+
});
|
|
44
|
+
expect(result.success).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
it("should reject negative chainId", () => {
|
|
47
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
48
|
+
chainId: -1,
|
|
49
|
+
});
|
|
50
|
+
expect(result.success).toBe(false);
|
|
51
|
+
});
|
|
52
|
+
it("should reject zero chainId", () => {
|
|
53
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
54
|
+
chainId: 0,
|
|
55
|
+
});
|
|
56
|
+
expect(result.success).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
it("should reject non-integer chainId", () => {
|
|
59
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
60
|
+
chainId: 1.5,
|
|
61
|
+
});
|
|
62
|
+
expect(result.success).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
it("should accept resources array", () => {
|
|
65
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
66
|
+
resources: ["https://a.com", "https://b.com"],
|
|
67
|
+
});
|
|
68
|
+
expect(result.success).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
it("should reject non-array resources", () => {
|
|
71
|
+
const result = PartialSiweMessageSchema.safeParse({
|
|
72
|
+
resources: "https://example.com",
|
|
73
|
+
});
|
|
74
|
+
expect(result.success).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe("UserAuthorizationConfigSchema", () => {
|
|
78
|
+
// Mock signer object
|
|
79
|
+
const mockSigner = {
|
|
80
|
+
getAddress: async () => "0x1234567890123456789012345678901234567890",
|
|
81
|
+
signMessage: async () => "0xsignature",
|
|
82
|
+
getChainId: async () => 1,
|
|
83
|
+
};
|
|
84
|
+
it("should accept minimal config with signer", () => {
|
|
85
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
86
|
+
signer: mockSigner,
|
|
87
|
+
});
|
|
88
|
+
expect(result.success).toBe(true);
|
|
89
|
+
});
|
|
90
|
+
it("should reject missing signer", () => {
|
|
91
|
+
const result = UserAuthorizationConfigSchema.safeParse({});
|
|
92
|
+
expect(result.success).toBe(false);
|
|
93
|
+
});
|
|
94
|
+
it("should reject null signer", () => {
|
|
95
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
96
|
+
signer: null,
|
|
97
|
+
});
|
|
98
|
+
expect(result.success).toBe(false);
|
|
99
|
+
});
|
|
100
|
+
it("should reject primitive signer", () => {
|
|
101
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
102
|
+
signer: "not an object",
|
|
103
|
+
});
|
|
104
|
+
expect(result.success).toBe(false);
|
|
105
|
+
});
|
|
106
|
+
it("should accept sessionStorage object", () => {
|
|
107
|
+
const mockStorage = {
|
|
108
|
+
saveSession: async () => { },
|
|
109
|
+
loadSession: async () => null,
|
|
110
|
+
clearSession: async () => { },
|
|
111
|
+
};
|
|
112
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
113
|
+
signer: mockSigner,
|
|
114
|
+
sessionStorage: mockStorage,
|
|
115
|
+
});
|
|
116
|
+
expect(result.success).toBe(true);
|
|
117
|
+
});
|
|
118
|
+
it("should reject non-object sessionStorage", () => {
|
|
119
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
120
|
+
signer: mockSigner,
|
|
121
|
+
sessionStorage: "not an object",
|
|
122
|
+
});
|
|
123
|
+
expect(result.success).toBe(false);
|
|
124
|
+
});
|
|
125
|
+
it("should accept siweConfig object", () => {
|
|
126
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
127
|
+
signer: mockSigner,
|
|
128
|
+
siweConfig: { domain: "example.com" },
|
|
129
|
+
});
|
|
130
|
+
expect(result.success).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
it("should accept domain string", () => {
|
|
133
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
134
|
+
signer: mockSigner,
|
|
135
|
+
domain: "example.com",
|
|
136
|
+
});
|
|
137
|
+
expect(result.success).toBe(true);
|
|
138
|
+
});
|
|
139
|
+
it("should accept extensions array", () => {
|
|
140
|
+
const mockExtension = {
|
|
141
|
+
namespace: "test",
|
|
142
|
+
capabilities: [],
|
|
143
|
+
};
|
|
144
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
145
|
+
signer: mockSigner,
|
|
146
|
+
extensions: [mockExtension],
|
|
147
|
+
});
|
|
148
|
+
expect(result.success).toBe(true);
|
|
149
|
+
});
|
|
150
|
+
it("should reject non-array extensions", () => {
|
|
151
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
152
|
+
signer: mockSigner,
|
|
153
|
+
extensions: { namespace: "test" },
|
|
154
|
+
});
|
|
155
|
+
expect(result.success).toBe(false);
|
|
156
|
+
});
|
|
157
|
+
it("should reject primitive in extensions array", () => {
|
|
158
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
159
|
+
signer: mockSigner,
|
|
160
|
+
extensions: ["not an object"],
|
|
161
|
+
});
|
|
162
|
+
expect(result.success).toBe(false);
|
|
163
|
+
});
|
|
164
|
+
it("should accept auto-sign strategy", () => {
|
|
165
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
166
|
+
signer: mockSigner,
|
|
167
|
+
signStrategy: { type: "auto-sign" },
|
|
168
|
+
});
|
|
169
|
+
expect(result.success).toBe(true);
|
|
170
|
+
});
|
|
171
|
+
it("should accept auto-reject strategy", () => {
|
|
172
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
173
|
+
signer: mockSigner,
|
|
174
|
+
signStrategy: { type: "auto-reject" },
|
|
175
|
+
});
|
|
176
|
+
expect(result.success).toBe(true);
|
|
177
|
+
});
|
|
178
|
+
it("should accept callback strategy", () => {
|
|
179
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
180
|
+
signer: mockSigner,
|
|
181
|
+
signStrategy: {
|
|
182
|
+
type: "callback",
|
|
183
|
+
handler: async () => ({ approved: true }),
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
expect(result.success).toBe(true);
|
|
187
|
+
});
|
|
188
|
+
it("should accept event-emitter strategy", () => {
|
|
189
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
190
|
+
signer: mockSigner,
|
|
191
|
+
signStrategy: {
|
|
192
|
+
type: "event-emitter",
|
|
193
|
+
emitter: new EventTarget(),
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
expect(result.success).toBe(true);
|
|
197
|
+
});
|
|
198
|
+
it("should reject invalid sign strategy", () => {
|
|
199
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
200
|
+
signer: mockSigner,
|
|
201
|
+
signStrategy: { type: "invalid" },
|
|
202
|
+
});
|
|
203
|
+
expect(result.success).toBe(false);
|
|
204
|
+
});
|
|
205
|
+
it("should accept spaceCreationHandler", () => {
|
|
206
|
+
const handler = {
|
|
207
|
+
confirmSpaceCreation: async () => true,
|
|
208
|
+
};
|
|
209
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
210
|
+
signer: mockSigner,
|
|
211
|
+
spaceCreationHandler: handler,
|
|
212
|
+
});
|
|
213
|
+
expect(result.success).toBe(true);
|
|
214
|
+
});
|
|
215
|
+
it("should reject invalid spaceCreationHandler", () => {
|
|
216
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
217
|
+
signer: mockSigner,
|
|
218
|
+
spaceCreationHandler: { notValid: true },
|
|
219
|
+
});
|
|
220
|
+
expect(result.success).toBe(false);
|
|
221
|
+
});
|
|
222
|
+
it("should accept autoCreateSpace boolean", () => {
|
|
223
|
+
expect(UserAuthorizationConfigSchema.safeParse({
|
|
224
|
+
signer: mockSigner,
|
|
225
|
+
autoCreateSpace: true,
|
|
226
|
+
}).success).toBe(true);
|
|
227
|
+
expect(UserAuthorizationConfigSchema.safeParse({
|
|
228
|
+
signer: mockSigner,
|
|
229
|
+
autoCreateSpace: false,
|
|
230
|
+
}).success).toBe(true);
|
|
231
|
+
});
|
|
232
|
+
it("should reject non-boolean autoCreateSpace", () => {
|
|
233
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
234
|
+
signer: mockSigner,
|
|
235
|
+
autoCreateSpace: "true",
|
|
236
|
+
});
|
|
237
|
+
expect(result.success).toBe(false);
|
|
238
|
+
});
|
|
239
|
+
it("should accept spacePrefix string", () => {
|
|
240
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
241
|
+
signer: mockSigner,
|
|
242
|
+
spacePrefix: "myapp",
|
|
243
|
+
});
|
|
244
|
+
expect(result.success).toBe(true);
|
|
245
|
+
});
|
|
246
|
+
it("should accept tinycloudHosts array", () => {
|
|
247
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
248
|
+
signer: mockSigner,
|
|
249
|
+
tinycloudHosts: ["https://a.com", "https://b.com"],
|
|
250
|
+
});
|
|
251
|
+
expect(result.success).toBe(true);
|
|
252
|
+
});
|
|
253
|
+
it("should reject non-array tinycloudHosts", () => {
|
|
254
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
255
|
+
signer: mockSigner,
|
|
256
|
+
tinycloudHosts: "https://node.tinycloud.xyz",
|
|
257
|
+
});
|
|
258
|
+
expect(result.success).toBe(false);
|
|
259
|
+
});
|
|
260
|
+
it("should accept sessionExpirationMs", () => {
|
|
261
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
262
|
+
signer: mockSigner,
|
|
263
|
+
sessionExpirationMs: 86400000, // 24 hours
|
|
264
|
+
});
|
|
265
|
+
expect(result.success).toBe(true);
|
|
266
|
+
});
|
|
267
|
+
it("should reject negative sessionExpirationMs", () => {
|
|
268
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
269
|
+
signer: mockSigner,
|
|
270
|
+
sessionExpirationMs: -1000,
|
|
271
|
+
});
|
|
272
|
+
expect(result.success).toBe(false);
|
|
273
|
+
});
|
|
274
|
+
it("should reject zero sessionExpirationMs", () => {
|
|
275
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
276
|
+
signer: mockSigner,
|
|
277
|
+
sessionExpirationMs: 0,
|
|
278
|
+
});
|
|
279
|
+
expect(result.success).toBe(false);
|
|
280
|
+
});
|
|
281
|
+
it("should accept full config", () => {
|
|
282
|
+
const result = UserAuthorizationConfigSchema.safeParse({
|
|
283
|
+
signer: mockSigner,
|
|
284
|
+
sessionStorage: { saveSession: async () => { } },
|
|
285
|
+
siweConfig: { domain: "example.com" },
|
|
286
|
+
domain: "example.com",
|
|
287
|
+
extensions: [{ namespace: "storage" }],
|
|
288
|
+
signStrategy: { type: "auto-sign" },
|
|
289
|
+
spaceCreationHandler: { confirmSpaceCreation: async () => true },
|
|
290
|
+
autoCreateSpace: true,
|
|
291
|
+
spacePrefix: "default",
|
|
292
|
+
tinycloudHosts: ["https://node.tinycloud.xyz"],
|
|
293
|
+
sessionExpirationMs: 86400000,
|
|
294
|
+
});
|
|
295
|
+
expect(result.success).toBe(true);
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
describe("validateUserAuthorizationConfig", () => {
|
|
299
|
+
const mockSigner = {
|
|
300
|
+
getAddress: async () => "0x1234567890123456789012345678901234567890",
|
|
301
|
+
};
|
|
302
|
+
it("should return ok result for valid config", () => {
|
|
303
|
+
const result = validateUserAuthorizationConfig({
|
|
304
|
+
signer: mockSigner,
|
|
305
|
+
domain: "example.com",
|
|
306
|
+
});
|
|
307
|
+
expect(result.ok).toBe(true);
|
|
308
|
+
if (result.ok) {
|
|
309
|
+
expect(result.data.domain).toBe("example.com");
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
it("should return error result for missing signer", () => {
|
|
313
|
+
const result = validateUserAuthorizationConfig({});
|
|
314
|
+
expect(result.ok).toBe(false);
|
|
315
|
+
if (!result.ok) {
|
|
316
|
+
expect(result.error.code).toBe("VALIDATION_ERROR");
|
|
317
|
+
expect(result.error.service).toBe("authorization");
|
|
318
|
+
expect(result.error.meta?.issues).toBeDefined();
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
it("should return error result for invalid sign strategy", () => {
|
|
322
|
+
const result = validateUserAuthorizationConfig({
|
|
323
|
+
signer: mockSigner,
|
|
324
|
+
signStrategy: { type: "invalid" },
|
|
325
|
+
});
|
|
326
|
+
expect(result.ok).toBe(false);
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
describe("validatePartialSiweMessage", () => {
|
|
330
|
+
it("should return ok result for valid message", () => {
|
|
331
|
+
const result = validatePartialSiweMessage({
|
|
332
|
+
address: "0x1234567890123456789012345678901234567890",
|
|
333
|
+
chainId: 1,
|
|
334
|
+
});
|
|
335
|
+
expect(result.ok).toBe(true);
|
|
336
|
+
if (result.ok) {
|
|
337
|
+
expect(result.data.address).toBe("0x1234567890123456789012345678901234567890");
|
|
338
|
+
expect(result.data.chainId).toBe(1);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
it("should return ok result for empty message", () => {
|
|
342
|
+
const result = validatePartialSiweMessage({});
|
|
343
|
+
expect(result.ok).toBe(true);
|
|
344
|
+
});
|
|
345
|
+
it("should return error result for invalid chainId", () => {
|
|
346
|
+
const result = validatePartialSiweMessage({
|
|
347
|
+
chainId: -1,
|
|
348
|
+
});
|
|
349
|
+
expect(result.ok).toBe(false);
|
|
350
|
+
if (!result.ok) {
|
|
351
|
+
expect(result.error.code).toBe("VALIDATION_ERROR");
|
|
352
|
+
expect(result.error.service).toBe("authorization");
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
//# sourceMappingURL=userAuthorization.schema.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userAuthorization.schema.test.js","sourceRoot":"","sources":["../src/userAuthorization.schema.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol version checking for SDK-to-node compatibility.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export declare class ProtocolMismatchError extends Error {
|
|
7
|
+
readonly sdkProtocol: number;
|
|
8
|
+
readonly nodeProtocol: number;
|
|
9
|
+
readonly nodeVersion: string;
|
|
10
|
+
readonly host: string;
|
|
11
|
+
name: "ProtocolMismatchError";
|
|
12
|
+
constructor(sdkProtocol: number, nodeProtocol: number, nodeVersion: string, host: string);
|
|
13
|
+
}
|
|
14
|
+
export declare class VersionCheckError extends Error {
|
|
15
|
+
readonly host: string;
|
|
16
|
+
readonly cause?: Error | undefined;
|
|
17
|
+
name: "VersionCheckError";
|
|
18
|
+
constructor(host: string, cause?: Error | undefined);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check that the SDK protocol version matches the node's protocol version.
|
|
22
|
+
*
|
|
23
|
+
* @param host - The TinyCloud node host URL
|
|
24
|
+
* @param sdkProtocol - The SDK's protocol version (from WASM)
|
|
25
|
+
* @param fetchFn - Fetch implementation (defaults to globalThis.fetch)
|
|
26
|
+
* @throws VersionCheckError if the /version endpoint is unreachable
|
|
27
|
+
* @throws ProtocolMismatchError if protocol versions don't match
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkNodeVersion(host: string, sdkProtocol: number, fetchFn?: typeof globalThis.fetch): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,qBAAsB,SAAQ,KAAK;aAG5B,WAAW,EAAE,MAAM;aACnB,YAAY,EAAE,MAAM;aACpB,WAAW,EAAE,MAAM;aACnB,IAAI,EAAE,MAAM;IAL9B,IAAI,EAAG,uBAAuB,CAAU;gBAEtB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM;CAS/B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,MAAM;aACZ,KAAK,CAAC,EAAE,KAAK;IAH/B,IAAI,EAAG,mBAAmB,CAAU;gBAElB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,KAAK,YAAA;CAMhC;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,UAAU,CAAC,KAAyC,GACnE,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol version checking for SDK-to-node compatibility.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export class ProtocolMismatchError extends Error {
|
|
7
|
+
constructor(sdkProtocol, nodeProtocol, nodeVersion, host) {
|
|
8
|
+
super(`SDK protocol version ${sdkProtocol} is incompatible with node protocol version ${nodeProtocol} (node v${nodeVersion}) at ${host}. ` +
|
|
9
|
+
(sdkProtocol < nodeProtocol
|
|
10
|
+
? "Please update your SDK."
|
|
11
|
+
: "Please update the TinyCloud node."));
|
|
12
|
+
this.sdkProtocol = sdkProtocol;
|
|
13
|
+
this.nodeProtocol = nodeProtocol;
|
|
14
|
+
this.nodeVersion = nodeVersion;
|
|
15
|
+
this.host = host;
|
|
16
|
+
this.name = "ProtocolMismatchError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class VersionCheckError extends Error {
|
|
20
|
+
constructor(host, cause) {
|
|
21
|
+
super(`Failed to check version at ${host}. Ensure the node is running v1.0.0+ and the /version endpoint is accessible.`);
|
|
22
|
+
this.host = host;
|
|
23
|
+
this.cause = cause;
|
|
24
|
+
this.name = "VersionCheckError";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check that the SDK protocol version matches the node's protocol version.
|
|
29
|
+
*
|
|
30
|
+
* @param host - The TinyCloud node host URL
|
|
31
|
+
* @param sdkProtocol - The SDK's protocol version (from WASM)
|
|
32
|
+
* @param fetchFn - Fetch implementation (defaults to globalThis.fetch)
|
|
33
|
+
* @throws VersionCheckError if the /version endpoint is unreachable
|
|
34
|
+
* @throws ProtocolMismatchError if protocol versions don't match
|
|
35
|
+
*/
|
|
36
|
+
export async function checkNodeVersion(host, sdkProtocol, fetchFn = globalThis.fetch.bind(globalThis)) {
|
|
37
|
+
let response;
|
|
38
|
+
try {
|
|
39
|
+
response = await fetchFn(`${host}/version`, {
|
|
40
|
+
signal: AbortSignal.timeout(5000),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
throw new VersionCheckError(host, err);
|
|
45
|
+
}
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
throw new VersionCheckError(host);
|
|
48
|
+
}
|
|
49
|
+
const data = (await response.json());
|
|
50
|
+
if (sdkProtocol !== data.protocol) {
|
|
51
|
+
throw new ProtocolMismatchError(sdkProtocol, data.protocol, data.version, host);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAE9C,YACkB,WAAmB,EACnB,YAAoB,EACpB,WAAmB,EACnB,IAAY;QAE5B,KAAK,CACH,wBAAwB,WAAW,+CAA+C,YAAY,WAAW,WAAW,QAAQ,IAAI,IAAI;YAClI,CAAC,WAAW,GAAG,YAAY;gBACzB,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,mCAAmC,CAAC,CAC3C,CAAC;QAVc,gBAAW,GAAX,WAAW,CAAQ;QACnB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,gBAAW,GAAX,WAAW,CAAQ;QACnB,SAAI,GAAJ,IAAI,CAAQ;QAL9B,SAAI,GAAG,uBAAgC,CAAC;IAaxC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAE1C,YACkB,IAAY,EACZ,KAAa;QAE7B,KAAK,CACH,8BAA8B,IAAI,+EAA+E,CAClH,CAAC;QALc,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QAH/B,SAAI,GAAG,mBAA4B,CAAC;IAQpC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,WAAmB,EACnB,UAAmC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IAEpE,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE;YAC1C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CAAC,IAAI,EAAE,GAAY,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAIlC,CAAC;IAEF,IAAI,WAAW,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,qBAAqB,CAC7B,WAAW,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,EACZ,IAAI,CACL,CAAC;IACJ,CAAC;AACH,CAAC"}
|