@tinybirdco/sdk 0.0.1

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 (258) hide show
  1. package/README.md +518 -0
  2. package/bin/tinybird.js +7 -0
  3. package/dist/api/branches.d.ts +98 -0
  4. package/dist/api/branches.d.ts.map +1 -0
  5. package/dist/api/branches.js +203 -0
  6. package/dist/api/branches.js.map +1 -0
  7. package/dist/api/branches.test.d.ts +2 -0
  8. package/dist/api/branches.test.d.ts.map +1 -0
  9. package/dist/api/branches.test.js +286 -0
  10. package/dist/api/branches.test.js.map +1 -0
  11. package/dist/api/build.d.ts +130 -0
  12. package/dist/api/build.d.ts.map +1 -0
  13. package/dist/api/build.js +143 -0
  14. package/dist/api/build.js.map +1 -0
  15. package/dist/api/build.test.d.ts +2 -0
  16. package/dist/api/build.test.d.ts.map +1 -0
  17. package/dist/api/build.test.js +138 -0
  18. package/dist/api/build.test.js.map +1 -0
  19. package/dist/api/deploy.d.ts +39 -0
  20. package/dist/api/deploy.d.ts.map +1 -0
  21. package/dist/api/deploy.js +135 -0
  22. package/dist/api/deploy.js.map +1 -0
  23. package/dist/api/deploy.test.d.ts +2 -0
  24. package/dist/api/deploy.test.d.ts.map +1 -0
  25. package/dist/api/deploy.test.js +118 -0
  26. package/dist/api/deploy.test.js.map +1 -0
  27. package/dist/api/workspaces.d.ts +46 -0
  28. package/dist/api/workspaces.d.ts.map +1 -0
  29. package/dist/api/workspaces.js +39 -0
  30. package/dist/api/workspaces.js.map +1 -0
  31. package/dist/api/workspaces.test.d.ts +2 -0
  32. package/dist/api/workspaces.test.d.ts.map +1 -0
  33. package/dist/api/workspaces.test.js +65 -0
  34. package/dist/api/workspaces.test.js.map +1 -0
  35. package/dist/cli/auth.d.ts +86 -0
  36. package/dist/cli/auth.d.ts.map +1 -0
  37. package/dist/cli/auth.js +284 -0
  38. package/dist/cli/auth.js.map +1 -0
  39. package/dist/cli/branch-store.d.ts +53 -0
  40. package/dist/cli/branch-store.d.ts.map +1 -0
  41. package/dist/cli/branch-store.js +91 -0
  42. package/dist/cli/branch-store.js.map +1 -0
  43. package/dist/cli/branch-store.test.d.ts +2 -0
  44. package/dist/cli/branch-store.test.d.ts.map +1 -0
  45. package/dist/cli/branch-store.test.js +115 -0
  46. package/dist/cli/branch-store.test.js.map +1 -0
  47. package/dist/cli/commands/branch.d.ts +82 -0
  48. package/dist/cli/commands/branch.d.ts.map +1 -0
  49. package/dist/cli/commands/branch.js +215 -0
  50. package/dist/cli/commands/branch.js.map +1 -0
  51. package/dist/cli/commands/build.d.ts +43 -0
  52. package/dist/cli/commands/build.d.ts.map +1 -0
  53. package/dist/cli/commands/build.js +138 -0
  54. package/dist/cli/commands/build.js.map +1 -0
  55. package/dist/cli/commands/dev.d.ts +78 -0
  56. package/dist/cli/commands/dev.d.ts.map +1 -0
  57. package/dist/cli/commands/dev.js +226 -0
  58. package/dist/cli/commands/dev.js.map +1 -0
  59. package/dist/cli/commands/init.d.ts +45 -0
  60. package/dist/cli/commands/init.d.ts.map +1 -0
  61. package/dist/cli/commands/init.js +277 -0
  62. package/dist/cli/commands/init.js.map +1 -0
  63. package/dist/cli/commands/init.test.d.ts +2 -0
  64. package/dist/cli/commands/init.test.d.ts.map +1 -0
  65. package/dist/cli/commands/init.test.js +158 -0
  66. package/dist/cli/commands/init.test.js.map +1 -0
  67. package/dist/cli/commands/login.d.ts +37 -0
  68. package/dist/cli/commands/login.d.ts.map +1 -0
  69. package/dist/cli/commands/login.js +64 -0
  70. package/dist/cli/commands/login.js.map +1 -0
  71. package/dist/cli/config.d.ts +114 -0
  72. package/dist/cli/config.d.ts.map +1 -0
  73. package/dist/cli/config.js +258 -0
  74. package/dist/cli/config.js.map +1 -0
  75. package/dist/cli/config.test.d.ts +2 -0
  76. package/dist/cli/config.test.d.ts.map +1 -0
  77. package/dist/cli/config.test.js +243 -0
  78. package/dist/cli/config.test.js.map +1 -0
  79. package/dist/cli/env.d.ts +29 -0
  80. package/dist/cli/env.d.ts.map +1 -0
  81. package/dist/cli/env.js +66 -0
  82. package/dist/cli/env.js.map +1 -0
  83. package/dist/cli/git.d.ts +29 -0
  84. package/dist/cli/git.d.ts.map +1 -0
  85. package/dist/cli/git.js +114 -0
  86. package/dist/cli/git.js.map +1 -0
  87. package/dist/cli/git.test.d.ts +2 -0
  88. package/dist/cli/git.test.d.ts.map +1 -0
  89. package/dist/cli/git.test.js +125 -0
  90. package/dist/cli/git.test.js.map +1 -0
  91. package/dist/cli/index.d.ts +7 -0
  92. package/dist/cli/index.d.ts.map +1 -0
  93. package/dist/cli/index.js +337 -0
  94. package/dist/cli/index.js.map +1 -0
  95. package/dist/cli/utils/schema-validation.d.ts +95 -0
  96. package/dist/cli/utils/schema-validation.d.ts.map +1 -0
  97. package/dist/cli/utils/schema-validation.js +175 -0
  98. package/dist/cli/utils/schema-validation.js.map +1 -0
  99. package/dist/cli/utils/schema-validation.test.d.ts +5 -0
  100. package/dist/cli/utils/schema-validation.test.d.ts.map +1 -0
  101. package/dist/cli/utils/schema-validation.test.js +173 -0
  102. package/dist/cli/utils/schema-validation.test.js.map +1 -0
  103. package/dist/client/base.d.ts +116 -0
  104. package/dist/client/base.d.ts.map +1 -0
  105. package/dist/client/base.js +328 -0
  106. package/dist/client/base.js.map +1 -0
  107. package/dist/client/types.d.ts +137 -0
  108. package/dist/client/types.d.ts.map +1 -0
  109. package/dist/client/types.js +43 -0
  110. package/dist/client/types.js.map +1 -0
  111. package/dist/generator/client.d.ts +44 -0
  112. package/dist/generator/client.d.ts.map +1 -0
  113. package/dist/generator/client.js +144 -0
  114. package/dist/generator/client.js.map +1 -0
  115. package/dist/generator/datasource.d.ts +57 -0
  116. package/dist/generator/datasource.d.ts.map +1 -0
  117. package/dist/generator/datasource.js +169 -0
  118. package/dist/generator/datasource.js.map +1 -0
  119. package/dist/generator/datasource.test.d.ts +2 -0
  120. package/dist/generator/datasource.test.d.ts.map +1 -0
  121. package/dist/generator/datasource.test.js +254 -0
  122. package/dist/generator/datasource.test.js.map +1 -0
  123. package/dist/generator/index.d.ts +131 -0
  124. package/dist/generator/index.d.ts.map +1 -0
  125. package/dist/generator/index.js +121 -0
  126. package/dist/generator/index.js.map +1 -0
  127. package/dist/generator/index.test.d.ts +2 -0
  128. package/dist/generator/index.test.d.ts.map +1 -0
  129. package/dist/generator/index.test.js +175 -0
  130. package/dist/generator/index.test.js.map +1 -0
  131. package/dist/generator/loader.d.ts +156 -0
  132. package/dist/generator/loader.d.ts.map +1 -0
  133. package/dist/generator/loader.js +295 -0
  134. package/dist/generator/loader.js.map +1 -0
  135. package/dist/generator/pipe.d.ts +72 -0
  136. package/dist/generator/pipe.d.ts.map +1 -0
  137. package/dist/generator/pipe.js +174 -0
  138. package/dist/generator/pipe.js.map +1 -0
  139. package/dist/generator/pipe.test.d.ts +2 -0
  140. package/dist/generator/pipe.test.d.ts.map +1 -0
  141. package/dist/generator/pipe.test.js +393 -0
  142. package/dist/generator/pipe.test.js.map +1 -0
  143. package/dist/index.d.ts +74 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +73 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/infer/index.d.ts +202 -0
  148. package/dist/infer/index.d.ts.map +1 -0
  149. package/dist/infer/index.js +5 -0
  150. package/dist/infer/index.js.map +1 -0
  151. package/dist/schema/datasource.d.ts +135 -0
  152. package/dist/schema/datasource.d.ts.map +1 -0
  153. package/dist/schema/datasource.js +105 -0
  154. package/dist/schema/datasource.js.map +1 -0
  155. package/dist/schema/datasource.test.d.ts +2 -0
  156. package/dist/schema/datasource.test.d.ts.map +1 -0
  157. package/dist/schema/datasource.test.js +142 -0
  158. package/dist/schema/datasource.test.js.map +1 -0
  159. package/dist/schema/engines.d.ts +157 -0
  160. package/dist/schema/engines.d.ts.map +1 -0
  161. package/dist/schema/engines.js +155 -0
  162. package/dist/schema/engines.js.map +1 -0
  163. package/dist/schema/engines.test.d.ts +2 -0
  164. package/dist/schema/engines.test.d.ts.map +1 -0
  165. package/dist/schema/engines.test.js +221 -0
  166. package/dist/schema/engines.test.js.map +1 -0
  167. package/dist/schema/params.d.ts +106 -0
  168. package/dist/schema/params.d.ts.map +1 -0
  169. package/dist/schema/params.js +138 -0
  170. package/dist/schema/params.js.map +1 -0
  171. package/dist/schema/params.test.d.ts +2 -0
  172. package/dist/schema/params.test.d.ts.map +1 -0
  173. package/dist/schema/params.test.js +175 -0
  174. package/dist/schema/params.test.js.map +1 -0
  175. package/dist/schema/pipe.d.ts +436 -0
  176. package/dist/schema/pipe.d.ts.map +1 -0
  177. package/dist/schema/pipe.js +484 -0
  178. package/dist/schema/pipe.js.map +1 -0
  179. package/dist/schema/pipe.test.d.ts +2 -0
  180. package/dist/schema/pipe.test.d.ts.map +1 -0
  181. package/dist/schema/pipe.test.js +488 -0
  182. package/dist/schema/pipe.test.js.map +1 -0
  183. package/dist/schema/project.d.ts +202 -0
  184. package/dist/schema/project.d.ts.map +1 -0
  185. package/dist/schema/project.js +188 -0
  186. package/dist/schema/project.js.map +1 -0
  187. package/dist/schema/project.test.d.ts +2 -0
  188. package/dist/schema/project.test.d.ts.map +1 -0
  189. package/dist/schema/project.test.js +180 -0
  190. package/dist/schema/project.test.js.map +1 -0
  191. package/dist/schema/types.d.ts +140 -0
  192. package/dist/schema/types.d.ts.map +1 -0
  193. package/dist/schema/types.js +174 -0
  194. package/dist/schema/types.js.map +1 -0
  195. package/dist/schema/types.test.d.ts +2 -0
  196. package/dist/schema/types.test.d.ts.map +1 -0
  197. package/dist/schema/types.test.js +176 -0
  198. package/dist/schema/types.test.js.map +1 -0
  199. package/dist/test/handlers.d.ts +58 -0
  200. package/dist/test/handlers.d.ts.map +1 -0
  201. package/dist/test/handlers.js +62 -0
  202. package/dist/test/handlers.js.map +1 -0
  203. package/dist/test/setup.d.ts +5 -0
  204. package/dist/test/setup.d.ts.map +1 -0
  205. package/dist/test/setup.js +11 -0
  206. package/dist/test/setup.js.map +1 -0
  207. package/package.json +57 -0
  208. package/src/api/branches.test.ts +377 -0
  209. package/src/api/branches.ts +334 -0
  210. package/src/api/build.test.ts +216 -0
  211. package/src/api/build.ts +266 -0
  212. package/src/api/deploy.test.ts +193 -0
  213. package/src/api/deploy.ts +163 -0
  214. package/src/api/workspaces.test.ts +81 -0
  215. package/src/api/workspaces.ts +77 -0
  216. package/src/cli/auth.ts +358 -0
  217. package/src/cli/branch-store.test.ts +139 -0
  218. package/src/cli/branch-store.ts +137 -0
  219. package/src/cli/commands/branch.ts +306 -0
  220. package/src/cli/commands/build.ts +183 -0
  221. package/src/cli/commands/dev.ts +334 -0
  222. package/src/cli/commands/init.test.ts +249 -0
  223. package/src/cli/commands/init.ts +323 -0
  224. package/src/cli/commands/login.ts +98 -0
  225. package/src/cli/config.test.ts +359 -0
  226. package/src/cli/config.ts +335 -0
  227. package/src/cli/env.ts +86 -0
  228. package/src/cli/git.test.ts +147 -0
  229. package/src/cli/git.ts +125 -0
  230. package/src/cli/index.ts +382 -0
  231. package/src/cli/utils/schema-validation.test.ts +222 -0
  232. package/src/cli/utils/schema-validation.ts +272 -0
  233. package/src/client/base.ts +414 -0
  234. package/src/client/types.ts +165 -0
  235. package/src/generator/client.ts +194 -0
  236. package/src/generator/datasource.test.ts +297 -0
  237. package/src/generator/datasource.ts +217 -0
  238. package/src/generator/index.test.ts +209 -0
  239. package/src/generator/index.ts +203 -0
  240. package/src/generator/loader.ts +406 -0
  241. package/src/generator/pipe.test.ts +441 -0
  242. package/src/generator/pipe.ts +220 -0
  243. package/src/index.ts +191 -0
  244. package/src/infer/index.ts +247 -0
  245. package/src/schema/datasource.test.ts +187 -0
  246. package/src/schema/datasource.ts +195 -0
  247. package/src/schema/engines.test.ts +247 -0
  248. package/src/schema/engines.ts +271 -0
  249. package/src/schema/params.test.ts +208 -0
  250. package/src/schema/params.ts +249 -0
  251. package/src/schema/pipe.test.ts +588 -0
  252. package/src/schema/pipe.ts +832 -0
  253. package/src/schema/project.test.ts +236 -0
  254. package/src/schema/project.ts +394 -0
  255. package/src/schema/types.test.ts +212 -0
  256. package/src/schema/types.ts +366 -0
  257. package/src/test/handlers.ts +79 -0
  258. package/src/test/setup.ts +13 -0
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Column type validators for Tinybird datasources
3
+ * Similar to Convex's `v.*` pattern, but for ClickHouse types
4
+ */
5
+ declare const VALIDATOR_BRAND: unique symbol;
6
+ /**
7
+ * Base interface for all type validators
8
+ * The phantom types enable TypeScript to infer the correct types
9
+ */
10
+ export interface TypeValidator<TType, TTinybirdType extends string = string, TModifiers extends TypeModifiers = TypeModifiers> {
11
+ readonly [VALIDATOR_BRAND]: true;
12
+ /** The inferred TypeScript type */
13
+ readonly _type: TType;
14
+ /** The Tinybird/ClickHouse type string */
15
+ readonly _tinybirdType: TTinybirdType;
16
+ /** Metadata about modifiers applied */
17
+ readonly _modifiers: TModifiers;
18
+ /** Make this column nullable */
19
+ nullable(): TypeValidator<TType | null, `Nullable(${TTinybirdType})`, TModifiers & {
20
+ nullable: true;
21
+ }>;
22
+ /** Apply LowCardinality optimization (for strings with few unique values) */
23
+ lowCardinality(): TypeValidator<TType, `LowCardinality(${TTinybirdType})`, TModifiers & {
24
+ lowCardinality: true;
25
+ }>;
26
+ /** Set a default value for the column */
27
+ default(value: TType): TypeValidator<TType, TTinybirdType, TModifiers & {
28
+ hasDefault: true;
29
+ defaultValue: TType;
30
+ }>;
31
+ /** Set a codec for compression */
32
+ codec(codec: string): TypeValidator<TType, TTinybirdType, TModifiers & {
33
+ codec: string;
34
+ }>;
35
+ }
36
+ export interface TypeModifiers {
37
+ nullable?: boolean;
38
+ lowCardinality?: boolean;
39
+ hasDefault?: boolean;
40
+ defaultValue?: unknown;
41
+ codec?: string;
42
+ }
43
+ /**
44
+ * Type validators for Tinybird columns
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * import { t } from '@tinybirdco/sdk';
49
+ *
50
+ * const schema = {
51
+ * id: t.string(),
52
+ * count: t.int32(),
53
+ * timestamp: t.dateTime(),
54
+ * tags: t.array(t.string()),
55
+ * metadata: t.json(),
56
+ * };
57
+ * ```
58
+ */
59
+ export declare const t: {
60
+ /** String type - variable length UTF-8 string */
61
+ readonly string: () => TypeValidator<string, "String", TypeModifiers>;
62
+ /** FixedString(N) - fixed length string, padded with null bytes */
63
+ readonly fixedString: (length: number) => TypeValidator<string, `FixedString(${number})`, TypeModifiers>;
64
+ /** UUID - 16-byte universally unique identifier */
65
+ readonly uuid: () => TypeValidator<string, "UUID", TypeModifiers>;
66
+ /** Int8 - signed 8-bit integer (-128 to 127) */
67
+ readonly int8: () => TypeValidator<number, "Int8", TypeModifiers>;
68
+ /** Int16 - signed 16-bit integer */
69
+ readonly int16: () => TypeValidator<number, "Int16", TypeModifiers>;
70
+ /** Int32 - signed 32-bit integer */
71
+ readonly int32: () => TypeValidator<number, "Int32", TypeModifiers>;
72
+ /** Int64 - signed 64-bit integer (represented as number, may lose precision) */
73
+ readonly int64: () => TypeValidator<number, "Int64", TypeModifiers>;
74
+ /** Int128 - signed 128-bit integer (represented as bigint) */
75
+ readonly int128: () => TypeValidator<bigint, "Int128", TypeModifiers>;
76
+ /** Int256 - signed 256-bit integer (represented as bigint) */
77
+ readonly int256: () => TypeValidator<bigint, "Int256", TypeModifiers>;
78
+ /** UInt8 - unsigned 8-bit integer (0 to 255) */
79
+ readonly uint8: () => TypeValidator<number, "UInt8", TypeModifiers>;
80
+ /** UInt16 - unsigned 16-bit integer */
81
+ readonly uint16: () => TypeValidator<number, "UInt16", TypeModifiers>;
82
+ /** UInt32 - unsigned 32-bit integer */
83
+ readonly uint32: () => TypeValidator<number, "UInt32", TypeModifiers>;
84
+ /** UInt64 - unsigned 64-bit integer (represented as number, may lose precision) */
85
+ readonly uint64: () => TypeValidator<number, "UInt64", TypeModifiers>;
86
+ /** UInt128 - unsigned 128-bit integer (represented as bigint) */
87
+ readonly uint128: () => TypeValidator<bigint, "UInt128", TypeModifiers>;
88
+ /** UInt256 - unsigned 256-bit integer (represented as bigint) */
89
+ readonly uint256: () => TypeValidator<bigint, "UInt256", TypeModifiers>;
90
+ /** Float32 - 32-bit floating point */
91
+ readonly float32: () => TypeValidator<number, "Float32", TypeModifiers>;
92
+ /** Float64 - 64-bit floating point (double precision) */
93
+ readonly float64: () => TypeValidator<number, "Float64", TypeModifiers>;
94
+ /** Decimal(precision, scale) - fixed-point decimal number */
95
+ readonly decimal: (precision: number, scale: number) => TypeValidator<number, `Decimal(${number}, ${number})`, TypeModifiers>;
96
+ /** Bool - boolean value (true/false) */
97
+ readonly bool: () => TypeValidator<boolean, "Bool", TypeModifiers>;
98
+ /** Date - date without time (YYYY-MM-DD) */
99
+ readonly date: () => TypeValidator<Date, "Date", TypeModifiers>;
100
+ /** Date32 - extended date range */
101
+ readonly date32: () => TypeValidator<Date, "Date32", TypeModifiers>;
102
+ /** DateTime - date and time with second precision */
103
+ readonly dateTime: (timezone?: string) => TypeValidator<Date, `DateTime('${string}')`, TypeModifiers> | TypeValidator<Date, "DateTime", TypeModifiers>;
104
+ /** DateTime64 - date and time with sub-second precision */
105
+ readonly dateTime64: (precision?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9, timezone?: string) => TypeValidator<Date, `DateTime64(${number}, '${string}')`, TypeModifiers> | TypeValidator<Date, `DateTime64(${number})`, TypeModifiers>;
106
+ /** Array(T) - array of elements of type T */
107
+ readonly array: <TElement extends TypeValidator<unknown, string, TypeModifiers>>(element: TElement) => TypeValidator<TElement["_type"][], `Array(${TElement["_tinybirdType"]})`, TypeModifiers>;
108
+ /** Tuple(T1, T2, ...) - tuple of heterogeneous types */
109
+ readonly tuple: <TElements extends readonly TypeValidator<unknown, string, TypeModifiers>[]>(...elements: TElements) => TypeValidator<{ [K in keyof TElements]: TElements[K]["_type"]; }, `Tuple(${string})`, TypeModifiers>;
110
+ /** Map(K, V) - dictionary/map type */
111
+ readonly map: <TKey extends TypeValidator<string | number, string, TypeModifiers>, TValue extends TypeValidator<unknown, string, TypeModifiers>>(keyType: TKey, valueType: TValue) => TypeValidator<Map<TKey["_type"], TValue["_type"]>, `Map(${TKey["_tinybirdType"]}, ${TValue["_tinybirdType"]})`, TypeModifiers>;
112
+ /** JSON - semi-structured JSON data */
113
+ readonly json: <TShape = unknown>() => TypeValidator<TShape, "JSON", TypeModifiers>;
114
+ /** Enum8 - enumeration stored as Int8 */
115
+ readonly enum8: <TValues extends readonly string[]>(...values: TValues) => TypeValidator<TValues[number], `Enum8(${string})`, TypeModifiers>;
116
+ /** Enum16 - enumeration stored as Int16 */
117
+ readonly enum16: <TValues extends readonly string[]>(...values: TValues) => TypeValidator<TValues[number], `Enum16(${string})`, TypeModifiers>;
118
+ /** IPv4 - IPv4 address */
119
+ readonly ipv4: () => TypeValidator<string, "IPv4", TypeModifiers>;
120
+ /** IPv6 - IPv6 address */
121
+ readonly ipv6: () => TypeValidator<string, "IPv6", TypeModifiers>;
122
+ /** SimpleAggregateFunction - for materialized views with simple aggregates */
123
+ readonly simpleAggregateFunction: <TFunc extends string, TType extends TypeValidator<unknown, string, TypeModifiers>>(func: TFunc, type: TType) => TypeValidator<TType["_type"], `SimpleAggregateFunction(${TFunc}, ${TType["_tinybirdType"]})`, TypeModifiers>;
124
+ /** AggregateFunction - for materialized views with complex aggregates */
125
+ readonly aggregateFunction: <TFunc extends string, TType extends TypeValidator<unknown, string, TypeModifiers>>(func: TFunc, type: TType) => TypeValidator<TType["_type"], `AggregateFunction(${TFunc}, ${TType["_tinybirdType"]})`, TypeModifiers>;
126
+ };
127
+ /** Type alias for any type validator */
128
+ export type AnyTypeValidator = TypeValidator<unknown, string, TypeModifiers>;
129
+ /** Extract the TypeScript type from a type validator */
130
+ export type InferType<T extends AnyTypeValidator> = T["_type"];
131
+ /** Extract the Tinybird type string from a type validator */
132
+ export type TinybirdType<T extends AnyTypeValidator> = T["_tinybirdType"];
133
+ /** Helper to check if a value is a type validator */
134
+ export declare function isTypeValidator(value: unknown): value is AnyTypeValidator;
135
+ /** Get the Tinybird type string from a validator */
136
+ export declare function getTinybirdType(validator: AnyTypeValidator): string;
137
+ /** Get the modifiers from a validator */
138
+ export declare function getModifiers(validator: AnyTypeValidator): TypeModifiers;
139
+ export {};
140
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,QAAA,MAAM,eAAe,eAA+B,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,aAAa,CAC5B,KAAK,EACL,aAAa,SAAS,MAAM,GAAG,MAAM,EACrC,UAAU,SAAS,aAAa,GAAG,aAAa;IAEhD,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IACjC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,gCAAgC;IAChC,QAAQ,IAAI,aAAa,CAAC,KAAK,GAAG,IAAI,EAAE,YAAY,aAAa,GAAG,EAAE,UAAU,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACvG,6EAA6E;IAC7E,cAAc,IAAI,aAAa,CAAC,KAAK,EAAE,kBAAkB,aAAa,GAAG,EAAE,UAAU,GAAG;QAAE,cAAc,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAClH,yCAAyC;IACzC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,GAAG;QAAE,UAAU,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IACnH,kCAAkC;IAClC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA2ED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,CAAC;IAGZ,iDAAiD;;IAGjD,mEAAmE;mCAC7C,MAAM;IAG5B,mDAAmD;;IAKnD,gDAAgD;;IAGhD,oCAAoC;;IAGpC,oCAAoC;;IAGpC,gFAAgF;;IAGhF,8DAA8D;;IAG9D,8DAA8D;;IAG9D,gDAAgD;;IAGhD,uCAAuC;;IAGvC,uCAAuC;;IAGvC,mFAAmF;;IAGnF,iEAAiE;;IAGjE,iEAAiE;;IAKjE,sCAAsC;;IAGtC,yDAAyD;;IAGzD,6DAA6D;kCACxC,MAAM,SAAS,MAAM;IAO1C,wCAAwC;;IAKxC,4CAA4C;;IAG5C,mCAAmC;;IAGnC,qDAAqD;mCAC/B,MAAM;IAK5B,2DAA2D;sCACnC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAiB,MAAM;IASpF,6CAA6C;qBACrC,QAAQ,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,WAC3D,QAAQ,KAChB,aAAa,CACd,QAAQ,CAAC,OAAO,CAAC,EAAE,EACnB,SAAS,QAAQ,CAAC,eAAe,CAAC,GAAG,EACrC,aAAa,CACd;IAKD,wDAAwD;qBAChD,SAAS,SAAS,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,eACnE,SAAS,KACrB,aAAa,CACd,GAAG,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAE,EACjD,SAAS,MAAM,GAAG,EAClB,aAAa,CACd;IAMD,sCAAsC;mBAEpC,IAAI,SAAS,aAAa,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAClE,MAAM,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,WAEnD,IAAI,aACF,MAAM,KAChB,aAAa,CACd,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EACnC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC,eAAe,CAAC,GAAG,EAC3D,aAAa,CACd;IAMD,uCAAuC;oBAChC,MAAM;IAIb,yCAAyC;qBACjC,OAAO,SAAS,SAAS,MAAM,EAAE,aAAa,OAAO;IAS7D,2CAA2C;sBAClC,OAAO,SAAS,SAAS,MAAM,EAAE,aAAa,OAAO;IAW9D,0BAA0B;;IAG1B,0BAA0B;;IAK1B,8EAA8E;uCAE5E,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,QAErD,KAAK,QACL,KAAK,KACV,aAAa,CACd,KAAK,CAAC,OAAO,CAAC,EACd,2BAA2B,KAAK,KAAK,KAAK,CAAC,eAAe,CAAC,GAAG,EAC9D,aAAa,CACd;IAMD,yEAAyE;iCAEvE,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,QAErD,KAAK,QACL,KAAK,KACV,aAAa,CACd,KAAK,CAAC,OAAO,CAAC,EACd,qBAAqB,KAAK,KAAK,KAAK,CAAC,eAAe,CAAC,GAAG,EACxD,aAAa,CACd;CAKO,CAAC;AAEX,wCAAwC;AACxC,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAE7E,wDAAwD;AACxD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/D,6DAA6D;AAC7D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AAE1E,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAOzE;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAEnE;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,aAAa,CAEvE"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Column type validators for Tinybird datasources
3
+ * Similar to Convex's `v.*` pattern, but for ClickHouse types
4
+ */
5
+ // Symbol for brand typing
6
+ const VALIDATOR_BRAND = Symbol("tinybird.validator");
7
+ function createValidator(tinybirdType, modifiers = {}) {
8
+ const validator = {
9
+ [VALIDATOR_BRAND]: true,
10
+ _type: undefined,
11
+ _tinybirdType: tinybirdType,
12
+ _modifiers: modifiers,
13
+ tinybirdType,
14
+ modifiers,
15
+ nullable() {
16
+ // If already has LowCardinality, we need to move Nullable inside
17
+ // ClickHouse requires: LowCardinality(Nullable(X)), not Nullable(LowCardinality(X))
18
+ if (modifiers.lowCardinality) {
19
+ // Extract base type from LowCardinality(X) and wrap as LowCardinality(Nullable(X))
20
+ const baseType = tinybirdType.replace(/^LowCardinality\((.+)\)$/, '$1');
21
+ const newType = `LowCardinality(Nullable(${baseType}))`;
22
+ return createValidator(newType, { ...modifiers, nullable: true });
23
+ }
24
+ return createValidator(`Nullable(${tinybirdType})`, { ...modifiers, nullable: true });
25
+ },
26
+ lowCardinality() {
27
+ // If already nullable, wrap as LowCardinality(Nullable(X))
28
+ if (modifiers.nullable) {
29
+ // Extract base type from Nullable(X) and wrap as LowCardinality(Nullable(X))
30
+ const baseType = tinybirdType.replace(/^Nullable\((.+)\)$/, '$1');
31
+ const newType = `LowCardinality(Nullable(${baseType}))`;
32
+ return createValidator(newType, { ...modifiers, lowCardinality: true });
33
+ }
34
+ return createValidator(`LowCardinality(${tinybirdType})`, { ...modifiers, lowCardinality: true });
35
+ },
36
+ default(value) {
37
+ return createValidator(tinybirdType, {
38
+ ...modifiers,
39
+ hasDefault: true,
40
+ defaultValue: value,
41
+ });
42
+ },
43
+ codec(codec) {
44
+ return createValidator(tinybirdType, {
45
+ ...modifiers,
46
+ codec,
47
+ });
48
+ },
49
+ };
50
+ return validator;
51
+ }
52
+ /**
53
+ * Type validators for Tinybird columns
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * import { t } from '@tinybirdco/sdk';
58
+ *
59
+ * const schema = {
60
+ * id: t.string(),
61
+ * count: t.int32(),
62
+ * timestamp: t.dateTime(),
63
+ * tags: t.array(t.string()),
64
+ * metadata: t.json(),
65
+ * };
66
+ * ```
67
+ */
68
+ export const t = {
69
+ // ============ String Types ============
70
+ /** String type - variable length UTF-8 string */
71
+ string: () => createValidator("String"),
72
+ /** FixedString(N) - fixed length string, padded with null bytes */
73
+ fixedString: (length) => createValidator(`FixedString(${length})`),
74
+ /** UUID - 16-byte universally unique identifier */
75
+ uuid: () => createValidator("UUID"),
76
+ // ============ Integer Types ============
77
+ /** Int8 - signed 8-bit integer (-128 to 127) */
78
+ int8: () => createValidator("Int8"),
79
+ /** Int16 - signed 16-bit integer */
80
+ int16: () => createValidator("Int16"),
81
+ /** Int32 - signed 32-bit integer */
82
+ int32: () => createValidator("Int32"),
83
+ /** Int64 - signed 64-bit integer (represented as number, may lose precision) */
84
+ int64: () => createValidator("Int64"),
85
+ /** Int128 - signed 128-bit integer (represented as bigint) */
86
+ int128: () => createValidator("Int128"),
87
+ /** Int256 - signed 256-bit integer (represented as bigint) */
88
+ int256: () => createValidator("Int256"),
89
+ /** UInt8 - unsigned 8-bit integer (0 to 255) */
90
+ uint8: () => createValidator("UInt8"),
91
+ /** UInt16 - unsigned 16-bit integer */
92
+ uint16: () => createValidator("UInt16"),
93
+ /** UInt32 - unsigned 32-bit integer */
94
+ uint32: () => createValidator("UInt32"),
95
+ /** UInt64 - unsigned 64-bit integer (represented as number, may lose precision) */
96
+ uint64: () => createValidator("UInt64"),
97
+ /** UInt128 - unsigned 128-bit integer (represented as bigint) */
98
+ uint128: () => createValidator("UInt128"),
99
+ /** UInt256 - unsigned 256-bit integer (represented as bigint) */
100
+ uint256: () => createValidator("UInt256"),
101
+ // ============ Float Types ============
102
+ /** Float32 - 32-bit floating point */
103
+ float32: () => createValidator("Float32"),
104
+ /** Float64 - 64-bit floating point (double precision) */
105
+ float64: () => createValidator("Float64"),
106
+ /** Decimal(precision, scale) - fixed-point decimal number */
107
+ decimal: (precision, scale) => createValidator(`Decimal(${precision}, ${scale})`),
108
+ // ============ Boolean ============
109
+ /** Bool - boolean value (true/false) */
110
+ bool: () => createValidator("Bool"),
111
+ // ============ Date/Time Types ============
112
+ /** Date - date without time (YYYY-MM-DD) */
113
+ date: () => createValidator("Date"),
114
+ /** Date32 - extended date range */
115
+ date32: () => createValidator("Date32"),
116
+ /** DateTime - date and time with second precision */
117
+ dateTime: (timezone) => timezone
118
+ ? createValidator(`DateTime('${timezone}')`)
119
+ : createValidator("DateTime"),
120
+ /** DateTime64 - date and time with sub-second precision */
121
+ dateTime64: (precision = 3, timezone) => timezone
122
+ ? createValidator(`DateTime64(${precision}, '${timezone}')`)
123
+ : createValidator(`DateTime64(${precision})`),
124
+ // ============ Complex Types ============
125
+ /** Array(T) - array of elements of type T */
126
+ array: (element) => createValidator(`Array(${element._tinybirdType})`),
127
+ /** Tuple(T1, T2, ...) - tuple of heterogeneous types */
128
+ tuple: (...elements) => createValidator(`Tuple(${elements.map((e) => e._tinybirdType).join(", ")})`),
129
+ /** Map(K, V) - dictionary/map type */
130
+ map: (keyType, valueType) => createValidator(`Map(${keyType._tinybirdType}, ${valueType._tinybirdType})`),
131
+ /** JSON - semi-structured JSON data */
132
+ json: () => createValidator("JSON"),
133
+ // ============ Enum Types ============
134
+ /** Enum8 - enumeration stored as Int8 */
135
+ enum8: (...values) => {
136
+ const enumMapping = values
137
+ .map((v, i) => `'${v.replace(/'/g, "\\'")}' = ${i + 1}`)
138
+ .join(", ");
139
+ return createValidator(`Enum8(${enumMapping})`);
140
+ },
141
+ /** Enum16 - enumeration stored as Int16 */
142
+ enum16: (...values) => {
143
+ const enumMapping = values
144
+ .map((v, i) => `'${v.replace(/'/g, "\\'")}' = ${i + 1}`)
145
+ .join(", ");
146
+ return createValidator(`Enum16(${enumMapping})`);
147
+ },
148
+ // ============ Special Types ============
149
+ /** IPv4 - IPv4 address */
150
+ ipv4: () => createValidator("IPv4"),
151
+ /** IPv6 - IPv6 address */
152
+ ipv6: () => createValidator("IPv6"),
153
+ // ============ Aggregate Function States ============
154
+ /** SimpleAggregateFunction - for materialized views with simple aggregates */
155
+ simpleAggregateFunction: (func, type) => createValidator(`SimpleAggregateFunction(${func}, ${type._tinybirdType})`),
156
+ /** AggregateFunction - for materialized views with complex aggregates */
157
+ aggregateFunction: (func, type) => createValidator(`AggregateFunction(${func}, ${type._tinybirdType})`),
158
+ };
159
+ /** Helper to check if a value is a type validator */
160
+ export function isTypeValidator(value) {
161
+ return (typeof value === "object" &&
162
+ value !== null &&
163
+ VALIDATOR_BRAND in value &&
164
+ value[VALIDATOR_BRAND] === true);
165
+ }
166
+ /** Get the Tinybird type string from a validator */
167
+ export function getTinybirdType(validator) {
168
+ return validator._tinybirdType;
169
+ }
170
+ /** Get the modifiers from a validator */
171
+ export function getModifiers(validator) {
172
+ return validator._modifiers;
173
+ }
174
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/schema/types.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,176 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { t, isTypeValidator, getTinybirdType, getModifiers } from './types.js';
3
+ describe('Type Validators (t.*)', () => {
4
+ describe('Basic types', () => {
5
+ it('generates String type', () => {
6
+ const type = t.string();
7
+ expect(type._tinybirdType).toBe('String');
8
+ });
9
+ it('generates Int32 type', () => {
10
+ const type = t.int32();
11
+ expect(type._tinybirdType).toBe('Int32');
12
+ });
13
+ it('generates DateTime type', () => {
14
+ const type = t.dateTime();
15
+ expect(type._tinybirdType).toBe('DateTime');
16
+ });
17
+ it('generates DateTime with timezone', () => {
18
+ const type = t.dateTime('UTC');
19
+ expect(type._tinybirdType).toBe("DateTime('UTC')");
20
+ });
21
+ it('generates Bool type', () => {
22
+ const type = t.bool();
23
+ expect(type._tinybirdType).toBe('Bool');
24
+ });
25
+ it('generates UUID type', () => {
26
+ const type = t.uuid();
27
+ expect(type._tinybirdType).toBe('UUID');
28
+ });
29
+ it('generates Float64 type', () => {
30
+ const type = t.float64();
31
+ expect(type._tinybirdType).toBe('Float64');
32
+ });
33
+ it('generates UInt64 type', () => {
34
+ const type = t.uint64();
35
+ expect(type._tinybirdType).toBe('UInt64');
36
+ });
37
+ });
38
+ describe('Nullable modifier', () => {
39
+ it('wraps type in Nullable', () => {
40
+ const type = t.string().nullable();
41
+ expect(type._tinybirdType).toBe('Nullable(String)');
42
+ });
43
+ it('wraps Int32 in Nullable', () => {
44
+ const type = t.int32().nullable();
45
+ expect(type._tinybirdType).toBe('Nullable(Int32)');
46
+ });
47
+ it('sets nullable modifier', () => {
48
+ const type = t.string().nullable();
49
+ expect(type._modifiers.nullable).toBe(true);
50
+ });
51
+ });
52
+ describe('LowCardinality modifier', () => {
53
+ it('wraps type in LowCardinality', () => {
54
+ const type = t.string().lowCardinality();
55
+ expect(type._tinybirdType).toBe('LowCardinality(String)');
56
+ });
57
+ it('sets lowCardinality modifier', () => {
58
+ const type = t.string().lowCardinality();
59
+ expect(type._modifiers.lowCardinality).toBe(true);
60
+ });
61
+ });
62
+ describe('LowCardinality + Nullable ordering', () => {
63
+ it('generates LowCardinality(Nullable(X)) when chaining .lowCardinality().nullable()', () => {
64
+ const type = t.string().lowCardinality().nullable();
65
+ expect(type._tinybirdType).toBe('LowCardinality(Nullable(String))');
66
+ });
67
+ it('generates LowCardinality(Nullable(X)) when chaining .nullable().lowCardinality()', () => {
68
+ const type = t.string().nullable().lowCardinality();
69
+ expect(type._tinybirdType).toBe('LowCardinality(Nullable(String))');
70
+ });
71
+ it('preserves both modifiers when chained', () => {
72
+ const type = t.string().lowCardinality().nullable();
73
+ expect(type._modifiers.lowCardinality).toBe(true);
74
+ expect(type._modifiers.nullable).toBe(true);
75
+ });
76
+ });
77
+ describe('Default values', () => {
78
+ it('sets hasDefault modifier', () => {
79
+ const type = t.string().default('test');
80
+ expect(type._modifiers.hasDefault).toBe(true);
81
+ });
82
+ it('stores defaultValue in modifiers', () => {
83
+ const type = t.string().default('test');
84
+ expect(type._modifiers.defaultValue).toBe('test');
85
+ });
86
+ it('works with numeric defaults', () => {
87
+ const type = t.int32().default(42);
88
+ expect(type._modifiers.defaultValue).toBe(42);
89
+ });
90
+ });
91
+ describe('Codec modifier', () => {
92
+ it('sets codec in modifiers', () => {
93
+ const type = t.string().codec('LZ4');
94
+ expect(type._modifiers.codec).toBe('LZ4');
95
+ });
96
+ });
97
+ describe('Complex types', () => {
98
+ it('generates Array type', () => {
99
+ const type = t.array(t.string());
100
+ expect(type._tinybirdType).toBe('Array(String)');
101
+ });
102
+ it('generates nested Array type', () => {
103
+ const type = t.array(t.int32());
104
+ expect(type._tinybirdType).toBe('Array(Int32)');
105
+ });
106
+ it('generates Map type', () => {
107
+ const type = t.map(t.string(), t.int32());
108
+ expect(type._tinybirdType).toBe('Map(String, Int32)');
109
+ });
110
+ it('generates Decimal type', () => {
111
+ const type = t.decimal(10, 2);
112
+ expect(type._tinybirdType).toBe('Decimal(10, 2)');
113
+ });
114
+ it('generates FixedString type', () => {
115
+ const type = t.fixedString(3);
116
+ expect(type._tinybirdType).toBe('FixedString(3)');
117
+ });
118
+ it('generates Tuple type', () => {
119
+ const type = t.tuple(t.string(), t.int32());
120
+ expect(type._tinybirdType).toBe('Tuple(String, Int32)');
121
+ });
122
+ it('generates DateTime64 type', () => {
123
+ const type = t.dateTime64(3);
124
+ expect(type._tinybirdType).toBe('DateTime64(3)');
125
+ });
126
+ it('generates DateTime64 with timezone', () => {
127
+ const type = t.dateTime64(3, 'UTC');
128
+ expect(type._tinybirdType).toBe("DateTime64(3, 'UTC')");
129
+ });
130
+ });
131
+ describe('Helper functions', () => {
132
+ it('isTypeValidator returns true for validators', () => {
133
+ expect(isTypeValidator(t.string())).toBe(true);
134
+ });
135
+ it('isTypeValidator returns false for non-validators', () => {
136
+ expect(isTypeValidator('string')).toBe(false);
137
+ expect(isTypeValidator({})).toBe(false);
138
+ expect(isTypeValidator(null)).toBe(false);
139
+ });
140
+ it('getTinybirdType returns type string', () => {
141
+ expect(getTinybirdType(t.string())).toBe('String');
142
+ });
143
+ it('getModifiers returns modifiers object', () => {
144
+ const modifiers = getModifiers(t.string().nullable());
145
+ expect(modifiers.nullable).toBe(true);
146
+ });
147
+ });
148
+ describe('Chained modifiers', () => {
149
+ it('supports multiple modifiers', () => {
150
+ const type = t.string().lowCardinality().default('test');
151
+ expect(type._tinybirdType).toBe('LowCardinality(String)');
152
+ expect(type._modifiers.lowCardinality).toBe(true);
153
+ expect(type._modifiers.hasDefault).toBe(true);
154
+ expect(type._modifiers.defaultValue).toBe('test');
155
+ });
156
+ });
157
+ describe('Enum types', () => {
158
+ it('generates Enum8 with value mapping', () => {
159
+ const type = t.enum8('active', 'inactive', 'pending');
160
+ expect(type._tinybirdType).toBe("Enum8('active' = 1, 'inactive' = 2, 'pending' = 3)");
161
+ });
162
+ it('generates Enum16 with value mapping', () => {
163
+ const type = t.enum16('draft', 'published', 'archived');
164
+ expect(type._tinybirdType).toBe("Enum16('draft' = 1, 'published' = 2, 'archived' = 3)");
165
+ });
166
+ it('escapes single quotes in enum values', () => {
167
+ const type = t.enum8("it's ok", 'normal');
168
+ expect(type._tinybirdType).toBe("Enum8('it\\'s ok' = 1, 'normal' = 2)");
169
+ });
170
+ it('handles single enum value', () => {
171
+ const type = t.enum8('only');
172
+ expect(type._tinybirdType).toBe("Enum8('only' = 1)");
173
+ });
174
+ });
175
+ });
176
+ //# sourceMappingURL=types.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/schema/types.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;YAC1F,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;YAC1F,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * MSW handlers for API mocking in tests
3
+ */
4
+ export declare const BASE_URL = "https://api.tinybird.co";
5
+ /**
6
+ * Create build success response
7
+ */
8
+ export declare function createBuildSuccessResponse(options?: {
9
+ buildId?: string;
10
+ changedPipes?: string[];
11
+ newPipes?: string[];
12
+ deletedPipes?: string[];
13
+ changedDatasources?: string[];
14
+ newDatasources?: string[];
15
+ deletedDatasources?: string[];
16
+ }): {
17
+ result: string;
18
+ build: {
19
+ id: string;
20
+ changed_pipe_names: string[];
21
+ new_pipe_names: string[];
22
+ deleted_pipe_names: string[];
23
+ changed_datasource_names: string[];
24
+ new_datasource_names: string[];
25
+ deleted_datasource_names: string[];
26
+ };
27
+ };
28
+ /**
29
+ * Create build failure response
30
+ */
31
+ export declare function createBuildFailureResponse(error: string): {
32
+ result: string;
33
+ error: string;
34
+ };
35
+ /**
36
+ * Create build failure response with multiple errors
37
+ */
38
+ export declare function createBuildMultipleErrorsResponse(errors: Array<{
39
+ filename?: string;
40
+ error: string;
41
+ }>): {
42
+ result: string;
43
+ errors: {
44
+ filename?: string;
45
+ error: string;
46
+ }[];
47
+ };
48
+ /**
49
+ * Create no changes response
50
+ */
51
+ export declare function createNoChangesResponse(): {
52
+ result: string;
53
+ };
54
+ /**
55
+ * Default handlers for build and deploy endpoints
56
+ */
57
+ export declare const handlers: import("msw").HttpHandler[];
58
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/test/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,QAAQ,4BAA4B,CAAC;AAElD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;;;;;;;;;;;EAaA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM;;;EAKvD;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;;;mBAAxB,MAAM;eAAS,MAAM;;EAMjD;AAED;;GAEG;AACH,wBAAgB,uBAAuB;;EAItC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,6BAUpB,CAAC"}