@shapecraft/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/dist/cjs/common/array.d.ts +3 -0
  2. package/dist/cjs/common/array.d.ts.map +1 -0
  3. package/dist/cjs/common/array.js +17 -0
  4. package/dist/cjs/common/array.js.map +1 -0
  5. package/dist/cjs/common/index.d.ts +6 -0
  6. package/dist/cjs/common/index.d.ts.map +1 -0
  7. package/dist/cjs/common/index.js +22 -0
  8. package/dist/cjs/common/index.js.map +1 -0
  9. package/dist/cjs/common/is.d.ts +5 -0
  10. package/dist/cjs/common/is.d.ts.map +1 -0
  11. package/dist/cjs/common/is.js +36 -0
  12. package/dist/cjs/common/is.js.map +1 -0
  13. package/dist/cjs/common/object.d.ts +4 -0
  14. package/dist/cjs/common/object.d.ts.map +1 -0
  15. package/dist/cjs/common/object.js +20 -0
  16. package/dist/cjs/common/object.js.map +1 -0
  17. package/dist/cjs/common/phantom.d.ts +2 -0
  18. package/dist/cjs/common/phantom.d.ts.map +1 -0
  19. package/dist/cjs/common/phantom.js +3 -0
  20. package/dist/cjs/common/phantom.js.map +1 -0
  21. package/dist/cjs/common/result.d.ts +22 -0
  22. package/dist/cjs/common/result.d.ts.map +1 -0
  23. package/dist/cjs/common/result.js +28 -0
  24. package/dist/cjs/common/result.js.map +1 -0
  25. package/dist/cjs/common/string.d.ts +3 -0
  26. package/dist/cjs/common/string.d.ts.map +1 -0
  27. package/dist/cjs/common/string.js +33 -0
  28. package/dist/cjs/common/string.js.map +1 -0
  29. package/dist/cjs/common/types.d.ts +14 -0
  30. package/dist/cjs/common/types.d.ts.map +1 -0
  31. package/dist/cjs/common/types.js +3 -0
  32. package/dist/cjs/common/types.js.map +1 -0
  33. package/dist/cjs/index.d.ts +2 -0
  34. package/dist/cjs/index.d.ts.map +1 -0
  35. package/dist/cjs/index.js +18 -0
  36. package/dist/cjs/index.js.map +1 -0
  37. package/dist/cjs/shape/annotate.d.ts +57 -0
  38. package/dist/cjs/shape/annotate.d.ts.map +1 -0
  39. package/dist/cjs/shape/annotate.js +37 -0
  40. package/dist/cjs/shape/annotate.js.map +1 -0
  41. package/dist/cjs/shape/annotation.d.ts +39 -0
  42. package/dist/cjs/shape/annotation.d.ts.map +1 -0
  43. package/dist/cjs/shape/annotation.js +3 -0
  44. package/dist/cjs/shape/annotation.js.map +1 -0
  45. package/dist/cjs/shape/base.d.ts +33 -0
  46. package/dist/cjs/shape/base.d.ts.map +1 -0
  47. package/dist/cjs/shape/base.js +26 -0
  48. package/dist/cjs/shape/base.js.map +1 -0
  49. package/dist/cjs/shape/builder.d.ts +168 -0
  50. package/dist/cjs/shape/builder.d.ts.map +1 -0
  51. package/dist/cjs/shape/builder.js +156 -0
  52. package/dist/cjs/shape/builder.js.map +1 -0
  53. package/dist/cjs/shape/error.d.ts +5 -0
  54. package/dist/cjs/shape/error.d.ts.map +1 -0
  55. package/dist/cjs/shape/error.js +3 -0
  56. package/dist/cjs/shape/error.js.map +1 -0
  57. package/dist/cjs/shape/index.d.ts +4 -0
  58. package/dist/cjs/shape/index.d.ts.map +1 -0
  59. package/dist/cjs/shape/index.js +20 -0
  60. package/dist/cjs/shape/index.js.map +1 -0
  61. package/dist/cjs/shape/number.d.ts +8 -0
  62. package/dist/cjs/shape/number.d.ts.map +1 -0
  63. package/dist/cjs/shape/number.js +123 -0
  64. package/dist/cjs/shape/number.js.map +1 -0
  65. package/dist/cjs/shape/shape.d.ts +150 -0
  66. package/dist/cjs/shape/shape.d.ts.map +1 -0
  67. package/dist/cjs/shape/shape.js +158 -0
  68. package/dist/cjs/shape/shape.js.map +1 -0
  69. package/dist/cjs/shape/tags.d.ts +4 -0
  70. package/dist/cjs/shape/tags.d.ts.map +1 -0
  71. package/dist/cjs/shape/tags.js +3 -0
  72. package/dist/cjs/shape/tags.js.map +1 -0
  73. package/dist/cjs/shape/transforms/index.d.ts +4 -0
  74. package/dist/cjs/shape/transforms/index.d.ts.map +1 -0
  75. package/dist/cjs/shape/transforms/index.js +20 -0
  76. package/dist/cjs/shape/transforms/index.js.map +1 -0
  77. package/dist/cjs/shape/transforms/json-schema/index.d.ts +3 -0
  78. package/dist/cjs/shape/transforms/json-schema/index.d.ts.map +1 -0
  79. package/dist/cjs/shape/transforms/json-schema/index.js +19 -0
  80. package/dist/cjs/shape/transforms/json-schema/index.js.map +1 -0
  81. package/dist/cjs/shape/transforms/json-schema/transform.d.ts +5 -0
  82. package/dist/cjs/shape/transforms/json-schema/transform.d.ts.map +1 -0
  83. package/dist/cjs/shape/transforms/json-schema/transform.js +739 -0
  84. package/dist/cjs/shape/transforms/json-schema/transform.js.map +1 -0
  85. package/dist/cjs/shape/transforms/json-schema/types.d.ts +87 -0
  86. package/dist/cjs/shape/transforms/json-schema/types.d.ts.map +1 -0
  87. package/dist/cjs/shape/transforms/json-schema/types.js +3 -0
  88. package/dist/cjs/shape/transforms/json-schema/types.js.map +1 -0
  89. package/dist/cjs/shape/transforms/sql/dialects/dialect.d.ts +51 -0
  90. package/dist/cjs/shape/transforms/sql/dialects/dialect.d.ts.map +1 -0
  91. package/dist/cjs/shape/transforms/sql/dialects/dialect.js +8 -0
  92. package/dist/cjs/shape/transforms/sql/dialects/dialect.js.map +1 -0
  93. package/dist/cjs/shape/transforms/sql/dialects/index.d.ts +7 -0
  94. package/dist/cjs/shape/transforms/sql/dialects/index.d.ts.map +1 -0
  95. package/dist/cjs/shape/transforms/sql/dialects/index.js +19 -0
  96. package/dist/cjs/shape/transforms/sql/dialects/index.js.map +1 -0
  97. package/dist/cjs/shape/transforms/sql/dialects/postgres.d.ts +8 -0
  98. package/dist/cjs/shape/transforms/sql/dialects/postgres.d.ts.map +1 -0
  99. package/dist/cjs/shape/transforms/sql/dialects/postgres.js +374 -0
  100. package/dist/cjs/shape/transforms/sql/dialects/postgres.js.map +1 -0
  101. package/dist/cjs/shape/transforms/sql/dialects/sqlite.d.ts +3 -0
  102. package/dist/cjs/shape/transforms/sql/dialects/sqlite.d.ts.map +1 -0
  103. package/dist/cjs/shape/transforms/sql/dialects/sqlite.js +318 -0
  104. package/dist/cjs/shape/transforms/sql/dialects/sqlite.js.map +1 -0
  105. package/dist/cjs/shape/transforms/sql/from-sql.d.ts +5 -0
  106. package/dist/cjs/shape/transforms/sql/from-sql.d.ts.map +1 -0
  107. package/dist/cjs/shape/transforms/sql/from-sql.js +201 -0
  108. package/dist/cjs/shape/transforms/sql/from-sql.js.map +1 -0
  109. package/dist/cjs/shape/transforms/sql/index.d.ts +4 -0
  110. package/dist/cjs/shape/transforms/sql/index.d.ts.map +1 -0
  111. package/dist/cjs/shape/transforms/sql/index.js +20 -0
  112. package/dist/cjs/shape/transforms/sql/index.js.map +1 -0
  113. package/dist/cjs/shape/transforms/sql/options.d.ts +6 -0
  114. package/dist/cjs/shape/transforms/sql/options.d.ts.map +1 -0
  115. package/dist/cjs/shape/transforms/sql/options.js +6 -0
  116. package/dist/cjs/shape/transforms/sql/options.js.map +1 -0
  117. package/dist/cjs/shape/transforms/sql/parser/check-decoder.d.ts +25 -0
  118. package/dist/cjs/shape/transforms/sql/parser/check-decoder.d.ts.map +1 -0
  119. package/dist/cjs/shape/transforms/sql/parser/check-decoder.js +417 -0
  120. package/dist/cjs/shape/transforms/sql/parser/check-decoder.js.map +1 -0
  121. package/dist/cjs/shape/transforms/sql/parser/create-domain.d.ts +11 -0
  122. package/dist/cjs/shape/transforms/sql/parser/create-domain.d.ts.map +1 -0
  123. package/dist/cjs/shape/transforms/sql/parser/create-domain.js +95 -0
  124. package/dist/cjs/shape/transforms/sql/parser/create-domain.js.map +1 -0
  125. package/dist/cjs/shape/transforms/sql/parser/create-table.d.ts +28 -0
  126. package/dist/cjs/shape/transforms/sql/parser/create-table.d.ts.map +1 -0
  127. package/dist/cjs/shape/transforms/sql/parser/create-table.js +744 -0
  128. package/dist/cjs/shape/transforms/sql/parser/create-table.js.map +1 -0
  129. package/dist/cjs/shape/transforms/sql/parser/create-type.d.ts +23 -0
  130. package/dist/cjs/shape/transforms/sql/parser/create-type.d.ts.map +1 -0
  131. package/dist/cjs/shape/transforms/sql/parser/create-type.js +76 -0
  132. package/dist/cjs/shape/transforms/sql/parser/create-type.js.map +1 -0
  133. package/dist/cjs/shape/transforms/sql/parser/cursor.d.ts +32 -0
  134. package/dist/cjs/shape/transforms/sql/parser/cursor.d.ts.map +1 -0
  135. package/dist/cjs/shape/transforms/sql/parser/cursor.js +168 -0
  136. package/dist/cjs/shape/transforms/sql/parser/cursor.js.map +1 -0
  137. package/dist/cjs/shape/transforms/sql/parser/default-decoder.d.ts +10 -0
  138. package/dist/cjs/shape/transforms/sql/parser/default-decoder.d.ts.map +1 -0
  139. package/dist/cjs/shape/transforms/sql/parser/default-decoder.js +125 -0
  140. package/dist/cjs/shape/transforms/sql/parser/default-decoder.js.map +1 -0
  141. package/dist/cjs/shape/transforms/sql/parser/lexer.d.ts +14 -0
  142. package/dist/cjs/shape/transforms/sql/parser/lexer.d.ts.map +1 -0
  143. package/dist/cjs/shape/transforms/sql/parser/lexer.js +259 -0
  144. package/dist/cjs/shape/transforms/sql/parser/lexer.js.map +1 -0
  145. package/dist/cjs/shape/transforms/sql/parser/pg-types.d.ts +21 -0
  146. package/dist/cjs/shape/transforms/sql/parser/pg-types.d.ts.map +1 -0
  147. package/dist/cjs/shape/transforms/sql/parser/pg-types.js +213 -0
  148. package/dist/cjs/shape/transforms/sql/parser/pg-types.js.map +1 -0
  149. package/dist/cjs/shape/transforms/sql/parser/sqlite-types.d.ts +8 -0
  150. package/dist/cjs/shape/transforms/sql/parser/sqlite-types.d.ts.map +1 -0
  151. package/dist/cjs/shape/transforms/sql/parser/sqlite-types.js +93 -0
  152. package/dist/cjs/shape/transforms/sql/parser/sqlite-types.js.map +1 -0
  153. package/dist/cjs/shape/transforms/sql/parser/statements.d.ts +9 -0
  154. package/dist/cjs/shape/transforms/sql/parser/statements.d.ts.map +1 -0
  155. package/dist/cjs/shape/transforms/sql/parser/statements.js +158 -0
  156. package/dist/cjs/shape/transforms/sql/parser/statements.js.map +1 -0
  157. package/dist/cjs/shape/transforms/sql/parser/type-spec.d.ts +12 -0
  158. package/dist/cjs/shape/transforms/sql/parser/type-spec.d.ts.map +1 -0
  159. package/dist/cjs/shape/transforms/sql/parser/type-spec.js +136 -0
  160. package/dist/cjs/shape/transforms/sql/parser/type-spec.js.map +1 -0
  161. package/dist/cjs/shape/transforms/sql/transform.d.ts +5 -0
  162. package/dist/cjs/shape/transforms/sql/transform.d.ts.map +1 -0
  163. package/dist/cjs/shape/transforms/sql/transform.js +262 -0
  164. package/dist/cjs/shape/transforms/sql/transform.js.map +1 -0
  165. package/dist/cjs/shape/transforms/typescript/index.d.ts +2 -0
  166. package/dist/cjs/shape/transforms/typescript/index.d.ts.map +1 -0
  167. package/dist/cjs/shape/transforms/typescript/index.js +18 -0
  168. package/dist/cjs/shape/transforms/typescript/index.js.map +1 -0
  169. package/dist/cjs/shape/transforms/typescript/transform.d.ts +3 -0
  170. package/dist/cjs/shape/transforms/typescript/transform.d.ts.map +1 -0
  171. package/dist/cjs/shape/transforms/typescript/transform.js +190 -0
  172. package/dist/cjs/shape/transforms/typescript/transform.js.map +1 -0
  173. package/dist/cjs/shape/validate.d.ts +7 -0
  174. package/dist/cjs/shape/validate.d.ts.map +1 -0
  175. package/dist/cjs/shape/validate.js +360 -0
  176. package/dist/cjs/shape/validate.js.map +1 -0
  177. package/dist/esm/common/array.d.ts +3 -0
  178. package/dist/esm/common/array.d.ts.map +1 -0
  179. package/dist/esm/common/array.js +12 -0
  180. package/dist/esm/common/array.js.map +1 -0
  181. package/dist/esm/common/index.d.ts +6 -0
  182. package/dist/esm/common/index.d.ts.map +1 -0
  183. package/dist/esm/common/index.js +6 -0
  184. package/dist/esm/common/index.js.map +1 -0
  185. package/dist/esm/common/is.d.ts +5 -0
  186. package/dist/esm/common/is.d.ts.map +1 -0
  187. package/dist/esm/common/is.js +29 -0
  188. package/dist/esm/common/is.js.map +1 -0
  189. package/dist/esm/common/object.d.ts +4 -0
  190. package/dist/esm/common/object.d.ts.map +1 -0
  191. package/dist/esm/common/object.js +15 -0
  192. package/dist/esm/common/object.js.map +1 -0
  193. package/dist/esm/common/phantom.d.ts +2 -0
  194. package/dist/esm/common/phantom.d.ts.map +1 -0
  195. package/dist/esm/common/phantom.js +2 -0
  196. package/dist/esm/common/phantom.js.map +1 -0
  197. package/dist/esm/common/result.d.ts +22 -0
  198. package/dist/esm/common/result.d.ts.map +1 -0
  199. package/dist/esm/common/result.js +25 -0
  200. package/dist/esm/common/result.js.map +1 -0
  201. package/dist/esm/common/string.d.ts +3 -0
  202. package/dist/esm/common/string.d.ts.map +1 -0
  203. package/dist/esm/common/string.js +28 -0
  204. package/dist/esm/common/string.js.map +1 -0
  205. package/dist/esm/common/types.d.ts +14 -0
  206. package/dist/esm/common/types.d.ts.map +1 -0
  207. package/dist/esm/common/types.js +2 -0
  208. package/dist/esm/common/types.js.map +1 -0
  209. package/dist/esm/index.d.ts +2 -0
  210. package/dist/esm/index.d.ts.map +1 -0
  211. package/dist/esm/index.js +2 -0
  212. package/dist/esm/index.js.map +1 -0
  213. package/dist/esm/shape/annotate.d.ts +57 -0
  214. package/dist/esm/shape/annotate.d.ts.map +1 -0
  215. package/dist/esm/shape/annotate.js +34 -0
  216. package/dist/esm/shape/annotate.js.map +1 -0
  217. package/dist/esm/shape/annotation.d.ts +39 -0
  218. package/dist/esm/shape/annotation.d.ts.map +1 -0
  219. package/dist/esm/shape/annotation.js +2 -0
  220. package/dist/esm/shape/annotation.js.map +1 -0
  221. package/dist/esm/shape/base.d.ts +33 -0
  222. package/dist/esm/shape/base.d.ts.map +1 -0
  223. package/dist/esm/shape/base.js +20 -0
  224. package/dist/esm/shape/base.js.map +1 -0
  225. package/dist/esm/shape/builder.d.ts +168 -0
  226. package/dist/esm/shape/builder.d.ts.map +1 -0
  227. package/dist/esm/shape/builder.js +146 -0
  228. package/dist/esm/shape/builder.js.map +1 -0
  229. package/dist/esm/shape/error.d.ts +5 -0
  230. package/dist/esm/shape/error.d.ts.map +1 -0
  231. package/dist/esm/shape/error.js +2 -0
  232. package/dist/esm/shape/error.js.map +1 -0
  233. package/dist/esm/shape/index.d.ts +4 -0
  234. package/dist/esm/shape/index.d.ts.map +1 -0
  235. package/dist/esm/shape/index.js +4 -0
  236. package/dist/esm/shape/index.js.map +1 -0
  237. package/dist/esm/shape/number.d.ts +8 -0
  238. package/dist/esm/shape/number.d.ts.map +1 -0
  239. package/dist/esm/shape/number.js +114 -0
  240. package/dist/esm/shape/number.js.map +1 -0
  241. package/dist/esm/shape/shape.d.ts +150 -0
  242. package/dist/esm/shape/shape.d.ts.map +1 -0
  243. package/dist/esm/shape/shape.js +121 -0
  244. package/dist/esm/shape/shape.js.map +1 -0
  245. package/dist/esm/shape/tags.d.ts +4 -0
  246. package/dist/esm/shape/tags.d.ts.map +1 -0
  247. package/dist/esm/shape/tags.js +2 -0
  248. package/dist/esm/shape/tags.js.map +1 -0
  249. package/dist/esm/shape/transforms/index.d.ts +4 -0
  250. package/dist/esm/shape/transforms/index.d.ts.map +1 -0
  251. package/dist/esm/shape/transforms/index.js +4 -0
  252. package/dist/esm/shape/transforms/index.js.map +1 -0
  253. package/dist/esm/shape/transforms/json-schema/index.d.ts +3 -0
  254. package/dist/esm/shape/transforms/json-schema/index.d.ts.map +1 -0
  255. package/dist/esm/shape/transforms/json-schema/index.js +3 -0
  256. package/dist/esm/shape/transforms/json-schema/index.js.map +1 -0
  257. package/dist/esm/shape/transforms/json-schema/transform.d.ts +5 -0
  258. package/dist/esm/shape/transforms/json-schema/transform.d.ts.map +1 -0
  259. package/dist/esm/shape/transforms/json-schema/transform.js +734 -0
  260. package/dist/esm/shape/transforms/json-schema/transform.js.map +1 -0
  261. package/dist/esm/shape/transforms/json-schema/types.d.ts +87 -0
  262. package/dist/esm/shape/transforms/json-schema/types.d.ts.map +1 -0
  263. package/dist/esm/shape/transforms/json-schema/types.js +2 -0
  264. package/dist/esm/shape/transforms/json-schema/types.js.map +1 -0
  265. package/dist/esm/shape/transforms/sql/dialects/dialect.d.ts +51 -0
  266. package/dist/esm/shape/transforms/sql/dialects/dialect.d.ts.map +1 -0
  267. package/dist/esm/shape/transforms/sql/dialects/dialect.js +3 -0
  268. package/dist/esm/shape/transforms/sql/dialects/dialect.js.map +1 -0
  269. package/dist/esm/shape/transforms/sql/dialects/index.d.ts +7 -0
  270. package/dist/esm/shape/transforms/sql/dialects/index.d.ts.map +1 -0
  271. package/dist/esm/shape/transforms/sql/dialects/index.js +12 -0
  272. package/dist/esm/shape/transforms/sql/dialects/index.js.map +1 -0
  273. package/dist/esm/shape/transforms/sql/dialects/postgres.d.ts +8 -0
  274. package/dist/esm/shape/transforms/sql/dialects/postgres.d.ts.map +1 -0
  275. package/dist/esm/shape/transforms/sql/dialects/postgres.js +370 -0
  276. package/dist/esm/shape/transforms/sql/dialects/postgres.js.map +1 -0
  277. package/dist/esm/shape/transforms/sql/dialects/sqlite.d.ts +3 -0
  278. package/dist/esm/shape/transforms/sql/dialects/sqlite.d.ts.map +1 -0
  279. package/dist/esm/shape/transforms/sql/dialects/sqlite.js +315 -0
  280. package/dist/esm/shape/transforms/sql/dialects/sqlite.js.map +1 -0
  281. package/dist/esm/shape/transforms/sql/from-sql.d.ts +5 -0
  282. package/dist/esm/shape/transforms/sql/from-sql.d.ts.map +1 -0
  283. package/dist/esm/shape/transforms/sql/from-sql.js +197 -0
  284. package/dist/esm/shape/transforms/sql/from-sql.js.map +1 -0
  285. package/dist/esm/shape/transforms/sql/index.d.ts +4 -0
  286. package/dist/esm/shape/transforms/sql/index.d.ts.map +1 -0
  287. package/dist/esm/shape/transforms/sql/index.js +4 -0
  288. package/dist/esm/shape/transforms/sql/index.js.map +1 -0
  289. package/dist/esm/shape/transforms/sql/options.d.ts +6 -0
  290. package/dist/esm/shape/transforms/sql/options.d.ts.map +1 -0
  291. package/dist/esm/shape/transforms/sql/options.js +2 -0
  292. package/dist/esm/shape/transforms/sql/options.js.map +1 -0
  293. package/dist/esm/shape/transforms/sql/parser/check-decoder.d.ts +25 -0
  294. package/dist/esm/shape/transforms/sql/parser/check-decoder.d.ts.map +1 -0
  295. package/dist/esm/shape/transforms/sql/parser/check-decoder.js +412 -0
  296. package/dist/esm/shape/transforms/sql/parser/check-decoder.js.map +1 -0
  297. package/dist/esm/shape/transforms/sql/parser/create-domain.d.ts +11 -0
  298. package/dist/esm/shape/transforms/sql/parser/create-domain.d.ts.map +1 -0
  299. package/dist/esm/shape/transforms/sql/parser/create-domain.js +91 -0
  300. package/dist/esm/shape/transforms/sql/parser/create-domain.js.map +1 -0
  301. package/dist/esm/shape/transforms/sql/parser/create-table.d.ts +28 -0
  302. package/dist/esm/shape/transforms/sql/parser/create-table.d.ts.map +1 -0
  303. package/dist/esm/shape/transforms/sql/parser/create-table.js +740 -0
  304. package/dist/esm/shape/transforms/sql/parser/create-table.js.map +1 -0
  305. package/dist/esm/shape/transforms/sql/parser/create-type.d.ts +23 -0
  306. package/dist/esm/shape/transforms/sql/parser/create-type.d.ts.map +1 -0
  307. package/dist/esm/shape/transforms/sql/parser/create-type.js +72 -0
  308. package/dist/esm/shape/transforms/sql/parser/create-type.js.map +1 -0
  309. package/dist/esm/shape/transforms/sql/parser/cursor.d.ts +32 -0
  310. package/dist/esm/shape/transforms/sql/parser/cursor.d.ts.map +1 -0
  311. package/dist/esm/shape/transforms/sql/parser/cursor.js +163 -0
  312. package/dist/esm/shape/transforms/sql/parser/cursor.js.map +1 -0
  313. package/dist/esm/shape/transforms/sql/parser/default-decoder.d.ts +10 -0
  314. package/dist/esm/shape/transforms/sql/parser/default-decoder.d.ts.map +1 -0
  315. package/dist/esm/shape/transforms/sql/parser/default-decoder.js +121 -0
  316. package/dist/esm/shape/transforms/sql/parser/default-decoder.js.map +1 -0
  317. package/dist/esm/shape/transforms/sql/parser/lexer.d.ts +14 -0
  318. package/dist/esm/shape/transforms/sql/parser/lexer.d.ts.map +1 -0
  319. package/dist/esm/shape/transforms/sql/parser/lexer.js +253 -0
  320. package/dist/esm/shape/transforms/sql/parser/lexer.js.map +1 -0
  321. package/dist/esm/shape/transforms/sql/parser/pg-types.d.ts +21 -0
  322. package/dist/esm/shape/transforms/sql/parser/pg-types.d.ts.map +1 -0
  323. package/dist/esm/shape/transforms/sql/parser/pg-types.js +208 -0
  324. package/dist/esm/shape/transforms/sql/parser/pg-types.js.map +1 -0
  325. package/dist/esm/shape/transforms/sql/parser/sqlite-types.d.ts +8 -0
  326. package/dist/esm/shape/transforms/sql/parser/sqlite-types.d.ts.map +1 -0
  327. package/dist/esm/shape/transforms/sql/parser/sqlite-types.js +89 -0
  328. package/dist/esm/shape/transforms/sql/parser/sqlite-types.js.map +1 -0
  329. package/dist/esm/shape/transforms/sql/parser/statements.d.ts +9 -0
  330. package/dist/esm/shape/transforms/sql/parser/statements.d.ts.map +1 -0
  331. package/dist/esm/shape/transforms/sql/parser/statements.js +153 -0
  332. package/dist/esm/shape/transforms/sql/parser/statements.js.map +1 -0
  333. package/dist/esm/shape/transforms/sql/parser/type-spec.d.ts +12 -0
  334. package/dist/esm/shape/transforms/sql/parser/type-spec.d.ts.map +1 -0
  335. package/dist/esm/shape/transforms/sql/parser/type-spec.js +130 -0
  336. package/dist/esm/shape/transforms/sql/parser/type-spec.js.map +1 -0
  337. package/dist/esm/shape/transforms/sql/transform.d.ts +5 -0
  338. package/dist/esm/shape/transforms/sql/transform.d.ts.map +1 -0
  339. package/dist/esm/shape/transforms/sql/transform.js +258 -0
  340. package/dist/esm/shape/transforms/sql/transform.js.map +1 -0
  341. package/dist/esm/shape/transforms/typescript/index.d.ts +2 -0
  342. package/dist/esm/shape/transforms/typescript/index.d.ts.map +1 -0
  343. package/dist/esm/shape/transforms/typescript/index.js +2 -0
  344. package/dist/esm/shape/transforms/typescript/index.js.map +1 -0
  345. package/dist/esm/shape/transforms/typescript/transform.d.ts +3 -0
  346. package/dist/esm/shape/transforms/typescript/transform.d.ts.map +1 -0
  347. package/dist/esm/shape/transforms/typescript/transform.js +186 -0
  348. package/dist/esm/shape/transforms/typescript/transform.js.map +1 -0
  349. package/dist/esm/shape/validate.d.ts +7 -0
  350. package/dist/esm/shape/validate.d.ts.map +1 -0
  351. package/dist/esm/shape/validate.js +355 -0
  352. package/dist/esm/shape/validate.js.map +1 -0
  353. package/dist/esm/src/common/array.d.ts +3 -0
  354. package/dist/esm/src/common/array.d.ts.map +1 -0
  355. package/dist/esm/src/common/array.js +12 -0
  356. package/dist/esm/src/common/array.js.map +1 -0
  357. package/dist/esm/src/common/index.d.ts +6 -0
  358. package/dist/esm/src/common/index.d.ts.map +1 -0
  359. package/dist/esm/src/common/index.js +6 -0
  360. package/dist/esm/src/common/index.js.map +1 -0
  361. package/dist/esm/src/common/is.d.ts +5 -0
  362. package/dist/esm/src/common/is.d.ts.map +1 -0
  363. package/dist/esm/src/common/is.js +29 -0
  364. package/dist/esm/src/common/is.js.map +1 -0
  365. package/dist/esm/src/common/object.d.ts +4 -0
  366. package/dist/esm/src/common/object.d.ts.map +1 -0
  367. package/dist/esm/src/common/object.js +15 -0
  368. package/dist/esm/src/common/object.js.map +1 -0
  369. package/dist/esm/src/common/phantom.d.ts +2 -0
  370. package/dist/esm/src/common/phantom.d.ts.map +1 -0
  371. package/dist/esm/src/common/phantom.js +2 -0
  372. package/dist/esm/src/common/phantom.js.map +1 -0
  373. package/dist/esm/src/common/result.d.ts +22 -0
  374. package/dist/esm/src/common/result.d.ts.map +1 -0
  375. package/dist/esm/src/common/result.js +25 -0
  376. package/dist/esm/src/common/result.js.map +1 -0
  377. package/dist/esm/src/common/string.d.ts +3 -0
  378. package/dist/esm/src/common/string.d.ts.map +1 -0
  379. package/dist/esm/src/common/string.js +28 -0
  380. package/dist/esm/src/common/string.js.map +1 -0
  381. package/dist/esm/src/common/types.d.ts +14 -0
  382. package/dist/esm/src/common/types.d.ts.map +1 -0
  383. package/dist/esm/src/common/types.js +2 -0
  384. package/dist/esm/src/common/types.js.map +1 -0
  385. package/dist/esm/src/index.d.ts +2 -0
  386. package/dist/esm/src/index.d.ts.map +1 -0
  387. package/dist/esm/src/index.js +2 -0
  388. package/dist/esm/src/index.js.map +1 -0
  389. package/dist/esm/src/shape/annotate.d.ts +57 -0
  390. package/dist/esm/src/shape/annotate.d.ts.map +1 -0
  391. package/dist/esm/src/shape/annotate.js +34 -0
  392. package/dist/esm/src/shape/annotate.js.map +1 -0
  393. package/dist/esm/src/shape/annotation.d.ts +39 -0
  394. package/dist/esm/src/shape/annotation.d.ts.map +1 -0
  395. package/dist/esm/src/shape/annotation.js +2 -0
  396. package/dist/esm/src/shape/annotation.js.map +1 -0
  397. package/dist/esm/src/shape/base.d.ts +33 -0
  398. package/dist/esm/src/shape/base.d.ts.map +1 -0
  399. package/dist/esm/src/shape/base.js +20 -0
  400. package/dist/esm/src/shape/base.js.map +1 -0
  401. package/dist/esm/src/shape/builder.d.ts +168 -0
  402. package/dist/esm/src/shape/builder.d.ts.map +1 -0
  403. package/dist/esm/src/shape/builder.js +146 -0
  404. package/dist/esm/src/shape/builder.js.map +1 -0
  405. package/dist/esm/src/shape/error.d.ts +5 -0
  406. package/dist/esm/src/shape/error.d.ts.map +1 -0
  407. package/dist/esm/src/shape/error.js +2 -0
  408. package/dist/esm/src/shape/error.js.map +1 -0
  409. package/dist/esm/src/shape/index.d.ts +4 -0
  410. package/dist/esm/src/shape/index.d.ts.map +1 -0
  411. package/dist/esm/src/shape/index.js +4 -0
  412. package/dist/esm/src/shape/index.js.map +1 -0
  413. package/dist/esm/src/shape/number.d.ts +8 -0
  414. package/dist/esm/src/shape/number.d.ts.map +1 -0
  415. package/dist/esm/src/shape/number.js +114 -0
  416. package/dist/esm/src/shape/number.js.map +1 -0
  417. package/dist/esm/src/shape/shape.d.ts +150 -0
  418. package/dist/esm/src/shape/shape.d.ts.map +1 -0
  419. package/dist/esm/src/shape/shape.js +121 -0
  420. package/dist/esm/src/shape/shape.js.map +1 -0
  421. package/dist/esm/src/shape/tags.d.ts +4 -0
  422. package/dist/esm/src/shape/tags.d.ts.map +1 -0
  423. package/dist/esm/src/shape/tags.js +2 -0
  424. package/dist/esm/src/shape/tags.js.map +1 -0
  425. package/dist/esm/src/shape/transforms/index.d.ts +4 -0
  426. package/dist/esm/src/shape/transforms/index.d.ts.map +1 -0
  427. package/dist/esm/src/shape/transforms/index.js +4 -0
  428. package/dist/esm/src/shape/transforms/index.js.map +1 -0
  429. package/dist/esm/src/shape/transforms/json-schema/index.d.ts +3 -0
  430. package/dist/esm/src/shape/transforms/json-schema/index.d.ts.map +1 -0
  431. package/dist/esm/src/shape/transforms/json-schema/index.js +3 -0
  432. package/dist/esm/src/shape/transforms/json-schema/index.js.map +1 -0
  433. package/dist/esm/src/shape/transforms/json-schema/transform.d.ts +5 -0
  434. package/dist/esm/src/shape/transforms/json-schema/transform.d.ts.map +1 -0
  435. package/dist/esm/src/shape/transforms/json-schema/transform.js +734 -0
  436. package/dist/esm/src/shape/transforms/json-schema/transform.js.map +1 -0
  437. package/dist/esm/src/shape/transforms/json-schema/types.d.ts +87 -0
  438. package/dist/esm/src/shape/transforms/json-schema/types.d.ts.map +1 -0
  439. package/dist/esm/src/shape/transforms/json-schema/types.js +2 -0
  440. package/dist/esm/src/shape/transforms/json-schema/types.js.map +1 -0
  441. package/dist/esm/src/shape/transforms/sql/dialects/dialect.d.ts +51 -0
  442. package/dist/esm/src/shape/transforms/sql/dialects/dialect.d.ts.map +1 -0
  443. package/dist/esm/src/shape/transforms/sql/dialects/dialect.js +3 -0
  444. package/dist/esm/src/shape/transforms/sql/dialects/dialect.js.map +1 -0
  445. package/dist/esm/src/shape/transforms/sql/dialects/index.d.ts +7 -0
  446. package/dist/esm/src/shape/transforms/sql/dialects/index.d.ts.map +1 -0
  447. package/dist/esm/src/shape/transforms/sql/dialects/index.js +12 -0
  448. package/dist/esm/src/shape/transforms/sql/dialects/index.js.map +1 -0
  449. package/dist/esm/src/shape/transforms/sql/dialects/postgres.d.ts +8 -0
  450. package/dist/esm/src/shape/transforms/sql/dialects/postgres.d.ts.map +1 -0
  451. package/dist/esm/src/shape/transforms/sql/dialects/postgres.js +370 -0
  452. package/dist/esm/src/shape/transforms/sql/dialects/postgres.js.map +1 -0
  453. package/dist/esm/src/shape/transforms/sql/dialects/sqlite.d.ts +3 -0
  454. package/dist/esm/src/shape/transforms/sql/dialects/sqlite.d.ts.map +1 -0
  455. package/dist/esm/src/shape/transforms/sql/dialects/sqlite.js +315 -0
  456. package/dist/esm/src/shape/transforms/sql/dialects/sqlite.js.map +1 -0
  457. package/dist/esm/src/shape/transforms/sql/from-sql.d.ts +5 -0
  458. package/dist/esm/src/shape/transforms/sql/from-sql.d.ts.map +1 -0
  459. package/dist/esm/src/shape/transforms/sql/from-sql.js +197 -0
  460. package/dist/esm/src/shape/transforms/sql/from-sql.js.map +1 -0
  461. package/dist/esm/src/shape/transforms/sql/index.d.ts +4 -0
  462. package/dist/esm/src/shape/transforms/sql/index.d.ts.map +1 -0
  463. package/dist/esm/src/shape/transforms/sql/index.js +4 -0
  464. package/dist/esm/src/shape/transforms/sql/index.js.map +1 -0
  465. package/dist/esm/src/shape/transforms/sql/options.d.ts +6 -0
  466. package/dist/esm/src/shape/transforms/sql/options.d.ts.map +1 -0
  467. package/dist/esm/src/shape/transforms/sql/options.js +2 -0
  468. package/dist/esm/src/shape/transforms/sql/options.js.map +1 -0
  469. package/dist/esm/src/shape/transforms/sql/parser/check-decoder.d.ts +25 -0
  470. package/dist/esm/src/shape/transforms/sql/parser/check-decoder.d.ts.map +1 -0
  471. package/dist/esm/src/shape/transforms/sql/parser/check-decoder.js +412 -0
  472. package/dist/esm/src/shape/transforms/sql/parser/check-decoder.js.map +1 -0
  473. package/dist/esm/src/shape/transforms/sql/parser/create-domain.d.ts +11 -0
  474. package/dist/esm/src/shape/transforms/sql/parser/create-domain.d.ts.map +1 -0
  475. package/dist/esm/src/shape/transforms/sql/parser/create-domain.js +91 -0
  476. package/dist/esm/src/shape/transforms/sql/parser/create-domain.js.map +1 -0
  477. package/dist/esm/src/shape/transforms/sql/parser/create-table.d.ts +28 -0
  478. package/dist/esm/src/shape/transforms/sql/parser/create-table.d.ts.map +1 -0
  479. package/dist/esm/src/shape/transforms/sql/parser/create-table.js +740 -0
  480. package/dist/esm/src/shape/transforms/sql/parser/create-table.js.map +1 -0
  481. package/dist/esm/src/shape/transforms/sql/parser/create-type.d.ts +23 -0
  482. package/dist/esm/src/shape/transforms/sql/parser/create-type.d.ts.map +1 -0
  483. package/dist/esm/src/shape/transforms/sql/parser/create-type.js +72 -0
  484. package/dist/esm/src/shape/transforms/sql/parser/create-type.js.map +1 -0
  485. package/dist/esm/src/shape/transforms/sql/parser/cursor.d.ts +32 -0
  486. package/dist/esm/src/shape/transforms/sql/parser/cursor.d.ts.map +1 -0
  487. package/dist/esm/src/shape/transforms/sql/parser/cursor.js +163 -0
  488. package/dist/esm/src/shape/transforms/sql/parser/cursor.js.map +1 -0
  489. package/dist/esm/src/shape/transforms/sql/parser/default-decoder.d.ts +10 -0
  490. package/dist/esm/src/shape/transforms/sql/parser/default-decoder.d.ts.map +1 -0
  491. package/dist/esm/src/shape/transforms/sql/parser/default-decoder.js +121 -0
  492. package/dist/esm/src/shape/transforms/sql/parser/default-decoder.js.map +1 -0
  493. package/dist/esm/src/shape/transforms/sql/parser/lexer.d.ts +14 -0
  494. package/dist/esm/src/shape/transforms/sql/parser/lexer.d.ts.map +1 -0
  495. package/dist/esm/src/shape/transforms/sql/parser/lexer.js +253 -0
  496. package/dist/esm/src/shape/transforms/sql/parser/lexer.js.map +1 -0
  497. package/dist/esm/src/shape/transforms/sql/parser/pg-types.d.ts +21 -0
  498. package/dist/esm/src/shape/transforms/sql/parser/pg-types.d.ts.map +1 -0
  499. package/dist/esm/src/shape/transforms/sql/parser/pg-types.js +208 -0
  500. package/dist/esm/src/shape/transforms/sql/parser/pg-types.js.map +1 -0
  501. package/dist/esm/src/shape/transforms/sql/parser/sqlite-types.d.ts +8 -0
  502. package/dist/esm/src/shape/transforms/sql/parser/sqlite-types.d.ts.map +1 -0
  503. package/dist/esm/src/shape/transforms/sql/parser/sqlite-types.js +89 -0
  504. package/dist/esm/src/shape/transforms/sql/parser/sqlite-types.js.map +1 -0
  505. package/dist/esm/src/shape/transforms/sql/parser/statements.d.ts +9 -0
  506. package/dist/esm/src/shape/transforms/sql/parser/statements.d.ts.map +1 -0
  507. package/dist/esm/src/shape/transforms/sql/parser/statements.js +153 -0
  508. package/dist/esm/src/shape/transforms/sql/parser/statements.js.map +1 -0
  509. package/dist/esm/src/shape/transforms/sql/parser/type-spec.d.ts +12 -0
  510. package/dist/esm/src/shape/transforms/sql/parser/type-spec.d.ts.map +1 -0
  511. package/dist/esm/src/shape/transforms/sql/parser/type-spec.js +130 -0
  512. package/dist/esm/src/shape/transforms/sql/parser/type-spec.js.map +1 -0
  513. package/dist/esm/src/shape/transforms/sql/transform.d.ts +5 -0
  514. package/dist/esm/src/shape/transforms/sql/transform.d.ts.map +1 -0
  515. package/dist/esm/src/shape/transforms/sql/transform.js +258 -0
  516. package/dist/esm/src/shape/transforms/sql/transform.js.map +1 -0
  517. package/dist/esm/src/shape/transforms/typescript/index.d.ts +2 -0
  518. package/dist/esm/src/shape/transforms/typescript/index.d.ts.map +1 -0
  519. package/dist/esm/src/shape/transforms/typescript/index.js +2 -0
  520. package/dist/esm/src/shape/transforms/typescript/index.js.map +1 -0
  521. package/dist/esm/src/shape/transforms/typescript/transform.d.ts +3 -0
  522. package/dist/esm/src/shape/transforms/typescript/transform.d.ts.map +1 -0
  523. package/dist/esm/src/shape/transforms/typescript/transform.js +186 -0
  524. package/dist/esm/src/shape/transforms/typescript/transform.js.map +1 -0
  525. package/dist/esm/src/shape/validate.d.ts +7 -0
  526. package/dist/esm/src/shape/validate.d.ts.map +1 -0
  527. package/dist/esm/src/shape/validate.js +355 -0
  528. package/dist/esm/src/shape/validate.js.map +1 -0
  529. package/package.json +40 -0
  530. package/src/common/array.test.ts +19 -0
  531. package/src/common/array.ts +15 -0
  532. package/src/common/index.ts +5 -0
  533. package/src/common/is.ts +23 -0
  534. package/src/common/object.ts +35 -0
  535. package/src/common/phantom.ts +1 -0
  536. package/src/common/result.ts +43 -0
  537. package/src/common/string.ts +28 -0
  538. package/src/common/types.ts +34 -0
  539. package/src/index.ts +1 -0
  540. package/src/shape/annotate.ts +139 -0
  541. package/src/shape/annotation.ts +47 -0
  542. package/src/shape/base.ts +71 -0
  543. package/src/shape/builder.test.ts +728 -0
  544. package/src/shape/builder.ts +475 -0
  545. package/src/shape/error.ts +4 -0
  546. package/src/shape/index.ts +3 -0
  547. package/src/shape/number.ts +118 -0
  548. package/src/shape/shape.test.ts +792 -0
  549. package/src/shape/shape.ts +377 -0
  550. package/src/shape/tags.ts +14 -0
  551. package/src/shape/transforms/index.ts +3 -0
  552. package/src/shape/transforms/json-schema/index.ts +2 -0
  553. package/src/shape/transforms/json-schema/transform.test.ts +850 -0
  554. package/src/shape/transforms/json-schema/transform.ts +882 -0
  555. package/src/shape/transforms/json-schema/types.ts +132 -0
  556. package/src/shape/transforms/sql/dialects/dialect.ts +89 -0
  557. package/src/shape/transforms/sql/dialects/index.ts +14 -0
  558. package/src/shape/transforms/sql/dialects/postgres.ts +392 -0
  559. package/src/shape/transforms/sql/dialects/sqlite.ts +333 -0
  560. package/src/shape/transforms/sql/from-sql.test.ts +704 -0
  561. package/src/shape/transforms/sql/from-sql.ts +210 -0
  562. package/src/shape/transforms/sql/index.ts +3 -0
  563. package/src/shape/transforms/sql/options.ts +6 -0
  564. package/src/shape/transforms/sql/parser/check-decoder.ts +457 -0
  565. package/src/shape/transforms/sql/parser/create-domain.ts +105 -0
  566. package/src/shape/transforms/sql/parser/create-table.ts +809 -0
  567. package/src/shape/transforms/sql/parser/create-type.ts +91 -0
  568. package/src/shape/transforms/sql/parser/cursor.ts +179 -0
  569. package/src/shape/transforms/sql/parser/default-decoder.ts +129 -0
  570. package/src/shape/transforms/sql/parser/lexer.ts +289 -0
  571. package/src/shape/transforms/sql/parser/pg-types.ts +247 -0
  572. package/src/shape/transforms/sql/parser/sqlite-types.ts +103 -0
  573. package/src/shape/transforms/sql/parser/statements.ts +127 -0
  574. package/src/shape/transforms/sql/parser/type-spec.ts +159 -0
  575. package/src/shape/transforms/sql/transform.sqlite.test.ts +448 -0
  576. package/src/shape/transforms/sql/transform.test.ts +880 -0
  577. package/src/shape/transforms/sql/transform.ts +295 -0
  578. package/src/shape/transforms/typescript/index.ts +1 -0
  579. package/src/shape/transforms/typescript/transform.ts +211 -0
  580. package/src/shape/tuple.test.ts +171 -0
  581. package/src/shape/validate.ts +413 -0
  582. package/tsconfig.cjs.json +11 -0
  583. package/tsconfig.esm.json +10 -0
  584. package/tsconfig.json +23 -0
@@ -0,0 +1,740 @@
1
+ import { annotate, shapes } from "../../../shape";
2
+ import { checkExprToSql, decodeCheck } from "./check-decoder";
3
+ import { ParseError, TokenCursor } from "./cursor";
4
+ import { decodeDefault } from "./default-decoder";
5
+ import { resolvePgType } from "./pg-types";
6
+ import { resolveSqliteType } from "./sqlite-types";
7
+ import { parseTypeSpec } from "./type-spec";
8
+ const qualifiedName = (parts) => {
9
+ if (parts.length === 1)
10
+ return { name: parts[0] };
11
+ return { schema: parts[0], name: parts.slice(1).join(".") };
12
+ };
13
+ const splitAtTopLevelCommas = (tokens) => {
14
+ const out = [];
15
+ let buf = [];
16
+ let depth = 0;
17
+ for (const t of tokens) {
18
+ if (t.kind === "punct" && t.value === "(")
19
+ depth += 1;
20
+ else if (t.kind === "punct" && t.value === ")")
21
+ depth -= 1;
22
+ if (t.kind === "punct" && t.value === "," && depth === 0) {
23
+ if (buf.length > 0)
24
+ out.push(buf);
25
+ buf = [];
26
+ continue;
27
+ }
28
+ buf.push(t);
29
+ }
30
+ if (buf.length > 0)
31
+ out.push(buf);
32
+ return out;
33
+ };
34
+ const REF_ACTION_MAP = {
35
+ cascade: "cascade",
36
+ restrict: "restrict",
37
+ // "set null" / "set default" are two-word — handled in parsing
38
+ };
39
+ const parseReferentialAction = (c) => {
40
+ if (c.consumeIdent("cascade"))
41
+ return "cascade";
42
+ if (c.consumeIdent("restrict"))
43
+ return "restrict";
44
+ if (c.consumeIdent("no")) {
45
+ c.consumeIdent("action");
46
+ return "noAction";
47
+ }
48
+ if (c.consumeIdent("set")) {
49
+ if (c.consumeIdent("null"))
50
+ return "setNull";
51
+ if (c.consumeIdent("default"))
52
+ return "setDefault";
53
+ return null;
54
+ }
55
+ return null;
56
+ };
57
+ // Read the type spec tokens up to where a column constraint keyword begins
58
+ // (or end of column-def). Returns the consumed tokens.
59
+ const readTypeTokens = (c) => {
60
+ const out = [];
61
+ // first ident (the base type or first part of qualified name)
62
+ if (c.peek().kind !== "ident") {
63
+ // unexpected — caller should error
64
+ return out;
65
+ }
66
+ out.push(c.consume());
67
+ // dotted continuation
68
+ while (c.isPunct(".")) {
69
+ out.push(c.consume()); // '.'
70
+ if (c.peek().kind !== "ident")
71
+ break;
72
+ out.push(c.consume());
73
+ }
74
+ // multi-word types: peek for known continuations
75
+ const firstTwoExtend = (a, b) => {
76
+ const combos = [
77
+ "double precision",
78
+ "character varying",
79
+ "bit varying",
80
+ "timestamp with",
81
+ "time with",
82
+ "timestamp without",
83
+ "time without",
84
+ ];
85
+ return combos.includes(`${a} ${b}`);
86
+ };
87
+ const first = out[0]?.value;
88
+ const next = c.peek();
89
+ if (typeof first === "string" &&
90
+ next.kind === "ident" &&
91
+ !next.quoted &&
92
+ firstTwoExtend(first, next.value)) {
93
+ out.push(c.consume());
94
+ // possibly "time zone" suffix
95
+ if (c.isIdent("time") && c.peek(1).kind === "ident") {
96
+ const t1 = c.peek(1);
97
+ if (t1.kind === "ident" && t1.value === "zone") {
98
+ out.push(c.consume());
99
+ out.push(c.consume());
100
+ }
101
+ }
102
+ }
103
+ // optional (args)
104
+ if (c.isPunct("(")) {
105
+ out.push(c.consume());
106
+ let depth = 1;
107
+ while (!c.done() && depth > 0) {
108
+ const t = c.peek();
109
+ if (t.kind === "punct" && t.value === "(")
110
+ depth += 1;
111
+ if (t.kind === "punct" && t.value === ")")
112
+ depth -= 1;
113
+ out.push(c.consume());
114
+ }
115
+ }
116
+ // optional [] array suffix
117
+ while (c.isPunct("[") &&
118
+ c.peek(1).kind === "punct" &&
119
+ c.peek(1).value === "]") {
120
+ out.push(c.consume());
121
+ out.push(c.consume());
122
+ }
123
+ return out;
124
+ };
125
+ // Convert generated-as-expression tokens to a clean SQL string.
126
+ const tokensToExprSql = (tokens) => checkExprToSql(tokens);
127
+ const parseColumnConstraints = (c) => {
128
+ const meta = {
129
+ notNull: false,
130
+ primary: false,
131
+ unique: false,
132
+ autoIncrement: false,
133
+ checks: [],
134
+ };
135
+ while (!c.done()) {
136
+ if (c.consumeIdent("constraint")) {
137
+ // anonymous constraint name — consume it
138
+ if (c.peek().kind === "ident")
139
+ c.consume();
140
+ continue;
141
+ }
142
+ if (c.consumeIdent("not")) {
143
+ if (c.consumeIdent("null")) {
144
+ meta.notNull = true;
145
+ continue;
146
+ }
147
+ // unknown form — bail
148
+ break;
149
+ }
150
+ if (c.consumeIdent("null")) {
151
+ // explicit NULL — nothing to do
152
+ continue;
153
+ }
154
+ if (c.consumeIdent("primary")) {
155
+ c.consumeIdent("key");
156
+ meta.primary = true;
157
+ continue;
158
+ }
159
+ if (c.consumeIdent("autoincrement")) {
160
+ // SQLite-only keyword, but accepting it in any dialect is harmless.
161
+ meta.autoIncrement = true;
162
+ continue;
163
+ }
164
+ if (c.consumeIdent("unique")) {
165
+ meta.unique = true;
166
+ continue;
167
+ }
168
+ if (c.consumeIdent("default")) {
169
+ const defTokens = readDefaultExpr(c);
170
+ meta.default = decodeDefault(defTokens, null);
171
+ continue;
172
+ }
173
+ if (c.consumeIdent("references")) {
174
+ meta.foreign = parseReferencesClause(c);
175
+ continue;
176
+ }
177
+ if (c.consumeIdent("check")) {
178
+ const inner = c.skipParens();
179
+ meta.checks.push(inner);
180
+ continue;
181
+ }
182
+ if (c.consumeIdent("generated")) {
183
+ // GENERATED [ALWAYS|BY DEFAULT] AS (...) STORED
184
+ // GENERATED [ALWAYS|BY DEFAULT] AS IDENTITY [(seq opts)]
185
+ let byDefault = false;
186
+ if (c.consumeIdent("always")) {
187
+ /* */
188
+ }
189
+ else if (c.consumeIdent("by")) {
190
+ c.consumeIdent("default");
191
+ byDefault = true;
192
+ }
193
+ c.expectIdent("as");
194
+ if (c.consumeIdent("identity")) {
195
+ meta.autoIncrement = true;
196
+ // optional (sequence options)
197
+ if (c.isPunct("("))
198
+ c.skipParens();
199
+ continue;
200
+ }
201
+ // expression
202
+ const inner = c.skipParens();
203
+ // STORED keyword (optional but typical)
204
+ let stored = true;
205
+ if (c.consumeIdent("stored"))
206
+ stored = true;
207
+ if (c.consumeIdent("virtual"))
208
+ stored = false;
209
+ meta.generated = { expression: tokensToExprSql(inner), stored };
210
+ if (byDefault) {
211
+ // not really meaningful for expression-generated columns; ignore
212
+ }
213
+ continue;
214
+ }
215
+ if (c.consumeIdent("collate")) {
216
+ // collate name — consume one ident
217
+ if (c.peek().kind === "ident")
218
+ c.consume();
219
+ continue;
220
+ }
221
+ if (c.consumeIdent("deferrable"))
222
+ continue;
223
+ if (c.consumeIdent("not") && c.consumeIdent("deferrable"))
224
+ continue;
225
+ if (c.consumeIdent("initially")) {
226
+ if (c.peek().kind === "ident")
227
+ c.consume();
228
+ continue;
229
+ }
230
+ // Unrecognized constraint — bail
231
+ break;
232
+ }
233
+ return meta;
234
+ };
235
+ const parseReferencesClause = (c) => {
236
+ const parts = c.readDottedName();
237
+ const qn = qualifiedName(parts);
238
+ let column = "id";
239
+ if (c.consumePunct("(")) {
240
+ const colTok = c.expectAnyIdent();
241
+ column = colTok.name;
242
+ c.expectPunct(")");
243
+ }
244
+ const out = { table: qn.name, column };
245
+ while (c.consumeIdent("on")) {
246
+ if (c.consumeIdent("delete")) {
247
+ const a = parseReferentialAction(c);
248
+ if (a !== null)
249
+ out.onDelete = a;
250
+ }
251
+ else if (c.consumeIdent("update")) {
252
+ const a = parseReferentialAction(c);
253
+ if (a !== null)
254
+ out.onUpdate = a;
255
+ }
256
+ else
257
+ break;
258
+ }
259
+ // MATCH FULL / SIMPLE / PARTIAL — consume
260
+ if (c.consumeIdent("match")) {
261
+ if (c.peek().kind === "ident")
262
+ c.consume();
263
+ }
264
+ return out;
265
+ };
266
+ // Read a DEFAULT expression — terminate on a known constraint-start keyword
267
+ // or end of input.
268
+ const readDefaultExpr = (c) => {
269
+ const out = [];
270
+ let depth = 0;
271
+ const STOP = new Set([
272
+ "not",
273
+ "null",
274
+ "primary",
275
+ "unique",
276
+ "references",
277
+ "check",
278
+ "default",
279
+ "generated",
280
+ "constraint",
281
+ "collate",
282
+ "deferrable",
283
+ "initially",
284
+ ]);
285
+ while (!c.done()) {
286
+ const t = c.peek();
287
+ if (t.kind === "punct" && t.value === "(")
288
+ depth += 1;
289
+ if (t.kind === "punct" && t.value === ")")
290
+ depth -= 1;
291
+ if (depth === 0 && t.kind === "ident" && !t.quoted && STOP.has(t.value))
292
+ break;
293
+ out.push(t);
294
+ c.consume();
295
+ }
296
+ return out;
297
+ };
298
+ // Apply a column shape with the column metadata to produce a final shape with
299
+ // annotations folded in. `ctx.isString/isInteger/isArray` are derived from the
300
+ // resolved base shape.
301
+ const applyColumnMeta = (baseShape, meta, pgType, columnName) => {
302
+ // First pass: collect all decoded CHECK updates and the leftover raw
303
+ // expressions. Aggregating before applying lets us swap the base shape
304
+ // (e.g. INTEGER → boolean, TEXT → array) based on the union of hints
305
+ // rather than the order they appeared.
306
+ const ctx = {
307
+ columnName,
308
+ isInteger: baseShape.type === "number",
309
+ isString: baseShape.type === "string",
310
+ isArray: baseShape.type === "array",
311
+ };
312
+ const combined = {};
313
+ const rawChecks = [];
314
+ for (const chkTokens of meta.checks) {
315
+ const dec = decodeCheck(chkTokens, ctx);
316
+ if (!dec.fullyDecoded) {
317
+ rawChecks.push(checkExprToSql(chkTokens));
318
+ continue;
319
+ }
320
+ const u = dec.updates;
321
+ if (u.min !== undefined)
322
+ combined.min = u.min;
323
+ if (u.max !== undefined)
324
+ combined.max = u.max;
325
+ if (u.pattern !== undefined)
326
+ combined.pattern = u.pattern;
327
+ if (u.uniqueItems === true)
328
+ combined.uniqueItems = true;
329
+ if (u.unionLiterals !== undefined)
330
+ combined.unionLiterals = u.unionLiterals;
331
+ if (u.isBooleanInt === true)
332
+ combined.isBooleanInt = true;
333
+ if (u.isJsonValid === true)
334
+ combined.isJsonValid = true;
335
+ if (u.tupleLength !== undefined)
336
+ combined.tupleLength = u.tupleLength;
337
+ }
338
+ // Swap the base shape if CHECKs reveal a different underlying type.
339
+ let shape = baseShape;
340
+ if (combined.isBooleanInt === true && baseShape.type === "number") {
341
+ shape = shapes.boolean();
342
+ }
343
+ else if (combined.isJsonValid === true && baseShape.type === "string") {
344
+ if (combined.tupleLength !== undefined) {
345
+ const items = [];
346
+ for (let i = 0; i < combined.tupleLength; i += 1)
347
+ items.push(shapes.unknown());
348
+ shape = shapes.tuple(...items);
349
+ }
350
+ else if (combined.min !== undefined ||
351
+ combined.max !== undefined ||
352
+ combined.uniqueItems === true) {
353
+ shape = shapes.array(shapes.unknown());
354
+ }
355
+ else {
356
+ shape = shapes.unknown();
357
+ }
358
+ }
359
+ else if (combined.unionLiterals !== undefined &&
360
+ baseShape.type === "string") {
361
+ const literals = combined.unionLiterals.map((v) => shapes.literal(v));
362
+ shape = shapes.union(literals);
363
+ }
364
+ if (!meta.notNull && !meta.primary) {
365
+ shape = annotate.optional(shape);
366
+ }
367
+ if (meta.primary) {
368
+ shape = annotate.primary(shape);
369
+ }
370
+ if (meta.unique) {
371
+ shape = annotate.unique(shape);
372
+ }
373
+ if (meta.autoIncrement) {
374
+ shape = annotate.autoIncremented(shape);
375
+ }
376
+ if (meta.foreign !== undefined) {
377
+ shape = annotate.as(shape, { foreign: meta.foreign });
378
+ }
379
+ if (meta.generated !== undefined) {
380
+ shape = annotate.as(shape, { generated: meta.generated });
381
+ }
382
+ // On a date column, re-interpret a bare string literal as a Date (SQLite
383
+ // emits `DEFAULT '2024-01-01T…'` without a `::timestamptz` cast, so the
384
+ // base decoder leaves it as a string).
385
+ if (meta.default !== undefined &&
386
+ meta.default.kind === "literal" &&
387
+ typeof meta.default.value === "string" &&
388
+ baseShape.type === "date") {
389
+ const d = new Date(meta.default.value);
390
+ const t = d.getTime();
391
+ if (!isNaN(t) && isFinite(t)) {
392
+ meta.default = { kind: "literal", value: d };
393
+ }
394
+ }
395
+ // If the column was swapped to boolean (SQLite INTEGER + IN(0,1)),
396
+ // re-interpret 0/1 numeric defaults as boolean.
397
+ if (meta.default !== undefined &&
398
+ meta.default.kind === "literal" &&
399
+ typeof meta.default.value === "number" &&
400
+ shape.type === "boolean" &&
401
+ (meta.default.value === 0 || meta.default.value === 1)) {
402
+ meta.default = { kind: "literal", value: meta.default.value === 1 };
403
+ }
404
+ if (meta.default !== undefined) {
405
+ if (meta.default.kind === "literal") {
406
+ shape = annotate.as(shape, { default: meta.default.value });
407
+ }
408
+ else {
409
+ // decode might have given an empty string for malformed input — skip in that case
410
+ if (meta.default.sql.length > 0) {
411
+ shape = annotate.as(shape, { defaultExpr: meta.default.sql });
412
+ }
413
+ }
414
+ }
415
+ // Re-decode defaults that need the pg type context (specifically for `'{}'` on T[])
416
+ if (meta.default !== undefined &&
417
+ meta.default.kind === "expr" &&
418
+ pgType.endsWith("[]") &&
419
+ /^'\{}'$/.test(meta.default.sql.trim())) {
420
+ shape = annotate.as(shape, { default: [] });
421
+ }
422
+ if (combined.min !== undefined) {
423
+ shape = annotate.as(shape, { min: combined.min });
424
+ }
425
+ if (combined.max !== undefined) {
426
+ shape = annotate.as(shape, { max: combined.max });
427
+ }
428
+ if (combined.pattern !== undefined) {
429
+ shape = annotate.as(shape, { pattern: combined.pattern });
430
+ }
431
+ if (combined.uniqueItems === true) {
432
+ shape = annotate.as(shape, { uniqueItems: true });
433
+ }
434
+ for (const raw of rawChecks) {
435
+ shape = annotate.as(shape, { check: raw });
436
+ }
437
+ return shape;
438
+ };
439
+ export const parseCreateTable = (tokens, opts) => {
440
+ const c = new TokenCursor(tokens);
441
+ c.expectIdent("create");
442
+ if (c.consumeIdent("or"))
443
+ c.expectIdent("replace");
444
+ // optional UNLOGGED / TEMPORARY etc.
445
+ c.consumeIdent("global");
446
+ c.consumeIdent("local");
447
+ c.consumeIdent("temporary");
448
+ c.consumeIdent("temp");
449
+ c.consumeIdent("unlogged");
450
+ c.expectIdent("table");
451
+ if (c.consumeIdent("if")) {
452
+ c.expectIdent("not");
453
+ c.expectIdent("exists");
454
+ }
455
+ const nameParts = c.readDottedName();
456
+ const qn = qualifiedName(nameParts);
457
+ c.expectPunct("(");
458
+ // collect everything inside the outer parens as defs
459
+ const defsTokens = [];
460
+ let depth = 1;
461
+ while (!c.done() && depth > 0) {
462
+ const t = c.peek();
463
+ if (t.kind === "punct" && t.value === "(")
464
+ depth += 1;
465
+ if (t.kind === "punct" && t.value === ")") {
466
+ depth -= 1;
467
+ if (depth === 0) {
468
+ c.consume();
469
+ break;
470
+ }
471
+ }
472
+ defsTokens.push(t);
473
+ c.consume();
474
+ }
475
+ // anything after the closing paren (PARTITION BY, WITH, etc.) is dropped
476
+ const items = splitAtTopLevelCommas(defsTokens);
477
+ const columns = [];
478
+ // Maps to apply table constraints retroactively
479
+ const colIndex = new Map();
480
+ const colMetas = new Map();
481
+ const baseShapeByName = new Map();
482
+ const pgTypeByName = new Map();
483
+ let tableCheck;
484
+ const uniqueConstraints = [];
485
+ for (const item of items) {
486
+ if (isTableConstraint(item))
487
+ continue; // process in second pass
488
+ const ic = new TokenCursor(item);
489
+ const ident = ic.peek();
490
+ if (ident.kind !== "ident") {
491
+ throw new ParseError(`expected column definition but found ${ident.kind}`, ident.pos);
492
+ }
493
+ const colTok = ic.expectAnyIdent();
494
+ const typeTokens = readTypeTokens(ic);
495
+ const spec = parseTypeSpec(typeTokens);
496
+ const resolved = opts.dialect === "sqlite" ?
497
+ resolveSqliteType(spec)
498
+ : resolvePgType(spec, opts.registries);
499
+ let baseShape = resolved.shape;
500
+ const meta = parseColumnConstraints(ic);
501
+ if (resolved.autoIncrement === true) {
502
+ meta.autoIncrement = true;
503
+ }
504
+ const pgType = typeSpecToString(spec);
505
+ const finalShape = applyColumnMeta(baseShape, meta, pgType, colTok.name);
506
+ columns.push({ key: colTok.name, shape: finalShape });
507
+ colIndex.set(colTok.name, columns.length - 1);
508
+ colMetas.set(colTok.name, meta);
509
+ baseShapeByName.set(colTok.name, baseShape);
510
+ pgTypeByName.set(colTok.name, pgType);
511
+ }
512
+ // Second pass: table constraints
513
+ for (const item of items) {
514
+ if (!isTableConstraint(item))
515
+ continue;
516
+ applyTableConstraint(item, {
517
+ columns,
518
+ colIndex,
519
+ pgTypeByName,
520
+ setTableCheck: (chk) => {
521
+ tableCheck = chk;
522
+ },
523
+ pushUniqueConstraint: (entry) => {
524
+ uniqueConstraints.push(entry);
525
+ },
526
+ });
527
+ }
528
+ const mappingAnno = { title: qn.name };
529
+ // In SQLite, a `main.foo`/`temp.foo` prefix is a database alias, not a
530
+ // schema in the PG sense. Drop it so re-emission doesn't try to write a
531
+ // `CREATE SCHEMA` prelude (which SQLite doesn't have).
532
+ if (qn.schema !== undefined && opts.dialect !== "sqlite") {
533
+ mappingAnno.schema = qn.schema;
534
+ }
535
+ if (tableCheck !== undefined)
536
+ mappingAnno.check = tableCheck;
537
+ const out = {
538
+ name: qn.name,
539
+ columns,
540
+ mappingAnno,
541
+ };
542
+ if (qn.schema !== undefined && opts.dialect !== "sqlite") {
543
+ out.schema = qn.schema;
544
+ }
545
+ if (uniqueConstraints.length > 0)
546
+ out.uniqueConstraints = uniqueConstraints;
547
+ return out;
548
+ };
549
+ const typeSpecToString = (spec) => {
550
+ const base = spec.qualified ?? spec.baseName;
551
+ const args = spec.args.length > 0 ? `(${spec.args.join(",")})` : "";
552
+ const arr = spec.isArray ? "[]" : "";
553
+ return `${base}${args}${arr}`;
554
+ };
555
+ const isTableConstraint = (item) => {
556
+ const t0 = item[0];
557
+ if (t0 === undefined || t0.kind !== "ident")
558
+ return false;
559
+ if (t0.value === "constraint")
560
+ return true;
561
+ if (t0.value === "primary" &&
562
+ item[1]?.kind === "ident" &&
563
+ item[1].value === "key" &&
564
+ item[2]?.kind === "punct" &&
565
+ item[2].value === "(")
566
+ return true;
567
+ if (t0.value === "unique" &&
568
+ item[1]?.kind === "punct" &&
569
+ item[1].value === "(")
570
+ return true;
571
+ if (t0.value === "foreign" &&
572
+ item[1]?.kind === "ident" &&
573
+ item[1].value === "key")
574
+ return true;
575
+ if (t0.value === "check" &&
576
+ item[1]?.kind === "punct" &&
577
+ item[1].value === "(")
578
+ return true;
579
+ if (t0.value === "exclude")
580
+ return true;
581
+ if (t0.value === "like" && item[1]?.kind === "ident")
582
+ return true;
583
+ return false;
584
+ };
585
+ const applyTableConstraint = (item, ctx) => {
586
+ const c = new TokenCursor(item);
587
+ let constraintName;
588
+ if (c.consumeIdent("constraint")) {
589
+ if (c.peek().kind === "ident") {
590
+ constraintName = c.consume().value;
591
+ }
592
+ }
593
+ if (c.consumeIdent("primary")) {
594
+ c.consumeIdent("key");
595
+ c.expectPunct("(");
596
+ const cols = readColList(c);
597
+ for (const col of cols) {
598
+ const idx = ctx.colIndex.get(col);
599
+ if (idx === undefined)
600
+ continue;
601
+ const entry = ctx.columns[idx];
602
+ entry.shape = annotate.primary(entry.shape);
603
+ // primary implies not-null; remove optional
604
+ entry.shape = { ...entry.shape, anno: stripOptional(entry.shape.anno) };
605
+ }
606
+ return;
607
+ }
608
+ if (c.consumeIdent("unique")) {
609
+ c.expectPunct("(");
610
+ const cols = readColList(c);
611
+ if (cols.length === 1) {
612
+ const col = cols[0];
613
+ const idx = ctx.colIndex.get(col);
614
+ if (idx !== undefined) {
615
+ const entry = ctx.columns[idx];
616
+ entry.shape = annotate.unique(entry.shape);
617
+ }
618
+ return;
619
+ }
620
+ const entry = { columns: cols };
621
+ if (constraintName !== undefined)
622
+ entry.name = constraintName;
623
+ ctx.pushUniqueConstraint(entry);
624
+ return;
625
+ }
626
+ if (c.consumeIdent("foreign")) {
627
+ c.expectIdent("key");
628
+ c.expectPunct("(");
629
+ const localCols = readColList(c);
630
+ c.expectIdent("references");
631
+ const parts = c.readDottedName();
632
+ const qn = qualifiedName(parts);
633
+ let refCols = [];
634
+ if (c.consumePunct("(")) {
635
+ refCols = readColList(c);
636
+ }
637
+ if (refCols.length === 0)
638
+ refCols = ["id"];
639
+ let onDelete;
640
+ let onUpdate;
641
+ while (c.consumeIdent("on")) {
642
+ if (c.consumeIdent("delete")) {
643
+ const a = parseReferentialAction(c);
644
+ if (a !== null)
645
+ onDelete = a;
646
+ }
647
+ else if (c.consumeIdent("update")) {
648
+ const a = parseReferentialAction(c);
649
+ if (a !== null)
650
+ onUpdate = a;
651
+ }
652
+ else
653
+ break;
654
+ }
655
+ if (c.consumeIdent("match")) {
656
+ if (c.peek().kind === "ident")
657
+ c.consume();
658
+ }
659
+ for (let i = 0; i < localCols.length; i += 1) {
660
+ const local = localCols[i];
661
+ const ref = refCols[i] ?? refCols[refCols.length - 1];
662
+ const idx = ctx.colIndex.get(local);
663
+ if (idx === undefined)
664
+ continue;
665
+ const entry = ctx.columns[idx];
666
+ const foreign = {
667
+ table: qn.name,
668
+ column: ref,
669
+ };
670
+ if (onDelete !== undefined)
671
+ foreign.onDelete = onDelete;
672
+ if (onUpdate !== undefined)
673
+ foreign.onUpdate = onUpdate;
674
+ entry.shape = annotate.as(entry.shape, { foreign });
675
+ }
676
+ return;
677
+ }
678
+ if (c.consumeIdent("check")) {
679
+ const inner = c.skipParens();
680
+ // Try to decode as a per-column constraint matching any column in this table
681
+ for (const col of ctx.columns) {
682
+ const base = col.shape;
683
+ const dec = decodeCheck(inner, {
684
+ columnName: col.key,
685
+ isInteger: base.type === "number",
686
+ isString: base.type === "string",
687
+ isArray: base.type === "array",
688
+ });
689
+ if (dec.fullyDecoded) {
690
+ const u = dec.updates;
691
+ if (u.min !== undefined)
692
+ col.shape = annotate.as(col.shape, { min: u.min });
693
+ if (u.max !== undefined)
694
+ col.shape = annotate.as(col.shape, { max: u.max });
695
+ if (u.pattern !== undefined)
696
+ col.shape = annotate.as(col.shape, { pattern: u.pattern });
697
+ if (u.uniqueItems === true)
698
+ col.shape = annotate.as(col.shape, { uniqueItems: true });
699
+ if (u.unionLiterals !== undefined && col.shape.type === "string") {
700
+ const preserved = col.shape.anno;
701
+ const literals = u.unionLiterals.map((v) => shapes.literal(v));
702
+ const u2 = shapes.union(literals);
703
+ col.shape = {
704
+ ...u2,
705
+ anno: { ...u2.anno, ...preserved },
706
+ };
707
+ }
708
+ return;
709
+ }
710
+ }
711
+ ctx.setTableCheck(checkExprToSql(inner));
712
+ return;
713
+ }
714
+ // exclude, like — dropped
715
+ };
716
+ const stripOptional = (anno) => {
717
+ const out = { ...anno };
718
+ delete out.optional;
719
+ return out;
720
+ };
721
+ const readColList = (c) => {
722
+ const out = [];
723
+ while (!c.isPunct(")")) {
724
+ const t = c.expectAnyIdent();
725
+ out.push(t.name);
726
+ // optional ordering / nulls clauses
727
+ if (c.consumeIdent("asc") || c.consumeIdent("desc")) {
728
+ /* */
729
+ }
730
+ if (c.consumeIdent("nulls")) {
731
+ if (c.peek().kind === "ident")
732
+ c.consume();
733
+ }
734
+ if (!c.consumePunct(","))
735
+ break;
736
+ }
737
+ c.expectPunct(")");
738
+ return out;
739
+ };
740
+ //# sourceMappingURL=create-table.js.map