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