@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,25 @@
1
+ import { Token } from "./lexer";
2
+ export type CheckUpdate = {
3
+ min?: number;
4
+ max?: number;
5
+ pattern?: string;
6
+ uniqueItems?: boolean;
7
+ unionLiterals?: string[];
8
+ isBooleanInt?: boolean;
9
+ isJsonValid?: boolean;
10
+ tupleLength?: number;
11
+ };
12
+ export type DecodedCheck = {
13
+ updates: CheckUpdate;
14
+ fullyDecoded: boolean;
15
+ };
16
+ export declare const checkExprToSql: (tokens: Token[]) => string;
17
+ type CheckCtx = {
18
+ columnName: string;
19
+ isInteger: boolean;
20
+ isString: boolean;
21
+ isArray: boolean;
22
+ };
23
+ export declare const decodeCheck: (rawTokens: Token[], ctx: CheckCtx) => DecodedCheck;
24
+ export {};
25
+ //# sourceMappingURL=check-decoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-decoder.d.ts","sourceRoot":"","sources":["../../../../../../src/shape/transforms/sql/parser/check-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,WAAW,CAAC;IAGrB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAIF,eAAO,MAAM,cAAc,GAAI,QAAQ,KAAK,EAAE,KAAG,MAoBhD,CAAC;AAqEF,KAAK,QAAQ,GAAG;IACd,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,OAAO,CAAC;IAEnB,QAAQ,EAAE,OAAO,CAAC;IAElB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAmUF,eAAO,MAAM,WAAW,GACtB,WAAW,KAAK,EAAE,EAClB,KAAK,QAAQ,KACZ,YAUF,CAAC"}
@@ -0,0 +1,412 @@
1
+ // Re-emit a token stream back to readable SQL. Used when we couldn't decode
2
+ // and want to preserve the raw expression on `anno.check`.
3
+ export const checkExprToSql = (tokens) => {
4
+ const parts = [];
5
+ let prev;
6
+ for (const t of tokens) {
7
+ let s;
8
+ if (t.kind === "string")
9
+ s = `'${t.value.replace(/'/g, "''")}'`;
10
+ else if (t.kind === "ident" && t.quoted)
11
+ s = `"${t.value.replace(/"/g, '""')}"`;
12
+ else
13
+ s = t.value;
14
+ const needsSpace = prev !== undefined &&
15
+ !(t.kind === "punct" && (t.value === "," || t.value === ")")) &&
16
+ !(prev.kind === "punct" && prev.value === "(") &&
17
+ !(t.kind === "punct" && t.value === "(" && prev.kind === "ident") &&
18
+ !(prev.kind === "punct" && prev.value === ".") &&
19
+ !(t.kind === "punct" && t.value === ".");
20
+ parts.push(needsSpace ? " " + s : s);
21
+ prev = t;
22
+ }
23
+ return parts.join("");
24
+ };
25
+ const isColRef = (t, col) => t !== undefined &&
26
+ t.kind === "ident" &&
27
+ ((!t.quoted && t.value === col.toLowerCase()) ||
28
+ (t.quoted === true && t.value === col));
29
+ const numLit = (t) => {
30
+ if (t === undefined)
31
+ return null;
32
+ if (t.kind === "number") {
33
+ const n = Number(t.value);
34
+ if (isFinite(n))
35
+ return n;
36
+ return null;
37
+ }
38
+ return null;
39
+ };
40
+ // Try to extract a numeric literal possibly with a leading sign
41
+ const numLitWithSign = (tokens, start) => {
42
+ const t = tokens[start];
43
+ if (t === undefined)
44
+ return null;
45
+ if (t.kind === "op" &&
46
+ (t.value === "-" || t.value === "+") &&
47
+ tokens[start + 1]?.kind === "number") {
48
+ const n = Number(`${t.value}${tokens[start + 1].value}`);
49
+ if (isFinite(n))
50
+ return { value: n, consumed: 2 };
51
+ return null;
52
+ }
53
+ const n = numLit(t);
54
+ if (n !== null)
55
+ return { value: n, consumed: 1 };
56
+ return null;
57
+ };
58
+ // Strip wrapping parens until the body no longer starts with them
59
+ const stripParens = (tokens) => {
60
+ let body = tokens;
61
+ while (body.length >= 2 &&
62
+ body[0]?.kind === "punct" &&
63
+ body[0]?.value === "(" &&
64
+ body[body.length - 1]?.kind === "punct" &&
65
+ body[body.length - 1]?.value === ")") {
66
+ // ensure these are matched
67
+ let depth = 0;
68
+ let balanced = true;
69
+ for (let i = 0; i < body.length; i += 1) {
70
+ const t = body[i];
71
+ if (t.kind === "punct" && t.value === "(")
72
+ depth += 1;
73
+ else if (t.kind === "punct" && t.value === ")") {
74
+ depth -= 1;
75
+ if (depth === 0 && i !== body.length - 1) {
76
+ balanced = false;
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ if (!balanced)
82
+ break;
83
+ body = body.slice(1, -1);
84
+ }
85
+ return body;
86
+ };
87
+ // Some pg checks wrap a real predicate in `<col> IS NULL OR <real>`. That
88
+ // pattern lets a CHECK on a nullable column not fail when the value is NULL.
89
+ // We peel that off and decode the real predicate.
90
+ const peelIsNullOr = (tokens, ctx) => {
91
+ // Look for: <col> IS NULL OR <rest>
92
+ if (tokens.length < 5)
93
+ return null;
94
+ if (!isColRef(tokens[0], ctx.columnName))
95
+ return null;
96
+ if (tokens[1]?.kind !== "ident" || tokens[1].value !== "is")
97
+ return null;
98
+ if (tokens[2]?.kind !== "ident" || tokens[2].value !== "null")
99
+ return null;
100
+ if (tokens[3]?.kind !== "ident" || tokens[3].value !== "or")
101
+ return null;
102
+ return stripParens(tokens.slice(4));
103
+ };
104
+ const tryDecode = (tokens, ctx) => {
105
+ if (tokens.length === 0)
106
+ return null;
107
+ // <col> <op> <num>
108
+ if (isColRef(tokens[0], ctx.columnName)) {
109
+ const opTok = tokens[1];
110
+ const op = opTok?.kind === "op" ? opTok.value : null;
111
+ if (op === ">=") {
112
+ const n = numLitWithSign(tokens, 2);
113
+ if (n !== null && n.consumed === tokens.length - 2)
114
+ return { min: n.value };
115
+ }
116
+ if (op === ">") {
117
+ const n = numLitWithSign(tokens, 2);
118
+ if (n !== null && n.consumed === tokens.length - 2 && ctx.isInteger)
119
+ return { min: n.value + 1 };
120
+ }
121
+ if (op === "<=") {
122
+ const n = numLitWithSign(tokens, 2);
123
+ if (n !== null && n.consumed === tokens.length - 2)
124
+ return { max: n.value };
125
+ }
126
+ if (op === "<") {
127
+ const n = numLitWithSign(tokens, 2);
128
+ if (n !== null && n.consumed === tokens.length - 2 && ctx.isInteger)
129
+ return { max: n.value - 1 };
130
+ }
131
+ if (op === "~") {
132
+ const next = tokens[2];
133
+ if (next?.kind === "string" && tokens.length === 3) {
134
+ return { pattern: next.value };
135
+ }
136
+ }
137
+ // <col> REGEXP '<pat>' (SQLite). REGEXP is parsed as an ident keyword.
138
+ if (tokens[1]?.kind === "ident" &&
139
+ tokens[1].value === "regexp" &&
140
+ tokens[2]?.kind === "string" &&
141
+ tokens.length === 3) {
142
+ return { pattern: tokens[2].value };
143
+ }
144
+ // <col> BETWEEN <num> AND <num>
145
+ if (tokens[1]?.kind === "ident" && tokens[1].value === "between") {
146
+ const lo = numLitWithSign(tokens, 2);
147
+ if (lo !== null) {
148
+ const andIdx = 2 + lo.consumed;
149
+ if (tokens[andIdx]?.kind === "ident" &&
150
+ tokens[andIdx].value === "and") {
151
+ const hi = numLitWithSign(tokens, andIdx + 1);
152
+ if (hi !== null && andIdx + 1 + hi.consumed === tokens.length)
153
+ return { min: lo.value, max: hi.value };
154
+ }
155
+ }
156
+ }
157
+ // <col> IN (0, 1) → boolean hint (SQLite encodes booleans as INTEGER).
158
+ if (ctx.isInteger &&
159
+ tokens[1]?.kind === "ident" &&
160
+ tokens[1].value === "in" &&
161
+ tokens[2]?.kind === "punct" &&
162
+ tokens[2].value === "(" &&
163
+ tokens.length === 7 &&
164
+ tokens[6]?.kind === "punct" &&
165
+ tokens[6].value === ")") {
166
+ const a = numLitWithSign(tokens, 3);
167
+ const comma = tokens[3 + (a?.consumed ?? 0)];
168
+ const b = numLitWithSign(tokens, 3 + (a?.consumed ?? 0) + 1);
169
+ if (a !== null &&
170
+ b !== null &&
171
+ comma?.kind === "punct" &&
172
+ comma.value === "," &&
173
+ ((a.value === 0 && b.value === 1) || (a.value === 1 && b.value === 0))) {
174
+ return { isBooleanInt: true };
175
+ }
176
+ }
177
+ // <col> IN ('a', 'b', ...) → union of string literals
178
+ if (ctx.isString &&
179
+ tokens[1]?.kind === "ident" &&
180
+ tokens[1].value === "in" &&
181
+ tokens[2]?.kind === "punct" &&
182
+ tokens[2].value === "(") {
183
+ const lits = [];
184
+ let i = 3;
185
+ let ok = true;
186
+ while (i < tokens.length) {
187
+ const t = tokens[i];
188
+ if (t.kind === "punct" && t.value === ")") {
189
+ i += 1;
190
+ break;
191
+ }
192
+ if (t.kind !== "string") {
193
+ ok = false;
194
+ break;
195
+ }
196
+ lits.push(t.value);
197
+ i += 1;
198
+ const nxt = tokens[i];
199
+ if (nxt?.kind === "punct" && nxt.value === ",") {
200
+ i += 1;
201
+ continue;
202
+ }
203
+ if (nxt?.kind === "punct" && nxt.value === ")") {
204
+ i += 1;
205
+ break;
206
+ }
207
+ ok = false;
208
+ break;
209
+ }
210
+ if (ok && i === tokens.length && lits.length > 0)
211
+ return { unionLiterals: lits };
212
+ }
213
+ }
214
+ // char_length(<col>) >= N / length(<col>) >= N → string min
215
+ // char_length(<col>) <= N → string max
216
+ if (tokens[0]?.kind === "ident" &&
217
+ (tokens[0].value === "char_length" || tokens[0].value === "length") &&
218
+ tokens[1]?.kind === "punct" &&
219
+ tokens[1].value === "(" &&
220
+ isColRef(tokens[2], ctx.columnName) &&
221
+ tokens[3]?.kind === "punct" &&
222
+ tokens[3].value === ")") {
223
+ const op = tokens[4]?.kind === "op" ? tokens[4].value : null;
224
+ if (op === ">=") {
225
+ const n = numLitWithSign(tokens, 5);
226
+ if (n !== null && 5 + n.consumed === tokens.length)
227
+ return { min: n.value };
228
+ }
229
+ if (op === "<=") {
230
+ const n = numLitWithSign(tokens, 5);
231
+ if (n !== null && 5 + n.consumed === tokens.length)
232
+ return { max: n.value };
233
+ }
234
+ }
235
+ // cardinality(<col>) >= N / <= N → array min/max (postgres)
236
+ // json_array_length(<col>) >= N / <= N → array min/max (sqlite)
237
+ if (tokens[0]?.kind === "ident" &&
238
+ (tokens[0].value === "cardinality" ||
239
+ tokens[0].value === "json_array_length") &&
240
+ tokens[1]?.kind === "punct" &&
241
+ tokens[1].value === "(" &&
242
+ isColRef(tokens[2], ctx.columnName) &&
243
+ tokens[3]?.kind === "punct" &&
244
+ tokens[3].value === ")") {
245
+ const op = tokens[4]?.kind === "op" ? tokens[4].value : null;
246
+ if (op === ">=") {
247
+ const n = numLitWithSign(tokens, 5);
248
+ if (n !== null && 5 + n.consumed === tokens.length)
249
+ return { min: n.value };
250
+ }
251
+ if (op === "<=") {
252
+ const n = numLitWithSign(tokens, 5);
253
+ if (n !== null && 5 + n.consumed === tokens.length)
254
+ return { max: n.value };
255
+ }
256
+ }
257
+ // json_valid(<col>) → isJsonValid (SQLite JSON-encoded column).
258
+ if (tokens[0]?.kind === "ident" &&
259
+ tokens[0].value === "json_valid" &&
260
+ tokens[1]?.kind === "punct" &&
261
+ tokens[1].value === "(" &&
262
+ isColRef(tokens[2], ctx.columnName) &&
263
+ tokens[3]?.kind === "punct" &&
264
+ tokens[3].value === ")" &&
265
+ tokens.length === 4) {
266
+ return { isJsonValid: true };
267
+ }
268
+ // json_valid(<col>) AND json_array_length(<col>) = N → tuple of length N.
269
+ if (tokens[0]?.kind === "ident" &&
270
+ tokens[0].value === "json_valid" &&
271
+ tokens[1]?.kind === "punct" &&
272
+ tokens[1].value === "(" &&
273
+ isColRef(tokens[2], ctx.columnName) &&
274
+ tokens[3]?.kind === "punct" &&
275
+ tokens[3].value === ")" &&
276
+ tokens[4]?.kind === "ident" &&
277
+ tokens[4].value === "and" &&
278
+ tokens[5]?.kind === "ident" &&
279
+ tokens[5].value === "json_array_length" &&
280
+ tokens[6]?.kind === "punct" &&
281
+ tokens[6].value === "(" &&
282
+ isColRef(tokens[7], ctx.columnName) &&
283
+ tokens[8]?.kind === "punct" &&
284
+ tokens[8].value === ")" &&
285
+ tokens[9]?.kind === "op" &&
286
+ tokens[9].value === "=") {
287
+ const n = numLitWithSign(tokens, 10);
288
+ if (n !== null && 10 + n.consumed === tokens.length) {
289
+ return { isJsonValid: true, tupleLength: n.value };
290
+ }
291
+ }
292
+ // shapecraft_array_is_unique(<col>) → uniqueItems
293
+ if (tokens[0]?.kind === "ident" &&
294
+ tokens[0].value === "shapecraft_array_is_unique" &&
295
+ tokens[1]?.kind === "punct" &&
296
+ tokens[1].value === "(" &&
297
+ isColRef(tokens[2], ctx.columnName) &&
298
+ tokens[3]?.kind === "punct" &&
299
+ tokens[3].value === ")" &&
300
+ tokens.length === 4) {
301
+ return { uniqueItems: true };
302
+ }
303
+ // SQLite uniqueItems pattern:
304
+ // (SELECT COUNT(*) FROM json_each(<col>))
305
+ // = (SELECT COUNT(DISTINCT value) FROM json_each(<col>))
306
+ if (matchSqliteUniqueItems(tokens, ctx)) {
307
+ return { uniqueItems: true };
308
+ }
309
+ return null;
310
+ };
311
+ // Match the exact token shape:
312
+ // ( SELECT COUNT ( * ) FROM json_each ( <col> ) )
313
+ // = ( SELECT COUNT ( DISTINCT value ) FROM json_each ( <col> ) )
314
+ const matchSqliteUniqueItems = (tokens, ctx) => {
315
+ const isIdent = (t, v) => t !== undefined && t.kind === "ident" && t.value === v;
316
+ const isPunct = (t, v) => t !== undefined && t.kind === "punct" && t.value === v;
317
+ const isOp = (t, v) => t !== undefined && t.kind === "op" && t.value === v;
318
+ // Skim past wrapping parens (peeled by stripParens already, but the
319
+ // body itself is two paren-wrapped subqueries joined by `=`).
320
+ let i = 0;
321
+ if (!isPunct(tokens[i], "("))
322
+ return false;
323
+ i += 1;
324
+ if (!isIdent(tokens[i], "select"))
325
+ return false;
326
+ i += 1;
327
+ if (!isIdent(tokens[i], "count"))
328
+ return false;
329
+ i += 1;
330
+ if (!isPunct(tokens[i], "("))
331
+ return false;
332
+ i += 1;
333
+ if (!isOp(tokens[i], "*"))
334
+ return false;
335
+ i += 1;
336
+ if (!isPunct(tokens[i], ")"))
337
+ return false;
338
+ i += 1;
339
+ if (!isIdent(tokens[i], "from"))
340
+ return false;
341
+ i += 1;
342
+ if (!isIdent(tokens[i], "json_each"))
343
+ return false;
344
+ i += 1;
345
+ if (!isPunct(tokens[i], "("))
346
+ return false;
347
+ i += 1;
348
+ if (!isColRef(tokens[i], ctx.columnName))
349
+ return false;
350
+ i += 1;
351
+ if (!isPunct(tokens[i], ")"))
352
+ return false;
353
+ i += 1;
354
+ if (!isPunct(tokens[i], ")"))
355
+ return false;
356
+ i += 1;
357
+ if (!isOp(tokens[i], "="))
358
+ return false;
359
+ i += 1;
360
+ if (!isPunct(tokens[i], "("))
361
+ return false;
362
+ i += 1;
363
+ if (!isIdent(tokens[i], "select"))
364
+ return false;
365
+ i += 1;
366
+ if (!isIdent(tokens[i], "count"))
367
+ return false;
368
+ i += 1;
369
+ if (!isPunct(tokens[i], "("))
370
+ return false;
371
+ i += 1;
372
+ if (!isIdent(tokens[i], "distinct"))
373
+ return false;
374
+ i += 1;
375
+ if (!isIdent(tokens[i], "value"))
376
+ return false;
377
+ i += 1;
378
+ if (!isPunct(tokens[i], ")"))
379
+ return false;
380
+ i += 1;
381
+ if (!isIdent(tokens[i], "from"))
382
+ return false;
383
+ i += 1;
384
+ if (!isIdent(tokens[i], "json_each"))
385
+ return false;
386
+ i += 1;
387
+ if (!isPunct(tokens[i], "("))
388
+ return false;
389
+ i += 1;
390
+ if (!isColRef(tokens[i], ctx.columnName))
391
+ return false;
392
+ i += 1;
393
+ if (!isPunct(tokens[i], ")"))
394
+ return false;
395
+ i += 1;
396
+ if (!isPunct(tokens[i], ")"))
397
+ return false;
398
+ i += 1;
399
+ return i === tokens.length;
400
+ };
401
+ export const decodeCheck = (rawTokens, ctx) => {
402
+ let body = stripParens(rawTokens);
403
+ // try peel IS NULL OR …
404
+ const peeled = peelIsNullOr(body, ctx);
405
+ if (peeled !== null)
406
+ body = peeled;
407
+ const updates = tryDecode(body, ctx);
408
+ if (updates !== null)
409
+ return { updates, fullyDecoded: true };
410
+ return { updates: {}, fullyDecoded: false };
411
+ };
412
+ //# sourceMappingURL=check-decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-decoder.js","sourceRoot":"","sources":["../../../../../../src/shape/transforms/sql/parser/check-decoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Token } from "./lexer";
2
+ export type DomainDef = {
3
+ schema?: string;
4
+ name: string;
5
+ baseTypeTokens: Token[];
6
+ checks: Token[][];
7
+ defaultTokens?: Token[];
8
+ notNull: boolean;
9
+ };
10
+ export declare const parseCreateDomain: (tokens: Token[]) => DomainDef;
11
+ //# sourceMappingURL=create-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-domain.d.ts","sourceRoot":"","sources":["../../../../../../src/shape/transforms/sql/parser/create-domain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,KAAK,EAAE,CAAC;IACxB,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAqCF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,KAAK,EAAE,KAAG,SAyDnD,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { TokenCursor } from "./cursor";
2
+ const qualifiedName = (parts) => {
3
+ if (parts.length === 1)
4
+ return { name: parts[0] };
5
+ return { schema: parts[0], name: parts.slice(1).join(".") };
6
+ };
7
+ // Read until we hit a top-level keyword that ends a clause, or end of input.
8
+ // Returns the consumed tokens (without the terminator).
9
+ const readUntilClauseEnd = (c) => {
10
+ const out = [];
11
+ let depth = 0;
12
+ while (!c.done()) {
13
+ const t = c.peek();
14
+ if (t.kind === "punct" && t.value === "(")
15
+ depth += 1;
16
+ if (t.kind === "punct" && t.value === ")") {
17
+ if (depth === 0)
18
+ break;
19
+ depth -= 1;
20
+ }
21
+ if (depth === 0 && t.kind === "ident" && !t.quoted) {
22
+ const v = t.value;
23
+ if (v === "default" ||
24
+ v === "check" ||
25
+ v === "constraint" ||
26
+ v === "collate" ||
27
+ v === "not" ||
28
+ v === "null")
29
+ break;
30
+ }
31
+ out.push(t);
32
+ c.consume();
33
+ }
34
+ return out;
35
+ };
36
+ export const parseCreateDomain = (tokens) => {
37
+ const c = new TokenCursor(tokens);
38
+ c.expectIdent("create");
39
+ if (c.consumeIdent("or"))
40
+ c.expectIdent("replace");
41
+ c.expectIdent("domain");
42
+ if (c.consumeIdent("if")) {
43
+ c.expectIdent("not");
44
+ c.expectIdent("exists");
45
+ }
46
+ const nameParts = c.readDottedName();
47
+ const qn = qualifiedName(nameParts);
48
+ c.consumeIdent("as"); // AS is optional
49
+ const baseTypeTokens = readUntilClauseEnd(c);
50
+ const def = {
51
+ name: qn.name,
52
+ baseTypeTokens,
53
+ checks: [],
54
+ notNull: false,
55
+ };
56
+ if (qn.schema !== undefined)
57
+ def.schema = qn.schema;
58
+ while (!c.done()) {
59
+ if (c.consumeIdent("default")) {
60
+ def.defaultTokens = readUntilClauseEnd(c);
61
+ continue;
62
+ }
63
+ if (c.consumeIdent("not")) {
64
+ c.consumeIdent("null");
65
+ def.notNull = true;
66
+ continue;
67
+ }
68
+ if (c.consumeIdent("null")) {
69
+ // explicit NULL allowed
70
+ continue;
71
+ }
72
+ if (c.consumeIdent("constraint")) {
73
+ // skip the constraint name
74
+ c.expectAnyIdent();
75
+ continue;
76
+ }
77
+ if (c.consumeIdent("check")) {
78
+ const inner = c.skipParens();
79
+ def.checks.push(inner);
80
+ continue;
81
+ }
82
+ if (c.consumeIdent("collate")) {
83
+ c.expectAnyIdent();
84
+ continue;
85
+ }
86
+ // unknown: skip one token to avoid infinite loop
87
+ c.consume();
88
+ }
89
+ return def;
90
+ };
91
+ //# sourceMappingURL=create-domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-domain.js","sourceRoot":"","sources":["../../../../../../src/shape/transforms/sql/parser/create-domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { shapes } from "../../../shape";
2
+ import { SQLDialect } from "../options";
3
+ import { Token } from "./lexer";
4
+ import { Registries } from "./pg-types";
5
+ export type ParsedTable = {
6
+ schema?: string;
7
+ name: string;
8
+ columns: Array<{
9
+ key: string;
10
+ shape: shapes.Shape;
11
+ }>;
12
+ uniqueConstraints?: Array<{
13
+ columns: string[];
14
+ name?: string;
15
+ }>;
16
+ mappingAnno: {
17
+ title: string;
18
+ schema?: string;
19
+ check?: string;
20
+ description?: string;
21
+ };
22
+ };
23
+ export type ParseTableOptions = {
24
+ registries: Registries;
25
+ dialect: SQLDialect;
26
+ };
27
+ export declare const parseCreateTable: (tokens: Token[], opts: ParseTableOptions) => ParsedTable;
28
+ //# sourceMappingURL=create-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-table.d.ts","sourceRoot":"","sources":["../../../../../../src/shape/transforms/sql/parser/create-table.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAIvD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAA;KAAE,CAAC,CAAC;IACrD,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AA8cF,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,KAAK,EAAE,EACf,MAAM,iBAAiB,KACtB,WAkHF,CAAC"}