@tinycloud/sdk-core 2.0.0 → 2.0.2-beta.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 (188) hide show
  1. package/dist/index.cjs +3816 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +3867 -0
  4. package/dist/index.d.ts +3861 -21
  5. package/dist/index.js +3767 -61
  6. package/dist/index.js.map +1 -1
  7. package/package.json +6 -5
  8. package/dist/TinyCloud.d.ts +0 -271
  9. package/dist/TinyCloud.d.ts.map +0 -1
  10. package/dist/TinyCloud.js +0 -458
  11. package/dist/TinyCloud.js.map +0 -1
  12. package/dist/TinyCloud.schema.d.ts +0 -173
  13. package/dist/TinyCloud.schema.d.ts.map +0 -1
  14. package/dist/TinyCloud.schema.js +0 -136
  15. package/dist/TinyCloud.schema.js.map +0 -1
  16. package/dist/TinyCloud.schema.test.d.ts +0 -5
  17. package/dist/TinyCloud.schema.test.d.ts.map +0 -1
  18. package/dist/TinyCloud.schema.test.js +0 -286
  19. package/dist/TinyCloud.schema.test.js.map +0 -1
  20. package/dist/authorization/CapabilityKeyRegistry.d.ts +0 -317
  21. package/dist/authorization/CapabilityKeyRegistry.d.ts.map +0 -1
  22. package/dist/authorization/CapabilityKeyRegistry.js +0 -509
  23. package/dist/authorization/CapabilityKeyRegistry.js.map +0 -1
  24. package/dist/authorization/authorization.schema.d.ts +0 -233
  25. package/dist/authorization/authorization.schema.d.ts.map +0 -1
  26. package/dist/authorization/authorization.schema.js +0 -220
  27. package/dist/authorization/authorization.schema.js.map +0 -1
  28. package/dist/authorization/authorization.schema.test.d.ts +0 -5
  29. package/dist/authorization/authorization.schema.test.d.ts.map +0 -1
  30. package/dist/authorization/authorization.schema.test.js +0 -618
  31. package/dist/authorization/authorization.schema.test.js.map +0 -1
  32. package/dist/authorization/index.d.ts +0 -38
  33. package/dist/authorization/index.d.ts.map +0 -1
  34. package/dist/authorization/index.js +0 -52
  35. package/dist/authorization/index.js.map +0 -1
  36. package/dist/authorization/spaceCreation.d.ts +0 -96
  37. package/dist/authorization/spaceCreation.d.ts.map +0 -1
  38. package/dist/authorization/spaceCreation.js +0 -35
  39. package/dist/authorization/spaceCreation.js.map +0 -1
  40. package/dist/authorization/spaceCreation.schema.d.ts +0 -67
  41. package/dist/authorization/spaceCreation.schema.d.ts.map +0 -1
  42. package/dist/authorization/spaceCreation.schema.js +0 -95
  43. package/dist/authorization/spaceCreation.schema.js.map +0 -1
  44. package/dist/authorization/spaceCreation.schema.test.d.ts +0 -5
  45. package/dist/authorization/spaceCreation.schema.test.d.ts.map +0 -1
  46. package/dist/authorization/spaceCreation.schema.test.js +0 -168
  47. package/dist/authorization/spaceCreation.schema.test.js.map +0 -1
  48. package/dist/authorization/strategies.d.ts +0 -134
  49. package/dist/authorization/strategies.d.ts.map +0 -1
  50. package/dist/authorization/strategies.js +0 -15
  51. package/dist/authorization/strategies.js.map +0 -1
  52. package/dist/authorization/strategies.schema.d.ts +0 -185
  53. package/dist/authorization/strategies.schema.d.ts.map +0 -1
  54. package/dist/authorization/strategies.schema.js +0 -147
  55. package/dist/authorization/strategies.schema.js.map +0 -1
  56. package/dist/authorization/strategies.schema.test.d.ts +0 -5
  57. package/dist/authorization/strategies.schema.test.d.ts.map +0 -1
  58. package/dist/authorization/strategies.schema.test.js +0 -253
  59. package/dist/authorization/strategies.schema.test.js.map +0 -1
  60. package/dist/client-types.d.ts +0 -128
  61. package/dist/client-types.d.ts.map +0 -1
  62. package/dist/client-types.js +0 -40
  63. package/dist/client-types.js.map +0 -1
  64. package/dist/delegations/DelegationManager.d.ts +0 -164
  65. package/dist/delegations/DelegationManager.d.ts.map +0 -1
  66. package/dist/delegations/DelegationManager.js +0 -428
  67. package/dist/delegations/DelegationManager.js.map +0 -1
  68. package/dist/delegations/SharingService.d.ts +0 -341
  69. package/dist/delegations/SharingService.d.ts.map +0 -1
  70. package/dist/delegations/SharingService.js +0 -722
  71. package/dist/delegations/SharingService.js.map +0 -1
  72. package/dist/delegations/SharingService.schema.d.ts +0 -409
  73. package/dist/delegations/SharingService.schema.d.ts.map +0 -1
  74. package/dist/delegations/SharingService.schema.js +0 -222
  75. package/dist/delegations/SharingService.schema.js.map +0 -1
  76. package/dist/delegations/index.d.ts +0 -38
  77. package/dist/delegations/index.d.ts.map +0 -1
  78. package/dist/delegations/index.js +0 -42
  79. package/dist/delegations/index.js.map +0 -1
  80. package/dist/delegations/types.d.ts +0 -13
  81. package/dist/delegations/types.d.ts.map +0 -1
  82. package/dist/delegations/types.js +0 -42
  83. package/dist/delegations/types.js.map +0 -1
  84. package/dist/delegations/types.schema.d.ts +0 -1773
  85. package/dist/delegations/types.schema.d.ts.map +0 -1
  86. package/dist/delegations/types.schema.js +0 -535
  87. package/dist/delegations/types.schema.js.map +0 -1
  88. package/dist/delegations/types.schema.test.d.ts +0 -5
  89. package/dist/delegations/types.schema.test.d.ts.map +0 -1
  90. package/dist/delegations/types.schema.test.js +0 -627
  91. package/dist/delegations/types.schema.test.js.map +0 -1
  92. package/dist/ens.d.ts +0 -17
  93. package/dist/ens.d.ts.map +0 -1
  94. package/dist/ens.js +0 -10
  95. package/dist/ens.js.map +0 -1
  96. package/dist/index.d.ts.map +0 -1
  97. package/dist/json-schema.d.ts +0 -327
  98. package/dist/json-schema.d.ts.map +0 -1
  99. package/dist/json-schema.js +0 -703
  100. package/dist/json-schema.js.map +0 -1
  101. package/dist/json-schema.test.d.ts +0 -7
  102. package/dist/json-schema.test.d.ts.map +0 -1
  103. package/dist/json-schema.test.js +0 -365
  104. package/dist/json-schema.test.js.map +0 -1
  105. package/dist/notifications.d.ts +0 -33
  106. package/dist/notifications.d.ts.map +0 -1
  107. package/dist/notifications.js +0 -15
  108. package/dist/notifications.js.map +0 -1
  109. package/dist/signer.d.ts +0 -28
  110. package/dist/signer.d.ts.map +0 -1
  111. package/dist/signer.js +0 -2
  112. package/dist/signer.js.map +0 -1
  113. package/dist/space.d.ts +0 -57
  114. package/dist/space.d.ts.map +0 -1
  115. package/dist/space.js +0 -87
  116. package/dist/space.js.map +0 -1
  117. package/dist/space.schema.d.ts +0 -65
  118. package/dist/space.schema.d.ts.map +0 -1
  119. package/dist/space.schema.js +0 -65
  120. package/dist/space.schema.js.map +0 -1
  121. package/dist/space.schema.test.d.ts +0 -5
  122. package/dist/space.schema.test.d.ts.map +0 -1
  123. package/dist/space.schema.test.js +0 -148
  124. package/dist/space.schema.test.js.map +0 -1
  125. package/dist/space.test.d.ts +0 -5
  126. package/dist/space.test.d.ts.map +0 -1
  127. package/dist/space.test.js +0 -87
  128. package/dist/space.test.js.map +0 -1
  129. package/dist/spaces/Space.d.ts +0 -175
  130. package/dist/spaces/Space.d.ts.map +0 -1
  131. package/dist/spaces/Space.js +0 -84
  132. package/dist/spaces/Space.js.map +0 -1
  133. package/dist/spaces/SpaceService.d.ts +0 -291
  134. package/dist/spaces/SpaceService.d.ts.map +0 -1
  135. package/dist/spaces/SpaceService.js +0 -740
  136. package/dist/spaces/SpaceService.js.map +0 -1
  137. package/dist/spaces/index.d.ts +0 -11
  138. package/dist/spaces/index.d.ts.map +0 -1
  139. package/dist/spaces/index.js +0 -22
  140. package/dist/spaces/index.js.map +0 -1
  141. package/dist/spaces/spaces.schema.d.ts +0 -421
  142. package/dist/spaces/spaces.schema.d.ts.map +0 -1
  143. package/dist/spaces/spaces.schema.js +0 -342
  144. package/dist/spaces/spaces.schema.js.map +0 -1
  145. package/dist/spaces/spaces.schema.test.d.ts +0 -5
  146. package/dist/spaces/spaces.schema.test.d.ts.map +0 -1
  147. package/dist/spaces/spaces.schema.test.js +0 -471
  148. package/dist/spaces/spaces.schema.test.js.map +0 -1
  149. package/dist/storage.d.ts +0 -47
  150. package/dist/storage.d.ts.map +0 -1
  151. package/dist/storage.js +0 -14
  152. package/dist/storage.js.map +0 -1
  153. package/dist/storage.schema.d.ts +0 -291
  154. package/dist/storage.schema.d.ts.map +0 -1
  155. package/dist/storage.schema.js +0 -189
  156. package/dist/storage.schema.js.map +0 -1
  157. package/dist/storage.schema.test.d.ts +0 -5
  158. package/dist/storage.schema.test.d.ts.map +0 -1
  159. package/dist/storage.schema.test.js +0 -346
  160. package/dist/storage.schema.test.js.map +0 -1
  161. package/dist/userAuthorization.d.ts +0 -117
  162. package/dist/userAuthorization.d.ts.map +0 -1
  163. package/dist/userAuthorization.js +0 -3
  164. package/dist/userAuthorization.js.map +0 -1
  165. package/dist/userAuthorization.schema.d.ts +0 -260
  166. package/dist/userAuthorization.schema.d.ts.map +0 -1
  167. package/dist/userAuthorization.schema.js +0 -169
  168. package/dist/userAuthorization.schema.js.map +0 -1
  169. package/dist/userAuthorization.schema.test.d.ts +0 -5
  170. package/dist/userAuthorization.schema.test.d.ts.map +0 -1
  171. package/dist/userAuthorization.schema.test.js +0 -356
  172. package/dist/userAuthorization.schema.test.js.map +0 -1
  173. package/dist/version.d.ts +0 -32
  174. package/dist/version.d.ts.map +0 -1
  175. package/dist/version.js +0 -59
  176. package/dist/version.js.map +0 -1
  177. package/dist/wasm-validation.d.ts +0 -291
  178. package/dist/wasm-validation.d.ts.map +0 -1
  179. package/dist/wasm-validation.js +0 -221
  180. package/dist/wasm-validation.js.map +0 -1
  181. package/dist/wasm-validation.test.d.ts +0 -5
  182. package/dist/wasm-validation.test.d.ts.map +0 -1
  183. package/dist/wasm-validation.test.js +0 -233
  184. package/dist/wasm-validation.test.js.map +0 -1
  185. package/dist/wasm.d.ts +0 -66
  186. package/dist/wasm.d.ts.map +0 -1
  187. package/dist/wasm.js +0 -10
  188. package/dist/wasm.js.map +0 -1
@@ -1,136 +0,0 @@
1
- /**
2
- * Zod schemas for TinyCloud SDK configuration types.
3
- *
4
- * These schemas provide runtime validation for TinyCloud configuration.
5
- * Types are derived from schemas using z.infer<>.
6
- *
7
- * @packageDocumentation
8
- */
9
- import { z } from "zod";
10
- // =============================================================================
11
- // Retry Policy Schema
12
- // =============================================================================
13
- /**
14
- * Schema for backoff strategy.
15
- */
16
- export const BackoffStrategySchema = z.enum(["none", "linear", "exponential"]);
17
- /**
18
- * Schema for retry policy configuration.
19
- */
20
- export const RetryPolicySchema = z.object({
21
- /** Maximum number of attempts (including initial) */
22
- maxAttempts: z.number().int().positive(),
23
- /** Backoff strategy between retries */
24
- backoff: BackoffStrategySchema,
25
- /** Base delay in milliseconds for backoff calculation */
26
- baseDelayMs: z.number().int().nonnegative(),
27
- /** Maximum delay in milliseconds between retries */
28
- maxDelayMs: z.number().int().nonnegative(),
29
- /** Error codes that should trigger a retry */
30
- retryableErrors: z.array(z.string()),
31
- });
32
- /**
33
- * Schema for partial retry policy (all fields optional).
34
- */
35
- export const PartialRetryPolicySchema = RetryPolicySchema.partial();
36
- // =============================================================================
37
- // TinyCloud Config Schema
38
- // =============================================================================
39
- /**
40
- * Schema for TinyCloud SDK configuration.
41
- */
42
- export const TinyCloudConfigSchema = z.object({
43
- /** Whether to automatically resolve ENS names */
44
- resolveEns: z.boolean().optional(),
45
- // === Service Configuration ===
46
- /**
47
- * TinyCloud host URLs.
48
- * Required when using services.
49
- */
50
- hosts: z.array(z.string()).optional(),
51
- /**
52
- * Platform-specific invoke function from WASM binding.
53
- * Required when using services.
54
- */
55
- invoke: z
56
- .unknown()
57
- .refine((val) => val === undefined || typeof val === "function", { message: "Expected an invoke function or undefined" })
58
- .optional(),
59
- /**
60
- * Custom fetch implementation.
61
- * Defaults to globalThis.fetch.
62
- */
63
- fetch: z
64
- .unknown()
65
- .refine((val) => val === undefined || typeof val === "function", { message: "Expected a fetch function or undefined" })
66
- .optional(),
67
- /**
68
- * Service constructors to register.
69
- * Built-in services (like KVService) are registered by default unless overridden.
70
- */
71
- services: z
72
- .record(z.string(), z.unknown().refine((val) => typeof val === "function", { message: "Expected a service constructor" }))
73
- .optional(),
74
- /**
75
- * Per-service configuration.
76
- */
77
- serviceConfigs: z.record(z.string(), z.record(z.string(), z.unknown())).optional(),
78
- /**
79
- * Retry policy for service operations.
80
- */
81
- retryPolicy: PartialRetryPolicySchema.optional(),
82
- });
83
- // =============================================================================
84
- // Validation Helpers
85
- // =============================================================================
86
- /**
87
- * Validates a TinyCloudConfig object and returns a Result.
88
- *
89
- * @param data - Unknown data to validate
90
- * @returns Result with validated data or validation error
91
- *
92
- * @example
93
- * ```typescript
94
- * const result = validateTinyCloudConfig(rawConfig);
95
- * if (result.ok) {
96
- * // result.data is typed as TinyCloudConfig
97
- * console.log(result.data.hosts);
98
- * } else {
99
- * console.error(result.error.message);
100
- * }
101
- * ```
102
- */
103
- export function validateTinyCloudConfig(data) {
104
- const result = TinyCloudConfigSchema.safeParse(data);
105
- if (!result.success) {
106
- return {
107
- ok: false,
108
- error: {
109
- code: "VALIDATION_ERROR",
110
- message: result.error.message,
111
- service: "tinycloud",
112
- meta: { issues: result.error.issues },
113
- },
114
- };
115
- }
116
- return { ok: true, data: result.data };
117
- }
118
- /**
119
- * Validates a RetryPolicy object and returns a Result.
120
- */
121
- export function validateRetryPolicy(data) {
122
- const result = RetryPolicySchema.safeParse(data);
123
- if (!result.success) {
124
- return {
125
- ok: false,
126
- error: {
127
- code: "VALIDATION_ERROR",
128
- message: result.error.message,
129
- service: "tinycloud",
130
- meta: { issues: result.error.issues },
131
- },
132
- };
133
- }
134
- return { ok: true, data: result.data };
135
- }
136
- //# sourceMappingURL=TinyCloud.schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TinyCloud.schema.js","sourceRoot":"","sources":["../src/TinyCloud.schema.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for TinyCloud configuration schemas.
3
- */
4
- export {};
5
- //# sourceMappingURL=TinyCloud.schema.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TinyCloud.schema.test.d.ts","sourceRoot":"","sources":["../src/TinyCloud.schema.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,286 +0,0 @@
1
- /**
2
- * Tests for TinyCloud configuration schemas.
3
- */
4
- import { describe, it, expect } from "bun:test";
5
- import { BackoffStrategySchema, RetryPolicySchema, PartialRetryPolicySchema, TinyCloudConfigSchema, validateTinyCloudConfig, validateRetryPolicy, } from "./TinyCloud.schema";
6
- describe("BackoffStrategySchema", () => {
7
- it("should accept valid backoff strategies", () => {
8
- expect(BackoffStrategySchema.safeParse("none").success).toBe(true);
9
- expect(BackoffStrategySchema.safeParse("linear").success).toBe(true);
10
- expect(BackoffStrategySchema.safeParse("exponential").success).toBe(true);
11
- });
12
- it("should reject invalid backoff strategies", () => {
13
- expect(BackoffStrategySchema.safeParse("invalid").success).toBe(false);
14
- expect(BackoffStrategySchema.safeParse("").success).toBe(false);
15
- expect(BackoffStrategySchema.safeParse(123).success).toBe(false);
16
- });
17
- });
18
- describe("RetryPolicySchema", () => {
19
- const validPolicy = {
20
- maxAttempts: 3,
21
- backoff: "exponential",
22
- baseDelayMs: 1000,
23
- maxDelayMs: 10000,
24
- retryableErrors: ["NETWORK_ERROR", "TIMEOUT"],
25
- };
26
- it("should accept valid retry policy", () => {
27
- const result = RetryPolicySchema.safeParse(validPolicy);
28
- expect(result.success).toBe(true);
29
- });
30
- it("should accept zero delays", () => {
31
- const result = RetryPolicySchema.safeParse({
32
- ...validPolicy,
33
- baseDelayMs: 0,
34
- maxDelayMs: 0,
35
- });
36
- expect(result.success).toBe(true);
37
- });
38
- it("should accept empty retryableErrors array", () => {
39
- const result = RetryPolicySchema.safeParse({
40
- ...validPolicy,
41
- retryableErrors: [],
42
- });
43
- expect(result.success).toBe(true);
44
- });
45
- it("should reject negative maxAttempts", () => {
46
- const result = RetryPolicySchema.safeParse({
47
- ...validPolicy,
48
- maxAttempts: -1,
49
- });
50
- expect(result.success).toBe(false);
51
- });
52
- it("should reject zero maxAttempts", () => {
53
- const result = RetryPolicySchema.safeParse({
54
- ...validPolicy,
55
- maxAttempts: 0,
56
- });
57
- expect(result.success).toBe(false);
58
- });
59
- it("should reject non-integer maxAttempts", () => {
60
- const result = RetryPolicySchema.safeParse({
61
- ...validPolicy,
62
- maxAttempts: 1.5,
63
- });
64
- expect(result.success).toBe(false);
65
- });
66
- it("should reject negative delays", () => {
67
- const result = RetryPolicySchema.safeParse({
68
- ...validPolicy,
69
- baseDelayMs: -1,
70
- });
71
- expect(result.success).toBe(false);
72
- });
73
- it("should reject invalid backoff strategy", () => {
74
- const result = RetryPolicySchema.safeParse({
75
- ...validPolicy,
76
- backoff: "invalid",
77
- });
78
- expect(result.success).toBe(false);
79
- });
80
- it("should reject missing required fields", () => {
81
- expect(RetryPolicySchema.safeParse({}).success).toBe(false);
82
- expect(RetryPolicySchema.safeParse({ maxAttempts: 3 }).success).toBe(false);
83
- });
84
- });
85
- describe("PartialRetryPolicySchema", () => {
86
- it("should accept empty object", () => {
87
- const result = PartialRetryPolicySchema.safeParse({});
88
- expect(result.success).toBe(true);
89
- });
90
- it("should accept partial policy", () => {
91
- const result = PartialRetryPolicySchema.safeParse({
92
- maxAttempts: 5,
93
- });
94
- expect(result.success).toBe(true);
95
- });
96
- it("should accept full policy", () => {
97
- const result = PartialRetryPolicySchema.safeParse({
98
- maxAttempts: 3,
99
- backoff: "exponential",
100
- baseDelayMs: 1000,
101
- maxDelayMs: 10000,
102
- retryableErrors: ["NETWORK_ERROR"],
103
- });
104
- expect(result.success).toBe(true);
105
- });
106
- it("should still validate values when present", () => {
107
- const result = PartialRetryPolicySchema.safeParse({
108
- maxAttempts: -1,
109
- });
110
- expect(result.success).toBe(false);
111
- });
112
- });
113
- describe("TinyCloudConfigSchema", () => {
114
- it("should accept empty config", () => {
115
- const result = TinyCloudConfigSchema.safeParse({});
116
- expect(result.success).toBe(true);
117
- });
118
- it("should accept minimal config", () => {
119
- const result = TinyCloudConfigSchema.safeParse({
120
- hosts: ["https://node.tinycloud.xyz"],
121
- });
122
- expect(result.success).toBe(true);
123
- });
124
- it("should accept full config", () => {
125
- const result = TinyCloudConfigSchema.safeParse({
126
- resolveEns: true,
127
- hosts: ["https://node.tinycloud.xyz"],
128
- invoke: () => { },
129
- fetch: () => { },
130
- services: {
131
- kv: class KVService {
132
- },
133
- custom: class CustomService {
134
- },
135
- },
136
- serviceConfigs: {
137
- kv: { prefix: "myapp" },
138
- custom: { maxSize: 1000 },
139
- },
140
- retryPolicy: {
141
- maxAttempts: 5,
142
- backoff: "linear",
143
- },
144
- });
145
- expect(result.success).toBe(true);
146
- });
147
- it("should accept resolveEns boolean", () => {
148
- expect(TinyCloudConfigSchema.safeParse({ resolveEns: true }).success).toBe(true);
149
- expect(TinyCloudConfigSchema.safeParse({ resolveEns: false }).success).toBe(true);
150
- });
151
- it("should reject non-boolean resolveEns", () => {
152
- const result = TinyCloudConfigSchema.safeParse({
153
- resolveEns: "true",
154
- });
155
- expect(result.success).toBe(false);
156
- });
157
- it("should accept hosts array", () => {
158
- const result = TinyCloudConfigSchema.safeParse({
159
- hosts: ["https://a.com", "https://b.com"],
160
- });
161
- expect(result.success).toBe(true);
162
- });
163
- it("should reject non-array hosts", () => {
164
- const result = TinyCloudConfigSchema.safeParse({
165
- hosts: "https://node.tinycloud.xyz",
166
- });
167
- expect(result.success).toBe(false);
168
- });
169
- it("should accept function invoke", () => {
170
- const result = TinyCloudConfigSchema.safeParse({
171
- invoke: () => { },
172
- });
173
- expect(result.success).toBe(true);
174
- });
175
- it("should accept async function invoke", () => {
176
- const result = TinyCloudConfigSchema.safeParse({
177
- invoke: async () => { },
178
- });
179
- expect(result.success).toBe(true);
180
- });
181
- it("should reject non-function invoke", () => {
182
- const result = TinyCloudConfigSchema.safeParse({
183
- invoke: "not a function",
184
- });
185
- expect(result.success).toBe(false);
186
- });
187
- it("should accept function fetch", () => {
188
- const result = TinyCloudConfigSchema.safeParse({
189
- fetch: () => { },
190
- });
191
- expect(result.success).toBe(true);
192
- });
193
- it("should reject non-function fetch", () => {
194
- const result = TinyCloudConfigSchema.safeParse({
195
- fetch: "not a function",
196
- });
197
- expect(result.success).toBe(false);
198
- });
199
- it("should accept services record with constructors", () => {
200
- class MyService {
201
- }
202
- const result = TinyCloudConfigSchema.safeParse({
203
- services: { myService: MyService },
204
- });
205
- expect(result.success).toBe(true);
206
- });
207
- it("should reject services with non-function values", () => {
208
- const result = TinyCloudConfigSchema.safeParse({
209
- services: { myService: "not a constructor" },
210
- });
211
- expect(result.success).toBe(false);
212
- });
213
- it("should accept serviceConfigs record", () => {
214
- const result = TinyCloudConfigSchema.safeParse({
215
- serviceConfigs: {
216
- kv: { prefix: "test", nested: { deep: true } },
217
- },
218
- });
219
- expect(result.success).toBe(true);
220
- });
221
- it("should accept partial retryPolicy", () => {
222
- const result = TinyCloudConfigSchema.safeParse({
223
- retryPolicy: { maxAttempts: 5 },
224
- });
225
- expect(result.success).toBe(true);
226
- });
227
- it("should reject invalid retryPolicy values", () => {
228
- const result = TinyCloudConfigSchema.safeParse({
229
- retryPolicy: { maxAttempts: -1 },
230
- });
231
- expect(result.success).toBe(false);
232
- });
233
- });
234
- describe("validateTinyCloudConfig", () => {
235
- it("should return ok result for valid config", () => {
236
- const result = validateTinyCloudConfig({
237
- hosts: ["https://node.tinycloud.xyz"],
238
- resolveEns: true,
239
- });
240
- expect(result.ok).toBe(true);
241
- if (result.ok) {
242
- expect(result.data.hosts).toEqual(["https://node.tinycloud.xyz"]);
243
- expect(result.data.resolveEns).toBe(true);
244
- }
245
- });
246
- it("should return ok result for empty config", () => {
247
- const result = validateTinyCloudConfig({});
248
- expect(result.ok).toBe(true);
249
- });
250
- it("should return error result for invalid config", () => {
251
- const result = validateTinyCloudConfig({
252
- hosts: "not an array",
253
- });
254
- expect(result.ok).toBe(false);
255
- if (!result.ok) {
256
- expect(result.error.code).toBe("VALIDATION_ERROR");
257
- expect(result.error.service).toBe("tinycloud");
258
- expect(result.error.meta?.issues).toBeDefined();
259
- }
260
- });
261
- });
262
- describe("validateRetryPolicy", () => {
263
- it("should return ok result for valid policy", () => {
264
- const result = validateRetryPolicy({
265
- maxAttempts: 3,
266
- backoff: "exponential",
267
- baseDelayMs: 1000,
268
- maxDelayMs: 10000,
269
- retryableErrors: ["NETWORK_ERROR"],
270
- });
271
- expect(result.ok).toBe(true);
272
- if (result.ok) {
273
- expect(result.data.maxAttempts).toBe(3);
274
- expect(result.data.backoff).toBe("exponential");
275
- }
276
- });
277
- it("should return error result for invalid policy", () => {
278
- const result = validateRetryPolicy({});
279
- expect(result.ok).toBe(false);
280
- if (!result.ok) {
281
- expect(result.error.code).toBe("VALIDATION_ERROR");
282
- expect(result.error.service).toBe("tinycloud");
283
- }
284
- });
285
- });
286
- //# sourceMappingURL=TinyCloud.schema.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TinyCloud.schema.test.js","sourceRoot":"","sources":["../src/TinyCloud.schema.test.ts"],"names":[],"mappings":"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"}